일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- two pointer
- SQL
- binary search
- 스토어드 프로시저
- 다익스트라
- Two Points
- DP
- String
- union find
- Hash
- Trie
- 이진탐색
- Brute Force
- 그래프
- Stored Procedure
- Dijkstra
- MYSQL
Archives
- Today
- Total
codingfarm
프로세스 관리 - 개념, 관리 도구 본문
1. 프로세스의 개념
- 프로세스 : 현재 시스템에서 실행중인 프로그램
- 다중 프로세스 시스템 : 여러 개의 프로세스가 동시에 실행되는 시스템
1.1 프로세스의 부모-자식 관계
- 리눅스에서 모든 프로세스는 부모-자식 관계를 가진다.
- systemd와 kthreadd를 제외한 모든 프로세스는 부모 프로세스를 지닌다. (이 둘은 리눅스 시스템 부팅시 스케줄러가 실행한다)
- 자식 프로세스
- 부모 프로세스에 의해 만들어지는 프로세스
- 종료시 부모프로세스에게 종료 정보(exit status)를 돌려주고 종료된다.
- ex) 사용자가 vi를 실행하면 셸이 vi 프로세스를 생성할 경우, 셸은 부모 프로세스가 되고 vi는 자식 프로세스가 된다. 사용자가 vi를 종료하면 다시 부모 프로세스인 셸로 돌아간다.
1.2 PID(process identification number)
- 각 프로세스가 가지는 고유한 번호
- 1번 부터 시작하고 프로세스가 실행되면 하나씩 증가하여 부여된다.
- 리눅스 부팅시에 1번 systemd 프로세스와 2번 kthreadd 프로세스가 차례로 실행된다.
- systemd : 나머지 모든 시스템 프로세스의 부모 프로세스
- kthread : 모든 스레드의 부모 프로세스
1.3 프로세스의 종류
1. 데몬 프로세스(daemon process)
- 평소에는 대기 상태로 있다가 서비스 요청이 들어오면 서비스를 제공하는 프로세스
- ex : sshd(ssh 서버 데몬, 원격 접속 서비스를 제공)
2. 고아 프로세스(orphan process)
- 부모 프로세스가 먼저 종료된 자식프로세스
- 자신이 종료되었을때 돌아갈 프로세스가 없다.
- 1번 프로세스가 고아프로세스의 새 부모프로세스가 되어 고아 프로세스가 작업을 마치고 종료될 수 있게 한다.
3. 좀비 프로세스(zombie process)
- 종료했으므로 실제 실행되진 않지만 프로세스 테이블에 남아있는 프로세스
- 종료 정보(exit status)를 부모 프로세스가 읽어가기를 기다리는 자식프로세스
- 프로세스 목록에 defunct 프로세스라고 나오기도 한다.
- 좀비 프로세스가 쌓이면 테이블의 용량이 부족해서 정상적인 프로세스가 실행되지 않을 수도 있다.
- kill 명령으로 제거할 수 없다.
- 좀비 프로세스를 제거할 방법은 다음과 같다.
- SIGCHLD 시그널을 부모 프로세스에 보내어 부모 프로세스가 자식 프로세서를 정리하도록 해야한다.
- 부모 프로세스 자체를 종료한다. 그러면 좀비 프로세스는 고아 프로세스가 되어 1번 프로세스에 의해 주기적으로 자식프로세스의 종료 정보를 확인하여 정리한다.
2. 프로세스 관리 명령
프로세스 관리 도구
- ps 명령으로는 현재 프로세스 목록을 확인만 할 수 있다.
- ps의 정보를 가공하여 사용자가 보기 편한 기능을 제공하는 도구가 있다.
- top명령
- 시스템 감시
top
- 종료되지 않고 실시간으로 프로세스의 상태를 보여준다.
top 명령의 출력 정보
항목 | 의미 | 항목 | 의미 |
PID | 프로세스 ID | SHR | 프로세스가 사용하는 공유 메모리의 크기 |
USER | 사용자 계정 | %CPU | 퍼센트로 표시한 CPU 사용량 |
PR | 우선순위 | %MEM | 퍼센트로 표시한 메모리 사용량 |
NI | Nice 값 | TIME+ | CPU 누적 이용 시간 |
VIRT | 프로세스가 사용하는 가상 메모리의 크기 | COMMAND | 명령 이름 |
RES | 프로세스가 사용하는 메모리의 크기 |
top 내부 명령
내부 명령 | 기능 |
ENTER, SPACE BAR | 화면을 즉시 다시 출력한다. |
h, ? | 도움말 화면을 출력한다. |
k | 프로세스를 종료한다. 종료할 프로세스의 PID를 물어본다. |
n | 출력하는 프로세스의 개수를 바꾼다. |
p | CPU 사용량에 따라 정렬하여 출력하낟. |
q | top 명령을 종료한다. |
M | 사용하는 메모리의 크기에 따라 정렬하여 출력한다. |
u | 사용자에 따라 정렬하여 출력한다. |
시스템 감시
- ubuntu의 GUI인 GNOME에서 기본적으로 제공하는 도구
- [프로그램 표시]-[유틸리티]-[시스템 감시]를 선택하여 동작시킬 수 있다.
'Linux > Ubuntu' 카테고리의 다른 글
프로세스 관리 - 작업 예약 (0) | 2021.03.06 |
---|---|
프로세스 - 포그라운드와 백그라운드 (0) | 2021.03.06 |
특수 접근 권한 SetUID, SetGID (0) | 2021.03.05 |
입출력 방향 바꾸기 (0) | 2020.11.15 |
shell (0) | 2020.11.04 |
Comments