반응형
프로세스는 여러 상태 변화를 겪는 프로그램이라고 할 수 있는데, PID로 구별되고 자신만의 실행 환경을 확보해야 한다.
제한된 자원을 가지고 멀티태스킹을 지원하는 리눅스 운영체제에서 프로세스는 다양한 상태 변화를 겪는다.
생성부터 종료까지 각 단계를 나열하면 다음과 같다.
- 사용자가 작업을 요청하면 프로세스는 커널에 등록되고 생성 상태가 된다.
- 생성 상태에서 하드디스크로부터 메모리로 프로세스가 로드되면 프로세스는 준비 상태가 된다. 만약 충분한 메모리가 없다면 프로세스는 지연 준비 상태로 들어간다.
- 준비 상태에서 CPU 스케줄러가 특정 프로세스에 CPU를 할당하면 해당 프로세스가 실행 상태가 된다. 이 과정을 디스패치라고 한다.
- 실행 상태에서는 CPU는 프로세스가 가진 명령어를 실행한다. 선점/비선점 CPU 스케쥴링에 따라서 프로세스들이 CPU를 사용한다. 만약 다른 프로세스가 CPU를 선점했다면 해당 프로세스는 다시 준비 상태로 돌아간다.
- 실행 상태의 프로세스가 사용자의 입/출력 장치의 사용을 기다리게 되면 보류 상태 (혹은 대기 상태)로 들어간다. 보류 상태는 입/출력의 완료나 어떤 사건을 기다리는 상태이다.
- 보류 상태에서 입출력 처리 작업이 종료되면 준비 상태로 들어가서 cpu가 할당되기는 기다리신다. 이과정을 웨이크업이라고 한다.
- 준비 상태 또는 보류 상태에서 가지고 있던 메모리를 내놓고 지연 준비 상태 또는 지연 보류 상태로 전이 될 수 있는데, 실행 중에 있던 프로세스도 CPU와 메모리를 함께 반환하고 지연준비 상태로 전이될 수 있다.
- 실행 상태의 프로세스가 실행을 마무리하면 프로세스는 종료 상태가 되고 가지고 있던 모든 자원을 반환한다.
프로세스 상태 보기 : ps
프로세스의 상태를 확인할 때 가장 자주 사용되는 명령은 ps이다.
ps 명령은 특정 순간에 활동 중인 프로세스의 상태를 보여 준다. 단순히 ps 명령을 실행하면 현재 터미널과 연결되어 있는 프로세스 중 EUID가 현재 사용자의 UID와 같은 프로세스들을 보여 준다.
ps 명령의 옵션은 다음 표에서 설명한다.
옵션 | 설명 |
a | 터미널과 연결된 모든 사용자의 모든 프로세스를 출력한다. |
-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 |
댓글