리눅스) 대기 상태가 왜 필요한가?

mommers·2026년 3월 15일

Linux

목록 보기
56/59

리눅스의 프로세스 상태 전이도

핵심 개념: 왜 대기(Sleep) 상태가 필요한가

CPU는 한 번에 하나의 프로세스만 실행할 수 있어서 OS가 여러 프로세스를 번갈아 실행시키는데, 이를 스케줄링이라고 한다.

대기 상태 없이 실행 ↔ 준비 만 존재한다면?

  • 키보드 입력 대기, 네트워크 응답 대기 중인 프로세스도 CPU 시간을 똑같이 배분받아 낭비
  • 실제로 CPU가 필요한 프로세스(ex. 동영상 재생)가 충분한 시간을 못 받아 버벅임

따라서 "어차피 기다려야 하는" 프로세스는 대기 상태로 빠지고,
CPU는 실행이 필요한 프로세스에게 집중하게 된다.


각 상태 정리

상태의미
생성프로세스가 막 만들어진 상태
준비CPU 할당을 기다리는 중 (언제든 실행 가능)
실행CPU를 받아서 실제로 돌아가는 중
대기I/O나 이벤트를 기다리는 중 (CPU 불필요)
종료실행 완료

주요 상태 전이

전이트리거
실행 → 준비할당 시간 초과, CPU 선점 (Time runout / preemption)
준비 → 실행스케줄러가 CPU 배분 (Dispatch)
실행 → 대기I/O 요청, sleep() 호출 등
대기 → 준비기다리던 이벤트 완료 (Wakeup)

지연 상태 (Swap)

메모리가 부족할 때 준비/대기 중인 프로세스를 디스크로 내보내는 것 (Swap-out).
메모리 여유가 생기면 다시 불러온다 (Swap-in).
현대 시스템에서는 메모리가 충분해 자주 발생하지 않는다.

profile
임베디드 개발자가 되기 위해 공부중입니다!

0개의 댓글