Context Switching (문맥전환)

일반 2011. 9. 14. 13:26
사전의 뜻은 아래와 같다.

 
문맥전환이라...

이 말을 들어본건 학교 수업시간의 운영체제론을 배울때 였다.
영어 발음 그대로 사용하는데 도통이해가 가지 않았다.
요즘 컴퓨터(Intel 계열)는 멀티프로세싱과 멀티스레딩을 동시에 지원한다.
어떻게 CPU는 하나 밖에 없는데(물론 요즘은 멀티코어이지만 설명을 위해서 1개라고 가정하자) 동시에 여러프로그램을
사용 할 수 있을까
결론 부터 이야기 하자면 동시에 여러프로그램이 돌아가는것이 아니라 가는것처럼 보이는 것이다.
CPU의 타임슬라이스를 통해서 프로그램을 짧게 짧게 돌려가며 실행하는것이다.
그럼 1개의 프로그램을 주주창잘 돌리고 다음 프로그램을 돌리는게 프로그램 전환시간도 줄고 더 낫지 않을까?
물론 단순하게 생각하면 그 말이 맞다.
그리나 여러사람들이 관찰한 결과 컴퓨터의 대부분은 io(Input, Output)으로 시간을 보낸다고 한다. 결국 놀면서 보낸다.
실제로 CPU 작업관리자를 띄워도 대부분 시간 idle상태로 있는것을 알수 있다.
결국 이 노는 시간을 이용해서 여러프로그램을 돌리는게 더 낫다는 것이다
말이 이상하게 돌아갔는데 결국  Context Switching은 프로세싱에서 프로세싱으로 스레드에서 스레드로 전환할때
기존의 작업상태를 저장하고 새로운 작업상태를 읽는 작업을 말한다.
그런데 이 작업이 CPU부하가 꽤 걸리는 작업이라 이것도 많이 실행하면 배보다 배꼽이 큰상황(노는 IO작업을 이용하는
비용보다 문맥전환 비용이 더큰상황)이 발생해서 멀티프로세싱이나 멀티스레드를 적게하는 방향으로 발전하고 있다.
 

ps. 제가 아는 짧은 지식을 올린것으로 정확하지 않을 수 있습니다. 혹 정정해야 할 내용이 있다면 리플 부탁드립니다. 
posted by 뚱2