프로세스가 종료될 때 프로세스 자체를 정리합니까, 아니면 커널을 정리합니까?

프로세스가 종료될 때 프로세스 자체를 정리합니까, 아니면 커널을 정리합니까?

최근 파워포인트 프레젠테이션에서 다음과 같은 사실을 발견했습니다.

프로그램이 컴파일되고 링크되면 링커는 프로그램에 추가 코드를 삽입합니다. 호출하는 코드는 바로 이 코드입니다.기본함수는 사용자가 "하위 함수"라고 부르는 것과 거의 같은 방식입니다.

추가 코드에는 두 가지 기능이 있습니다.

  • C 프로그램이 올바른 환경에서 실행되고 있는지 확인하십시오.
  • 성공적인 종료 후 정리

이전에는 정리가 커널의 작업이라고 생각했습니다. 올바른 이야기는 무엇입니까?

답변1

커널과 C 런타임 모두 일부 작업을 수행합니다.

C 런타임은 커널이 하지 않는 작업을 수행합니다. 즉, 이전에 등록된 핸들러를 실행 하고 정수 반환 값이 마치 사용된 것처럼 시스템에 반환되도록 atexit()준비합니다 .main()exit()

물론 결국 커널은 사용자 공간이 무엇을 하든 하지 않든 관계없이 모든 리소스(파일, 메모리)를 얻게 됩니다.

관련 정보