PCB & Context Switching

이태곤·2023년 9월 3일
0

Operating System

목록 보기
9/13
post-thumbnail

1. PCB (Process Control Block)

  • 프로세스에 대한 메타데이터를 저장하며, 프로세스의 생성시에 PCB가 할당되며, 종료시에 삭제된다.

    • 메타데이터: 데이터를 설명하거나 관리하기 위한 데이터의 데이터로, 대량의 정보 가운데에서 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 일정한 규칙에 따라 구조화된 데이터 정보
    • 커널 스택: 운영 체제 커널이 동작하는 데 필요한 메모리 영역으로, 주로 커널 모드에서 실행 중인 코드와 프로세스 간의 상호 작용에 사용
      • 프로세스의 중요한 정보를 포함하고 있어서 일반 사용자는 직접 접근할 수 없는 보호된 메모리 영역 (커널 스택)에 존재
  • 구조

  1. Process State: 프로세스의 상태

    • 생성 상태(New): 프로그램이 메모리 상에서 올라가 프로세스가 되고 PCB를 할당 받는다.
      • FORK: 현재 프로세스를 복제하여 자식 프로세스를 생성
      • EXEC: 현재 프로세스의 이미지를 완전히 새로운 프로그램으로 대체하여 실행
    • 준비 상태(Ready): 생성하자마자 CPU 소유권을 갖고 실행 되는 것이 아닌, 준비 큐에 들어가 CPU 스케쥴링에 의해서 관리 된다.
      • CPU 소유권을 갖게 되면 준비상태에서 실행 상태로 전환되는데, 이를 디스패치 되었다고 한다.
    • 실행 상태(Running): CPU 소유권을 갖고 CPU에 의해 해당 프로세스가 실행되고 있는 상태이다.
      • 일정 타임 슬라이스 동안 작업을 끝내지 못하면 타임아웃이 되어 준비 상태로 변한다.
    • 대기 상태(Blocked): 프로세스가 입출력 작업을 수행하기 위해 입출력 요청을 하고, 이 작업이 완료될 때까지 대기 상태가 된다.
      입출력 작업이 완료되면 준비 상태로 돌아가 CPU를 소유권을 기다란다.
      • 해당 입출력 요청이 완료된 시점에 CPU 소유권을 가지고 실행중인 다른 프로세스가 있을 수 있으므로 바로 실행 상태로 가지 않는다.
    • 완료 상태(Exit): 해당 프로세스에 대한 작업이 완료된 상태이며, 메모리에 적재 되어있던 프로세스 공간을 반납하고 PCB가 삭제된다.
    • 보류 상태(Suspended): 메모리 부족 등의 이유로 레디 상태나 대기 상태에서 해당 프로세스가 스왑 영역으로 이동되어 일시 중지된다.
      • 다시 메모리로 복원되어 재개될 수 있다.
  2. 프로세스 번호(PID): 각각의 프로세스에 대한 고유 번호

  3. 프로그램 카운터(PC): 현재 실행 중인 프로세스 내에서 다음으로 실행할 명령어의 주소를 저장

  4. 레지스터: 레지스터 상태를 PCB에 저장하여, 현재 프로세스가 중단되고 다음 프로세스로 전환될 때 레지스터 상태를 보존하고 복원

  5. 메모리 제한: 프로세스에 대한 메모리 관련 정보

  6. 열린 파일 정보: 프로세스를 위해 열린 파일 목록


2. Context Switching

  • PCB를 기반으로 프로세스의 상태를 저장하고 복원하는 과정

    • 컴퓨터에서 어떠한 시점에서 실행되고 있는 프로세스는 단 한 개이다.
      사용자 입장에서 여러 프로세스가 동시에 실행되는 것처럼 보이는 이유는 context switching이 아주 빠르게 일어나기 때문이다.
      → 현대 운영체제에서는 멀티코어를 기반으로 동작하기 때문에 어떠한 시점에서 여러개의 프로세스가 동작 가능
  • 발생 트리거

    1. 멀티 태스킹 환경에서 다른 프로세스 실행을 위해 발생
    2. I/O 요청, 프로세스 생성 등의 이벤트로 인해 발생
    3. 유저 모드 ↔ 커널 모드 전환을 위해 발생
  • 과정

    1. Process P1 실행 중 Process P2를 실행하기 위한 Interrupt 발생
    2. P1에 대한 PCB 정보를 저장하고 P2에 대한 PCB정보를 로드
      → Context Switching
  • 단점

    • 유휴 시간 발생: PCB정보를 저장하고 적재하면서 유휴시간 (idle time)이 발생해서 CPU Utilization이 감소한다.
    • 캐시 미스: 현재 실행 중인 프로세스의 가상 주소와 물리 주소 매핑 정보가 TLB 캐시에 저장되어 있다.
      그러나 새로운 프로세스로 전환되면, TLB 캐시에서도 이전 프로세스의 가상 주소와 물리 주소에 대한 정보에 대한 캐시 클리어 과정이 일어나므로 캐시미스가 발생한다.
  • 해결 방법

    1. Thread context switching: 스레드에서도 동일하게 Context Switching이 발생하는데, 스레드는 스택 메모리를 제외한 나머지 영역을 공유하므로 context switching 비용이 더 적고 더 빠르게 일어난다.
      → 스레드 간 공유 자원의 관리가 복잡할 수 있으며, 스레드 간 동기화와 경쟁 조건 문제에 주의 해야 한다.
    2. Process Pooling: 프로세스를 반복적으로 생성하고 종료하는 과정에서 발생하는 오버헤드를 줄일 수 있다.
      → 미리 생성된 프로세스를 재사용함으로써 컨텍스트 스위칭 비용을 감소시킬 수 있다.

0개의 댓글