computer engineering

CPU와 프로세스, 쓰레드 간단 정리

제이훈 : 세상 모든 지식의 탐구자 2025. 5. 11. 18:18

CPU, 프로세스, 스레드, 그리고 멀티 처리 간단 정리

1. CPU는 한 번에 하나의 프로세스만 처리한다?

✔ 원칙: 하나의 CPU 코어는 한 순간에 하나의 프로세스만 처리 가능.
✔ 예: 프로그램 A가 실행되면 → 프로세스로 메모리에 올라감 → CPU가 실행
❗ 현실: 매우 빠른 시간 단위로 여러 프로세스를 번갈아 실행(= 시분할) → 마치 동시에 실행되는 것처럼 보임

2. PCB (Process Control Block)란?

정의: 프로세스의 상태를 저장한 구조체 (OS가 관리함).
✔ 포함 정보: PID, 상태(state), Program Counter(다음 명령어 위치), 우선순위 등
✔ 기능: CPU가 다른 프로세스를 실행해야 할 때 현재 상태를 PCB에 저장 → 나중에 복원 가능
✔ 위치: 메인 메모리(RAM)

3. 프로세스와 스레드 차이

✔ 프로세스: 실행 중인 프로그램의 인스턴스, 메모리 공간을 독립적으로 가짐
✔ 스레드: 프로세스 내에서 실행 흐름을 담당하는 최소 단위
✔ 특징: 한 프로세스는 하나 이상의 스레드를 가질 수 있으며, 스레드 간 자원은 공유

4. 멀티스레딩(Multi-threading)이란?

정의: 하나의 프로세스 내에서 여러 스레드가 동시에 실행되는 구조
✔ 특징: 메모리 공유, 문맥 전환 비용↓, 병렬 처리 가능
✔ 목적: CPU 활용률 향상 + 사용자 응답성 개선
✔ 예: 웹 브라우저에서 렌더링, 사용자 입력, 백그라운드 로딩을 동시에 수행

5. 멀티프로세싱(Multi-processing)이란?

정의: 다중 CPU(또는 코어)를 활용해 여러 프로세스를 병렬로 처리
✔ 구조: 각 프로세스는 서로 다른 CPU에서 독립적으로 실행
✔ 목적: 성능 향상, 병렬 작업, 안정성 확보
✔ 예: Minecraft 서버 실행 시, 각 코어가 독립적으로 월드 처리 담당

6. 멀티프로그래밍(Multi-programming)이란?

정의: 하나의 CPU가 여러 프로그램을 시분할로 처리
✔ 목적: CPU가 I/O 대기 상태일 때 다른 프로그램 실행 → 자원 낭비 방지
✔ 예: 프로그램 A가 디스크 읽는 동안 프로그램 B를 실행

7. 멀티태스킹(Multi-tasking)이란?

정의: OS가 여러 작업(Task)을 동시에 처리하는 것처럼 보이게 스케줄링
✔ Task = Process 또는 Thread
✔ 시분할 방식: CPU가 아주 짧은 시간 간격으로 Task를 전환하여 사용자에게 동시에 실행되는 느낌 제공
✔ 예: 음악 재생 + 웹 브라우징 + 문서 작성 동시 처리

8. 주요 개념 요약

개념정의핵심 특징
프로세스 실행 중인 프로그램 독립적 메모리 공간
스레드 프로세스 내 실행 단위 자원 공유, 빠른 컨텍스트 스위칭
멀티스레딩 하나의 프로세스 내 다중 스레드 메모리 절약, 병렬 처리
멀티프로세싱 다중 CPU를 활용한 병렬 처리 성능↑, 안정성↑
멀티프로그래밍 CPU 유휴시간에 다른 프로그램 실행 자원 활용도↑
멀티태스킹 다중 작업 동시 실행처럼 보이게 함 사용자 경험 향상

9. 실제 질문 예시

Q: 스레드 간 자원 충돌은 어떻게 막나요?
A: 뮤텍스(Mutex), 세마포어(Semaphore) 등을 통해 동기화

Q: 프로세스보다 스레드가 더 가벼운 이유는?
A: 프로세스는 독립된 메모리 공간을 사용하지만, 스레드는 자원을 공유하므로 생성/전환 비용이 낮음

10. 정리

✔ 프로세스: 독립된 실행 단위
✔ 스레드: 프로세스 내 실행 흐름
✔ 멀티스레딩: 한 프로그램 내 병렬 실행
✔ 멀티프로세싱: 여러 CPU를 이용한 병렬 실행
✔ 멀티프로그래밍: CPU 대기시간 활용
✔ 멀티태스킹: 사용자에게 "동시성"을 제공