처리기는 하드웨어 자원으로 한정되어 있다. 그러므로 여러 프로세스가 처리기를 사용하려면 이용순서를 정해야하는데, 이를 스케줄링(Scheduling)이라 부른다. OS가 스케줄링을 담당한다. OS는 PCB를 통해 프로세스를 식별한다. 그러므로 PCB에는 처리기 사용을 위한 모든 정보가 들어있어야 한다.
위 그림은 처리기 문맥교환(Context Change)이 일어나는 간략한 다이어그램이다. OS는 스케줄링을 위해 Queue 자료구조를 이용한다. Queue 자료구조에는 PCB의 주소가 들어간다. PCB 객체가 큐에 들어가면 Queue 자료구조가 방대해지기 때문에 비효율적이다. Queue 자료구조에 저장된 PCB 주소가 디스패치되면 본격적인 처리기 문맥교환이 일어난다. 그럼 PCB에는 어떤 정보들이 저장되어야 할까?
PCB의 구성요소
식별자 : 프로세스를 구분하는 요소
상태 : OS는 프로세스의 상태를 알아야 적절한 제어를 할 수 있다. 상태에는 수행, 준비, 블록, 생성, 종료 등등 여러 상태가 있다. 관련해서는 다음 포스팅에 자세히 정리하겠다.
우선순위 : 하나의 프로그램은 여러 개의 프로세스로 나뉜다. 그러나 모든 프로세스가 핵심은 아니다. 가장 중심을 잡는 프로세스가 있고 핵심 프로세스를 보조해주는 프로세스가 있다. 핵심이 되는 프로세스를 부모 프로세스, 보조하는 프로세스를 자식 프로세스라 부른다. 그러므로 핵심이 되는 프로세스가 다른 프로세스보다 처리기를 차지할 우선순위가 높아야한다.
프로그램카운터 : 프로세스가 수행되다가 중단 될 때 다음에 수행할 명령어 주소를 저장
메모리포인터 : 프로세스와 연계된 프로그램 코드 및 데이터의 포인터와 다른 프로세스와 공유되는 메모리 영역의 포인터
문맥데이터 : 인터럽트 되기 전, CPU 레지스터에 저장되어 있던 데이터로 다시 CPU를 점유하면 그대로 CPU 레지스터에 저장된다.
입출력 상태 정보 : 미해결된 입출력 정보와 프로세스에 할당된 입출력 장치에 대한 정보를 담는다.
어카운팅 정보 : 사용된 처리기 시간, 클록 시간, 시간 제한, 계정 번호 등을 포함 할 수 있다.
PCB 역할
1. 수행 프로세스를 인터럽트 한 후 나중에 인터럽트가 발생되지 않은 것 처럼 프로세스 수행을 재개할 수 있는 충분한 정보를 유지 ( 문맥데이터에 사용 중이던 레지스터 정보를, 어카운팅 정보에 사용 중이던 처리기 정보를 등등 )
2. 다수의 프로세스를 지원하고 멀티 프로세싱을 제공할 수 있게 해주는 주요 도구 ( 인터럽트되어도 문맥유지 가능 )
참고자료
'CS > OS' 카테고리의 다른 글
[운영체제] KLT( Kernel Level Thread ) VS ULT ( User Level Thread ) (0) | 2021.10.11 |
---|---|
[운영체제] 쓰레드 ( Thread ) (0) | 2021.10.11 |
[운영체제] 프로세스 제어구조 (0) | 2021.10.11 |
[운영체제] 프로세스 상태 (0) | 2021.10.11 |
[ 운영체제 ] PCB ( Process Control Block ) (0) | 2021.09.29 |