【译】x86程序员手册16-5.3联合使用段与分页转换
5.3 Combining Segment and Page Translation
联合使用段与分页转换
Figure 5-12 combines Figure 5-2 and Figure 5-9 to summarize both phases of the transformation from a logical address to a physical address when paging is enabled. By appropriate choice of options and parameters to both phases, memory-management software can implement several different styles of memory management.
图5-12联合图5-2与图5-9一起总结了当分页被启用后从逻辑地址转换到物理地址时所有转换部分。通过在两个转换部分选择适当的选项和参数,内存管理软件可以实现几种不同风格的内存管理。
5.3.1 "Flat" Architecture 扁平结构
When the 80386 is used to execute software designed for architectures that don't have segments, it may be expedient to effectively "turn off" the segmentation features of the 80386. The 80386 does not have a mode that disables segmentation, but the same effect can be achieved by initially loading the segment registers with selectors for descriptors that encompass the entire 32-bit linear address space. Once loaded, the segment registers don't need to be changed. The 32-bit offsets used by 80386 instructions are adequate to address the entire linear-address space.
当80386用来执行为不具有段架构的软件时,有效的方法就是关闭80386的分段特性。80386没有哪种模式可以关闭段,但是通过在初始化时为段寄存器装入一个选择子,这个选择子所指向的描述符占用整个32位线性地址空间,可以达到一样的效果。一旦载入后,段寄存器不再需要修改。80386指令使用的32位偏移地址足够来寻址整个线性地址空间。
5.3.2 Segments Spanning Several Pages 段跨越多个页
The architecture of the 80386 permits segments to be larger or smaller than the size of a page (4 Kilobytes). For example, suppose a segment is used to address and protect a large data structure that spans 132 Kilobytes. In a software system that supports paged virtual memory, it is not necessary for the entire structure to be in physical memory at once. The structure is divided into 33 pages, any number of which may not be present. The applications programmer does not need to be aware that the virtual memory subsystem is paging the structure in this manner.
80386架构允许段限长大于或小于一页大小(4K)。例如,一个段用来寻址和保护一个达到132K大小的数据结构。在一个支持分页的虚拟内存系统中,将全部结构马上放在物理内存中不是必须的。这个结构可以被分为33页,其中的一部分可以不存在于物理内存中。应用程序不需要知道虚拟内存子系统把它用这种方式分页。
5.3.3 Pages Spanning Several Segments 多页跨越几个段
On the other hand, segments may be smaller than the size of a page. For example, consider a small data structure such as a semaphore. Because of the protection and sharing provided by segments (refer to Chapter 6 ) , it may be useful to create a separate segment for each semaphore. But, because a system may need many semaphores, it is not efficient to allocate a page for each. Therefore, it may be useful to cluster many related segments within a page.
另一方面,多个段可能小于一页的大小。例如,考虑一个小的数据结构,比如信号量。因为段提供保护和共享(参见第6章),为每个信号量创建一个独立的段是有益的。但是,因为一个系统可能需要很多信号量,为每一个分配一个页是低效的。因此,在一页内聚合很多相关的段是有益的。
5.3.4 Non-Aligned Page and Segment Boundaries 非对齐页和段边界
The architecture of the 80386 does not enforce any correspondence between the boundaries of pages and segments. It is perfectly permissible for a page to contain the end of one segment and the beginning of another. Likewise, a segment may contain the end of one page and the beginning of another.
80386架构不强制任何页与段的边界对齐。它允许一个页包含一个段的尾部和另一个段的开始。另外,一个可以包含一个页的尾部和另一个的页的开始。
5.3.5 Aligned Page and Segment Boundaries 对齐的页和段边界
Memory-management software may be simpler, however, if it enforces some correspondence between page and segment boundaries. For example, if segments are allocated only in units of one page, the logic for segment and page allocation can be combined. There is no need for logic to account for partially used pages.
尽管如此,如果强制页与段边界对齐会让内存管理软件变得简单。例如,如果段都只能被分配在一个页单元中,对段和页的定位逻辑可以组合起来。因此计算被使用的部分页在逻辑上是不需要。
5.3.6 Page-Table per Segment 每段一个页表
An approach to space management that provides even further simplification of space-management software is to maintain a one-to-one correspondence between segment descriptors and page-directory entries, as Figure 5-13 illustrates. Each descriptor has a base address in which the low-order 22 bits are zero; in other words, the base address is mapped by the first entry of a page table. A segment may have any limit from 1 to 4 megabytes. Depending on the limit, the segment is contained in from 1 to 1K page frames.A task is thus limited to 1K segments (a sufficient number for many applications), each containing up to 4 Mbytes. The descriptor, the corresponding page-directory entry, and the corresponding page table can be allocated and deallocated simultaneously.
进一步简化空间管理软件的一个方法是软件保持段选择子与页目录项之间的一一对应,正如图5-13所示。每个描述符有都有一个低22位为0的基址;换句话说,基址被映射到页表的第一项中。段的限长从1到4M。依赖于限长,段被包含在1到1K个的页帧中。因此任务被限定只能有最多1K个段(对于许多应用来说是充足的),每个段最多包含4M。选择子,对应页目录项,对应页表可以同时被配置或解除配置。
【译】x86程序员手册16-5.3联合使用段与分页转换的更多相关文章
- 【译】x86程序员手册23-6.5组合页与段保护
6.5 Combining Page and Segment Protection 组合页与段保护 When paging is enabled, the 80386 first evaluates ...
- 【译】x86程序员手册01
Intel 80386 Reference Programmer's Manual 80386程序员参考手册 Chapter 1 -- Introduction to the 80386 第1章 - ...
- 【译】x86程序员手册03 - 2.1内存组织和分段
2.1 Memory Organization and Segmentation 内存组织和分段 The physical memory of an 80386 system is organized ...
- 【译】x86程序员手册14-5.1段转换
5.1 Segment Translation 段转换 Figure 5-2 shows in more detail how the processor converts a logical add ...
- 【译】x86程序员手册11- 4.1系统寄存器
4.1 Systems Registers 系统寄存器 The registers designed for use by systems programmers fall into these cl ...
- 【译】x86程序员手册09-第3章程序指令集
注:觉得本章内容与理解操作系统不直接相关,所以本章并未看完,也就没有翻译完,放在这里中是为了保证手册的完整.有兴趣的人可以去原址查看. https://pdos.csail.mit.edu/6.828 ...
- 【译】x86程序员手册00 - 翻译起因
从上一次学习MIT的操作系统课程又过去了一年.上次学习并没有坚持下去.想来虽有种种原因,其还在自身无法坚持罢了.故此次再鼓起勇气重新学习,发现课程都已由2014改版为2016了.但大部分内容并没有改变 ...
- 【译】x86程序员手册40-10.5初始化的例子
10.5 Initialization Example初始化的例子 译注:本来想把这个例子全部注释完,但由于对intel汇编实不熟悉,有太多的伪指令,本人也是免强看懂,所以就不再做翻译了. $TITL ...
- 【译】x86程序员手册38-10.2实在址模式下的软件初始化
10.2 Software Initialization for Real-Address Mode 实地址模式的软件初始化 In real-address mode a few structur ...
随机推荐
- 关于SVN版本冲突问题
版本冲突原因: 假设A.B两个用户都在版本号为100的时候,更新了kingtuns.txt这个文件,A用户在修改完成之后提交kingtuns.txt到服务器,这个时候提交成功,这个时候kingtuns ...
- angularjs 过滤多组数据
<html> <head> <script src="angular.min.js"></script> <script ty ...
- CF 445B(DZY Loves Chemistry-求连通块)
B. DZY Loves Chemistry time limit per test 1 second memory limit per test 256 megabytes input standa ...
- 【转】Caused by: java.lang.NoClassDefFoundError: android.support.v7.gridlayout.R$dimen 异常解决方法
在使用gridlayout中遇到 Caused by: java.lang.NoClassDefFoundError: android.support.v7.gridlayout.R$dimen 问题 ...
- Silverlight 2学习笔记一:初识Silverlight
Silverlight,问世至今已有好一段时日了,向来只是只闻其名,不知其实,今天终于对Silverlight有了点初步的了解. 一.Silverlight是什么?Sliverlight是基于.NET ...
- C# LIstbox 解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题
解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题 分类: winform2008-05-24 02:33 2592人阅读 评论(11) 收藏 举报 winf ...
- 【转载】HashMap实现原理浅析
HashMap和Hashtable的区别 两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全Hashtable的实现方法里面都添加了synchronized关键字来确保线程 ...
- php phppowerpoint
今天早上从订阅的 Zend DevZone 看到篇很有意思的文章. Creating PowerPoint 2007 files using PHP. 试了一下. 果然很又意思, 分享给大家吧. 程序 ...
- Windows和Centos下Docker的安装配置
Windows和Centos下Docker的安装配置 windows环境下的安装(win10) 在Windows系统上需要利用toolbox来安装Docker,现在 Docker 有专门的 Win10 ...
- jQuery 事件 - trigger() 方法 和 triggerHandler() 方法
trigger() 方法触发被选元素的指定事件类型. triggerHandler() 方法触发被选元素的指定事件类型.但不会执行浏览器默认动作,也不会产生事件冒泡. triggerHandler() ...