윈도우는 PE파일을 메모리 매핑에서 메모리에 로드시킴. (출처 윈도우 API정복 2권 메모리 매핑편)
따라서 일반적인 방법으로는 메모리에 로드된 파일(exe, dll)를 지울 수 없음.
그러니까 운영체제를 업데이트 하는 동안에는 업데이트 하는 파일들을 로드할 수 없다 -> 동작이 안 된다. -> 업데이트 하는 시간이 따로 필요하다.
라고 생각함.
리눅스는 잘 모르겠음. 그런데 프로세스가 실행 중인데도 so도 지울 수 있고 프로그램 파일도 지울 수 있더라? 그러니까
운영체제를 업데이트 하는 동안에도 업데이트 하는 파일들을 변경할 수 있음-> 업데이트 하는 파일들을 로드할 수 있음 -> 동작이 가능하다. -> 업데이트 하는 시간이 따로 필요하지 않다.
인 것같음.
메모리맵 되는건 똑같은데 리눅스는 파일 unlink해도 해당 inode 카운터가 0되기 전까진 그 inode 살려두잖음? 바이너리도 그렇게 계속 살아있는듯
리눅스 쪽은 잘 모름
단지 해봤을 때의 경험을 미루어 봤을 때 왜 차이가 생기는 지를 추론한거
사실 나도 윈도우쪽 멀름 윈도우는 파일관리 어케함
그러니까 데이터가 사용되지 않는 시점까지는 그대로 유지한다는 거지? 아이노드처럼?
ㄴㄴ 아이노드처럼이 아니라 걍 바아너리의 아이노드가 살아있음
윈도우는 아예 실행중인 프로세스의 실행 파일을 지울 수가 없고 리눅스는 지울 수 있지만 프로세스가 종료하기 전까지는 디스크에 그대로 남아있다는 소리지? 단지 링크가 소멸되어서 파일 시스템으로 접근할 수 없을 뿐이고
ㅇㅇ윈도우는 몰겄는데 아마 그럴거같고 리눅스는 inode 붙잡고있는 프로세스나 하드링크 다 날아가서 inode 레퍼런스 카운트가 0이 되기 전까지는 삭제하지 않음