리미로그

[OS] PCB & Context Switching 본문

CS/OS

[OS] PCB & Context Switching

멍발자 2022. 12. 15. 11:38

이번 글에서는 프로세스마다 가지고 있는 PCB와 문맥을 교체하는 Context Switching에 대해 알아보겠다.

 

PCB (Process Control Block)

 

프로세스의 정보를 저장하고 있는 블록

 

· 프로세스 상태 : new , ready, waiting, running, terminated (자세한 내용은 다음에)

· PID : OS가 프로세스를 구별하기 위해 부여하는 번호

· PPID : 현재 프로세스의 부모 프로세스 PID 
             부모 프로세스는 시스템 콜을 통해 현재 프로세스를 호출한 프로세스
             ps 명령어를 통해서 PID와 PPID을 확인 가능

· PC : 다음 실행될 명령어를 가리키고 있다 

· CPU register

· CPU 스케줄링 정보 : 우선순위, 최종 실행 시각, CPU 점유시간 

· 메모리 관리 정보

· I/O status 정보 : 프로세스에 할당된 입출력 장치, 열려 있는 파일 목록 

 

 

Context Switch

CPU가 다른 프로세스를 점유 중일 때, 현재 프로세스의 정보를 저장하고 다음 프로세스의 정보를 가져오는 작업이다.

context는 PCB가 가지고 있는 프로세스를 의미한다.

즉, 프로세스의 정보를 저장하고 가져올 때 사용되는 곳이 바로 PCB이다.

위의 그림을 보면서 context switching 과정을 이해해보자! 

 

1. 현재 CPU는 P0를 실행하고 있다. 이제 context switching을 하기 위해 OS에 인터럽트나 시스템 콜을 준다.

2. 현재 P0의 정보들을 PCB0(메모리)에 저장한다.

3. 이후, 다음에 사용할 프로세스(P1) 정보를 메모리(PCB1)에서 CPU로 가져온다. 

4. 이제 P1을 실행하게 된다.

 

 

위의 과정을 보면 context switch 하는 과정이 OS가 개입해서 일어나게 되는 오버헤드인 것을 알 수 있다.

switch를 하는 동안에 시스템은 아무 일도 할 수 없기 때문이다. 

따라서 이 과정을 줄이는 것이 성능을 위해서 중요한 일이다.

context switch는 온전히 하드웨어적인 부분에 의존적이므로 성능을 높이려면 하드웨어 성능을 높여야 한다.

 

 

 

[참고]

https://junhyunny.github.io/information/operating-system/process-control-block-and-context-switching/

Operating System Concepts, 10/E 

 

'CS > OS' 카테고리의 다른 글

[OS] 스케줄러 종류  (0) 2022.12.16
[OS] 프로세스 주소 공간  (0) 2022.12.13
[OS] 프로세스와 스레드 차이  (0) 2022.12.13
Comments