본문 바로가기
학교

운영체제 CPU , 프로세스 , 프로세서, OS , 프로그래밍, 프로세싱 , 멀티프로그래밍, 타임쉐어링 정리

by 발빠진 쥐 2026. 4. 2.

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) 은 미묘하게 다릅니다. 동시성은 여러 작업이 겹쳐서 진행되는 것(빠른 전환으로 동시처럼 보임), 병렬성은 물리적으로 동시에 실행되는 것입니다. 타임쉐어링은 동시성, 멀티프로세싱은 병렬성입니다.


궁금한 개념이 더 있거나, 위 내용 중 더 깊이 파고 싶은 게 있으면 댓글로 말해주세요.

감사합니다.