Skip to main content

2. 프로세스 개요

1. 프로세스

프로세스는 실행 중인 프로그램을 의미한다. 프로그램은 디스크에 존재하는 정적인 파일이지만, 운영체제로부터 자원을 할당받아 실행되면 동적인 프로세스가 된다.

1-1. 프로세스의 상태 변화

프로세스는 생성부터 종료까지 다음의 다섯 상태를 오간다.

process_status

생성 → 준비

스케줄러에 등록되며, 메모리 사용 가능 여부와 필요한 장치를 점검한다.

준비 → 실행

정해진 스케줄링 알고리즘에 따라 CPU를 할당받아 실행된다. 이를 디스패치(dispatch) 라고 한다.

실행 → 준비

할당 시간이 끝나거나, 우선순위에 따라 선점되는 경우 준비 상태로 되돌아간다.

실행 → 대기

입출력(I/O)이나 페이지 교환처럼 시간이 오래 걸리는 작업이 발생하면, CPU를 다른 프로세스에 넘기기 위해 대기 상태로 전환된다.

대기 → 준비

작업 완료 신호가 발생하면 준비 큐로 복귀한다. 페이지 교환 시에는 페이지 인터럽트 핸들러가 메모리 적재 완료를 알린다.

실행 → 종료

정상 종료되거나, 운영체제가 오류를 감지해 강제 종료될 수 있다.


1-2. 프로세스 제어블록(PCB)

운영체제는 프로세스를 효율적으로 관리하기 위해 프로세스 제어블록(PCB) 에 필요한 정보를 저장한다. 프로세스 종료 시 PCB도 함께 제거된다.

PCB의 주요 정보

  • 프로세스 상태
  • 프로세스 번호(PID)
  • 고유 식별자
  • 프로그램 카운터(PC)
  • 다음에 실행할 명령의 주소

레지스터 정보

문맥 교환 시 CPU 레지스터 값을 저장·복원하기 위한 정보가 포함된다.

메모리 관리 정보

프로세스의 주소 공간, 가상 메모리와 실제 메모리 매핑, 기준·경계 레지스터 등이 포함된다.

회계 및 I/O 상태 정보

프로세스의 사용 자원, 수행 시간, 입출력 장치 상태 등 관리 및 성능 측정을 위한 정보가 포함된다.


1-3. 프로세스 생성과 종료

프로세스 생성

부모 프로세스는 시스템 호출을 통해 자식 프로세스를 생성할 수 있다. 자식은 부모의 자원 일부를 공유하거나 복제해 사용하며, 이는 시스템 과부하를 방지하기 위한 정책이다.

프로세스 종료

부모가 자식의 작업을 더 이상 원하지 않을 때 강제 종료시킬 수 있으며, 부모 프로세스가 종료되면 자식도 연쇄적으로 종료된다.


1-4. 프로세스 간 관계

독립적 프로세스

  • 다른 프로세스와 데이터를 공유하지 않는다.
  • 결과가 결정적이며 재실행해도 동일한 결과를 낸다.

유기적(협력) 프로세스

  • 다른 프로세스와 데이터를 교환하거나 영향을 주고받는다.
  • 비결정적이며 재실행 시 결과가 달라질 수 있다.

2. 쓰레드

thread

  • 쓰레드는 프로세스 내부에서 실행 흐름을 분리한 단위이다.
  • 과거에는 프로세스가 자원 소유·디스패칭 역할을 모두 담당했지만, 현대 운영체제에서는 자원 소유는 프로세스, 실행 단위는 쓰레드로 명확히 분리되어 있다.
  • 하나의 프로세스는 여러 쓰레드를 가질 수 있다.
  • 쓰레드는 실행에 필요한 최소한의 정보만 가지고, 프로세스가 가진 자원(주소 공간, 파일 핸들 등)은 공유한다.
  • 멀티코어 환경에서는 여러 쓰레드를 병렬로 실행할 수 있어 성능 향상이 가능하다.

3. 스케줄링

스케줄링은 CPU가 어떤 작업을 먼저 처리할지 순서를 결정하는 행위이다.

스케줄링 정책

운영체제는 공정성과 균형을 고려하여 목표를 설정한다.

  • 일괄처리 시스템

    • 처리량 극대화
    • 반환시간 최소화
    • CPU 활용도 극대화
  • 대화형 시스템

    • 응답 시간 최소화
    • 긴 대기시간 방지

서로 상반되는 목표가 많기 때문에 모두 충족시키기는 어렵다.


선점 스케줄링

  • 실행 중인 프로세스를 중단하고 CPU를 다른 프로세스에 할당한다.
  • 우선순위 기반 시스템에서 많이 사용된다.
  • 문맥 교환이 잦으면 오버헤드가 증가한다.

비선점 스케줄링

  • 프로세스가 CPU를 할당받으면 I/O나 종료가 발생하기 전까지 계속 실행된다.
  • 응답 시간 예측이 가능하지만, 짧은 작업이 긴 작업을 기다리는 문제가 생길 수 있다.

참고: 무한 루프에 빠진 프로세스는 선점/비선점 여부와 관계없이 운영체제가 강제 인터럽트를 발생시켜 제어한다.


이 시리즈의 모든 포스팅은 직접 수업과 교재를 통해 학습한 내용을 토대로
손으로 정리한 후, AI를 이용해 구조 정리와 맞춤법만 다듬은 자료입니다.