[CS스터디]PCB와 Context Switching

지영·2023년 5월 29일
0

CS

목록 보기
10/77
post-custom-banner

CPU는 프로세스 관리를 어떻게 하는걸까 ?? 먼저 프로세스의 정보를 담은 메타 데이터를 보자!

PCB(Process Control Block)

: 프로세스 메타데이터들을 저장하는 곳, 한 PCB 안에는 한 프로세스의 정보가 담김

프로세스 메타데이터 : Process ID, Process State, Process Priority, CPU Register, Owner, CPU Usage, Memory Usage

1.PCB가 생성되는 과정

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

2. PCB의 사용 목적

: 프로세스 상태(waiting, running 등)에 따라 CPU가 프로세스를 교체한다. 즉, 앞으로 다시 수행할 대기 중인 프로세스에 관한 저장 값을 PCB에 저장하고 쓴다.

+) 🎯 CPU가 프로세스를 교체하는 경우(==Context Switching)는 어떠한 경우일까?
: 인터럽트가 발생하면서 할당받은 프로세스가 waiting상태로 변화하고 다른 프로세스가 running으로 바뀌어 올라갈 때

3. PCB 관리 방법

  • Linked List 방식으로 관리함
  • 삽입, 삭제가 용이한 특성을 사용 -> PCB의 헤드에 PCB가 생성될 때마다 붙게 된다.
  • 프로세스 생성 시 해당 PCB가 생성, 프로세스 완료 시 PCB 삭제

Context Switching

: 현재 진행하고 있는 Task(프로세스, 스레드)의 상태를 저장하고(PCB를 메모리에 저장) 다음 진행할 Task(프로세스, 스레드)의 상태 값을 읽어(메모리에 적힌 PCB를 CPU에 올림) 적용하는 과정

1. Context Switching은 언제 발생?

: 보통 인터럽트 or 실행 중인 CPU의 사용 허가 시간을 모두 소비 or 입출력을 위해 대기 하는 경우. 즉, 프로세스의 상태가 변화할 때 발생

2. Context Switching의 발생 과정

+) Task의 대부분의 정보가 Register에 저장되며 PCB하나로 관리됨

1) 현재 실행하고 있는 Task의 PCB 정보를 메모리에 저장함

2) 다음 실행할 Task의 PCB의 정보를 읽어서 Register에 적재하고 PC를 통해 이전에 진행했던 과정을 이어서 다시 수행

3. Context Switching의 비용(프로세스 vs 스레드)

  • Process > Thread
  • 스레드는 Stack을 제외한 모든 메모리 영역을 공유해서! -> stack영역만 변경하면 Context Switching이 가능함 ✨
profile
꾸준함의 힘을 아는 개발자📍
post-custom-banner

0개의 댓글