운영체제 - Process(1)

2020-09-14

OS를 공부하면서 정리를 한 내용들 입니다.

이번 챕터는 Process에 관련해 정리한 챕터입니다.


프로세스와 쓰레드

지난번 포스팅에서 프로세스에 대해 정리한 개념을 일부 끌고 왔습니다.

프로세스(Process)

프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말합니다.

여기서 프로그램(Program)의 사전적인 뜻은 “어떤 작업을 위해 실행할 수 있는 파일(예를들어, exe파일)이고

프로세스에는 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)를 뜻합니다.

간단히 말하자면 “컴퓨터가 어떤 일을 하고 있는 상태(CPU의 수행 상태를 나타내는 문맥)를 뜻합니다.”

프로세스가 어디까지 진행되어 있는가?

이것을 알기 위해서는

1. 하드웨어 문맥 : 프로그램 카운터(PC)가 어디를 가르키고 있는가를 알아야 합니다.

2. 프로세스의 주소 공간 : 프로세스의 메모리에 어떤 내용을 담고있는가,

3. 프로세스 관련 커널 자료 구조 : 프로세스가 하나 시작될 때 마다 운영체제는 자신의 데이터 영역에 CPU나 메모리 등을 관리하는데 PCB를 하나씩 두게되기에 PCB와, 관련 정보가 쌓여진 Kernel Stack을 알아야합니다.

프로세스의 상태

프로세스의 상태 변화도 출처

프로세스는 상태가 변경되며 수행됩니다.

  • Running : CPU를 잡고 Instruction을 수행중인 상태

  • Ready : 메모리 등 다른 조건을 모두 만족하고 CPU를 기다리는 상태

  • Blocked(wait, sleep)

  1. CPU를 주어도 당장 Instruction을 수행할 수 없는 상태
  2. Process 자신이 요청한 이벤트(예 : I/O)가 즉시 만족되지 않아 이를 기다리는 상태
  3. (예) 디스크에서 File을 읽어와야 하는 경우
  • New : 프로세스가 생성중인 상태

  • Terminated : 수행(execution)이 끝난 상태

PCB(Process Control Block)

  • 운영체제가 각 프로세스를 관리하기 위해 프로세스 당 유지하는 정보
  • 다음의 구성 요소를 가진다(구조체로 유지)

그림 출처

문맥 교환

하나의 프로세스로부터 다른 사용자 프로세스로 CPU의 제어권이 이양되는 과정

1.프로세스 A가 CPU를 할당받고 실행되던 중 타이머 인터럽트 발생

  1. CPU 제어권 OS가 가지고 타이머 인터럽트 처리 루틴 실행

    • 프로세스 A의 문맥을 A의 PCB에 저장하고(Ready)

    • 새로운 프로세스 B에게 CPU를 이양(Running) 이전에 실행했던 B의 문맥을 복원

타이머 인터럽트 뿐만 아니라 실행중이던 프로세스가 Blocked상태가 되면 발생

그림 출처

프로세스가 실행 상태일 때 시스템 콜이나 인터럽트가 발생하면 CPU의 제어권이

운영체제에게 넘어와 원래 프로세스를 잠시 멈추고 OS kernel의 코드가 실행됩니다.

이 경우에도 CPU의 실행 위치 등 프로세스 문맥 중 일부를 PCB에 저장하지만,

문맥 교환은 아닙니다.

그 이유는 CPU 점유하는 프로세스가 다른 User Process로 바뀌지 않기 때문입니다. (예. I/O 완료 인터럽트)

이는 모드 변경만 일어나는 것이고, 문맥 교환은 오버헤드가 훨씬 큽니다.