lhywk 님의 블로그

[운영체제 OS] Process 본문

Operating System

[운영체제 OS] Process

lhywk 2026. 2. 1. 14:36

1. 프로세스의 정의 및 구조

1-1. 프로세스(Process)의 개념

  • 정의: 실행 중인 프로그램. 정적인 프로그램 파일이 메모리에 적재되어 동적으로 활동하는 상태를 의미.
  • 특징: PC(Program Counter), 레지스터 상태, 할당된 자원 등을 포함하는 동적 개체(Active Entity)이자 '활동의 단위'.
  • 프로그램 vs 프로세스: 
    • 프로그램: 보조기억장치에 저장된 정적인 코드와 데이터의 묶음(Passive).
    • 프로세스: 실행을 위해 메모리에 올라와 CPU를 사용하는 능동적인 상태(Active).

1-2. 프로세스 구성 요소(Process Elements)

모든 정보는 보통 프로세스 제어 블록(PCB)이라는 데이터 구조체에 저장.

  • 식별자 (Identifier):
    • 프로세스 ID(PID): 운영체제가 프로세스를 고유하게 식별하기 위해 부여하는 번호.
    • 부모 프로세스 ID: 프로세스를 생성한 부모 프로세스의 ID.
  • 상태 (State): 프로세스의 현재 상태. 준비(Ready), 실행(Running), 대기(Waiting), 종료(Terminated) 등이 있다.
  • 우선순위 (Priority): CPU 스케줄링을 위해 사용되는 값. 우선순위가 높은 프로세스가 CPU 를 먼저 할당받는다.
  • 프로그램 카운터 (Program Counter): 다음에 실행될 명령어의 주소를 저장하는 레지스터. 프로세스가 실행을 중단하고 다시 재개될 때, 이 값을 통해 중단된 지점부터 실행을 계속할 수 있다.
  • 메모리 포인터 (Memory Pointers): 프로세스의 코드, 데이터, 스택 등이 메모리의 어느 위치에 있는지 가리키는 포인터. 이를 통해 운영체제는 프로세스의 메모리 영역을 관리.
  • 문맥 데이터 (Context Data): CPU 의 레지스터 값을 포함. 프로세스가 CPU에서 실행되다가 중단되면, 모든 레지스터의 상태가 여기에 저장. 이후 다시 실행될 때 저장된 값을 복원하여 이전에 중단된 지점부터 정확하게 작업을 재개할 수 있다. 이를 문맥 교환 (Context Switching)이라고 함.
  • 입출력 상태 정보 (I/O Status Information): 프로세스에 할당된 입출력 장치와 열려있는 파일 목록 등 입출력 관련 정보를 포함.
  • 어카운팅 정보 (Accounting Information): 프로세스가 사용한 CPU 시간, 실제 실행 시간, 자원 사용량 등 시스템 사용 통계 정보를 기록.

1-3. 프로세스 이미지 (Process Image)

프로세스 이미지는 프로세스가 실행되기 위해 메모리에 적재된 모든 정보의 총체를 의미.

1. 프로그램 (Program):

  • 코드(Code) 또는 텍스트(Text) 영역이라고도 불림.
  • 프로세스가 실행할 실제 명령어들이 저장된 영역.

2. 데이터 (Data):

  • 전역 변수와 정적 변수 등 프로그램에서 사용되는 모든 데이터가 저장된 영역.

3. 스택 (Stack):

  • 함수 호출, 매개 변수, 지역 변수 등 함수 실행과 관련된 임시 데이터가 저장되는 영역.

4. PCB (Process Contol Block):

프로세스의 모든 속성들을 담고 있는 데이터 구조체.

  • 프로세스 식별 정보 (Process ID, Parent ID 등): 프로세스를 고유하게 구분하는 정보.
  • 처리기 상태 정보 (Processor State Information): 레지스터 값, 프로그램 카운터 등 CPU 의 현재 상태와 관련된 정보.
  • 프로세스 제어 정보 (Process Control Information): 프로세스의 상태 (실행 , 준비 등), 우선순위, 할당된 자원 목록 등 운영체제가 프로세스를 관리하는 데 필요 한모든 정보.

1-4. 프로세스 관리

1. 처리기 이용률 극대화 (CPU Utilization)

  • 운영체제는 여러 프로세스들이 CPU를 번갈아 사용하도록 인터리빙(interleaving) 방식으로 스케줄링해야 함.

2. 자원 할당 및 교착 상태 회피

  • 응용 프로그램의 중요도에 따라 우선순위(priority)를 부여하여 중요한 프로세스가 먼저 자원을 얻을 수 있도록 함.
  • 동시에 교착 상태(Deadlock)와 같은 심각한 오류를 회피하며 시스템의 안정성을 보장해야 함.

3. 프로세스 간 통신 (IPC) 및 생성 지원

  • 운영체제는 서로 다른 프로세스들이 데이터를 주고받을 수 있는 프로세스 간 통신기능을 제공해야 함.

2. 프로세스 상태 모델

2-1. 2 - 상태 프로세스 모델

  • 수행(Running) 상태: 프로세스가 CPU를 할당받아 명령을 실행하고 있는 상태.
  • 비수행(Not-running) 상태: 프로세스가 실행 대기 중이거나 다른 작업을 기다리고 있는 상태.

큐잉 다이어그램(Queuing Diagram):

  • 비수행 상태의 상세 표현: 비수행 상태에 있는 프로세스들은 준비 큐(Ready Queue)라는 대기열에 줄을 서서 CPU 할당을 기다림.
  • 디스패처(Dispatcher): 디스패처는 준비 큐에서 다음으로 실행할 프로세스를 선택하여 CPU에 할당하는 역할.
  • 큐 엔트리: 큐에 실제 프로세스 전체가 들어가는 것이 아니라, 해당 프로세스의 프로세스 제어 블록(PCB)을 가리키는 포인터가 저장된다는 것을 의미.

2-2. 5 - 상태 프로세스 모델

운영체제는 프로세스의 생명 주기를 다음과 같이 관리한다. 

  • 생성(New): 프로세스가 막 생성되어 승인을 기다리는 상태.
  • 준비(Ready): CPU만 할당받으면 즉시 실행 가능한 상태.
  • 수행(Running): 현재 CPU를 점유하여 명령어를 실행 중인 상태.
  • 블록(Blocked/Wait): I/O 완료 등 특정 이벤트가 발생할 때까지 대기하는 상태.
  • 종료(Exit): 실행을 마치고 자원을 반납하는 상태.

2-3. 보류 상태(Suspended State)의 프로세스

메모리가 부족할 때 실행되지 않는 프로세스를 디스크(Swap Space)로 잠시 옮겨두는 상태.

  • 준비/보류(Ready/Suspend): 준비 상태이나 디스크에 있는 상태.
  • 블록/보류(Blocked/Suspend): 이벤트를 기다리며 디스크에 있는 상태.
  • 스와핑(Swapping): 메모리와 디스크 사이로 프로세스를 이동시키는 작업(Swap-out, Swap-in).
  • Blocked → Blocked/Suspend:
    • I/O 작업 완료를 기다리는 블록 상태(Blocked)의 프로세스가 스와프-아웃되어 디스크로 이동하는 상태.
  • Blocked/Suspend → Ready/Suspend:
    • 디스크에 있는 블록/보류 상태(Blocked/Suspend)의 프로세스가 기다리던 사건(예: I/O 완료)이 발생하여 깨어나는 상태.
  • Ready/Suspend → Ready:
    • 디스크에 있는 준비/보류 상태(Ready/Suspend)의 프로세스가 활성화(activate)되어 메모리로 스와프-인되는 상태.
  • Ready → Ready/Suspend:
    • 메모리에 있는 준비 상태(Ready)의 프로세스가 스와프-아웃되어 디스크로 이동하는 상태.
  • New → Ready/Suspended:
    • 새 프로세스가 생성되었는데, 메모리가 부족하여 처음부터 디스크에 있는 준비/보류 상태로 이동하는 경우.
  • Blocked/Suspend → Blocked:
    • 디스크에 있는 블록/보류 상태의 프로세스가 메모리로 스와프-인되어 다시 블록 상태로 돌아가는 경우.
  • Running → Ready/Suspend:
    • 수행 상태(Running)의 프로세스가 시간 할당량 만료 등으로 인해 메모리에서 스와프-아웃되어 디스크의 준비/보류 상태로 가는 경우.
  • 임의의 상태 → Exit:
    • 모든 상태의 프로세스는 정상 완료 또는 오류 발생 시 종료 상태(Exit)로 전이될 수 있다.

3. 문맥 교환 (Context Switching)

3-1. 문맥 교환의 발생 및 과정

CPU 제어권이 한 프로세스에서 다른 프로세스로 넘어가는 과정.

1. 현재 프로세스 P0의 상태(PC, 레지스터 등)를 PCB0에 저장.

2. 운영체제가 다음 실행할 프로세스 P1을 선택(Scheduling).

3. 에서 P1의 이전 상태 정보를 CPU 레지스터에 복원(Reload).

4. 이 이전에 멈췄던 지점부터 실행을 재개.

3-2. 인터럽트와 모드 전환

  • 사용자 모드(User Mode): 일반 앱이 실행되는 제한된 권한 모드.
  • 커널 모드(System/Kernel Mode): OS가 하드웨어를 직접 제어하는 최고 권한 모드.
  • 모드 전환(Mode Switch):스템 콜이나 인터럽트 발생 시 권한만 바뀌는 것으로, 프로세스 교환보다 가볍다. 모든 프로세스 교환은 모드 전환을 포함하지만, 그 역은 성립하지 않는다.

4. 운영체제의 제어 구조

4-1. 주요 제어 테이블

운영체제는 시스템 관리를 위해 4가지 핵심 테이블을 유지.

테이블 주요 관리 내용
메모리 테이블 주기억장치/가상메모리 할당 현황, 메모리 보호 속성
I/O 테이블 입출력 장치 상태, 할당된 프로세스, 데이터 전송 주소
파일 테이블 파일 위치, 현재 상태(열림/닫힘), 접근 권한
프로세스 테이블 모든 프로세스의 PCB 위치 및 기본 상태 관리

 

출처

  • William Stallings, 운영체제 내부구조 및 설계원리

 

 

'Operating System' 카테고리의 다른 글

[운영체제 OS] Memory Management  (1) 2026.02.01
[운영체제 OS] Deadlock  (1) 2026.02.01
[운영체제 OS] Concurrency  (0) 2026.02.01
[운영체제 OS] Thread  (0) 2026.02.01
[운영체제 OS] Operating System Overview  (0) 2026.02.01