PCB와 Context Swiching

김민영·2023년 1월 27일
0

CS 스터디

목록 보기
20/32

Process Management

  • 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것.
  • CPU가 프로세스를 구분하기 위해서 프로세스 특징 필요 : Process Metadata
    • Process ID : PID 프로세스 고유 식별 번호
    • Process State : 프로세스 상태
    • Process Priority : 스케줄링 정보
    • CPU Resgisters : 프로세스의 레지스터 상태를 저장하는 공간 등
    • Owner : 계정 정보
    • 기억장치 관리 정보
    • 입출력 정보
    • 프로그램 카운터

PCB : Process Controll Block

  • 프로세스 메타데이터를 저장하는 곳. 하나의 PCB에는 하나의 프로세스 정보가 담김.
  • 프로그램 실행 - 프로세스 생성 - 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 - 프로세스의 메타 데이터들이 PCB에 저장

구조

  • Process State : 프로세스 상태 Create, Ready, Running, Block, Terminated
  • Process Counter : 다음 실행할 명령어의 주솟값
  • CPU Registers : accumulator, index register, stack pointers, general purpose registers

필요 이유

  • CPU에서 프로세스 상태에 따라 교체 작업이 이루어지는데, 앞으로 다시 수행할 Block 상태 프로세스 상태값을 PCB에 저장

관리 방식

  • Linked List 방식
  • PCB List Head에 PCB들이 생성될 때마다 붙음. 주소값으로 연결이 이루어진 연결 리스트 형식. 삽입 삭제 용ㅇ.
  • 프로세스 생성 시 해당 PCB 생성, 프로젝트 완료 시 제거
  • 수행 중인 프로세스 변경 시, CPU 레지스터 정보가 변경되는 것 : Context Switching

Context Switching

정의

  • CPU가 현재 실행하고 있는 Task(Process, Thread) 상태를 저장하고, 다음 진행할 Task의 상태 및 Register 값들에 대한 정보(Context)를 읽어 새로운 Task 의 Context 정보로 교체하는 과정
  • CPU가 이전의 프로세스 상태를 PCB에 보관하고, 다른 프로세스의 정보를 PCB에서 읽어서 레지스터에 적재하는 과정
  • 다중 프로그래밍 시스템에서 CPU가 할당되는 프로세스를 변경하기 위해 현재 CPU를 사용하여 실행되고 있는 프로세스의 상태 정보를 저장하고 제어권을 인터럽트 서비스 루틴(ISR)에 넘기는 작업
  • Context : CPU가 다루는 Task(Process/Thread)에 대한 정보. Register에 저장되고 PCB에서 관리됨

과정

  • Task 대부분의 정보는 Register에 저장되고, PCB(Process Control Block)으로 관리가 되고 있음
  • 현재 실행 중인 Task의 PCB 정보를 저장하게 됨(Process Stack, Process Queue)
  • 다음 실행할 Task의 PCB 정보를 읽어 Register에 적재, CPU가 이전에 진행했던 과정을 연속적으로 수행

Cost

  • Cache 초기화
  • Memory Mapping 초기화
  • 메모리 접근을 위해 Kernel 항상 실행

Context Switching 과 Interrupt

  • CPU는 하나의 프로세스 정보만 기억
  • 문맥 교환이 많이 일어난다 == 인터럽트가 많이 발생한다.

Process, Thread

  • Process가 Thread보다 Context Switching 비용 많이 발생
  • Thread는 Stack영역을 제외한 모든 메모리를 공유하므로 Stack영역만 변경하면 되므로

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

profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글