[이어드림스쿨 1주차] 프로세스(개념, 멀티 프로세싱, 프로세스 스케줄링)

프로세스의 상태
프로세스 상태 전이도
📌 프로세스 상태(Process States)
운영체제(OS)에서 프로세스는 실행 중 여러 상태를 오가며 진행된다. 이를 쉽게 이해하기 위해 식당에 방문하는 고객의 경험에 비유할 수 있다.
1️⃣ 생성(New/Created) 상태 🆕
프로세스가 생성되었으나 아직 메모리에 완전히 올라가지 않은 상태이다.
📌 비유: 고객이 식당 앞에서 대기 번호표를 받고 줄을 서 있는 상태이다.
2️⃣ 준비(Ready) 상태 ⏳
프로세스가 메모리에 올라왔으며, CPU가 작업을 실행할 준비가 된 상태이다.
CPU를 할당받기 전까지 대기 큐에서 기다린다.
📌 비유: 식당에 입장하여 빈자리에 앉아 주문을 기다리는 상태이다.
3️⃣ 실행(Running) 상태 🚀
프로세스가 CPU를 할당받아 실제로 작업을 수행하는 상태이다.
📌 비유: 고객이 음식을 직접 먹는 단계이다.
4️⃣ 대기(Blocked/Waiting) 상태 ⏸️
프로세스가 특정 자원(파일, 네트워크, 사용자 입력 등)을 기다리며 잠시 멈춘 상태이다.
자원이 준비되면 다시 준비(Ready) 상태로 이동한다.
📌 비유: 식사를 하다가 화장실을 가기 위해 자리를 잠시 비우는 상황이다.
5️⃣ 종료(Terminated) 상태 🛑
프로세스가 모든 작업을 완료하고 종료된 상태이다.
📌 비유: 고객이 식사를 마치고 자리에서 일어나 식당을 나가는 상태이다.
멀티 프로세싱 (Multiprocessing)
🔹 멀티 프로세싱이란?
하나의 컴퓨터에서 여러 개의 프로세스를 동시에 실행하는 방식이다.
단일 CPU 환경에서는 여러 프로세스를 빠르게 번갈아 실행하는 방식(시분할)이며,
다중 CPU 환경에서는 여러 프로세스를 병렬로 실행한다.
📌 비유: 가정 내에서 부모가 요리를 하고, 아이가 숙제를 하며, 로봇청소기가 청소를 하는 것과 유사하다.
🔹 멀티 프로세싱 vs 멀티 스레딩 비교
개념 | 멀티 프로세스 (Multi Process) | 멀티 스레드 (Multi Thread) |
실행 단위 | 여러 개의 독립적인 프로세스 실행 | 하나의 프로세스 내 여러 스레드 실행 |
메모리 | 각 프로세스는 독립적인 메모리 공간 사용 (자원 공유 X) | 스레드끼리는 메모리를 공유 (자원 공유 O) |
안정성 | 한 프로세스의 오류가 다른 프로세스에 영향을 주지 않음 | 하나의 스레드가 오류를 일으키면 전체 프로세스에 영향 |
속도 | 프로세스 간 통신 비용이 높아 속도가 느릴 수 있음 | 스레드 간 데이터 공유가 용이해 속도가 빠름 |
예시 | 크롬 브라우저의 여러 창, 워드 & 엑셀 동시 실행 | 크롬 브라우저 내 여러 탭 |
📌 비유:
멀티 프로세스: 여러 개의 독립된 집에서 각자 집안일을 하는 것과 같다.
멀티 스레드: 한 집안에서 여러 가족 구성원이 역할을 나눠서 집안일을 하는 것과 같다.
📌 프로세스 간 통신 (IPC, Inter-Process Communication)
✅ IPC가 필요한 이유
운영체제에서 각 프로세스는 독립적인 메모리 공간을 가진다.
그러나, 여러 프로세스가 데이터를 공유하고 협력해야 하는 경우가 많다.
📌 예시:
웹 브라우저(크롬)와 다운로드 매니저가 서로 정보를 주고받아야 하는 경우
음악 플레이어와 볼륨 조절 프로그램이 서로 연동해야 하는 경우
📌 비유:
🏡 각 프로세스는 독립적인 집
운영체제(OS)는 각 프로세스가 독립적인 공간을 가지도록 보장한다.
하지만, 우편함📬(IPC 방식) 을 통해 데이터를 주고받을 수 있다.
✅ IPC 방식 (Inter-Process Communication Methods)
IPC 방식 | 설명 | 비유 |
메시지 큐 (Message Queue) | 운영체제가 중간에서 메시지를 관리하며 프로세스 간 비동기 통신을 지원한다. | 📬 공용 우편함 사용 |
공유 메모리 (Shared Memory) | 프로세스끼리 특정 메모리 공간을 공유하여 빠르게 데이터를 전달한다. | 🏡 서로 열린 마당 공유 |
파이프 (Pipe) | 한 방향으로만 데이터를 전달할 수 있다. | 🚇 일방통행 지하철 |
소켓 (Socket) | 네트워크를 통해 다른 컴퓨터와의 프로세스와 통신할 수 있는 기술이다. | 📞 전화 통화 |
📌 IPC 예제: 유튜브에서 영상 보기
유튜브 앱(프로세스) 🏡 → 영상 재생 프로그램(프로세스) 🏡
서로 데이터를 주고받아야 한다. → IPC를 사용해서 통신!
📌 프로세스 관련 용어 정리
개념 | 설명 |
프로세스(Process) | 실행 중인 프로그램 |
스레드(Thread) | 프로세스 내에서 실행되는 작은 실행 단위 |
컨텍스트 스위칭(Context Switching) | 하나의 프로세스에서 다른 프로세스로 CPU를 전환하는 과정 |
멀티 태스킹(Multitasking) | 여러 개의 프로세스를 동시에 실행하는 것 |
스케줄러(Scheduler) | CPU가 실행할 프로세스를 결정하는 운영체제(OS) 모듈 |
데드락(Deadlock) | 여러 프로세스가 서로 자원을 점유한 상태에서 교착 상태에 빠지는 현상 |
✅ 정리
프로세스 상태
생성(New) → 준비(Ready) → 실행(Running) → 대기(Blocked) → 종료(Terminated)
📌 비유: 식당에서 주문하고 식사하는 과정
멀티 프로세싱 vs 멀티 스레딩
멀티 프로세스: 여러 개의 독립적인 프로세스 실행 (각각 독립된 집)
멀티 스레드: 하나의 프로세스 내 여러 작업 실행 (한 집안에서 역할 분담)
IPC (프로세스 간 통신)
프로세스 간 데이터 교환이 필요할 때 사용
주요 방식: 메시지 큐, 공유 메모리, 파이프, 소켓
운영체제에서 중요한 개념
- 컨텍스트 스위칭, 멀티태스킹, 스케줄러, 데드락
프로세스 스케줄링이란?
여러 개의 프로그램(프로세스)이 동시에 실행될 때 CPU가 어떤 작업을 먼저 실행할지 결정하는 방식이다.
운영체제(OS)가 공평하고 효율적으로 CPU를 배분하는 역할을 한다.
📌 비유: 식당에서 웨이터가 손님에게 음식이 나오는 순서를 정하는 것과 같다.
🎯 스케줄링의 목적
1️⃣ 대기 시간을 최소화 ⏳
2️⃣ 모든 작업이 공평하게 실행되도록 함 ⚖
3️⃣ 시스템 전체의 성능을 높임 🚀
✅ 1. 선입선처리(FCFS, First Come First Served)
🔹 먼저 온 손님부터 순서대로 처리하는 방식이다.
가장 먼저 도착한 프로세스부터 실행된다.
단순하고 공정하지만, 처리가 오래 걸리는 작업이 먼저 오면 다른 작업들이 늦어질 수 있다.
📌 비유: 음식 주문한 순서대로 요리가 나오는 식당 🍽
✔ 장점: 쉽고 공정하다.
❌ 단점: 한 손님이 너무 오래 걸리면 다음 손님들이 오래 기다려야 한다.
✅ 2. 최단 작업 우선(SJF, Shortest Job First)
🔹 작업 시간이 짧은 프로세스부터 먼저 실행하는 방식이다.
평균 대기 시간을 줄일 수 있다.
하지만 긴 작업이 계속 뒤로 밀려서 실행되지 않을 수도 있다. (기아 현상 발생 가능)
📌 비유: 빨리 먹을 수 있는 요리를 먼저 서빙하는 식당 🍛
✔ 장점: 전체 대기 시간을 줄일 수 있다.
❌ 단점: 오래 걸리는 작업은 계속 밀려서 처리가 안 될 수도 있다.
✅ 3. 라운드 로빈(RR, Round Robin)
🔹 모든 작업이 일정한 시간 동안 번갈아 가며 실행되는 방식이다.
각 프로세스가 정해진 시간(타임 슬라이스) 동안 CPU를 사용한다.
시간이 지나면 다음 프로세스로 교체된다.
📌 비유: 웨이터가 손님들에게 조금씩 번갈아 가면서 요리를 서빙하는 방식 🍽
✔ 장점: 공평하게 처리할 수 있으며, 실시간 시스템에서 유리하다.
❌ 단점: 프로세스 전환이 많아지면 오버헤드(추가 작업)가 증가한다.
교착상태(Deadlock)와 기아상태(Starvation) 쉽게 이해하기!
➡ 컴퓨터에서 여러 작업(프로세스)이 실행될 때, 서로 필요한 자원을 차지하거나 빼앗지 못해서 진행이 멈추는 현상이다.
💡 비유: 여러 사람이 하나의 주방을 사용하려고 할 때 벌어지는 문제 🍳
✅1. 교착상태(Deadlock)란?
- 서로 자원을 가지고 있지만 상대방의 자원을 기다리느라 아무도 작업을 진행하지 못하는 상태이다.
📌 비유:
요리사 A는 칼을 가지고 있지만 냄비가 필요하다.
요리사 B는 냄비를 가지고 있지만 칼이 필요하다.
둘 다 상대방이 자원을 내놓기만을 기다리며 아무 일도 못 한다.
🚨 결과적으로 아무도 요리를 못 하고 주방이 멈춘다!
✅ 교착상태 발생 조건 (4가지)
➡ 교착상태가 발생하려면 다음 4가지 조건이 모두 만족해야 한다.
조건 | 설명 | 비유 |
상호 배제 (Mutual Exclusion) | 한 번에 하나의 프로세스만 자원을 사용할 수 있다. | 칼은 한 사람이 한 번에 하나만 사용할 수 있다. |
점유 대기 (Hold and Wait) | 자원을 가지고 있는 상태에서 다른 자원을 기다린다. | 요리사 A는 칼을 들고 있으면서 냄비를 기다린다. |
비선점 (No Preemption) | 자원을 강제로 빼앗을 수 없다. | 요리사 A가 냄비를 B에게 강제로 빼앗을 수 없다. |
순환 대기 (Circular Wait) | 서로 자원을 기다리며 꼬리를 무는 형태이다. | 요리사 A → B → C → A 순서로 자원을 기다린다. |
📌 해결 방법:
한 가지 조건만 깨도 교착상태를 막을 수 있다.
예) 요리사가 칼과 냄비를 동시에 받을 수 있도록 하면 문제를 해결할 수 있다.
✅ 2. 교착상태 해결 방법
해결 방법 | 설명 | 비유 |
은행원 알고리즘 (자원 검사) | 자원을 할당하기 전에 미리 검사해서 교착상태가 발생할 가능성이 있으면 할당하지 않는다. | 주방장이 미리 재료와 도구가 충분한지 확인 후 요리를 시작하도록 지시한다. |
교착상태 무시 | 그냥 문제를 신경 쓰지 않고 시스템이 멈추면 재부팅한다. | "주방이 막히면 그냥 다시 시작하자!" |
프로세스 종료 | 문제가 되는 프로세스를 강제로 종료하여 해결한다. | 주방장이 한 요리사를 주방에서 내보내고 나머지가 작업을 계속하도록 한다. |
✅ 3. 기아상태(Starvation)란?
- 우선순위가 낮은 작업이 계속 CPU나 자원을 받지 못하고 기다리는 상태이다.
📌 비유:
식당에서 계속 VIP 손님(우선순위 높은 프로세스) 만 서빙한다.
일반 손님(우선순위 낮은 프로세스) 은 계속 기다리다가 결국 음식을 못 먹는다.
🚨 결과적으로 우선순위 낮은 프로세스는 영원히 실행되지 않을 수도 있다!
✅ 기아상태 해결 방법
해결 방법 | 설명 | 비유 |
우선순위 조정 (Aging 기법) | 오래 기다린 프로세스의 우선순위를 점점 높여준다. | 오래 기다린 손님에게 VIP 혜택을 주어 먼저 서빙한다. |
라운드 로빈 방식 사용 | 모든 프로세스가 일정한 시간 동안 CPU를 사용할 수 있도록 한다. | 웨이터가 모든 테이블에 공평하게 서빙한다. |
FIFO(선입선처리) 방식 적용 | 먼저 요청한 프로세스부터 처리한다. | 식당에서 온 순서대로 음식을 제공한다. |
🔥 정리
✔ 교착상태(Deadlock): 서로 자원을 기다리며 아무 일도 못 하는 상태이다.
✔ 교착상태 발생 조건: 상호 배제, 점유 대기, 비선점, 순환 대기가 있다.
✔ 교착상태 해결 방법: 자원 검사, 프로세스 종료, 문제 무시 등이 있다.
✔ 기아상태(Starvation): 우선순위가 낮아서 계속 실행되지 않는 상태이다.
✔ 기아상태 해결 방법: 우선순위 조정, 라운드 로빈 방식, 선입선처리가 있다.
➡ 즉, 운영체제는 프로세스들이 원활하게 실행될 수 있도록 교착상태와 기아상태를 방지해야 한다!
Subscribe to my newsletter
Read articles from KiwiChip directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

KiwiChip
KiwiChip
I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).