[운영체제] PCB와 Context Switching

Letmegooutside·2022년 1월 10일
0

운영체제

목록 보기
8/16

PCB

특정 프로세스에 대한 정보를 담고 있는 자료구조

운영체제는 PCB에 담긴 프로세스 정보를 이용하여 프로세스를 관리하고 제어한다.
프로세스가 생성될 때 마다 고유의 PCB가 생성되어 메인 메모리에 유지되고, 프로세스가 완료되면 제거된다.
PCB는 프로세스의 중요한 정보를 포함하고 있으므로 일반 사용자는 접근하지 못하는 보호된 메모리 영역에 존재한다.

진행 과정

  1. 프로그램 실행
  2. 프로세스 생성
  3. 프로세스 주소 공간 (코드, 데이터, 스택) 생성
  4. 이 프로세스의 메타데이터들이 PCB에 저장

상세 구조

  • Process id
  • Process state
  • Program counter
  • CPU register : CPU에서 사용한 레지스터의 값을 잃지 않기 위해 PCB에 그 값을 저장
  • CPU scheduling information : 프로세스의 우선순위, 최종 실행 시간, 스케줄링 큐를 가리키는 포인터 등
  • Memory management information : 레지스터, 페이지 테이블, 세그먼트 테이블의 base, limit값에 대한 정보
  • Accounting informaion : CPU 사용 시간, 실제 사용된 시간, 시간 제한 등
  • I/O status informaion : 프로세스에 할당된 I/O기기에 해당하는 정보

필요한 이유

CPU는 프로세스의 상태에 따라서 교체 작업이 이루어진다.
이 때 교체되는 프로세스의 상태 값을 PCB에 저장해두었다가 앞으로 다시 수행할 때 사용하는 것이다.

관리 방식

연결 리스트 방식으로 관리된다.
따라서 삽입 삭제가 용이하며 프로세스가 생성 되면 해당 PCB가 생성되고, 프로세스가 완료되면 제거된다.

Context Switching (문맥교환)

CPU가 현재 작업 중인 프로세스에서 다른 프로세스로 넘어갈 때 지금까지의 프로세스 상태를 저장하고, 새 프로세스의 저장된 상태를 다시 적재하는 작업

  • 멀티태스킹
    실행 가능한 프로세스들이 운영체제의 스케줄러에 의해 조금씩 번갈아가며 수행되는 것을 말한다.
    번갈아 가며 프로세스가 CPU를 할당받는데, 이 때 문맥교환이 이루어진다.

  • 인터럽트 핸들링
    인터럽트가 발생하면 문맥교환이 이루어진다.

  • 사용자와 커널모드 전환
    필수는 아니지만 운영체제에 따라서 발생할 수 있다.

오버헤드

문맥교환에 소요되는 시간과 메모리를 의미한다.

문맥교환이 발생하면 시간과 메모리가 소요되므로 잦은 문맥교환은 성능 저하를 가져온다.

I/O 이벤트가 발생했을 때, 해당 이벤트가 끝날 때 까지 기다리면 CPU를 점유하고 있어도 아무런 작업도 할 수 없기 때문에 CPU가 낭비된다.
때문에 오버헤드를 감수하면서 기존 프로세스를 새 프로세스로 바꾸는 것이 더 효율적이다.

또 멀티태스킹에서 시간 할당량이 적어지면 문맥 교환의 수와 오버헤드가 증가하지만 동시에 더 많은 프로세스를 수행할 수 있고, 시간 할당량이 커지면 문맥 교환의 수와 오버헤드는 감소하지만 더 적은 프로세스를 동시에 수행할 수 있다.

문맥교환 시나리오

  1. P0 프로세스가 인터럽트를 받으면서 PCB0P0 프로세스의 상태 정보를 저장한다.
  2. 다음 수행될 P1 프로세스의 PCB1에서 P1 프로세스의 상태 정보가 CPU에 재로딩 된다.
  3. P1프로세스를 일정시간 수행한다.
  4. P1 프로세스가 인터럽트를 받으면서 PCB1P1 프로세스의 상태 정보를 저장한다.
  5. 다음 수행할 PO 프로세스의 PCB0에서 P1 프로세스의 상태 정보가 CPU에 재로딩 된다.
  6. P0 프로세스를 일정시간 수행한다.



Reference
https://junhyunny.github.io/information/operating-system/process-control-block-and-context-switching/
https://velog.io/@yanghl98/OS운영체제-PCB와-Context-switching
https://spurdev.tistory.com/13

0개의 댓글