PCB (Process Control Block)
프로세스 메타데이터들을 저장해 놓는 곳, 한 PCB 안에는 한 프로세스의 정보가 담김
프로세스의 생성과 동시에 고유한 PCB를 생성
PCB가 필요한 이유??
CPU에서는 프로세스의 상태에 따라 교체작업이 이루어진다. (인터럽트가 발생해서 할당받은 프로세스가 wating 상태가 되고 다른 프로세스가 running으로 바꿔 올릴 때)
이때, 앞으로 다시 수행할 대기중인 프로세스의 상태 값을 PCB에 저장해두는 것이다.
PCB는 어떻게 관리되나요??
Linked List 방식으로 관리함
PCB List Head에 PCB들이 생성될 때마다 붙게 된다. 주소값으로 연결이 이루어져 있는 연결리스트이기 때문에 삽입제가 용이함
즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거됨
이렇게 수행중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것을 Context Switching이라고 한다.
보통 인터럽트가 발생하거나, 실행 중인 CPU 사용 허가시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에 Context Switching이 발생
Context Switching
멀티 프로세스 환경에서는 여러 프로세스가 실행되고, 필연적으로 프로세스간의 CPU 자원 할당 이동이 일어나게 됩니다. CPU는 기존에 자원을 할당한 프로세스의 Context를 저장하고, 전환될 프로세스의 Contex로 교체하는 과정을 거쳐서 자원 할당 이동이 일어납니다.
Context Switching 중에는 CPU가 프로세스 작업을 하지 않기 때문에 오버헤드가 발생하게 됩니다.
따라서 이 과정을 쓸데없이 자주 반복하지 않도록 하고, 필요한 순간에 적절하게 하도록 하는 것이 운영체제 스케쥴러입니다.
출처
'CS > 운영체제' 카테고리의 다른 글
교착상태 (DeadLock) (0) | 2021.07.27 |
---|---|
CPU 스케줄링의 종류 (0) | 2021.07.27 |
스케줄러 (0) | 2021.07.24 |
프로세스 간 통신 (Inter Process Communication) (0) | 2021.07.20 |
프로세스와 스레드의 차이 (0) | 2021.07.19 |