운영체제(2)

Flash·2023년 3월 9일
0

운영체제

목록 보기
3/3
post-thumbnail

조성호님의 쉽게 배우는 운영체제를 읽으며 정리한 글입니다.

저번 시간에는 프로세스의 개요에 대해 배웠다. 시분할 방식으로 계속 서로 다른 프로세스들이 진행되어야 하는 상황에서 PCB 의 필요성을 살펴봤다. 그렇다면 이 PCB를 통해 어떻게 서로 다른 프로세스들을 끊임없이 돌아가며 실행시킬 수 있는지 알아보자.

프로세스 제어 블록과 문맥 교환

프로세스 제어 블록 구성

포인터, 프로세스 상태, 프로세스 구분자, 프로그램 카운터와 각종 레지스터 정보들이 담겨있다. 포인터는 프로세스 블록들이 모여있는 큐를 만들기 위한 요소다. 우선순위가 같거나 같은 입출력을 기다리고 있는 등 동일한 큐 내에 존재해야 하는 프로세스 제어블록들이 큐를 이룰 수 있도록 해준다.

여기 담겨 있는 정보들은 실행 상태로 전환될 때 CPU의 레지스터 내에 옮겨진다. 기존에 실행 중이던 프로세스의 PCB 구성 정보들이 CPU 레지스터의 자리를 비워주고 새로운 녀석의 정보가 들어오는 과정이 수반된다.

문맥 교환

동일한 작업 환경으로 새로운 프로세스를 받으면 해당 프로세스가 필요로 하는 작업들을 수행할 수 없다. 작업 환경 자체를 바꾸는 것이 바로 CPU 레지스터를 새로운 프로세스의 PCB 정보들로 채워 넣는 것이다.

인터럽트나 타임아웃으로 인해 쫓겨나는 프로세스가 진행하던 작업 정보들은 반드시 저장되어야 다시 실행 상태로 돌아올 때 진행하던 작업을 재개할 수 있을 것이다. 먼저 진행 중이던 작업 정보들을 PCB에 저장해야 새로운 프로세스의 정보를 CPU 레지스터에 옮기는 디스패치가 이루어질 수 있다.

profile
개발 빼고 다 하는 개발자

0개의 댓글