운영체제

[OS/운영체제] 프로세스(Process) - (2)

4Legs 2020. 11. 4. 21:54

PCB (Process Control Block)

각 프로세스는 운영체제에서 PCB의 형태로 표현된다. (Task Control Block이라고도 한다)

PCB는 다음 그림과 같이 프로세스와 관련된 다양한 정보들을 담고 있다.

Process Control Block

 - Process State : New, Ready, Running, Waiting 등의 상태를 담는다.

 - Program Counter : 이 프로세스에서 다음으로 실행될 Instruction의 주소를 담는다.

 - CPU Register : Program Counter와 더불어 프로세스가 진행된 상태를 저장해 interrupt가 발생한 이후에도 프로세스가 잘 동작하도록 한다.

 - Memory-management Information : 페이지 테이블, 세그먼트 테이블 등의 메모리 한도 정보를 담고 있다.

 - Accounting Information : CPU의 실시간 사용량 등의 정보를 담고 있다.

 - I/O Status Information : 프로세스에 할당된 입출력 장치의 목록을 담고 있다.

프로세스 간의 전환을 나타낸 다이어그램

위 그림은 두 프로세스가 번갈아 실행되는 과정을 나타낸 다이어그램이다.

P0에 대응하는 PCB0을 통해 인터럽트가 발생했을 때 P0의 상태를 저장하고, P1이 끝난 후 다시 PCB0을 통해 마지막으로 진행했던 상태부터 다시 실행됨을 알 수 있다.

 

프로세스 스케줄링 (Process Scheduling)

멀티프로그래밍의 핵심은 CPU의 사용량을 최대화하는 것이고, Time-Sharing의 핵심은 각 프로그램이 실행되는 동안 서로 상호작용할 수 있도록 프로세스들을 교체해주는 것이다.

이 두 가지의 핵심을 만족시키기 위해, 프로세스 스케줄러(Process Scheduler)는 사용 가능한 프로세스들 중 CPU에 올려 실행시킬 프로그램을 선택해준다. 이 과정에서 Job Queue, Ready Queue, Device Queue 등이 사용된다.

각 큐들은 PCB를 이용해 연결 리스트 형태로 프로세스들을 스케줄링한다.
큐를 통한 프로세스 스케줄링을 나타낸 다이어그램 

Context Switch

앞서 말했듯이, 운영체제는 인터럽트에 의해 현재 실행중이던 프로세스를 중단하게 된다. 중단했던 프로세스를 다시 실행하기 위해 운영체제는 CPU에서 실행되고 있던 프로세스의 Context를 저장할 필요가 있다. Context는 PCB에 CPU 레지스터 값, 프로세스 상태, 메모리 관리 정보 등으로 표현된다.

CPU에서 실행중인 프로세스를 교체하는 과정에는 원래 실행 중이던 프로세스의 Context를 저장하고, 다음에 실행시킬 프로세스의 Context를 불러오는 작업들이 필요하다. 이러한 작업을 Context Switch라 한다.

 

 

※ 본 게시글은 『Operating System Concepts』 를 참고하여 작성되었습니다.