내가 이해한 바로는 POSIX 시스템은 fork()
exec()
일련의 호출 중에 메모리를 구성하기 위해 특정 링커 형식을 사용합니다. a.out, COFF 및 ELF는 운영 체제에서 사용되는 잘 알려진 이진 개체 파일 형식입니다.
이것을 순서대로 읽는 코드가 어디에 있는지 아는 사람이 있나요 fork()
exec()
?
답변1
보편적인 대답은 없지만 대부분의 POSIX 계열 시스템에서는 커널이 실행 파일 로드 및 메모리 설정의 일부를 처리합니다.
Linux(인증된 POSIX 시스템은 아니지만 POSIX 유사 시스템)에서 지원하는 실행 파일 형식에 대한 커널 로더는 다음 위치에 있습니다.fs
커널 소스 코드 디렉토리, 이름이 binfmt_
. 바라보다Linux에는 어떤 유형의 실행 파일이 있습니까?자세한 내용은.
macOS(인증된 POSIX 시스템)에서 로더는 다음 위치에 있습니다.bsd/kern/kern_exec.c
다윈의 근원에서, 다양한 exec_*_imgact
기능에서.
OpenBSD에서 로더는 다음 위치에 있습니다.sys/kern
exec_*
, 파일 에서 ;exec_elf.c
ELF 실행 파일을 처리합니다.