← 질문 목록
#366깊이 0

프로세스가 죽으면 무엇이 정리되고 무엇이 남는가?

운영체제기초메모리

메모리 같은 자원은 커널이 거둬 가고, 종료 상태는 부모가 거둘 때까지 남는다. 좀비와 고아 이야기가 전부 이 남는 쪽에서 나온다.

  1. 프로세스가 끝난다
  2. 그다음은 커널이 메모리와 파일 디스크립터를 회수한다입니다. 그다음

    커널이 메모리와 파일 디스크립터를 회수한다
  3. 그다음은 종료 상태가 프로세스 표에 남는다입니다. 그다음

    종료 상태가 프로세스 표에 남는다
  4. 그다음은 부모가 거두면 그제야 사라진다입니다. 그다음

    부모가 거두면 그제야 사라진다

종료 상태는 부모에게 전할 값이라 부모가 읽을 때까지 남는 것이 기본이다. 부모가 안 거두면 그 항목이 좀비로 남고, 부모가 먼저 죽으면 커널이 정한 대리 부모 — 대개 1번 프로세스 — 가 맡아 거둔다.

그 프로세스가 쥔 파일 디스크립터는 닫힌다. 그래서 혼자 쥐고 있던 포트와 잠금은 죽음과 함께 풀린다 — 따로 해제 코드를 못 돌렸어도 그렇다. 다른 프로세스와 공유하던 것이면 마지막 참조가 닫힐 때까지 대상은 남는다.

핵심 정리

강제 종료가 막는 것은 정리 코드다. 잡을 수 없는 신호로 죽이면 종료 훅과 임시 파일 정리는 못 돌지만, 커널 자원 회수는 그와 무관하게 일어난다.

디스크는 다른 문제다. 프로세스만 죽으면 커널에 넘긴 내용은 마저 쓰이지만, 프로세스 안 버퍼에만 있던 것은 함께 사라진다. 기계가 꺼지면 더 좁아져서, 동기화를 마치지 않은 데이터는 남는다는 보장이 없다.

프로세스 자원은 커널이 회수한다. 프로세스가 스스로 정리하는 것과 커널이 거두는 것을 가르면 좀비도 강제 종료도 한 그림에 들어온다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

프로세스가 죽으면 무엇이 정리되고 무엇이 남는가?