[OS] Context Switching, PCB (Process Control Block)

nnnyeong·2022년 8월 26일
1

OperatingSystem

목록 보기
8/11

Context Switching

CPU가 현재 작업중인 프로세스에서 다른 프로세스로 넘어갈 때, 이전의 프로세스 정보를 PCB에 저장하고 새롭게 실행할 프로세스의 정보를 PCB에서 읽어와 레지스터에 적재하는 과정을 말한다.




Context

  • 프로세스의 데이터
  • CPU 레지스터 값

CPU 가 프로세스를 실행시키기 위해 필요한 정보들을 Context 라 한다.

프로세스가 메모리에 올라가 실행 될 때 CPU 내에 존재하는 레지스터들이 현재 실행중인 프로세스 관련 데이터로 채워지게 되고 실행중인 프로세스가 변경되면 CPU 내의 레지스터 값들이 변경된다.




Context Switching 과정

  • 요청 발생
    • 인터럽트나 트렙에 의해서 컨텍스트를 바꿔야 한다는 요청이 들어옴
  • PCB 에 프로세스 정보 저장
    • 기존에 실행중이던 프로세스 P0 와 관련된 정보들을 PCB 에 저장함
  • CPU 새롭게 할당
    • 운영체제는 새롭게 실행할 프로세스 P1 에 대한 정보를 해당 PCB 에서 가져와 CPU 레스터에 적재함



Context Switching의 발생

멀티 태스킹

실행 가능한 여러개의 프로세스들이 운영체제의 스케쥴러에 의해, 우선순위에 따라 조금씩 번갈아가면서 수행된다. CPU를 할당 받는 프로세스가 변경될 때 마다 컨텍스트 스위칭이 일어난다.


인터럽트 핸들링

컴퓨터 시스템에서 예외 상황이 발생했을 때 이를 CPU 에게 알려 실행중이던 프로세스 정보를 저장하고 발생한 예외 상황을 처리하기 위한 컨텍스트 스위칭이 일어난다.


사용자모드 커널모드 전환 (User and Kernel mode Switching)

  • context switching 이 필수는 아니지만 운영체제에 따라 발생 가능하다.



PCB (Process Control Block)

운영체제가 프로세스를 제어하기 위해 정보(CPU 레지스터 값들)를 저장해 놓는 곳으로 프로세스의 상태 정보를 저장하는 구조체이다. 프로세스 생성시 PCB 가 만들어지며 주기억장치에 저장되다가 프로세스가 완료되면 PCB도 함께 제거된다.

  • 운영체제에서 프로세스는 PCB 로 표현된다.
  • PCB는 프로세스 상태 관리와 context switching 을 위해서 필요하다.
  • PCB 는 프로세스의 중요한 정보들을 담고 있으므로 일반 사용자는 접근하지 못하는 보호된 메모리 영역에 존재한다.



PCB 구조

운영체제에 따라 PCB 에 담기는 정보는 조금씩 다르지만 일반적으로는 다음과 같은 정보들이 담겨있다.

포인터

  • 프로세스의 현재 위치를 저장하는 포인터 정보

프로세스 상태

  • 프로세스의 상태 (생성, 준비, 실행, 대기, 종료) 에 대한 정보를 저장

프로세스 식별자

  • 모든 프로세스에는 각 프로세스를 식별하는 고유한 ID, PID 가 할당

프로그램 계수기

  • 프로세스가 실행해야 하는 다음 명령어의 주소

레지스터

  • 누산기, 베이스, 레지스터 및 범용 레지스터를 포함하는 CPU 레지스터에 있는 정보

메모리 제한

  • 운영 체제에서 사용하는 메모리 관리 시스템에 대한 정보가 포함
  • 페이지 테이블, 세그먼트 테이블 등이 포함될 수 있음

페이징, 세그멘테이션 활용 시
CPU는 논리 주소로 프로그램이 설정한대로 연속적인 주소값으로 명령 -> 이는 각 프로세스의 PCB 에 저장되어 있는 페이지 테이블/ 세그먼트 테이블 -> 페이지/세그먼트의 실제 메모리 주소(물리 주소)로 변경됨!



관리 방식

운영체제는 빠르게 PCB 에 접근하기 위해서 프로세스 테이블을 사용해 각 프로세스의 PCB 를 관리하고 PCB 는 연결 리스트 방식으로 관리된다. 프로세스가 생성, 삭제될 때 PCB 의 삽입 삭제가 용이하다.




Reference

[운영체제] Context Switch(문맥 교환)이란?
프로세스 제어 블록 (PCB: Process Control Block) 알아보기
[운영체제] PCB와 Context Switching

profile
주니어 개발자까지 ☄️☄️

0개의 댓글