OS 를 공부하면 이 개념들이 정말 헷갈리는데요...
제가 한번 야물딱지게 정리 해보겠습니다.

개념 정리
⚙️ CPU vs 프로세서
이 둘은 사실상 같은 말입니다. CPU(Central Processing Unit) 는 컴퓨터의 중앙 처리 장치로, 명령어를 실제로 실행하는 하드웨어 칩입니다. 프로세서(Processor) 는 그 CPU를 부르는 더 넓은 일반 명칭이고요. 일상적으로는 거의 동의어로 씁니다. 굳이 구분하자면, "프로세서"는 GPU, 사운드 프로세서처럼 특수 목적 처리 장치까지 포함하는 더 넓은 개념이고, "CPU"는 그 중에서 주연산을 담당하는 것만 가리킵니다.
💾 프로그램 vs 프로세스
가장 혼동하기 쉬운 쌍입니다.
프로그램(Program) 은 하드 디스크에 저장된 정적인 코드 파일입니다. 아직 실행되지 않은 상태입니다. 예를 들어 chrome.exe 파일 자체가 프로그램입니다.
프로세스(Process) 는 그 프로그램이 메모리에 올라와서 실제로 실행 중인 상태입니다. 크롬을 두 번 실행하면 하나의 프로그램에서 두 개의 프로세스가 생깁니다. 프로세스에는 코드 외에도 현재 상태(레지스터 값, 스택, 힙 등)가 함께 포함됩니다.
비유: 프로그램은 악보, 프로세스는 그 악보를 연주하고 있는 오케스트라입니다.
🧵 스레드 (Thread) — 추가 정리
프로세스 안에서 실제로 실행되는 최소 단위입니다. 하나의 프로세스 안에 여러 스레드가 존재할 수 있고, 이들은 코드·데이터·파일을 공유하되 스택과 레지스터는 각자 따로 가집니다. Race Condition의 원인이 될 수 있습니다. (Race Condition 은 나중에 따로 더...)
그렇다면 저희가 지금 배우고 있는 OS 라는 것은 뭘까요?
🖥️ OS (운영체제)
하드웨어와 프로그램 사이의 중간 관리자입니다. CPU, 메모리, 디스크 같은 자원을 여러 프로세스에 배분하고, 프로세스들이 서로 충돌하지 않도록 관리합니다. 없으면 프로그램이 하드웨어에 직접 접근해야 해서 혼란이 생깁니다.
📝 프로그래밍 vs 프로세싱
프로그래밍(Programming) 은 사람이 코드를 작성하는 행위 자체입니다. 완전히 다른 개념입니다.
프로세싱(Processing) 은 컴퓨터가 데이터를 처리하는 행위입니다. "CPU가 연산을 처리한다"는 맥락에서 씁니다.
🔄 멀티프로그래밍 vs 타임쉐어링 vs 멀티프로세싱
이 셋이 가장 많이 헷갈리는 조합입니다.
멀티프로그래밍(Multiprogramming) 은 여러 프로그램을 메모리에 동시에 올려두는 기법입니다. CPU가 놀지 않도록 하는 게 목적입니다. 예를 들어 A 프로그램이 디스크 I/O를 기다리는 동안 B 프로그램을 실행하는 식입니다. CPU가 하나여도 가능하고, 프로그램 간 전환은 I/O 대기 같은 이벤트가 발생할 때 일어납니다.
타임쉐어링(Time-sharing) 은 멀티프로그래밍의 발전된 형태입니다. I/O 이벤트를 기다리지 않고 아주 짧은 시간 단위(time slice, 보통 수십 ms)로 여러 프로세스에 CPU를 번갈아 줍니다. 덕분에 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것처럼 느낍니다. 우리가 지금 쓰는 OS가 모두 이 방식입니다.
멀티프로세싱(Multiprocessing) 은 CPU 자체가 물론 여러 개입니다. 여러 프로세스가 물리적으로 진짜 동시에 실행됩니다. 타임쉐어링이 "번갈아가며 빠르게"라면, 멀티프로세싱은 "진짜로 동시에"입니다.
CPU 개수 진짜 동시 실행? 핵심 목적
| 멀티프로그래밍 | 1개 | ✗ | CPU 낭비 최소화 |
| 타임쉐어링 | 1개 | ✗ | 사용자 응답성 향상 |
| 멀티프로세싱 | 여러 개 | ✓ | 실제 병렬 처리 |
➕ 추가로 알아두면 좋은 개념들
컨텍스트 스위칭(Context Switching) 은 CPU가 한 프로세스에서 다른 프로세스로 전환할 때 현재 상태(레지스터, 프로그램 카운터 등)를 저장하고 불러오는 작업입니다. 타임쉐어링의 핵심 메커니즘으로, PDF에서 나온 인터럽트가 이를 유발합니다.
커널(Kernel) 은 OS의 핵심 부분으로 하드웨어와 직접 대화합니다. PDF의 IPC 그림에서 나온 kernel이 바로 이겁니다.
스케줄러(Scheduler) 는 어떤 프로세스에게 CPU를 줄지 결정하는 OS 내부 모듈입니다. PDF에서 나온 Starvation이 발생하는 원인이 나쁜 스케줄링 때문입니다.
동시성(Concurrency) vs 병렬성(Parallelism) 은 미묘하게 다릅니다. 동시성은 여러 작업이 겹쳐서 진행되는 것(빠른 전환으로 동시처럼 보임), 병렬성은 물리적으로 동시에 실행되는 것입니다. 타임쉐어링은 동시성, 멀티프로세싱은 병렬성입니다.
궁금한 개념이 더 있거나, 위 내용 중 더 깊이 파고 싶은 게 있으면 댓글로 말해주세요.
감사합니다.
'학교' 카테고리의 다른 글
| 데이터통신 2주차 공부내용 (1) | 2026.04.23 |
|---|---|
| 데이터통신 1주차 공부내용 (1) | 2026.04.23 |
| C언어 - Pointer, Array 정리 (0) | 2026.04.08 |
| 2025 SPG F.A.T.I 준비 3 (온라인 레이스 참여) (0) | 2025.08.13 |
| 2025 SPG F.A.T.I 준비 2 (샘플 코드 학습) (2) | 2025.08.13 |