프로세스 상태
리눅스 시스템에서 동작하는 프로세스는 항상 CPU를 사용하는 것은 아니며, 다양한 상태를 오가면서 실행된다. 프로세스의 상태의 종류와 각 상태의 역할을 설명한다.
•
생성(New): 프로세스가 생성 중인 상태
•
준비(Ready): 프로세서에 할당되기를 기다리는 상태
•
실행(Running): 명령어가 실행 중인 상태
•
대기(Waiting): 특정 이벤트(예: I/O 완료 또는 신호 수신)를 기다리는 상태
•
종료(Terminated): 실행이 완료된 상태
이러한 상태 이름은 운영체제마다 다를 수 있다. 이와 유사한 상태는 모든 시스템에서 공통적으로 사용된다. 일부 운영체제는 프로세스 상태를 더 세분화해 정의하기도 한다.
중요한 것은 CPU 코어 하나는 한 개의 프로세스만 실행할 수 있다는 것이다.
STAT 필드
ps aux 명령어를 통해 현재 시스템의 프로세스 상태를 확인할 수 있다. STAT 필드는 각 프로세스의 현재 상태를 나타낸다.
ps aux
Shell
복사
root@1bfb5d7bf12d:/app/01# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 3752 2528 pts/0 Ss+ Dec22 0:00 bash
root 13 0.0 0.0 2060 1280 pts/1 Ss+ Dec22 0:00 /bin/sh
root 24 0.0 0.0 3884 2932 pts/2 Ss+ Dec22 0:00 /bin/bash
Shell
복사
상태 | STAT | 설명 |
실행 가능 상태 (Runnable) | R | 실행 가능한 상태로, CPU 할당을 기다리는 중
top명령어로 확인하면 CPU 사용률이 0.0%에 가까움 |
실행 상태 (Running) | R | 현재 CPU에서 실행 중인 상태
top 명령어에서 CPU 사용률이 실제 값으로 나타남 |
슬립 상태 (Sleep) | S | 특정 이벤트(예: I/O 작업) 대기 중인 상태 |
좀비 상태 (Zombie) | Z | 자식 프로세스가 종료되었지만 부모 프로세스가 종료 상태를 수집하지 않은 상태 |
세션 리더(Session Leader) | s | 프로세스가 세션을 관리하는 역할을 담당
보통 로그인 셸(예: bash)이 세션 리더로 동작 |
포어그라운드 프로세스 그룹(Foreground Process Group) | + | 해당 프로세스가 사용자와 상호작용할 수 있는 터미널과 연결되어 있음 |
슬립상태 vs idle 상태
운영체제에서 프로세스 상태는 프로세스의 실행과 관련된 주요 단계를 나타냅니다. 슬립(waiting)상태와 idle 상태는 둘 다 프로세스가 CPU를 점유하지 않고 있다는 점에서 유사하지만, 그 발생 조건과 의미에서 차이가 있다.
슬립 상태
슬립 상태는 프로세스가 특정 이벤트나 리소스가 준비되기를 기다리는 상태이다. 이 상태에서는 프로세스가 CPU를 점유하지 않고 대기 큐에 놓이며, 리소스가 사용 가능해지거나 이벤트가 발생하면 다시 준비 상태(ready)로 전환됩니다.
슬립 상태로 전환되는 경우
•
I/O 작업 대기
◦
예: 디스크 읽기/쓰기, 네트워크 데이터 수신, 프린터 작업 등.
◦
I/O 작업이 완료되기를 기다리는 동안 프로세스는 슬립 상태로 전환됩니다.
•
IPC(프로세스 간 통신) 대기
◦
예: 메시지 큐, 세마포어, 뮤텍스 등에서 다른 프로세스의 신호를 기다리는 경우.
•
타이머 이벤트 대기
◦
예: 특정 시간까지 대기하는 sleep() 시스템 호출을 사용한 경우.
•
시스템 호출이나 이벤트 대기
◦
예: 데이터베이스 트랜잭션 완료 대기, 파일 잠금 해제 대기 등.
idle 상태
idle 상태는 시스템에서 CPU가 할당된 작업을 갖고 있지 않은 상태이다. 즉, 실행 가능한 작업이 준비 큐에 없는 상황에서 발생하며, 프로세스의 관점보다는 시스템 전체의 상태를 설명하는 데 사용된다.
idle 상태가 발생하는 경우
•
모든 프로세스가 슬립 상태
◦
실행 가능한 프로세스가 없는 경우, CPU는 idle 상태가 된다.
•
사용자 작업 없음
◦
예: 데스크톱 환경에서 사용자가 키보드나 마우스 입력을 하지 않는 경우
•
I/O 지연
◦
시스템의 모든 실행 가능한 작업이 I/O 작업 대기 상태인 경우
idle 특징
•
ps 명령어로는 보이지 않음
•
idle 프로세스: 시스템이 idle 상태일 때 CPU 자원을 소비하지 않도록 "idle 프로세스"를 실행한다. 이는 CPU가 활동이 없는 상태에서 전력 소비를 최소화하는데 사용된다.
•
에너지 절약 모드: idle 상태가 길어지면 하드웨어 차원에서 에너지 절약모드가 활성화한다.
슬립 상태, idle 상태 비교
•
슬립 상태: 프로세스가 I/O 작업, IPC, 타이머 등의 이벤트를 기다리는 상황에서 발생
•
idle 상태: 시스템 차원에서 실행 가능한 프로세스가 없을 때 CPU가 작업 없이 대기하는 상태
특징 | 슬립 상태 (waiting) | idle 상태 |
적용 범위 | 개별 프로세스 | 시스템 전체 |
발생 조건 | 특정 이벤트나 리소스를 기다릴 때 | 실행 가능한 프로세스가 없을 때 |
CPU 점유 여부 | 점유하지 않음 | CPU 점유하지 않음 |
전환 조건 | 이벤트 발생 시 준비 상태로 전환 | 실행 가능한 프로세스가 준비되면 idle 종료 |
에너지 관리 | 관련 없음 | 에너지 절약 모드 활성화 가능 |
Related Posts
Search