PCB와 Context Switching

조완기.Wans·2024년 6월 12일

Process Management
CPU에 프로세스가 여러개일 때, CPU 스케줄링을 통해 관리하는 것
=> CPU는 각 프로세스들이 누군지 알아야 관리가 가능하다.
=> 프로세스들의 특징을 가지고 있는 것이 바로 'Process Metadata' 이다.

PCB(Process Control Block)

프로세스 메타 데이터들을 저장해 놓는 곳, 한 PCB안에는 한 프로세스의 정보가 담긴 운영체제 커널의 자료구조이다.

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

PCB의 구조

  • 운영체제에 따라 PCB에 포함된 정보가 다를 수 있다.

프로세스의 특징을 가진 데이터

  • Process Metadata
    • Process ID : 프로세스를 구분하는 ID
    • Process state : 각 State 들의 상태를 저장한다. (준비, 실행 , 대기)
    • Program Counter(PC)다음 Instruction의 주소를 저장한다. CPU는 이 값을 참조해서 Process의 Instruction을 수행한다.
    • Register : Accumulator, CPU Register, General Register 등을 포함한다.
    • CPU Scheduling Information우선순위, 최종 실행시간, CPU 점유시간 등이 포함된다.
    • Memory Information : 해당 프로세스 주소공간(lower bound ~ upper bound) 정보를 저장
    • Process Information : 페이지 테이블, 스케줄링 큐 포인터, 소유자, 부모 등 (Owner)
    • Device I/O Status : 프로세스에 할당된 입출력 장치 목록, 열린 목록등
    • Pointer부모/자식 프로세스에 대한 포인터, 자원에 대한 포인터 등
    • Open File List : 프로세스를 위해 열려있는 파일의 리스트

이 메타데이터는 프로세스가 생성되면 PCB(Process Control Block)이라는 곳에 저장된다.

PCB가 필요한 이유?

CPU에서는 프로세스의 상태에서 따라 교체작업이 이루어진다.
(interrupt가 발생해서 할당받은 프로세스가 waiting 상태가 되고 다른 프로세스를 running으로 바꿔 올릴 때)
이 때, 다시 수행할 프로세스에 관한 값을 PCB에 저장해두어 나중에 사용할 때 가져와서 수행한다.

PCB는 어떻게 관리되나요?

Linked List 방식으로 관리한다.

PCB List Head에 PCB들이 생성될 때마다 붙게 된다. 주소값으로 연결이 이루어져 있는 연결리스트이기 때문에 삽입 삭제가 용이함.

즉, 프로세스가 생성되면 해당 PCB가 생성되고 프로세스 완료시 제거됨

이렇게 수행 중인 프로세스를 변경할 때, CPU의 레지스터 정보가 변경되는 것을 Context Switching이라고 한다.

+TCB(Thread Control Block)

TCB는 PCB보다 적은 데이터를 가지고 자료구조
스레드끼리는 사용자 수준 문맥의 text영역과 data영역은 공유, stack영역은 따로 갖는다.

Context Switching

멀티 프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행한던 중 인터럽트가 발생하거나, 실행 중인 CPU 사용 허가시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에 기존의 프로세스의 상태 또눈 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업 => PCB 활용
즉, 프로세스의 상태 변경시 발생한다.

컨텍스트 스위칭이 미치는 영향

  • 장점

    • 여러 프로세스와 스레드들을 동시에 실행
    • 여러 프로세스와 스레드들이 공정하게 CPU 시간을 나눠 가짐
    • 높은 우선순위의 작업이 빠르게 처리
  • 단점

    • 캐시 오염(Cache Pollution)
      컨텍스트 스위칭이 일어나면, 또 사용할 것이라고 예상을 하고 캐시에 데이터나 값을 저장한 캐시가 의미가 없는 데이터가 되어버립니다. 컨텍스트 스위칭이 일어난 직후에 캐시에 가봤자, 이전에 프로세스에서 실행되었던 정보들을 저장해놓고 있을 가능성이 매우 높기 때문에, 내가 필요한 정보는 없을 가능성이 매우 높아지기 때문
      다시 정보들을 읽어와야 하므로 성능적 손해
    • overhead

프로세스끼리의 스위칭 VS 스레드끼리의 스위칭

  1. 공통점
  • 커널 모드에서 실행
  • CPU의 레지스터 상태를 교체
  1. 차이점
  • 프로세스 컨텍스트 스위칭은 가상 메모리 주소 관련 처리를 추가로 수행 ⇒ 스레드끼리는 공유하는 메모리 영역이 있기때문에 메모리 주소 처리를 안해줘도 된다

다른 프로세스끼리의 스위칭은 주소 체계와 관련된 일들도 추가적으로 처리를 해야 한다 ⇒ 이러한 추가적인 작업이 필요하기 때문에 프로세스 컨텍스트 스위칭보다 스레드 컨텍스트 스위칭이 더 빠름


참고 및 참조
프로세스 제어 블록 (PCB: Process Control Block) 알아보기

운영체제 - PCB(Process Control Block)란?

Process, PCB(Process Control Block)

[Operating System] PCB(Process Control Block)

PCB(Process Control Block) & TCB(Thread Control Block)

Context Switching에서의 Thread와 Process의 관계 + PCB, TCB

OS - Context Switch(컨텍스트 스위치)가 무엇인가?

컨텍스트 스위칭(Context Switching)

0개의 댓글