当编译为目标代码,然后目标文件以静态或其他方式链接在一起时,它们被放置在一个[VAD][1]
. 我的猜测是,这是我的想法,但我假设动态链接的内核库与主可执行文件一起放置在 TBL 分页虚拟地址空间中,如果存在动态链接库,如 C 的标准,它们与主要可执行文件链接在一起,但静态的,如[SDL][2]
,不是。那么可执行文件如何通过链接的内核库访问受保护的内存,如驱动程序等?
希望我的问题不会太混乱。
基本上,我想问的最简短的问题是:
编译/链接的可执行文件和随附的库/API 如何实际到达或与操作系统 API、内核 API 或运行时硬件操作所需的其他系统软件交互?