← 질문 목록
#366깊이 0
프로세스가 죽으면 무엇이 정리되고 무엇이 남는가?
메모리 같은 자원은 커널이 거둬 가고, 종료 상태는 부모가 거둘 때까지 남는다. 좀비와 고아 이야기가 전부 이 남는 쪽에서 나온다.
- 프로세스가 끝난다
그다음은 커널이 메모리와 파일 디스크립터를 회수한다입니다. 그다음
커널이 메모리와 파일 디스크립터를 회수한다그다음은 종료 상태가 프로세스 표에 남는다입니다. 그다음
종료 상태가 프로세스 표에 남는다그다음은 부모가 거두면 그제야 사라진다입니다. 그다음
부모가 거두면 그제야 사라진다
종료 상태는 부모에게 전할 값이라 부모가 읽을 때까지 남는 것이 기본이다. 부모가 안 거두면 그 항목이 좀비로 남고, 부모가 먼저 죽으면 커널이 정한 대리 부모 — 대개 1번 프로세스 — 가 맡아 거둔다.
그 프로세스가 쥔 파일 디스크립터는 닫힌다. 그래서 혼자 쥐고 있던 포트와 잠금은 죽음과 함께 풀린다 — 따로 해제 코드를 못 돌렸어도 그렇다. 다른 프로세스와 공유하던 것이면 마지막 참조가 닫힐 때까지 대상은 남는다.
핵심 정리
강제 종료가 막는 것은 정리 코드다. 잡을 수 없는 신호로 죽이면 종료 훅과 임시 파일 정리는 못 돌지만, 커널 자원 회수는 그와 무관하게 일어난다.
디스크는 다른 문제다. 프로세스만 죽으면 커널에 넘긴 내용은 마저 쓰이지만, 프로세스 안 버퍼에만 있던 것은 함께 사라진다. 기계가 꺼지면 더 좁아져서, 동기화를 마치지 않은 데이터는 남는다는 보장이 없다.
프로세스 자원은 커널이 회수한다. 프로세스가 스스로 정리하는 것과 커널이 거두는 것을 가르면 좀비도 강제 종료도 한 그림에 들어온다.
추천 꼬리질문
관련 질문
- 좀비 프로세스는 왜 남는가?운영체제죽음에서 무엇이 정리되고 무엇이 남는지를 알아야 종료 상태가 남은 것이 좀비임이 이해된다.
- 앱이 백그라운드에서 죽는 이유는?모바일모바일에서 앱 프로세스를 거두는 것도 같은 그림이다 — 커널이 자원을 회수하고 앱은 그 전제 위에서 상태를 지킨다.
- 메모리 부족 시 어떤 프로세스부터 종료되는가?모바일한쪽은 죽은 뒤의 정리를, 한쪽은 시스템이 죽일 대상을 고르는 기준을 다룬다 — 프로세스 종료라는 같은 사건의 앞뒤다.
- 죽은 파드는 누가 다시 만드는가?인프라 · 보안죽음 뒤 누가 무엇을 되살리는가 — 프로세스는 커널이 거두고 파드는 컨트롤러가 다시 만든다.
- 갑자기 꺼져도 커밋한 것이 남는 이유는?데이터베이스죽음의 단위가 프로세스인지 기계인지에 따라 디스크에 남는 범위가 갈린다 — 커밋의 지속성이 그 경계 위에 서 있다.