이것이 점프 투 공작소

리눅스 프로세스의 상태에 대하여 알아보자 본문

리눅스

리눅스 프로세스의 상태에 대하여 알아보자

겅겅겅 2022. 10. 10. 20:24

 
1. 생성 ( fork()로 생성)
사용자가 작업을 요청하면 프로세스가 커널에 등록되고 생성
 
2. 준비 (실행 가능한 상태)
생성상태에서 하드디스크로부터 메모리로 프로세스가 로드되면 준비상태가 됩니다.
메모리 공간이 충분하지 않다면 지연준비 상태가 됩니다.
 
3. 실행 (실행 상태)
준비상태에서 CPU 스케줄러가 프로세스에 CPU를 할당하면 해당 프로세스가 실행상태가 됩니다.
이 과정을 Dispatch라고 합니다.
실행상태에서 CPU는 프로세스의 명령어를 실행합니다, 여러 이유로 작업을 끝내지 못하게되면 다시 준비상태로 빠지게 됩니다. 혹 더 높은 우선순위의 프로세스가 들어오면 실행상태를 선점당하게 되어 준비상태로 빠지게 됩니다.
 
5. 보류
실행상태의 프로세스가 사용자 입력이나 출력장치의 사용을 기다리거나 하면 보류상태로 들어갑니다.
 
6. 웨이크업(wake up)과정
보류 상태에서 입출력 처리 작업이 종료되면 준비상태로 돌아가서 CPU가 할당되기를 기다립니다.
이 과정을 웨이크업 이라고 합니다.
 
7. 지연보류, 지연준비 (메모리를 확보하지 못한 상태)
준비, 보류 상태에서 가지고있던 메모리를 내놓고 지연준비 또는 지연보류 상태로 전이 될 수 있습니다.
실행중인 프로세스도 CPU와 메모리를 함께 내놓고 지연준비 상태로 전이 될 수 있습니다.
 
8. 종료
실행상태의 프로세스가 마무리되면 프로세스는 종료상태가 되고 가지고있던 모든 자원을 반환합니다.
 
 

프로세스 상태 확인

ps -ef , ps aux로 현재 실행중인 프로세스를 확인 할 수 있습니다.

USER : 프로세스 유효 사용자의 계정 이름
PID : 프로세스 유효 소유자 ID
%CPU : 프로세스 실행 중 해당 프로세스의 CPU점유율
%MEM : 전체 메모리 중 해당 프로세스의 메모리 점유율
VSZ :  가상 메모리 크기입니다. 스왑 아웃 된 메모리, 할당되었지만 사용되지 않은 메모리 및 공유 라이브러리의 메모리를 포함하여 프로세스가 액세스 할 수있는 모든 메모리
RSS : 해당 프로세스에 할당되고 RAM에있는 메모리 양을 표시
TTY : 터미널, 연결된 터미널이 없다면 ? pts/1 (첫번쩨 가상 터미널을 의미) 
STAT : 스텟 코드 값
COMMAND : 프로세스의 실행 명령 행

스탯코드란?

첫 번째 필드

D io와 같이 중지(interrupt)시킬 수 없는 잠자고 있는 (휴지) 프로세스 상태
R현제 동작중이거나 동작할 수 있는 상태
S잠자고 있지만, 중지시킬수 있는 상태
T 작업 제어 시그널로 정지되었거나 추적중에 있는 프로세스 상태
X 완전히 죽어 있는 프로세스
Z죽어있는 좀비 프로세스

 두 번째 필드

<프로세스의 우선 순위가 높은 상태
N프로세스의 우선 순위가 낮은 상태
L실시간이나 기존 IO를 위해 메모리 안에 잠겨진 페이지를 가진 상태
s 세션 리터(주도 프로세스)
l멀티 쓰레드
+포그라운드 상태로 동작하는 프로세스