① 단일 프로세스 (Single-tasking)
- 핵심: 한 번에 딱 하나만!
- 상황: 셰프(CPU)가 한 명인데, 요리 하나가 완전히 끝날 때까지 다른 주문은 쳐다보지도 않는 식당입니다.
- 문제점: 만약 고기를 굽다가 고기가 익을 때까지(I/O 작업) 셰프가 가만히 서서 기다린다면? 시간 낭비가 엄청나겠죠.
② 멀티 프로그래밍 (Multi-programming)
- 핵심: "CPU를 놀게 하지 말자!" (자원 활용도 극대화)
- 상황: 셰프가 고기를 굽는 동안(I/O), 옆 화구에서 국을 끓이는 방식입니다.
- 특징: 프로세스 하나가 I/O 작업을 하러 가면, CPU는 즉시 다른 프로세스로 넘어가서 일을 합니다. 하지만 I/O 작업이 없다면 한 프로세스가 끝날 때까지 CPU를 계속 점유할 수도 있습니다.
③ 멀티태스킹 (Multi-tasking / Time-sharing)
- 핵심: "모두가 동시에 실행되는 것처럼 보이게 하자!" (응답 시간 최소화)
- 상황: 셰프가 아주 빠른 속도로 이 요리 10초, 저 요리 10초씩 번갈아 가며 만드는 방식입니다.
- 특징: 아주 짧은 시간(Time Slice) 단위로 프로세스를 강제 전환합니다. 사용자는 여러 프로그램이 동시에 돌아가는 것처럼 느끼게 되죠. 우리가 지금 음악을 들으면서 웹 서핑을 할 수 있는 이유입니다.
2. 요약
| 구분 | 단일 프로세스 | 멀티 프로그래밍 | 멀티태스킹 (시분할) |
| 주요 목적 | 단순한 구조 | CPU 사용률 높이기 | 사용자 응답 시간 단축 |
| 작업 방식 | 순차 실행 | I/O 대기 시 다른 작업 수행 | 정해진 시간마다 작업 교체 |
| 장점 | 구조가 단순함 | CPU가 쉬지 않고 일함 | 여러 앱을 동시에 쓰는 체감 |
| 단점 | 효율성 최악 | 특정 작업이 CPU 독점 가능 | 전환(Context Switch) 비용 발생 |
3. 핵심 차이점 정리
멀티 프로그래밍 vs 멀티태스킹의 차이
- 멀티 프로그래밍은 "CPU가 놀고 있는 꼴을 못 보겠다"는 관리자 마인드에 가깝습니다. (Efficiency 중심)
- 멀티태스킹은 "사용자가 기다리게 해서는 안 된다"는 서비스 마인드에 가깝습니다. (Response 중심)
'cs(with 매일메일)' 카테고리의 다른 글
| [260203화] JCF 자료구조의 초기 용량을 지정하면 좋은 점이 무엇인가요? (0) | 2026.02.03 |
|---|---|
| [260202월] 멀티 태스킹 시스템의 한계에 대해서 설명해주세요. (0) | 2026.02.02 |
| [260129목] Keep Alive에 대해 설명해주세요. (0) | 2026.01.29 |
| [260127화] 자료구조 트라이에 대해서 설명해주세요. (0) | 2026.01.28 |
| [260126월] 자바에서 Object타입인 value를 String으로 타입 캐스팅하는 것과 String.valueOf()를 사용하는 것의 차이점은 무엇인가요? (0) | 2026.01.28 |