프로세스 관리

하윤·2025년 9월 14일

CS

목록 보기
2/10
  • 운영체제가 여러 프로그램들이 동시에 실행되는 것처럼 보이도록(멀티테스킹)하는 핵심 기능
  • CPU, 메모리, I/O장치 같은 한정 자원을 효율적으로 배분하고 프로세스의 생명 주기를 관리하는 것을 포함

프로세스 상태 전이

프로세스는 생성되어 종료될 때까지 여러 상태를 거치는데, 이러한 상태 변화를 프로세스 상태 전이라고 함.

운영체제의 스케줄링 정책에 따라 결정됨.

프로세스 상태

  • 생성 (new) : 프로세스가 막 생성되어 메모리에 적재된 상태
  • 준비 (ready) : CPU를 할당받길 기다리는 상태. 준비 큐에 대기 중인 모든 프로세스는 언제든지 CPU를 사용할 준비가 됨
  • 실행 (running) : 프로세스가 CPU를 할당받아 명령을 실행하는 상태. 한 번에 하나의 프로세스만 실행 상태 가능
  • 대기 (waiting/blocked) : 입출력(I/O) 작업이나 특정 이벤트가 완료되기를 기다리는 상태. 이 상태에서는 CPU를 사용하지 않음
  • 종료 (terminated) : 프로세스 실행이 완료되어 모든 자원이 해제된 상태

  1. 준비 → 실행 : 스케줄러가 준비 큐에 있는 프로세스 중 하나를 선택하여 CPU를 할당
  2. 실행 → 준비 : 할당된 시간(Time Quantum)이 끝나거나 더 높은 우선순위의 프로세스가 나타나면, 현재 실행 중이던 프로세스는 준비 상태로 돌아간다.
  3. 실행 → 대기 : 프로세스가 파일 읽기 같은 I/O 작업을 요청하면, 해당 작업이 완료될 때까지 대기 상태로 전환
  4. 대기 → 준비 : I/O 작업이 완료되면, 프로세스는 다시 CPU를 할당받을 수 있는 준비 상태로 돌아간다.
  • 프로세스에 관한 정보를 나타내는 자료 구조 : PCB(Process Control Block)

    각 프로세스는 자신만의 PCB를 가지며, 프로세스의 ‘신분증’ 역할.

PCB가 관리하는 정보

  • PID(Process Identification Number) : 프로세스 고유 식별 번호
  • 프로그램 카운터 (PC) : 다음 실행할 명령어의 주소 저장
  • CPU 레지스터 : 실행 중인 프로세스의 레지스터 값들을 저장하여 컨텍스트 스위칭 시 상태 보존
  • 스케줄링 정보 : 프로세스 우선순위, 스케줄링 큐 포인터 등
  • 프로세스 상태 : 자원 할당, 요청 정보 등
  • 메모리 관리 정보 : 프로세스 주소 공간, Page Table, Segment Table 등
  • 입출력 상태 정보 : 할당 받은 입출력 장치, 파일 등에 대한 정보
  • 문맥 저장 영역(context save area) : 프로세스 레지스터 상태를 저장하는 공간 등
  • 계정 정보 : 자원 사용 시간 등을 관리

프로세스와 스레드 차이

프로세스(Process) : 실행 중인 프로그램의 인스턴스로 운영체제로부터 자원(메모리, 파일, I/O 등)을 할당받는 작업의 단위. 각 프로세스는 독립적인 메모리 공간(코드, 데이터, 힙, 스택)을 가진다.

스레드(Thread) : 프로세스 내에서 실행되는 실행 흐름의 단위. 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다. 스레드는 같은 프로세스 내의 다른 스레드들과 메모리(코드, 데이터, 힙)를 공유하지만, 각 스레드는 독립적인 스택을 가진다.

구분프로세스스레드
자원 할당운영체제로부터 자원을 할당받음프로세스의 자원을 공유
메모리 공간독립적인 메모리 공간스택만 독립, 코드/데이터/힙은 공유
컨텍스트 스위칭비용이 많이 듦비용이 적게 듦
통신 방법IPC(Inter-Process Communication)메모리 공유
오류 영향다른 프로세스에 영향 없음같은 프로세스의 다른 스레드에 영향 줌

Context Switching

CPU가 하나의 프로세스(또는 스레드)에서 다른 프로세스로 실행 제어를 전환하는 과정. 여러 프로세스가 CPU를 공유하며 실행되도록 하는 운영체제의 핵심 기능

컨텍스트 스위칭 과정

  1. 현재 실행 중인 프로세스 상태(Context) 저장 : CPU 레지스터, 프로그램 카운터(PC), 스택 포인터 등을 PCB에 저장
  2. 다음에 실행할 프로세스의 상태(Context) 로드 : PCB에서 다음 프로세스의 저장된 상태를 복원하여 CPU 레지스터에 로드
  3. CPU 제어권 이전 : CPU가 새로운 프로세스를 실행

→ 이 과정에서 많은 오버헤드가 발생하며, 스위칭 횟수가 잦아지면 시스템 성능 저하의 원인이 될 수 있다.

CPU 스케줄링 알고리즘

여러 프로세스에게 CPU를 할당하는 방식을 결정하는 알고리즘

1. FCFS (First-Come, First-Served)

가장 간단한 알고리즘으로, 먼저 도착한 프로세스가 먼저 CPU를 할당받는다.

  • 장점: 이해하기 쉽고 구현이 간단
  • 단점: 호위 효과(Convoy Effect)가 발생 즉, CPU 버스트 시간이 긴 프로세스가 먼저 도착하면 뒤의 짧은 프로세스들이 오랫동안 기다려야 한다.

2. SJF (Shortest-Job-First)

CPU 버스트 시간이 가장 짧은 프로세스에게 우선적으로 CPU를 할당

  • 장점: 평균 대기 시간이 가장 짧아 최적의 알고리즘
  • 단점: 미래의 CPU 버스트 시간을 정확히 예측하기 어렵고, 긴 프로세스가 계속해서 대기하는 기아(Starvation) 현상이 발생할 수 있다.

3. Priority (우선순위)

각 프로세스에 우선순위를 부여하고, 우선순위가 높은 프로세스가 먼저 CPU를 할당받는다.

  • 장점: 중요도가 높은 작업을 먼저 처리
  • 단점: 우선순위가 낮은 프로세스는 영원히 실행되지 못하는 기아(Starvation) 현상이 발생할 수 있음. 이를 해결하기 위해 노화(Aging) 기법(오래 대기한 프로세스의 우선순위를 높여주는 방식)을 사용하기도 한다.

4. RR (Round-Robin)

각 프로세스에 일한 시간 할당량(Time Quantum)을 부여하여 순환하며 실행 할당된 시간 내에 완료되지 않으면, 다음 프로세스에게 CPU를 넘겨준다.

  • 장점: 모든 프로세스가 공평하게 CPU를 할당받아 응답 시간이 빠르다. 시분할 시스템에 적합
  • 단점: 시간 할당량이 너무 짧으면 컨텍스트 스위칭 오버헤드가 커지고, 너무 길면 FCFS와 비슷해진다. 시간 할당량 설정이 중요
profile
코린씨

5개의 댓글

comment-user-thumbnail
2025년 9월 14일

표랑 이미지 덕분에 구분해서 이해하기 편했고 세세하게 설명되어 있어서 좋았어요

답글 달기
comment-user-thumbnail
2025년 9월 14일

이해하기 쉬워요! 잘 읽었습니다!!

답글 달기
comment-user-thumbnail
2025년 9월 15일

이해하기 쉽게 잘 정리 되어 있어서 좋았어요!

답글 달기
comment-user-thumbnail
2025년 9월 15일

잘 정리하셨네요! 잘 읽었습니다!

답글 달기
comment-user-thumbnail
2025년 9월 15일

프로세스 상태와 흐름에 대한 설명 자세히 해주셔서 좋았습니다!!

답글 달기