Linux操作系统中的分页策略介绍

文章作者 100test 发表时间 2007:03:14 16:51:58
来源 100Test.Com百考试题网


Linux中每个进程都会有各自不同的页表,也就是说进程的映射函数互不相同,保证每个进程虚拟地址不会映射到相同的物理地址上。这是因为进程之间必须相互独立,各自的数据必须隔离,防止信息泄漏。

另外需要注意的是,内核作为必须保护的单独部分,它有自己独立的页表来映射内核空间(并非全部空间,仅仅是物理内存大小的空间),该页表(swapper_pg_dir)被静态分配,它只来映射内核空间(swapper_pg_dir只用到768项以后的项——768个页目录可映射3G空间)。这个独立页表保证了内核虚拟空间独立于其他用户程序空间,也就是说其他进程通常状态下和内核是没有联系的(在编译内核的时候,内核代码被指定链接到3G以上空间),因而内核数据也就自然被保护起来了。

那么在用户进程需要访问内核空间时如何做呢?

Linux采用了个巧妙的方法:用户进程页表的前768项映射进程空间(<3G,因为LDT 中只指定基地址为0,范围只能到0xc0000000),如果进程要访问内核空间,如调用系统调用,则进程的页目录中768项后的表项将指向swapper_pg_dir的768项后的项,所以一旦用户陷入内核,就开始使用内核的页表swapper_pg_dir了,也就是说可以访问内核空间了。



相关文章


将Linux系统的控制台定向到串口终端
MySQL可能被计划转为Linux文件系统
Linux操作系统中的分页策略介绍
熟悉Linux操作系统核心配置文件Fstab
关于Linux操作系统的开机过程详解
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛