본문 바로가기
운영체제

운영체제 Chapter 3-1 Process

by PlusUltraCode 2024. 6. 25.

운영체제(OS)는 시스템에서 실행되는 모든 프로그램을 정확하고 효율적으로 관리해야 합니다. 이번 포스팅에서는 OS가 어떻게 프로세스를 관리하고, 프로그램이 실행되는 동안 이를 어떤 자료구조로 관리하는지 알아보겠습니다.

1. 프로세스 관리 개요

프로세스란?

프로세스는 실행 중인 프로그램입니다. OS 입장에서는 프로세스가 어디까지 실행되었는지가 매우 중요합니다. 이를 위해 OS는 프로세스를 일정한 자료구조에 넣고 관리합니다.

프로세스를 관리하는 방법

  1. 명령어의 순서 (Sequence of instructions): 프로세스가 어디까지 실행되었는지 기록하고, 프로그램을 항상 저장하고 복원하는 작업을 수행합니다.
  2. 현재 상태 (Current state): 프로세스의 상태에 따라 다른 큐에 보관하여 관리합니다.
  3. 관련 시스템 자원 (Associated set of system resources): 프로세스가 실행될 때 필요한 메모리 및 시스템 자원을 관리합니다.

2. 프로세스의 구성 요소

프로세스는 다음과 같은 구성 요소를 가지고 있습니다:

  1. 프로그램 코드 (Program code): 실행될 코드.
  2. 데이터 집합 (A set of Data): 전역 변수 및 static 변수를 저장하는 공간.
  3. 스택 (Stack): 함수 호출 시 사용할 변수 공간 및 리턴 주소를 저장.
  4. 프로세스 제어 블록 (Process control block, PCB): 프로세스 관리에 필요한 다양한 정보를 저장.

프로세스 제어 블록 (PCB)

PCB는 OS가 프로세스를 관리하기 위해 필요한 다양한 정보를 저장하는 데이터 구조입니다. 주요 정보는 다음과 같습니다:

  • 프로세스 식별자 (ID): 시스템 내에서 프로세스를 식별하는 고유 ID.
  • 상태 (State): 프로세스의 현재 상태.
  • 우선순위 (Priority): 프로세스의 우선순위.
  • 프로그램 카운터 (PC): 다음에 실행할 명령어의 주소.
  • 메모리 포인터 (Memory pointer): 프로세스가 사용하는 메모리 위치 정보.
  • 컨텍스트 데이터 (Context data): CPU 레지스터의 현재 값.
  • 입출력 상태 정보 (I/O status information): 프로세스의 입출력 상태.
  • 회계 정보 (Accounting information): 자원 사용 정보.

3. 디스패처 (Dispatcher)

디스패처는 OS의 일부로, 프로세스의 실행을 관리하고 다른 프로세스로의 전환을 담당합니다. 주요 역할은 다음과 같습니다:

  • 다음에 실행할 프로세스 결정: 어떤 프로세스를 실행할지 결정.
  • 프로세스 실행 시간 결정: 한 프로세스를 얼마나 실행할지 결정.

4. 프로세스 상태와 큐

프로세스 상태

프로세스는 다음과 같은 상태를 가질 수 있습니다:

  1. New: 새로 생성되는 중인 상태.
  2. Ready: 실행 준비가 된 상태.
  3. Running: 실행 중인 상태.
  4. Blocked: 실행할 수 없는 상태 (예: I/O 작업 대기).
  5. Exit: 실행이 종료된 상태.

큐 관리

  • Ready Queue: 실행 준비가 된 프로세스들이 대기.
  • Blocked Queue: I/O 작업 등으로 인해 실행할 수 없는 프로세스들이 대기.

5. 스와핑 (Swapping)

스와핑은 메모리에서 프로세스를 디스크로 내보내는 작업입니다. 스와핑 영역은 하드디스크의 특정 영역으로, 메모리 공간이 부족할 때 프로세스를 일시적으로 저장하는 용도로 사용됩니다.

스와핑 상태

  • Blocked Suspend: 메모리에서 디스크로 스와핑된 블록된 상태.
  • Ready Suspend: 메모리에서 디스크로 스와핑된 준비된 상태.

6. 프로세스 상태 전이 다이어그램

프로세스 상태 전이 다이어그램은 프로세스가 어떻게 상태를 전이하는지 나타냅니다. 주요 전이 경로는 다음과 같습니다:

  • Ready → Running: 프로세스가 실행되기 시작.
  • Running → Blocked: I/O 작업 등으로 인해 실행 중단.
  • Blocked → Ready: I/O 작업이 완료되어 준비 상태로 전환.
  • Running → Ready: 타임아웃 등의 이유로 준비 상태로 전환.
  • Blocked → Blocked Suspend: 메모리에서 디스크로 스와핑.
  • Blocked Suspend → Ready Suspend: I/O 작업이 완료된 후 준비 상태로 전환.
  • Ready Suspend → Ready: 디스크에서 메모리로 스와핑.

7. 프로세스 생성 및 종료

프로세스 생성 및 종료 과정은 다음과 같습니다:

  1. 프로세스 식별자 할당: 새로운 프로세스에 고유 ID 부여.
  2. 프로세스 공간 할당: 메모리 공간 할당.
  3. PCB 초기화: PCB 생성 및 초기화.
  4. 연결 설정: 새로운 프로세스를 적절한 큐에 추가.
  5. 데이터 구조 확장: 필요한 초기 자원 할당 및 데이터 구조 확장.
  6. 프로세스 종료: 모든 자원을 반납하고 종료.

8. 프로세스 전환

프로세스 전환은 실행 중인 프로세스를 중단하고 다른 프로세스를 실행하는 과정입니다. 주요 단계는 다음과 같습니다:

  1. CPU 상태 저장: 현재 프로세스의 CPU 상태 저장.
  2. PCB 업데이트: 프로세스 제어 블록 내용 업데이트.
  3. 적절한 큐로 프로세스 이동: 프로세스를 적절한 큐로 이동.
  4. 다음 실행 프로세스 선택: 다음 실행할 프로세스 선택.
  5. PCB 업데이트 및 메모리 데이터 구조 업데이트: 선택된 프로세스의 PCB 업데이트 및 메모리 데이터 구조 업데이트.
  6. 프로세스 상태 복원: 저장된 CPU 상태 복원.

운영체제는 이러한 과정을 통해 시스템 자원을 효율적으로 관리하고, 안정적으로 프로세스를 실행할 수 있습니다.

'운영체제' 카테고리의 다른 글

운영체제 Chatper 4 4-1 Thread  (0) 2024.07.18
운영체제 Chatper 3 3-3 Process  (0) 2024.06.25
운영체제 Chapter3 3-2 Process  (0) 2024.06.25
운영체제 Chapter2 2-2  (0) 2024.06.23
운영체제 Chapter2 2-1  (0) 2024.06.23