PCB와 Context Switching

김현조·2023년 3월 26일
3

Computer Science

목록 보기
6/6
post-thumbnail

Process Management

CPU에 프로세스가 여러개일때, CPU 스케줄링을 통해 관리하는 행위

PCB(Process Control Block)

CPU가 프로세스를 관리하려면 각 프로세스가 누구인지, 어떤 상황인지를 알아야 한다. 이러한 프로세스의 정보, 즉 메타 데이터를 가지고 있는 곳이 바로 PCB이다. PCB에는 다음과 같은 정보들이 포함된다.

  • Process ID: 프로세스 고유 식별 번호
  • Process State: 프로세스 현 상태(준비, 실행, 대기 등)
  • Process Priority: 프로세스 우선순위
  • Program Counter: 다음에 실행될 명령어 주소
  • Cpu Registers: 레지스터 상태 저장
  • 계정 정보: CPU 사용 시간(time quantum) 정보 등
  • 기억장치 관리 정보: 프로그램이 적재될 기억장치의 상,하한치, 페이지 테이블 등
  • 입출력 정보: 프로세스 수행 시 주변 장치, 파일 정보 등

PCB 관리 방식

PCB는 연결 리스트 방식으로 관리된다. PCB List Head에 PCB가 생성될 때 마다 하나씩 추가된다. 연결 리스트의 특징에 따라 삽입, 삭제가 용이하다는 특성을 활용하여 프로세스 생성 시 PCB가 생성되고, 완료 시 제거된다. 이때 프로세스가 변경되어 CPU의 레지스터 정보가 변경되는 것을 Context Switching이라 한다.

Context Switching

정의

CPU가 현재 실행하고 있는 태스크의 상태를 저장하고, 다음에 진행할 태스크의 상태 및 레지스터 값에 대한 정보를 읽어 새로운 태스크의 정보로 교체하는 과정을 의미한다. 한마디로 이전 프로세스 정보는 PCB에 저장하고 다음 프로세스 정보를 PCB에서 읽어와 레지스터에 적재하는 과정이다. 따라서 Context Switching은 다음과 같은 상황에서 발생한다.

  1. 인터럽트 발생
  2. 입출력 대기
  3. CPU 사용 허가 시간 소모

이때 3번 항목인 CPU 사용 허가 시간, 즉 time quantum의 경우 길이가 짧을수록 각 프로세스에 대한 응답속도가 빨라져 실시간 처리처럼 느껴지지만, 반대로 context switching 횟수가 많아져 아래와 같은 이유로 성능저하를 발생시킬 수 있다.

  1. 캐시 초기화
  2. 메모리 매핑 초기화
  3. 메모리 접근을 위한 kernel 항시 실행

필요성

CPU라는 자원은 한정적이며 한번에 하나만 처리할 수 있지만, 실제로 컴퓨터는 다양한 작업을 background에서 처리하게 된다. 이때 다양한 태스크에 대해 실시간 처리되는 것처럼 보이려면 Context Switching이 필요하다.

생각해볼 점

Context Switching 비용은 멀티 프로세스와 멀티 스레드 중 어느 쪽이 더 클까? 그 이유는?

멀티 프로세스의 경우에 context switching 비용이 더 크다. 스레드는 stack 영역을 제외한 모든 메모리를 공유하기 때문에 context switching 발생 시 stack 영역만을 변경하면 되기 때문.

관련 문제를 더 풀어보고 싶다면, CS Broker - 멀티 스레드와 멀티 프로세스를 풀어보세요!

0개의 댓글