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

Lys·2023년 10월 27일
0

운영체제

목록 보기
7/23

프로세스 제어 블록(Process Control Block, PCB)이란

  • 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 자료구조다.
  • 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내 자료구조로, 커널 주소 공간의 data 영역에 존재한다.
  • PCB는 운영 체제가 프로세스를 표현한 것이라 할 수 있다.
  • 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB도 함께 제거된다.
  • 프로세스는 CPU를 점유하여 작업을 처리하다가도 상태가 전이되면, 진행하던 작업 내용들을 모두 정리하고 CPU를 반환해야 하는데, 이때 진행하던 작업들을 모두 저장하지 않으면 다음에 자신의 순서가 왔을 때 어떠한 작업을 해야하는지 알 수 없는 사태가 발생한다. 따라서 프로세스는 CPU가 처리하던 작업의 내용들을 자신의 PCB에 저장하고, 다음에 다시 CPU를 점유하여 작업을 수행해야 할 때 PCB로부터 해당 정보들을 CPU에 넘겨와서 계속해서 하던 작업을 진행할 수 있게 된다.

  • 운영체제에 따라 PCB에 포함되는 항목이 다를 수 있지만, 일반적으로 다음과 같은 정보가 포함되어 있다.
    • 포인터
      프로세스의 현재 위치를 저장하는 포인터 정보다.

    • 프로세스 상태
      프로세스의 각 상태 (생성(New), 준비(Ready), 실행(Running), 대기(Waiting), 종료(Terminated))를 저장한다.

    • 프로세스 번호
      모든 프로세스에는 프로세스 식별자를 저장하는 프로세스 ID 또는 PID라는 고유 한 ID가 할당된다.

    • 프로그램 카운터
      프로세스를 위해 실행될 다음 명령어의 주소를 포함하는 카운터를 저장한다.

    • 레지스터
      누산기, 베이스, 레지스터 및 범용 레지스터를 포함하는 CPU 레지스터에 있는 정보다.

    • 메모리 제한
      이 필드에는 운영 체제에서 사용하는 메모리 관리 시스템에 대한 정보가 포함된다. 여기에는 페이지 테이블, 세그먼트 테이블 등이 포함될 수 있다.

    • 열린 파일 목록
      이 정보에는 프로세스를 위해 열린 파일 목록 이 포함된다.

문맥교환(Context Switching)이란

  • CPU를 차지하고 있던 프로세스가 나가고 준비상태에 있던 프로세스를 새롭게 받아들이는 작업이다. 이 때 두 프로세스 제어 블록의 내용이 변경된다.

  • 문맥 교환의 시점
    • 멀티 태스킹
      • 다수의 프로세스가 하나의 CPU자원을 나누어 사용하는 것이다.
      • 실행 가능한 프로세스들이 운영체제의 스케줄러에 의해 조금씩 번갈아 수행된다.
      • CPU를 할당받을 때 문맥 교환이 일어난다.
      • 매우 빠른 속도로 처리되기 때문에 동시에 처리되는 것처럼 느껴진다.
    • 인터럽트 처리
      • 인터럽트가 발생할 때 문맥 교환이 일어난다.
      • I/O request : 입출력 요청
      • time slice expried : CPU 사용시간 만료
      • fork a child : 자식 프로세스 생성
      • wait for an interrupt : 인터럽트 처리 대기
    • 사용자 및 커널 모드 전환
      - 운영 체제에서 사용자 모드와 커널 모드 사이의 전환이 필요할 때 필수는 아니지만 운영체제에 따라 문맥 교환이 발생한다.

  • 문맥 교환이 일어나는 과정
  1. 프로세스 P1은 기존에 실행 중이던 프로세스이고, 실행 중에 인터럽트가 발생하여 CPU 할당으로부터 중지되어야 하는 상황이 발생했다.
  2. 중지되기 전 지금까지 작업했던 내용들에 대해 PCB1에 저장하게 된다. 이를 저장해둬야 다음에 다시 P1이 CPU를 할당받았을 때 작업을 재개할 수 있기 때문이다.
  3. 그 후 다음으로 실행시킬 프로세스 P2에 대해 CPU는 P2가 이전까지 어떤 작업을 했는지에 대해 알아내고 작업을 수행해야 한다. 따라서 PCB2의 정보를 가지고 CPU를 다시 세팅한다. 그러고 작업을 시작한다.
  4. 그 후 P2이 중지될 때가 되면 위의 과정을 반복하게 된다.


🙇‍ 참고 사이트 🙇‍

https://yoongrammer.tistory.com/52
https://j-su2.tistory.com/63
https://jwprogramming.tistory.com/16
https://math-coding.tistory.com/99
https://kjhoon0330.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C-2-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%A0%9C%EC%96%B4-%EB%B8%94%EB%A1%9D%EA%B3%BC-%EB%AC%B8%EB%A7%A5-%EA%B5%90%ED%99%98

0개의 댓글

관련 채용 정보