[운영체제] PCB와 Context Switching

2024. 2. 24. 23:07·공부/운영체제

PCB와 Context Switching

PCB (Process Control Block, 프로세스 제어 블록)

의미

특정 프로세스에 대한 정보를 담고 있는 자료구조

  • 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳
  • 프로세스의 상태 정보를 저장하는 구조체
  • 운영체제는 PCB에 담긴 프로세스 정보를 이용하여 프로세스를 관리하고 제어
  • 프로세스가 생성될 때 마다 고유의 PCB가 생성되어 메인 메모리에 유지되고 프로세스가 완료되면 제거
  • PCB는 프로세스의 중요한 정보를 포함하고 있으므로 일반 사용자는 접근하지 못하는 보호된 메모리 영역에 존재

 

진행 과정

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

 

상세 구조

  • Process id : 프로세스의 고유 ID
  • Process state : 프로세스의 상태 (Create, Ready, Running 등등)
  • Program counter : 프로세스를 위해 실행될 다음 명령어의 주소
  • CPU register : CPU에서 사용한 레지스터의 값을 잃지 않기 위해 PCB에 그 값을 저장, Accumulator, General Register 등을 포함하는 CPU Register의 값
  • CPU scheduling information : 프로세스의 우선순위, 최종 실행 시간, 스케줄링 큐를 가리키는 포인터 등
  • Memory management information : 레지스터, 페이지 테이블, 세그먼트 테이블의 base, limit값에 대한 정보, 해당 프로세스의 주소 공간 정보
  • Accounting informaion : CPU 사용 시간, 실제 사용된 시간, 시간 제한 등
  • I/O status informaion : 프로세스에 할당된 I/O기기에 해당하는 정보, 프로세스에 할당된 입출력 장치 목록, 열린 파일 목록 등

 

메타 데이터

  • 데이터에 관한 구조화된 데이터이자 데이터를 설명하는 작은 데이터
  • 대량의 정보 가운데에서 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 일정한 규칙에 따라 콘텐츠에 부여되는 데이터
  • 프로세스 생성 시 만들어져서 프로세스가 실행을 완료하면 폐기
  • 프로그램이 실행되면 프로세스가 생성
  • 프로세스 주소 값들에 스택, 힙 등의 구조를 기반으로 메모리가 할당
  • 이 프로세스들의 메타데이터들이 PCB에 저장되어 관리
  • PCB는 프로세스의 중요한 정보를 포함
  • 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리

 

Context Switching (문맥교환)

의미

CPU가 현재 작업 중인 프로세스에서 다른 프로세스로 넘어갈 때 지금까지의 프로세스 상태를 저장하고, 새 프로세스의 저장된 상태를 다시 적재하는 작업

  • 현재 진행하고 있는 프로세스의 상태를 PCB에 저장하고 다음 진행할 프로세스의 정보를 PCB에서 읽어 적용하는 과정
  • PCB를 교환하는 과정
  • 한 프로세스에 할당된 시간이 끝나거나 인터럽트에 의해 발생

 

필요 이유

  • CPU는 한 번에 하나의 프로세스만 수행할 수 있음
  • 실생활에서는 우리는 여러 개의 프로세스를 동시에 수행
  • 따라서 CPU는 동시에 수행하는 처럼 보이게 하기 위해서 여러 개의 프로세스를 번갈아가며 수행
  • 따라서 CPU가 프로세스를 바꿔가며 실행하기 위해서 문맥 교환이 필요하게 되었음

 

문맥 교환 과정

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

 

발생 경우 예

  1. 멀티태스킹
    • 실행 가능한 프로세스들이 운영체제의 스케줄러에 의해 조금씩 번갈아가며 수행되는 것
    • 번갈아 가며 프로세스가 CPU를 할당받는데, 이 때 문맥교환이 이루어짐
  2. 인터럽트 핸들링
    • 인터럽트가 발생하면 문맥교환이 이루어짐
  3. 사용자와 커널모드 전환
    • 필수는 아니지만 운영체제에 따라서 발생

'공부 > 운영체제' 카테고리의 다른 글

[운영체제] 주소 공간과 가상 메모리(Address Space, Virtual Memory)  (0) 2024.02.24
[운영체제] 시스템 콜(System Call)  (0) 2024.02.24
[운영체제] 인터럽트(Interrupt)  (0) 2024.02.24
[운영체제] CPU 스케줄링 알고리즘  (0) 2024.02.24
[운영체제] 프로세스와 스레드  (0) 2024.02.20
'공부/운영체제' 카테고리의 다른 글
  • [운영체제] 주소 공간과 가상 메모리(Address Space, Virtual Memory)
  • [운영체제] 시스템 콜(System Call)
  • [운영체제] 인터럽트(Interrupt)
  • [운영체제] CPU 스케줄링 알고리즘
2월2
2월2
  • 2월2
    서벅돌의 성장일기
    2월2
  • 전체
    오늘
    어제
    • 분류 전체보기 (118) N
      • TIL (2) N
      • Server (27) N
        • spring (6)
        • node.js (16)
        • 기타 (5) N
      • 공부 (75)
        • 깃&깃허브 (3)
        • 파이썬 (17)
        • 유니티 (4)
        • 자료구조 | 알고리즘 (15)
        • 자바 (3)
        • 운영체제 (8)
        • 안드로이드 (16)
        • AI와 데이터 (9)
      • 대외활동 (12)
        • NPC 동아리 (1)
        • UMC 동아리 (11)
      • 대학교 (1)
        • 교직 (1)
      • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글 관리
  • 링크

  • 공지사항

    • Notice
  • 인기 글

  • 태그

    유니티
    Lua
    파이썬
    java
    C
    Unity
    Python
    mysql
    코틀린
    자바
    kotlin
    루아
    안드로이드
    Android
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
2월2
[운영체제] PCB와 Context Switching
상단으로

티스토리툴바