[ OS ] PCB(Process Control Block), ContextSwitching

이숭인·2021년 7월 29일
0

[ OS ] 운영체제

목록 보기
2/9

PCB(Process Control Block)

  • 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보(Context) 를 저장하는 구조체

  • PCB 는 프로세스 생성 시 만들어지며 주기억장치(ROM,RAM) 에 유지된다

  • ContextSwitching 을 위해 반드시 필요하다

PCB가 저장하고 있는 정보들이에요. 각각의 정보들에 대해 살펴보자면

  • ProcessId : 프로세스의 고유번호
  • Process state : 프로세스의 현재 상태 (new, ready, running, waiting, terminated)
  • Program counter : 다음 실행될 프로세스의 포인터
  • Register information : 레지스터 관련 정보
  • Scheduling information : 스케줄링 및 프로세스 우선순위
  • Memory related information : 할당된 자원 정보
  • Accounting information : CPU에 할당되어 실제 사용된 시간
  • Status information related to I/O : 입출력 상태 정보

그렇다면 PCB는 왜 프로세스의 상태정보를 저장하고 있으며, 어디에 쓰이려 존재하는걸까?
일단 Context Switching에 대해 알아보아요 ㅋㅅㅋ


Context Switching

위의 사진처럼 CPU는 동시에 여러 프로세스를 실행하는것이 아니라 여러 프로세스를 돌아다니며 프로세스의 작업을 수행합니다.

  1. 프로세스는 CPU에 의해 수행되어지고, 현재 실행되고 있는 프로세스의 상태정보들은 CPU의 레지스터에 저장되어 있습니다.

  2. CPU는 스케쥴링 순서대로 순회하며 프로세스를 실행하는데, 실행중인 프로세스가 변경될때마다 이전에 작업했던 내용을 다시 불러와 CPU레지스터에 초기화해줘야 합니다.

왜?

프로세스가 어디까지 수행되었는지 필요하기 때문

결과적으로 실행중인 프로세스가 변경될 때 마다 CPU 레지스터들의 값이 각각의 프로세스의 상태정보(context) 로 변경되기 때문에 ContextSwitching 이라고 불리게 되는겁니다.


PCB와 ContextSwitching 의 관계

ContextSwitching 할때에 CPU레지스터에 실행될 프로세스의 상태정보들을 초기화해준다고 했어요.

그렇다면 프로세스들의 상태정보들은 어디에 저장되어 있냐?

PCB(Protocol Control Block) 에 저장되어 있는거죠.

CPU는 프로세스가 실행중 인터럽트나 I/O 이벤트가 발생, waiting 상태가 되면 다른 프로세스를 수행하게 되겠죠? 그 과정이 위의 사진에 나타나 있어요.

실행중인 두 프로세스를 P0, P1 이라고 정의하고 실행되는 프로세스가 변경될때 어떤일이 생기는지 알아볼게요.

프로세스 P0 이 수행되다 인터럽트 혹은 I/O 이벤트 가 발생하게 됬어요. 이때 CPU 가 P1 프로세스를 수행하려하겠죠? 이때 P0의 상태정보를 PCB0 에 저장 하고, P1의 상태정보를 저장하고 있던 PCB1 에서 프로세스 **상태정보(context)를 불러와 CPU의 레지스터를 초기화** 시켜줘요.

그 후 P1 프로세스가 실행되고 인터럽트 혹은 I/O 이벤트가 발생하게 되면 위와 같은 방법으로 PCB1에 현재 프로세스 상태정보(context)를 저장하고, PCB0 에 저장되어 있던 프로세스 상태정보(context)를 불러와 CPU의 레지스터를 초기화시켜주게 됩니다.

내용을 짧게 요약하자면!

  1. CPU가 실행하고 있는 프로세스가 변경 될때마다 자신의 PCB 에 상태정보(context) 를 저장하고

  2. 다음에 수행될 프로세스의 상태정보(context)CPU에 초기화 시켜준다 !

정도로 요약해볼수 있겠네요.

profile
iOS Developer

0개의 댓글