LabHub

운영체제 · 프로세스와 스레드 · 실습

프로세스를 눈으로 본다

LabHub 에서 이어서 보기

목표

운영체제 책에서 읽은 것들을 직접 만들어 봅니다. 좀비, 고아, 가상 메모리,
열린 파일 — 전부 이 파드 안에서 몇 줄로 만들 수 있습니다.

여기서 배우는 것은 나중에 장애를 볼 때 그대로 쓰입니다. "디스크가 안 비어요",
"메모리를 왜 이렇게 많이 쓰죠", "파드가 안 죽어요" 의 답이 전부 여기 있습니다.

볼 곳

리눅스는 커널 상태를 파일로 보여 줍니다.

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개

  1. 누가 누구를 낳았나
  2. 스레드는 어디에 있나
  3. 좀비를 만든다
  4. 부모가 먼저 죽으면
  5. 예약한 메모리와 실제로 쓴 메모리
  6. 지웠는데 용량이 안 돌아온다
  7. TERM 과 KILL 의 차이
  8. 세 가지를 정리한다