linux在具有快表的段页式存储管理公式中,如何实现地址变换

linux在具有快表的段页式存储管理公式中,如何实现地址变换,第1张

在段页式系统中,为了便于实现地址变换,须配置一个段表寄存器,其中存放段表始址和段长TL。

进行地址变换时,首先利用段号S,将它与段长TL进行比较。若S<TL,表示未越界,利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址,并利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再利用块号b和页内地址来构成物理地址。 在段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问内存中的段表,从中取得页表始址;第二次访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;第三次访问才是真正从第二次访问所得的地址中,取出指令或数据。 显然,这使访问内存的次数增加了近两倍。 为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。每次访问它时,都须同时利用段号和页号去检索高速缓存,若找到匹配的表项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址;若未找到匹配表项,则仍须再三次访问内存。

复制的。

linux运行在保护模式下,并且在启动保护模式之前准备好了分页式内存管理的页表,在进入保护模式的同时一并开启了分页模式(同时置PE和PG位,即or eax,0x80000001)。

需要注意的是不要把保护模式和分页模式混淆,与实模式相对的是保护模式,与分页式内存管理相对的是分段式内存管理;当然,也有两者结合的段页式。

你这个问题太宽泛了,不同的 *** 作系统有不同的管理方式,采用不同的数据结构。但是大体说来,可以分为页式、段式和段页式三种。

现在比较流行的 *** 作系统,如windows和linux,主要采用的是以分页式为主的内存管理方式,段式的功能基本不太用到了。

当然这里面涉及到很多技术细节,就不是在这里能讲清楚的了,推荐你看相关的书籍,比如<windows internals><深入理解linux内核>等

希望对你有所帮助!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8309726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存