목차
개요
프로세스의 이전 포스팅에서는 CPU의 스케줄링에 대해서 알아보았다. 이는 CPU에 적재되는 프로세스가 어떤 방식으로 어떤 큐에 저장되는지를 알아보았고 이번 포스팅에서는 Ready queue를 통해 CPU로 넘어온 프로세스가 기존의 프로세스를 어떻게 종료하고 새 프로세스를 어떻게 실행하는지에 대한 과정에 대해서 알아보자
프로세스 첫 포스팅부터 확인해보기⬇⬇⬇
2022.08.05 - [OS :: 운영체제] - 프로세스 :: 메모리 배치 및 프로세스 제어 블록(PCB) - 추천
2022.08.14 - [OS :: 운영체제] - 프로세스 :: 다중 프로그래밍과 스케줄링
2022.08.16 - [OS :: 운영체제] - 프로세스 :: 스케줄링 큐와 스와핑
문맥 교환 (context switch)
먼저 문맥 context란 프로세스의 상태를 나타내는 정보를 뜻하고 이를 교환한다는 뜻은 CPU내에 적재되어있던 프로세스의 상태와 레지스터 메모리 파일리스트 포인터 프로세스 넘버 등등을 저장하여주고 다음에 적재될 프로세스의 정보를 입력하는 단계를 뜻한다. 간단히 말해 CPU에서의 프로세스 to 프로세스의 교환을 나타내는 것이다.
사진의 가운데에서 보면 프로세스0의 PCB를 저장(state save)하고 프로세스1의 PCB를 재적재(state reload)하고 실행을 해준후 또 다시 프로세스1의 PCB를 저장(state save)하고 기존의 프로세스0의 PCB를 재적재(state reload) 해주게 된다.
이러한 과정에서 PCB의 정보가 저장되는 방식과 주소 공간의 보존
문맥 교환은 단순 인터럽트와 일어나는 위치가 비슷하여 혼동 할 수 있는데 추후에 인터럽트에 대해 자세히 포스팅 하겠지만 인터럽트의 경우에는 커널 루틴 등을 수행하기 위해 작업중이던 프로세스에 인터럽트가 발생할 수 있게되는데
이 경우에는 현재 상태를 저장(state save)하고 나중의 연산 재개를 위해 복구(state restore)을 하기에 재적재를 하는 문맥교환하고 다르다. 이와 같은 경우에는 단순한 문맥 저장과 복구의 경우이다.
선점형 시스템에서 CPU 스케줄러에 의해 프로세스가 전환될때도 문맥교환이 일어난다
오버 헤드
위에서 보았던 문맥 교환 과정에 걸리는 시간을 말한다. 정확히는 기존의 프로세스가 해지 되는 순간부터 다음 프로세스가 적재되기 까지의 시간이다.
오버헤드가 중요한 이유는 문맥 교환이 진행되는 동안 시스템이 일을 하지 못하기 때문이다. 이 시간은 하드웨어의 성능이나 지원 정도에 따라 크게 달라지는데 레지스터 집합을 지원하는 처리기의 경우에는 집합에 대한 포인터만 저장 재적재를 하면 되기 때문에 오버헤드가 크게 감소 할 수 있다.
이러한 문맥 교환을 통하여 교환 속도가 빨라서 사용자는 마치 여러가지의 프로세스가 동시에 실행되고 있는 것 처럼 느끼고 이것을 멀티테스킹이라고 부른다.
'CS > Operating System' 카테고리의 다른 글
프로세스 :: 생성과 종료 (0) | 2022.08.19 |
---|---|
프로세스 :: CPU 스케줄링 종류 (0) | 2022.08.18 |
프로세스 :: 스케줄링 큐와 스와핑 (0) | 2022.08.16 |
프로세스 :: 다중 프로그래밍과 스케줄링 (1) | 2022.08.14 |
프로세스 :: 메모리 배치 및 프로세스 제어 블록(PCB) (0) | 2022.08.05 |