cs

PCB와 컨텍스트 스위칭

ssoonn 2024. 7. 30. 17:59

프로세스 관리

구동중인 프로세스가 여러 개일 때, CPU 스케줄링을 통해 프로세스를 관리하는 것을 의미한다. 

CPU들은 각 프로세스들에 대해서 구분할 수 있어야 관리가 가능하다.

->

프로세스들의 특징을 갖고 있는 Process Metadata를 활용한다.

 

프로세스 메타데이터가 담고있는 정보

  • 프로세스 고유 ID (PID)
  • 프로세스 상태
  • 프로세스 우선순위
  • Program Counter (PC)
  • CPU 레지스터
  • Owner
  • Memory Limit
  • 기타 등등

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

 

PCB (Process Control Block)

프로세스들의 메타데이터를 저장하는 곳.

하나의 PCB 안에 하나의 프로세스 정보가 담기는 구조이다.

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

PCB의 필요성

CPU는 프로세스의 상태에 따라 교체작업이 이루어진다.*

이 때, 앞으로 수행할 '대기 중인 프로세스에 관한 저장값'을 PCB에 저장해 둔다.

 

*자세한 설명: 프로세스 A 에서 B 로 교체될 때

더보기
  1. B 에서 인터럽트 발생
  2. A 의 현재 실행 정보를 PCB 에 저장
  3. A 를 대기 상태로 돌리고 B 를 실행 상태로 전환
  4. B 의 PCB 정보를 기반으로 실행 재개
  5. B 가 원하는 동작을 모두 수행함
  6. B 의 현재 실행 정보를 PCB 에 저장
  7. B 를 대기 상태로 돌리고 A 를 실행 상태로 전환
  8. A 의 PCB 정보를 기반으로 실행 재개

 

PCB의 관리

linked list 방식으로 관리된다.

  • PCB List Head에 PCB들이 생성될 때마다 하나씩 이어붙는 형태.
  • 주소값으로 연결이 이루어져 있는 연결리스트이므로, 삽입 삭제가 용이하다.
  • 프로세스가 생성되면 해당 PCB가 생성되고, 프로세스가 종료된다면 해당 PCB 제거

 

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

Context Switching

CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에 읽어 레지스터에 적재하는 과정

프로세스의 상태 변경 시 발생한다. (Ready → Running, Running → Ready, Running → Waiting)

  • Context Switching 발생 예시
    • 인터럽트가 발생
    • 실행 중인 CPU 사용 허가시간을 모두 소모
    • 입출력을 위해 대기해야 하는 경우

다양한 사람이 동시에 사용하는 것처럼 하기 위해 Context Switching이 필요하게 되었다.

 

 

Context Switching 과정

  1. 현재 CPU는 process P0을 수행 중.
  2. 인터럽트(interrupt)가 걸림 -> 현재 수행하고 있는 P0을 먼저 PCB0에 저장
  3. Waiting 상태로 변함. CPU는 다른 프로세스(process P1)을 Running으로 바꿔 올린다.
  4. CPU가 앞으로 수행할 프로세스(process P1)에 관한 정보로 교체한다.
  5. 이번에는 CPU가 process P1을 수행하다 다시 인터럽트(interrupt)가 걸리면 현재 수행하고 있는 것을 PCB1에 저장한다.
  6. Waiting 상태로 변하게 되면 CPU는 다른 프로세스(process P0)을 Running으로 바꿔 올린다.
  7. CPU가 앞으로 수행할 프로세스(process P0)에 관한 정보로 교체

 

Context Switching의 OverHead

프로세스 작업 중에는 OverHead를 감수해야 하는 상황이 있다.

ex. 프로세스를 수행하다가 입출력 이벤트가 발생해서 대기 상태로 전환시킴
이때, CPU를 그냥 놀게 놔두는 것보다 다른 프로세스를 수행시키는 것이 효율적

CPU에 계속 프로세스를 수행시키도록 하기 위해서 다른 프로세스를 실행시키고 Context Switching 하는 것이다.

 

 

ref.

https://gyoogle.dev/blog/computer-science/operating-system/PCB%20&%20Context%20Switching.html

 

PCB & Context Switching | 👨🏻‍💻 Tech Interview

PCB & Context Switching Process Management CPU가 프로세스가 여러개일 때, CPU 스케줄링을 통해 관리하는 것을 말함 이때, CPU는 각 프로세스들이 누군지 알아야 관리가 가능함 프로세스들의 특징을 갖고있

gyoogle.dev

https://velog.io/@haero_kim/PCB-와-Context-Switching-알아보기

 

PCB 와 Context Switching 알아보기

수많은 프로세스들을 관리하기 위한 PCB

velog.io

https://m.blog.naver.com/adamdoha/222019884898

 

[OS] PCB와 Context Switching

Process Management CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것을 말합니다...

blog.naver.com

https://parkmuhyeun.github.io/etc/operating%20system/2022-08-15-PCB-Context-Switching/

 

PCB와 Context Switching

PCB와 Context Switching 15 Aug 2022 in etc / Operating system on Os, Pcb, Context-switching What is PCB, Context Switching? 우리는 인터넷을 하고 있는 동시에 음악도 들을 수 있고 채팅도 할 수 있다. 어떻게 컴퓨터는 동시

parkmuhyeun.github.io