강사님 ExitProcess 와 TerminateProcess 에 대해 질문드립니다.
ExitProcess 관련 메뉴얼에
프로세스에서 종료된 스레드 중 하나에 잠금이 있고 로드된 DLL 중 하나의 DLL 분리 코드가 동일한 잠금을 획득하려고 하면 ExitProcess 를 호출하면 교착 상태가 발생한다. 라고 되어 있는데 중요한 애기 인거 같은데 무슨 애기인지 알 수 있는지 해서요?
DLL에서 ExitProcess 를 호출하면 예기치 않은 애플리케이션 또는 시스템 오류가 발생할 수 있다. DLL을 로드할 애플리케이션 또는 시스템 구성 요소와 이 컨텍스트에서 ExitProcess 를 호출하는 것이 안전한 경우에만 DLL에서 ExitProcess 를 호출해야 한다. 라고 되어 있는데 설명 부탁드릴 수 있느지요?
아울러 ExitProcess 와 TerminateProcess 의 경우 프로그램이 할당한 메모리 등 자원 및 오픈한 handle 에 대한 처리는 어떻게 되는지요?
부탁드려 봅니다.
回答 2
1
프로세스(.exe)가 ExitProcess() 함수를 호출하면 실행파일(.exe)이 로드한 모든 DLL에 대해 DllMain() 함수를 호출하게 됩니다. 매개변수는 DLL_PROCESS_DETACH가 될 것이고 이 과정에서 DLL 언로드와 관련된 코드가 수행될 것입니다. 보통 할당받은 자원을 해제하거나 개방했던 각종 핸들을 닫는 등 정리 절차에 관한 코드가 수행되는 것일 일반적인데 이 과정에서 해제 코드가 멈추는 등 흐름이 멈춰버리면 DllMain() 함수는 반환하지 못합니다. 이 경우 ExitProcess()는 DLL이 언로드 되지 않은 것으로 간주하여 계속 반환되기를 기다리게 됩니다. 로드한 전체 DLL 중 단 하나라도 이런 일이 발생한다면 ExitProcess() 함수는 끝내 반환하지 못하게 되고 결과적으로 프로세스가 종료되지도 못합니다.
더 중요한 것은 DLL 언로드가 진행된다고 판단한 후 내부 스레드들을 종료시키는데 그 절차를 진행하지 못하므로 ExitProcess()를 호출한 스레드는 그 지점에서 흐름이 멈추지만 나머지 스레드들은 여전히 작동하게 됩니다. 물론 일부 해제된 DLL이나 자원 때문에 오류가 발생할 가능성이 높고 그로 말미암아 비정상 종료될 가능성이 있습니다만 장담 할 수는 없습니다.
그리고 TerminateProcess()든 ExitProcess()든 어떤 경우라도 프로세스가 종료되면 프로세스가 사용했던 모든 자원은 OS가 회수합니다. 메모리는 가상 메모리 시스템을 사용하기 때문에 완벽히 회수되며 각종 파일 및 커널 오브젝트 같은 자원들도 회수 됩니다. 참고하시기 바랍니다. 😄
세마포어 개수에 따른 스레드 점유상태
0
61
2
메모리 맵과 비동기 입/출력 조합 #2 수업내용에 질문있습니다.
0
94
2
힙 메모리 블럭 관리 방법 질문
0
97
2
MapViewOfFile 원리 관련 질문있습니다
0
102
1
가상 메모리 시스템 영역 구분
0
95
2
스택 크기 결정 단계
0
75
2
시스템프로그래밍-응용편
0
130
2
바이트와 관련된 유튜브 영상을 못 찾겠어요ㅠㅠ
0
94
2
파일 복사에 관한 질문입니다
0
113
2
세마포어 예제에 대한 질문이 있습니다.
0
108
2
메모장 쓰레기값 ?
0
131
2
64 bit 운영체제라면 가상메모리가
0
180
2
alertable Wait 상태 질문있습니다
0
226
1
GetCurrentDirectory 관련 질문
0
169
2
세마포어 예제중 형변환에 대한 질문
0
162
2
강사님 dll 지연로딩 관련하여 질문 드립니다
0
205
3
선장님 , _beginThreadEx() 함수 원리는 어디서 정보를 얻을 수 있을까요?
0
285
2
메모리 맵 강의 예제의 결과가 이상합니다.
0
227
1
강사님 파일입출력(Callback함수)와 관련하여 질문 드립니다.
0
348
2
dll 명시적 링크 오류 (원인 및 해결 방법이 필요 합니다)
0
962
2
static 영역의 rw 가능한 곳은 어떤 데이터가 담기는지 궁금합니다.
0
221
1
TerminanteProcess 와 관련하여 질문 드립니다.
0
170
1
강사님 스레드 관련 질문 드립니다.
0
224
1
강사님 메뉴얼 중 이것도 궁금해서 여쭤봅니다.
0
208
2

