컨텍스트 스위칭의 필요성
컨텍스트 스위칭이란
컨텍스트 스위칭 간단 요약 바로가기
위 게시물에서는 아주 간단하게 컨텍스트 스위칭이 어떤 일을 한다는 뜻인지 왜 해야하는지에 대해 설명되어있다.
여기서 말하는 context란?
간단하게 설명하면 CPU가 해당 프로세스를 실행하기 위해 필요한 해당 프로세스의 정보들이다.
프로세스의 상태/다음에 실행할 명령어의 주소/프로세스 번호
가 context에 포함되며, 이것들은 PCB에 저장된다.
PCB는 무엇일까
나는 저 위에 설명을 읽으며 명령어를 처리하는 일은 컨트롤 유닛
이 해야하는 거 아닌가라는 생각이 들었다.
컨트롤 유닛은 명령어의 해석과 연산 수행을 담당하니 프로세스의 상태를 저장하고 처리하는 것도 연산과 명령어 해석의 부분 아닌가라는 의문 때문이었다.
결과론적으로 이야기하자면, 명령어의 해석과 프로세스의 상태를 알아보는 과정과 프로세스의 상태를 알아본 뒤 우선순위 스케줄링에 의거하여 프로세스를 어떻게 할지를 결정하는 것은 다른 업무이기 때문에 저 의문은 논리적으로 틀린 의문이다.
또한 컨텍스트 스위칭이 발생하면 해당 cpu는 아무런 일을 하지 못하기 때문에 당연 컨트롤 유닛도 일을 멈추는 셈이 된다.
PCB의 업무
PCB의 업무는 크게 4가지로 나눌 수 있다.
◼1. 프로세스의 상태:프로세스가 현재 어떤 상태에 있는지 나타내는 것.
보통 run/ready/block
으로 나뉜다.
◼2. 레지스터의 상태: 현재 프로세스가 사용중인 레지스터의 값들을 저장한다.
이를 통해 프로세스가 다시 실행될 때 이전 상태로 복원 가능하게 한다.
(레지스터는 임시 메모리이기 때문에 pcb가 이러한 업무를 하지 않으면 용량이 작아 이전상태의 저장이 어렵다.)
◼3. 프로그램 카운터: 다음에 실행할 명령어의 주소를 가리킨다.
프로세스가 다음에 실행될 명령어를 찾아가기 위해 사용된다.
◼4. 스케줄링 정보: 운영체제의 스케줄러가 사용하는 정보로 스케줄링 알고리즘 등이 포함되는 개념이다.
이외에도 프로세스를 구분한다거나 입출력 상태 정보 저장 등도 PCB가 담당하게 된다.
pcb와 cpu의 관계
그렇다면 pcb를 통해서 우선순위에 대한 판단을 했다면 어떻게 cpu에게 이제 이 프로세스를 실행시킬 차례야
라는 것을 전달할 수 있을까?
우선 컨텍스트 스위칭을 할 때 중요하게 생각해야하는 작업이 스케줄링
이다. 이 스케줄링은 논리적 개념이고 이것이 물리적으로 실재하는 곳이 바로 pcb이다.
크게 컨텍스트 스위칭 작업을 4단계로 나타내면 다음과 같은 작업이 실행된다.
[1단계]컨텍스트 스위칭의 시작
이 작업의 주체는 통상적으로 운영체제
이다.
컨텍스트 스위칭이 시작되면 cpu는 임시적으로 프로세스의 실행을 중단시킨다.
[2단계]프로세스의 상태 저장
현재 실행중인 프로세스의 상태를 해당 프로세스의 pcb에 저장한다.
이 과정에서 레지스터의 상태도 읽어와서 이후 프로세스가 실행되었을 때에도 이전 상태로 복원이 가능하도록 도와준다.
[3단계]스케줄러가 다음에 실행될 프로세스를 결정
우선순위 스케줄링 등으로 다음에 실행할 프로세스를 결정하게 된다.
[4단계]cpu와의 소통
3단계를 통해 선택된 프로세스의 pcb상태를 cpu의 레지스터와 프로그램 카운터에 적재한다.
이 과정에서 pcb와 cpu는 시스템 버스를 통하여 정보의 전송을 주고받게 된다.
요약하자면 cpu의 일과 pcb의 일(역할과 책임)은 다르다.
하지만, 이 둘은 프로세스의 전환 과정이나 스케줄링 실행 시 서로 정보를 교환하여야 하는 유기적인 관계이다.
또한 이 둘이 상호교환을 하기 위해 사용하는 것이 시스템버스(버스 인터페이스)이다.
시스템 성능 향상
컨텍스트 스위칭이 시작되면 cpu는 임시적으로 프로세스의 실행을 중단시킨다.
이 과정 자체가 cpu에게 부담을 주는 과정이 될텐데 왜 결과적으로는 컨텍스트 스위칭이 성능향상에 기여한다는 것일까?
시스템 응답성 향상
여러 프로세스가 동시에 실행가능하게 해준다.
이 과정에서 멀티 프로세싱, 멀티 스레딩을 사용하면 응용프로그램들 간의 응답시간을 분산시킬 수 있다.
각 프로세스에 일정 시간을 할당하여 사용자들은 전반적으로 시스템이 빠르게 응답하는 느낌을 받을 수 있다.
자원 활용도 향상
cpu는 작업수행을 하고 대기중인 프로세스들은 메모리나 입출력 장치 등 다른 자원을 사용하는 것이 가능해진다.
자원 활용도를 극대화하여 시스템 전체의 성능을 향상시킬 수 있다.
프로세스의 우선순위 조절
스케줄러는 프로세스 간의 우선순위를 조절 가능하다.
중요하거나 시급한 작업을 cpu에 우선 할당시켜 전체적인 성능 향상이 가능해진다.
오버헤드
오버헤드란 어떤 처리를 하기 위해 들어가는 간접적인 시간,메모리를 의미한다.
컨텍스트 스위칭은 멀티 프로세스 os에서 꼭 필요하지만, 이것을 진행하는 동안에는 유용한 작업을 실행할 수 없다.
컨텍스트 스위칭이 cpu에게 부하를 준다는 것은 오버헤드의 발생을 겨냥하며 설명하는 말이기도 하다.
댓글남기기