운영체제 · 프로세스와 스레드 · 실습
프로세스를 눈으로 본다
목표
운영체제 책에서 읽은 것들을 직접 만들어 봅니다. 좀비, 고아, 가상 메모리,
열린 파일 — 전부 이 파드 안에서 몇 줄로 만들 수 있습니다.
여기서 배우는 것은 나중에 장애를 볼 때 그대로 쓰입니다. "디스크가 안 비어요",
"메모리를 왜 이렇게 많이 쓰죠", "파드가 안 죽어요" 의 답이 전부 여기 있습니다.
볼 곳
리눅스는 커널 상태를 파일로 보여 줍니다.
ps -eo pid,ppid,stat,comm # 프로세스 목록ls /proc/<PID>/task # 그 프로세스의 스레드들ls -l /proc/<PID>/fd # 열어 둔 파일들cat /proc/<PID>/status # 메모리를 포함한 상태 전부/proc 은 진짜 디스크가 아니라 커널이 만들어 주는 화면입니다.
백그라운드로 띄울 때
파이썬 출력이 안 보이면 flush=True 를 빼먹은 것입니다.
print(os.getpid(), flush=True)단계
1. 프로세스 계보 → 01-tree.txt
2. 스레드 → 02-threads.txt
3. 좀비 → 03-zombie.txt
4. 고아와 PID 1 → 04-orphan.txt
5. VSZ 와 RSS → 05-memory.txt
6. 지운 파일 → 06-deleted.txt
7. TERM 과 KILL → 07-signal.txt
8. 정리 → 08-notes.md
참고
5단계와 6단계는 숫자를 둘 다 남겨야 합니다. 전후 비교가 그 단계의
전부이기 때문입니다.
단계 8개
- 누가 누구를 낳았나
- 스레드는 어디에 있나
- 좀비를 만든다
- 부모가 먼저 죽으면
- 예약한 메모리와 실제로 쓴 메모리
- 지웠는데 용량이 안 돌아온다
- TERM 과 KILL 의 차이
- 세 가지를 정리한다