프로세스란?
실행중인 프로그램을 의미합니다. 즉, 정적인 코드(프로그램)을 메모리에 로드하여 실행하는 작업을 프로세스라 합니다.
운영체제(OS)는 프로세스를 생성, 스케줄링, 종료하는 등의 관리를 담당합니다다. 또한, 프로세스는 단순히 실행 단위로만 볼 수도 있지만, 연산을 수행하는 기본 단위로도 볼 수 있습니다.
PCB
운영체제가 각 프로세스를 관리하기 위해 사용되는 데이터 구조로, 각 프로세스의 상태와 관련 정보를 저장하는 역할
- PID : 프로세스 식별자, 운영체제가 프로세스를 식별하기 위한 고유의 숫자
- Process State : Ready, Running, WatIng등 프로세스의 상태
- PC(Process Counter) : 현재 실행중인 명령어의 주소
- 메모리 관련 정보 : 프로세스 가 사용하는 메모리와 관련된 정보(기본주소, 한계주소, 페이지 테이블)
프로세스의 메모리 구조
OS가 프로세스에 메모리를 할당시키면 다음과 같은 구조로 할당됩니다.

Code, Text : 프로그래머가 작성한 코드들이 CPU가 이해할 수 있는 기계어로 저장되어 있는 공간
Data : 전역 변수와 정적 변수가 저장되는 공간, 프로세스가 실행되는 동안 계속 유지되어 있음
Heap : 동적으로 관리되는 변수가 저장되는 공간, new된 객체들이 있는 공간
Stack : 함수호출시 매개변수, 지역변수, 리턴 주소등이 저장되어 있는 공간
프로세스의 상태

대기 상태 (Waiting State)란?
프로세스가 즉시 실행되지 않고 특정 이벤트가 발생할 때까지 기다리는 상태를 의미한다. 보통 프로세스가 입출력(I/O) 요청, 동기화(Synchronization), 리소스 할당 등을 기다릴 때 발생한다.
- Blocking IO : Request를 요청한 쪽의 상태가 Response를 계속 기다리는 상태
- NonBlocking IO : Request를 요청한 쪽의 상태가 Response를 기다리지 않고 다른 작업을 수행할 수 있는 상태
쓰레드란?
프로세스 내에서 실행 흐름을 담당하는 주체입니다. 쓰레드는 각자의 Thread Local Stroage를 갖습니다.
이 Thread Local Storage란 각 쓰레드가 저장해야할 고유하게 저장해야할 데이터(지역변수, 임시데이터)등을 저장하고 있습니다.
이 TLS를 통해 같은 프로세스 내의 다른 쓰레드와 공유되지 않는 데이터를 관리할 수 있습니다.
프로세스와 쓰레드란
프로세스는 기본적으로 하나의 코드 흐름을 갖습니다. 이 코드의 흐름을 쓰레드가 처리합니다.
- 단일 쓰레드 프로세스 : 하나의 작업을 하나의 쓰레드가 실행합니다.
- 멀티 쓰레드 포르세스 : 하나의 작업을 여러개의 쓰레드가 실행합니다.
연산
연산을 수행하려면 CPU와 메모리가 필요하다.
이때, 운영체제(OS)가 CPU와 메모리를 각 프로세스에 적절히 할당하는 역할을 한다.
이때 OS가 프로세스를 관리하기 위해 필요한 정보를 PCB를 통해 확인할 수 있습니다. 또한 OS는 시분할을 통해 프로세스를 관리합니다.
중요한 점은 프로세스가 직접 하드웨어 수준의 실제 메모리(Physical Memory, RAM)를 사용하지 않는다는 것이다.
대신, 운영체제는 프로세스마다 가상 메모리(Virtual Memory)를 할당한다.
'CS > OS' 카테고리의 다른 글
| [OS] 멀티 레벨 피드백 큐 (0) | 2025.03.07 |
|---|---|
| [OS] CPU 스케줄링 (0) | 2025.03.06 |
| [OS] 프로세스 생성과 종료 (0) | 2025.02.24 |
| [OS] 프로그램 실행 작업 순서와 컴퓨터 시스템 구조 (0) | 2025.02.24 |
| [운영체제] 운영체제란? (0) | 2024.11.11 |