본문 바로가기

cs(with 매일메일)

[260130금] 단일 프로세스 시스템에 대해서 설명해주세요.

① 단일 프로세스 (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 중심)