[OS] PCB & Context Switching

Jeongyeon Park·2022년 12월 27일
0

OS 기본 개념

목록 보기
6/7
post-custom-banner

PCB와 Process Management


1. Process Management

하나의 컴퓨터에서 여러 개의 프로세스를 구동할 때, CPU 스케줄링을 통해 프로세스를 관리하는 것

  • Process Metadata: 프로세스 식별에 필요한 각 프로세스의 정보(특징)

  • Process Metadata에 포함된 정보
    - Process ID(PID) : Process Identification Number, 프로세스 고유 식별 번호
    - Process State (프로세스 상태) : Ready, Execute, Wait 등 프로세스의 현재 상태
    - Program Counter(PC) : 현재 프로세스가 다음으로 수행할 명령의 주소
    - Register Information (CPU 레지스터) : CPU 내부의 범용 레지스터(AX, BX, CX, DX), 데이터 레지스터(SP, BP, SI, DI), 세그먼트 레지스터(CS, DS, ES, SS) 등이 갖고 있는 값
    - Scheduling Information (스케줄링 정보) : 프로세스의 우선순위(priority), 최종 실행 시간, 스케줄링 큐를 가리키는 포인터 등
    - Memory Related Information (메모리 관련 정보) : Page Table, Segment Table의 Base, Limit 값
    - Accounting Information (계정 정보) : CPU 사용 시간, 시간 제한 등
    - I/O Status Information (입출력 정보) : 프로세스에 할당된 I/O 디바이스 관련 정보

  • Process Metadata는 각 프로세스의 PCB에 저장된다.

2. PCB (Process Control Block)

Process Metadata를 저장하는 공간. 하나의 PCB 안에 한 프로세스의 정보가 저장된다.

  • 프로그램 실행 → 프로세스 생성 → 프로세스 주소 공간에 Code, Data, Stack 영역 생성 → 프로세스의 메타데이터가 PCB에 저장

1) PCB가 필요한 이유

CPU에서는 프로세스 교체 작업이 이루어지는 경우가 있는데, 이 때 현재 프로세스의 상태를 PCB에 저장하면 다음에 프로세스가 실행될 때 PCB에 저장된 데이터를 기반으로 작업을 연속적으로 수행할 수 있다.

2) PCB 관리 방식

  • Linked list 형태로 관리
  • PCB List Head -> PCB 생성 시 linked list에 하나씩 추가
  • 주소 값으로 연결되는 형태이므로 삽입/삭제 용이

Context Switching


1. Context Switching이란?

  1. CPU가 현재 실행중인 프로세스/스레드의 상태를 저장하고, 다음에 실행할 프로세스/스레드의 Context(문맥 - 상태 및 Register 값 정보)를 읽어 새로운 Context 정보로 교체하는 과정

  2. CPU가 이전의 프로세스 상태를 PCB에 저장하고, 다른 프로세스의 정보를 PCB에서 읽어서 Register에 로드하는 과정

  • Context Switching이 일어나는 경우: 다른 프로세스에 의해 Interrupt 발생 / 실행 중인 프로세스가 CPU 사용 허가 시간을 모두 소모 / 입출력을 위해 대기해야 하는 경우

  • Ready -> Running / Running -> Ready / Running -> Block 등 프로세스의 상태 변화가 필요할 때 발생

2. Context Switching 수행 과정

  1. 프로세스 P1에서 Interrupt 발생
  2. 실행 중인 프로세스 P0의 상태 정보를 P0의 PCB에 저장
  3. P0을 Running -> Waiting 상태로 변경
  4. P1을 Wating/Ready -> Running 상태로 변경
  5. P1의 PCB에 저장된 데이터를 기반으로 작업 수행
  6. 작업을 수행한 후, P1의 상태 정보를 P1의 PCB에 저장
  7. P1을 Running -> Wating 상태로 변경
  8. P0을 Waiting -> Running 상태로 변경
  9. P0의 PCB에 저장된 데이터를 기반으로 작업 수행

3. Context Switching의 Overhead

1) Context Switching의 Cost

Context Switching 발생 시 소요되는 비용
1. Cache, Register 초기화
2. Memory Mapping 초기화
3. 메모리에 접근하기 위해 Kernel 실행

=> Context Switching이 빈번하게 일어나는 경우 성능 저하 가능성

2) Overhead

Context Switching 시 Overhead가 발생하지만, I/O 이벤트 대기 등으로 프로세스가 다음 작업을 수행할 수 없는 상황인 경우 CPU가 다른 작업(다른 프로세스 실행)을 함으로써 효율성을 높이기 위해 overhead를 감수하고 Context Switching을 수행한다.

하지만 Context Switching이 너무 자주 발생하는 경우 성능이 저하될 수 있기 때문에, Time quantum 등을 적절하게 설정하여 Overhead를 관리하는 것이 필요하다.


References

post-custom-banner

0개의 댓글