춤추는 개발자

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

Developer's_til/운영체제

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

Heon_9u 2021. 11. 8. 21:40
728x90
반응형

 

✅ 프로세스 제어 블록

 프로세스를 실행하는데 필요한 중요한 정보를 보관하는 자료 구조로 TCB(Task Control Block)라고도 한다. 모든 프로세스는 고유의 프로세스 제어 블록을 가지며, 프로세스 생성 시 만들어져서 프로세스가 실행을 완료하면 폐기된다.

 

 프로세스 제어 블록의 구성과 중요한 요소들은 아래와 같다.

  • 포인터: 준비 상태나 대기 상태는 큐로 운영되는데, 프로세스 제어 블록을 연결하여 큐를 구현할 때 사용한다.
  • 프로세스 상태: 생성, 준비, 실행, 대기, 보류 준비, 보류 대기 등이 있다. 프로세스가 현재 어떤 상태에 있는지를 나타낸다.
  • 프로세스 우선순위: 프로세스의 중요도는 각각 다르다. 사용자 프로세스보다 중요도가 큰 커널 프로세스는 우선순위가 높고, 사용자 프로세스끼리 우선순위가 다르다. 해당 부분은 다른 포스팅에서 자세하게 설명할 예정.
  • 이외에도 프로세스 구분자, 카운터, 각종 레지스터 정보와 메모리 관리 정보 등이 있다.

 

✅ 문맥 교환

 문맥 교환은 CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업을 말한다. 이때 두 프로세스 제어 블록의 내용이 변경된다.

 실행 상태에서 나가는 프로세스 제어 블록에는 지금까지의 작업 내용을 저장하고, 반대로 실행 상태로 들어오는 프로세스 제어 블록의 내용으로 CPU가 다시 세팅된다. 이전 작업 상태가 되어야 다음 작업을 할 수 있기 때문이다.

 

[ 문맥 교환의 절차 ]

 

 

  1. 실행 상태에 있는 프로세스 P1이 타임 아웃이 되면 P1의 프로세스 제어 블록에 현재까지의 작업 결과가 저장되고 준비 상태로 쫓겨난다.
  2. 준비 상태에 있던 P2가 실행 상태로 가면 CPU의 레지스터가 P2의 프로세스 제어 블록 값으로 채워져 다음 작업을 하게 된다.

 

 

 

728x90
반응형