知识大全 谈谈Linux中的存储保护

Posted 空间

篇首语:壮心未与年俱老,死去犹能作鬼雄。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 谈谈Linux中的存储保护相关的知识,希望对你有一定的参考价值。

谈谈Linux中的存储保护  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  以下讨论的内容是以i 平台为基础的     Linux将 G的地址划分为用户空间和内核空间两部分 在Linux内核的低版本中( X) 通常 G为用户空间 G G为内核空间 这个分界点是可以可以改动的     正是这个分界点的存在 限制了Linux可用的最大内存为 G 而且要通过重编内核 调整这个分界点才能达到     实际上还可以有更好的方法来解决这个问题 由于内核空间与用户空间互不重合 所以可以用段机制提供的保护功能来保护内核级代码 以下为 X的部分代码     /usr/src/linux/arch/i /kernel/entry S     A: quad xc c a ffff /* x kernel GB code at xC *     B: quad xc c ffff /* x kernel GB data at xC *     C: quad x cbfa ffff /* x user GB code at x *     D: quad x cbf ffff /* x b user GB data at x *     A B为内核代码段及数据段的描述符 C D为用户代码及数据段的描述符从以上 我们可以清楚的看到A B的特权级为 而C D的特权级为 当内核存取用户空间的内容时 他借助于fs寄存器 同过将FS寄存器的内容置为D来达到访问用户空间的目的      X版的 内核对此进行了改动 这样内核空间扩张到了 G 所以可以直接进行拷贝了      quad x cf a ffff /* x kernel GB code at x *      quad x cf ffff /* x kernel GB data at x *      quad x cffa ffff /* x user GB code at x *      quad x cff ffff /* x b user GB data at x *     从表面上看内核的基地址变为了 但实际上 内核通常仍在虚址 G以上 其中奥妙在与 不同的连接描述文件      X      = xC + x ;     _text = ; /* Text and read only data */      text :     *( text)     *( fixup)     *( gnu warning)      = x      text lock : *( text lock) /* out of line lock text */      rodata : *( rodata)      kstrtab : *( kstrtab)           X     faint 内核被删除了 (     不管怎莫说 请大家相信我 X的起址为 x 这样一来 二者就相等了 都是 xC + x     用户空间在 X中从直观上变为 G 让人迷惑 其不是可以直接访问内核了?其实不然 同过使用页机制提供的保护 阻止了用户程序访问内核空间     这样 存取用户空间实际上已不需要FS GS的支持 但在内核中仍保留set_fs(X)等宏上你设的值用来验证随后的操作是否合适 是否超过设定的X 此处X不再是一个段描述符 而是一个具体的值     此处就有一个陷阱 如果你将Set_fs的值设置为Kernel_DS 而没有将其该回去 当用户通过系统调用将一个Buffer的地址(应该在用户空间)设置为一个内核空间 而内核在访问该地址前认为默认当前的阀值仍为User_DS 事情就大大?了 cha138/Article/program/Oracle/201311/16958

相关参考

知识大全 谈谈Java中的继承与组合

谈谈Java中的继承与组合  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  继承和组合的概念  在

知识大全 谈谈各种JAVA中的调用程序方式

谈谈各种JAVA中的调用程序方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多书籍都说Ja

CPU能直接访问存储在内存中的数据,也能直接访问存储在外存中的数据

CPU能直接访问存储在内存中的数据,也能直接访问存储在外存中的数据。_____答案:错误解析:CPU只能直接访问内存中的数据,外存中的数据必须调人内存后,才能被访问。故本题判断错误。

知识大全 谈谈c#中的static

  最近突然觉得自己对于static的概念有点模糊了所以就从网上搜集些资料又自己做了一些demo试验了一下下边将一些写的比较好的文章分享一下static关键字大家肯定是用的很多了说起来大家也都知道这有

关于数字式可编程调节器存储器保护电池,下面说法正确的是()

关于数字式可编程调节器存储器保护电池,下面说法正确的是()A、在通电状态下寿命为5年,非通电状态下寿命为1年;B、当AL灯闪亮时应及时检查或更换电池;C、更换电池可以在仪表非通电状态下进行;D、更换新

关于数字式可编程调节器存储器保护电池,下面说法正确的是()

关于数字式可编程调节器存储器保护电池,下面说法正确的是()A、在通电状态下寿命为5年,非通电状态下寿命为1年;B、当AL灯闪亮时应及时检查或更换电池;C、更换电池可以在仪表非通电状态下进行;D、更换新

知识大全 ORACLESTREAMS存储过程中的一些参数

ORACLESTREAMS存储过程中的一些参数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  m

知识大全 了解Oracle存储过程中的角色

了解Oracle存储过程中的角色  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  角色(数据库权限

知识大全 ASP.NET中的session存储模式运用

ASP.NET中的session存储模式运用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在中

高尔夫6如何操作和阅读多功能显示屏中的两个自动存储器?

高尔夫6多功能显示屏中有两个自动存储器:1-单程存储器;2-累计存储器。显示屏的右上角会显示当前页面是哪一个存储器。  两个存储器的切换  用多功能方向盘或雨刮器操纵杆上的ok键可以随时切换两个存储器