티스토리 뷰
프로세스
프로세스란?
프로그램: 실행 가능한 파일
프로세스: 실행 중인 프로그램
프로세스의 메모리 레이아웃은 다음과 같이 구성됩니다.
- 텍스트(Text): 소스 코드 영역
- 데이터(Data): 전역 변수 영역 (초기화되지 않은 전역 변수 영역은 BSS라고 부릅니다.)
- 힙(Heap): 동적 할당된 메모리 영역
- 스택(Stack): 지역 변수, 함수의 리턴 주소, 함수 파라미터가 저장되는 영역
프로세스의 상태
프로세스는 크게 new, ready, running, waiting, terminated의 5가지 상태로 구분됩니다.
새로 생성된 프로세스는 new 상태에서 시작하여 실행 준비가 완료되면 ready 상태로 바뀝니다. 스케줄러가 ready 상태의 프로세스를 선택하여 실행하면 running 상태가 되며, 입출력(I/O) 이벤트가 발생할 경우 waiting 상태로 전환됩니다. 입출력이 완료되면 프로세스는 다시 ready 상태로 돌아가 차례를 기다립니다. 실행이 끝난 프로세스는 terminated 상태가 되어 종료됩니다.
프로세스 제어 블록 (PCB)
PCB는 운영체제가 프로세스를 관리하고 실행시키기 위해 필요한 데이터를 저장하는 장소입니다.
PCB에는 다음과 같은 정보들이 포함됩니다:
- 프로세스 상태, 프로그램 카운터(PC), CPU 레지스터
- CPU 스케줄링 정보, 메모리 관리 정보
- 계정 정보, I/O 상태 정보 등
I/O Bound vs CPU Bound 프로세스
프로세스의 작업 특성에 따라 다음과 같이 구분됩니다.
- I/O bound: 계산보다 입출력 작업의 비중이 더 높은 프로세스
- CPU bound: 입출력보다 계산 작업의 비중이 더 높은 프로세스
컨텍스트 스위치: 프로세스의 교체 작업
I/O 작업은 일반적으로 처리 시간이 길기 때문에, 실행 중이던 프로세스가 wait 큐로 들어가는 동안 다른 프로세스를 실행하는 것이 효율적입니다.
이때 실행 중인 프로세스를 교체하기 위해 이전 프로세스의 상태(Context)를 저장하고, 새로 실행할 프로세스의 상태를 복구(Loading)하는 작업을 컨텍스트 스위치(Context Switch)라고 합니다.
IPC: 프로세스 간의 통신
독립적인 프로세스들이 서로 통신(IPC, Inter-Process Communication)을 하면 다음과 같은 이점이 있습니다.
- 병렬 연산을 통한 고속 계산
- 정보 공유의 용이성
- 시스템 모듈화 가능
1. 공유 메모리 (Shared Memory)
- 프로세스 간 공유 가능한 메모리 영역을 생성하여 데이터를 직접 읽고 씁니다.
- 메모리 생성 시에만 시스템 콜을 호출하므로 통신 속도가 매우 빠릅니다.
- 대표적인 예로 생성자-소비자 모델이 있으며, 주로 순환 배열을 통해 데이터를 관리합니다.
2. 메시지 전송 (Message Passing)
- 운영체제의 시스템 콜을 통해 프로세스 간에 메시지를 주고받습니다.
- 직접 통신: 메시지를 보낼 대상을 명시합니다. 대상 프로세스의 이름이 바뀌면 코드를 수정해야 하는 의존성이 발생합니다.
- 간접 통신: 메일 박스(Mailbox)나 포트를 통해 메시지를 주고받아 통신 대상을 추상화합니다.
'운영 체제' 카테고리의 다른 글
| CPU 스케쥴링 (0) | 2026.04.02 |
|---|---|
| 쓰레드란? (0) | 2026.04.01 |
| 프로그램의 실행 원리 (0) | 2026.03.31 |
| 시스템 콜 (0) | 2026.03.31 |
| !! Operating System !! (0) | 2026.03.28 |