[운영체제] PCB와 Context Switching

찬들이·2022년 8월 10일
0

컴퓨터공학

목록 보기
10/34

🎯 PCB

PCB란?

  • 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 구조체이다.
  • 프로세스 상태 관리와 ContextSwitching(문맥교환)을 위해 필요하다.
  • PCB는 프로세스 생성 시 만들어지며 주기억장치에 유지된다.
  • 프로세스 생성 단계 예시
    • 프로그램 실행 -> 프로세스 생성 -> 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 -> 이 프로세스의 메타데이터들이 PCB에 저장

    PCB가 필요한 이유!

  • block상태의 프로세스의 상태값을 PCB가 저장해 두기 때문!

    PCB의 구조

  • Process state = 프로세스 상태
  • Process number = 프로세스 넘버
  • Pointer = 다음 실행될 프로세스의 포인터
  • Registers : 레지스터 관련 정보
  • Priority : 스케줄링 및 프로세스 우선순위
  • Account : CPU 사용시간, 실제 사용 시간

🎯 Context Switching

Context Switching이란?

  • CPU가 현재 실행하고 있는 Task(Process, Thread)의 상태를 저장하고, 다음 진행할 Task의 상태 및 Register 값들에 대한 정보(Context)를 읽어 새로운 Task의 Context 정보로 교체하는 과정이다.
    • 쉽게 설명해 CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에서 읽어서 레지스터에 적재하는 과정을 말한다.

Context Switching이 필요한 이유?

  • 다양한 사람들이 동시에 사용하는 것처럼 하기 위해서 Context Switching이 필요하게 되었다.
    (멀티 테스킹)

Context Switching 수행 과정

  1. Context Switching은 Ready -> Running , Running -> Ready , Running -> Block 처럼 상태 변경시에 발생한다.
  2. 위의 경우가 발생하면 현재 실행 중인 Task를 PCB정보에 저장하게 된다.
  3. 다음 실행할 Task의 PCB 정보를 읽어 Register에 적재하고 CPU가 이전에 진행했던 과정을 연속적으로 수행할 수 있게 된다.

Context Switching과 시간 할당량

  • 프로세스들의 시간 할당량은 시스템 성능의 중요한 역할을 한다. 시간 할당량이 적을수록 사용자 입장에서는 여러 개의 프로세스가 거의 동시에 수행되는 느낌을 갖지만 인터럽트의 수와 문맥 교환의 수가 늘어난다. 프로세스의 실행을 위한 부가적인 활동을 오버헤드(간접 부담 비용)라고 하는데, 이 또한 문맥 교환 수와 같이 늘어나게 됩니다.

    • 시간 할당량이 적어지면 : 문맥 교환 수, 인터럽트 횟수, 오버헤드가 증가하지만 여러 개의 프로세스가 동시에 수행되는 느낌을 갖는다.

    • 시간 할당량이 커지면 : 문맥 교환 수, 인터럽트 횟수, 오버헤드가 감소하지만 여러 개의 프로세스가 동시에 수행되는 느낌을 갖지 못한다.

profile
Junior-Backend-Developer

0개의 댓글