본문 바로가기
Linux

[Linux] 프로세스의 상태

by oncerun 2020. 11. 21.
반응형

프로세스는 여러 상태 변화를 겪는 프로그램이라고 할 수 있는데, PID로 구별되고 자신만의 실행 환경을 확보해야 한다.

제한된 자원을 가지고 멀티태스킹을 지원하는 리눅스 운영체제에서 프로세스는 다양한 상태 변화를 겪는다.

 

생성부터 종료까지 각 단계를 나열하면 다음과 같다.

 

  1. 사용자가 작업을 요청하면 프로세스는 커널에 등록되고 생성 상태가 된다.
  2. 생성 상태에서 하드디스크로부터 메모리로 프로세스가 로드되면 프로세스는 준비 상태가 된다. 만약 충분한 메모리가 없다면 프로세스는 지연 준비 상태로 들어간다.
  3. 준비 상태에서 CPU 스케줄러가 특정 프로세스에 CPU를 할당하면 해당 프로세스가 실행 상태가 된다. 이 과정을 디스패치라고 한다.
  4. 실행 상태에서는 CPU는 프로세스가 가진 명령어를 실행한다. 선점/비선점 CPU 스케쥴링에 따라서 프로세스들이 CPU를 사용한다. 만약 다른 프로세스가 CPU를 선점했다면 해당 프로세스는 다시 준비 상태로 돌아간다.
  5. 실행 상태의 프로세스가 사용자의 입/출력 장치의 사용을 기다리게 되면 보류 상태 (혹은 대기 상태)로 들어간다. 보류 상태는 입/출력의 완료나 어떤 사건을 기다리는 상태이다.
  6. 보류 상태에서 입출력 처리 작업이 종료되면 준비 상태로 들어가서 cpu가 할당되기는 기다리신다. 이과정을 웨이크업이라고 한다.
  7. 준비 상태 또는 보류 상태에서 가지고 있던 메모리를 내놓고 지연 준비 상태 또는 지연 보류 상태로 전이 될 수 있는데, 실행 중에 있던 프로세스도  CPU와 메모리를 함께 반환하고 지연준비 상태로 전이될 수 있다.
  8. 실행 상태의 프로세스가 실행을 마무리하면 프로세스는 종료 상태가 되고 가지고 있던 모든 자원을 반환한다.

프로세스 상태 보기 : ps

 프로세스의 상태를 확인할 때 가장 자주 사용되는 명령은 ps이다.

ps 명령은 특정 순간에 활동 중인 프로세스의 상태를 보여 준다. 단순히 ps 명령을 실행하면 현재 터미널과 연결되어 있는 프로세스 중 EUID가 현재 사용자의 UID와 같은 프로세스들을 보여 준다.

 

ps 명령의 옵션은 다음 표에서 설명한다.

옵션 설명
터미널과 연결된 모든 사용자의 모든 프로세스를 출력한다.
-A ,-e 모든 사용자의 모든 프로세스를 출력한다.
u 현재 사용자의 프로세스를 사용자 친화적으로 자세히 출력한다.
x 현재 사용자가 소유한 모든 프로세스를 출력한다. 데몬 프로세스 처럼 터미널과 연결되어 있지 않는 프로세스도 출력한다.
-u users EUID가 주어진 users와 같은 프로세스를 출려한다. 여러 사용자를 표시할 때에는 콤마나 빈칸으로 구분한다.
-p PIDs 주어진 PID를 가진 프로세스를 추력한다.
e 프로세스 정보에 환경변수 정보를 포함시켜 출력
l , -f , -l 프로세스에 관한 많은 정보를 출력한다. 세 옵션이 동일한 것은 아니다. 
f 프로세스의 트리를 출력한다. 부모와 자식관계
o format 출력을 원하는 항목을 지정하여 출력한다.
k spec 정렬 순서를 정하여 출력한다.

 

보통 자주 사용되는 옵션은 ps -ef와 ps aux인데 둘 다 모든 사용자의 모든 프로세스에 관해 많은 정보를 출력해 준다.

반응형

'Linux' 카테고리의 다른 글

[Linux] 파일 시스템  (0) 2021.02.04
[Linux] cron 서비스  (0) 2020.11.21
[Linux] 프로세스  (0) 2020.11.21
[Linux] 파티션 관리  (0) 2020.11.18
[Linux] 마운트와 언마운트  (0) 2020.11.18

댓글