운영체제 Three Easy Pieces Ch.4

제 4 장 프로세스의 개념

서론
  • 프로세스란 실행 중인 프로그램임, CPU 가상화의 효율적 구현을 위해 도구(Mechanism)지능(Policy)이 필요함

  • CPU 가상화는 Time Sharing(시분할) 기법을 사용하여 원하는 수 만큼의 프로세스를 동시에 실행할 수 있게 함

    필요한 기능을 구현하는 방법을 Mechanism(매커니즘)이라고 한다

    운영체제가 어떤 결정을 내리는 데 사용되는 알고리즘을 Policy(정책)이라고 한다

    • Time Sharing의 반대되는 개념으로 Space Sharing(공간 분할)이 있음
    • Scheduling 정책 등
4.1 프로세스의 개념
  • 프로세스의 구성 요소를 이해하기 위해 Machine State(하드웨어 상태)를 이해해야 함

    Program Counter (PC)는 프로그램의 어느 명령어가 실행 중인지 알려 준다 (혹은 Instruction Pointer, IP 라고도 함)

    Stack Pointer, Frame Pointer는 함수의 변수와 Return 주소를 저장하는 스택을 관리할 때 사용하는 레지스터이다

    정책과 구현은 분리되어 있다. 이러한 소프트웨어 설계 원칙을 Modularity(모듈성)이라고 한다

4.2 프로세스 API
  • Create (생성): 운영체제는 새로운 프로세스를 생성할 수 있는 방법을 제공해야 함
  • Destroy (제거): 프로세스를 강제로 제거할 수 있는 Interface를 제공해야 함
  • Wait (대기): 어떤 프로세스의 실행 중지를 기다릴 필요가 있기 때문에 대기 인터페이스가 제공됨
  • Miscellaneous Control (각종 제어): 제거, 대기 이외에 여러 제어 기능들이 제공됨 (일시 정지, 재 시작 등)
  • Status (상태): 프로세스 상태 정보를 얻어내는 Interface도 제공해야 함
4.3 프로세스 생성 : More Detail…
  • 프로그램 실행을 위해 운영체제가 하는 일

    1. 프로그램 코드와 Static Date(정적 데이터)를 메모리, 프로세스의 주소 공간에 Load(탑재) 함

      대게 프로그램은 Disk 혹은 Flash Disk에 특정 실행 파일 형식으로 존재한다

      초기 운영체제들은 코드와 데이터를 모두 메모리에 탑재하였는데, 현대 운영체제들은 이 작업을 늦추었다

      즉, 프로그램을 실행하면서 필요할 때 필요한 부분만 탑재하는데 이는 Paging과 Swapping을 이해해야 한다

    2. 특정 크기의 메모리 공간이 프로그램에 Stack 용도와 Heap 을 위한 메모리 영역으로 할당 되어야 한다

    3. STDIN, STDOUT, STDERR 같은 File Descriptor(파일 디스크립터)를 가진다

4.4 프로세스 상태
  • Running: 실행 상태, 명령어 실행 중

  • Ready: 준비가 되어있지만 모종의 이유로 대기 중

  • Blocked: 다른 사건을 기다리는 동안 프로세스의 수행을 중단 시키는 연산

    프로세스가 준비 상태에서 실행 상태로 전이 되는 것을 Schedule(스케줄) 된다고 한다

4.5 자료 구조
  • 프로세스 상태를 파악하기 위해 준비 상태의 프로세스들을 위한 Process List 자료 구조를 유지함

  • 프로세스가 중단 되었을 때 해당 프로세스의 레지스터 값들을 저장하는 자료 구조를 Register Context(레지스터 문맥)이라고 함

    문맥 교환 기법을 나중에 다룰 것이다

  • 3 개의 상태 이외에도 Initial(초기 상태), 프로세스는 종료되었으나 자원들이 반환되지 않은 Final(Zombie 상태) 등이 있음

    • 하나의 프로세스가 다른 프로세스의 실행이 어떻게 마쳤는지 파악하는데 유용하게 사용(대게 Parent - Child)

프로세스 관리를 위해 정보를 저장하는 자료 구조를 Process Control Block (PCB, 프로세스 제어 블럭)이라고 한다 (Process Descriptor라고도 한다)

프로세스란 실행 중인 프로그램을 나타내는 개념이며, 프로세스 상태, 주소 공간의 메모리 변수 값들, 레지스터 값들, 입출력 관련 정보 들로 표현된다

Process API는 프로세스와 관련된 함수들을 일컬으며, 프로세스의 생성, 삭제 등에 관련된 함수이다

프로세스 상태는 Running, Wait, Blocked 등이 있으며 특정 사건의 발생으로 상태가 변화한다

Process List는 시스템에 존재하는 모든 프로세스에 대한 정보를 가지며, 이 리스트의 각 노드는 Process Control Block이다

Written on January 26, 2022