当系统支持分页时,我一直在尝试理解LDT的使用。
我的理解:
- GDT为用户CS& DS和内核CS和DS。
- GDT由所有进程共享,而LDT是每个进程的本地进程。
- LDT用于实施保护,即。 (防止一个进程访问另一个进程的代码/数据。)
- Linux目前有一个默认的LDT,由与GDT类似的所有进程共享。
- 以前通过在LDT中创建条目来实现TLS。这将应用程序中的线程数限制为8192.通过在GDT中使用TLS可以改善这一点。在上下文切换上,GDT上的TLS条目指向线程的本地段。
- 最后,通过将不同进程的相同线性地址映射到不同的物理页面,使用分页来确保不同的进程有自己的代码和数据部分。
有了这个,在Linux中使用LDT有什么用?为什么我们甚至有一个由所有过程共享的?