bbanpro 2020. 7. 6. 22:25
728x90
반응형

 

👍 문맥교환이란?

 

다중프로그래밍에서는 여러 프로세스가 메모리에 적재되어 있는데, 그 안에서도 CPU가 현재 처리중인 것과 그렇지 않은 것으로 구분된다.

하나의 CPU는 하나의 프로세스만 전담할 수 있기 때문이다.

그렇다면 CPU는 여러 프로세스를 엄청 짧은 순간에 갈아끼면서 연산한다는 것인데, 그 과정에서 당연히 프로세스마다 가진 정보를 제대로 저장해야 할 것이다.

그래서 운영체제는 PCB를 만들어서 프로세스의 모든 정보를 기록해놓는다.

문맥교환은 말그대로 현재의 흐름을 교환한다는 뜻으로, 지금 처리되고 있는 프로세스의 상태정보(준비/실행/보류)를 PCB에 저장하고 새로운 프로세스의 상태정보를 설정하고 실행시키는 과정을 말한다.

그리고 문맥교환이 일어난다는 것은 다음 프로세스로 이동하기 위해 현재 프로세스에 인터럽트가 발생한다는 것이며, 진행 중이던 프로그램을 이후에 이어서 실행(재개, Resume)할 수 있도록 레지스터 문맥을 저장한다.


👊 시간할당량(Time Slice, Quantum)에 따른 문맥교환수, 인터럽트횟수, 오버헤드

 

각 프로세스가 CPU에 할당되어 실제 실행되는 시간간격을 "시간할당량"이라고 한다.

시간할당량이 짧을수록 사람이 인지하기 힘들 정도로 프로세스를 처리하기 때문에, 마치 모두 동시에 처리하는 듯한 느낌을 준다.

하지만 그만큼 프로세스 간 교체가 많아진다는 뜻이기 때문에, 문맥교환횟수, 문맥교환을 위한 인터럽트의 횟수, 오버헤드(간접부담비용) 모두 증가하는 단점 또한 가지고 있다.

따라서 적정 시간할당량을 설정하는 것이 중요하다.

728x90
반응형