如果一个进程调用代码执行,会发生什么?
在32位操作模式下,GDT是非平整使用的,可以完全使用分割。
那么,如果请求的CS指针指向另一个过程的段,会发生什么?
有时我认为这是允许的。
但是,通常不是。
在64位模式下,分段已关闭。
所有段从0到处理器线性空间的顶部。
另外,GDT似乎是微不足道的。例如,Linux将所有进程的所有用户代码投入一个细分市场。
系统代码相同。
因此,在64位模式下,您甚至不需要一个指针即可呼唤另一个过程的代码。
也许我的问题可以归结为:
当一个过程试图调用另一个过程的代码时会发生什么?
您正在运行什么操作系统?
通常,您的操作系统在受保护的内存中运行您的过程,这意味着无法访问您的过程不拥有的内存。试图在虚拟内存之外访问内存会导致分割故障。要访问此类内存,您需要成为内核的一部分。