-
프로세스 Context SwitchingComputer Science 2020. 9. 10. 00:27
■cpu와 프로세스
cpu는 한 번에 하나의 프로세스만 실행할 수 있다. 즉 멀티 프로세스 환경에서 cpu가
하나일 경우에, 다수의 프로세스들은 동시에 실행될 수 없다.
■스케줄러
스케줄러는 다수의 프로세스들 중 어느 프로세스에 cpu를 할당할지 결정하는 역할을 한다.
이 작업을 `스케줄링`이라 한다. 스케줄러는 프로세스들에게 매우 빠른 속도로 cpu를
할당하고 해제한다. (프로세스에게 cpu가 할당된다는 것은 cpu가 그 프로세스를 실행한다는
의미이다.) cpu가 실행하는 프로세스들은 매우 빠른 속도로 교체된다.
그래서 사용자는 멀티 프로세스의 프로세스들이 동시에 실행되는 듯한 느낌을 받는다.
■Context Switching
프로세스들은 스케줄러에 의해 cpu를 할당받기도 하고 cpu를 회수당하기도 한다.
새로 만들어진 프로세스의 상태는 new 상태이다. 그리고 new 상태의 프로세스들은
cpu를 할당받기 위한 준비를 하는 ready 상태로 바뀐다. 스케줄러는 ready 상태의
프로세스에게 cpu를 할당한다. cpu를 할당받은 프로세스는 running 상태가 된다.
running 상태인 프로세스의 실행 도중, 스케줄러에 의해 우선 순위가 높은 다른 프로세스로
cpu가 할당되는 interrupt가 발생할 수 있다. running 상태이던 프로세스는 스케줄러에 의해
cpu를 회수당하고, 스케줄러는 회수한 cpu를 우선순위가 높은 다른 프로세스로 할당한다.
cpu 입장에서는 자신이 실행시켜야 할 프로세스가 변경되는 것이다.
이를 Context Switching 이라고 한다.
■Context Switching 오버헤드
cpu는 프로세스를 실행시킬 때 레지스터라고 하는 cpu 내부 공간에 해당 프로세스에
관련된 데이터들을 저장한다. 그런데 Context Switching이 발생하면, 새로운 프로세스에
관련된 데이터들을 저장하기 위해 기존 프로세스에 관련된 데이터들이 저장되어 있는
레지스터를 비워야한다. 그리고 새로운 프로세스의 cpu 점유가 끝나면 기존 프로세스에
다시 cpu를 할당해줘야(Context Switching) 하므로 레지스터에 저장해뒀던 데이터를
다시 불러와야 한다. 그래서 OS가 관리하는 공간인 PCB(Process Control Block)에 기존
프로세스의 데이터를 저장해놓는다. 그리고 새로운 프로세스의 데이터를 PCB로부터 읽고
cpu 레지스터로 옮긴다. (PCB엔 프로세스마다 사용할 수 있는 공간이 나뉘어져 있다.)
그런데 PCB에서 데이터를 읽고 저장할 땐 CPU가 아무런 일도 하지 못한다.
이 때문에 Context Switching이 잦으면 오버헤드가 많이 발생할 수 있다.
https://philip1994.tistory.com/45
https://hoony-gunputer.tistory.com/entry/Thread-Context-Switching-vs-Process-Context-Switching
https://hoony-gunputer.tistory.com/entry/Thread-process
https://www.crocus.co.kr/1364
https://agh2o.tistory.com/12
https://jhnyang.tistory.com/7
https://velog.io/@adam2/2020-01-08-2301-%EC%9E%91%EC%84%B1%EB%90%A8-huk55f3cic
'Computer Science' 카테고리의 다른 글
컴퓨터가 표현하는 시간들 :: Epoch (0) 2020.09.05 댓글