PCB와 context switching

김하영·2023년 5월 28일
0

운영체제

목록 보기
5/13

Process Management

: 프로세스가 여러개일때, cpu가 스케쥴링을 통해 프로세스를 관리하는 것

cpu는 각 프로세스들의 특징을 갖고 있는 process metadata를보고 프로세스를 구분하고 관리한다.

  • Process Metadata
    - Process ID
    - Process State
    - Process Priority
    - CPU Registers
    - Owner
    - CPU Usage
    - Memeory Usage

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

PCB (process control block)

: 프로세스 메타 데이터를 저장해 두는 곳, 한 PCB안에는 한 프로세스의 정보가 담긴다.

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

PCB가 필요한 이유

CPU에서는 프로세스의 상태에 따라 교체작업이 이루어진다. (interrupt가 발생해서 할당받은 프로세스가 waiting 상태가 되고 다른 프로세스를 running으로 바꿔 올릴 때)

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

PCB의 관리 방식

: Linked List

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

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

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

Context Switching

: CPU가 이전의 프로세스 상태를 PCB에 저장하고, 다음 프로세스의 정보를 PCB에서 읽어 레지스터에 적재하는 과정

context switching이 발생하는 경우

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

즉, 프로세스가
Ready → Running,
Running → Ready,
Running → Waiting처럼
상태 변경 시 발생!

현재까지의 프로세스 진행상황을 저장하고, 다음 프로세스를 실행하고 다시 이전 프로세스의 저장된 진행상황으로 돌아오는 과정을 컨텍스트 스위칭이라고 한다.

context switching의 overhead(과부하)

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

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

즉, CPU에 계속 프로세스를 수행시키도록 하기 위해서 다른 프로세스를 실행시키고 Context Switching 하게 된다.

CPU가 놀지 않도록 만들고, 사용자에게 빠르게 일처리를 제공해주기 위한 것이다.

참고 자료

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

profile
백엔드 개발자로 일하고 싶어요 제발

0개의 댓글