下载此文档

UNIX内核一内存管理机制.doc


文档分类:IT计算机 | 页数:约3页 举报非法文档有奖
1/3
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/3 下载此文档
文档列表 文档介绍
UNIX内核一内存管理机制.docUNIX内核一内存管理机制内存管理UNIX内存管理是内核最复杂的任务之一。重要因为它用到许多CPU提供的功能,而II和这些功能关系密切。因此,在我们讨论内存管理时,先要讨论CPU及其在内存管理中的作用。1•受保护的编址方式CPU执行的许多指令需要访问内存,看起来很简单,在机器代码指令屮指定要提取或修改的内存单元的地址就行了。其实没有这么简单。为需要在内存中同吋运行许多进程吋,使每个进程都好像在它们自己的机器上运行一样就方便了。做到这一点的办法是在CPU内部完成不同形式的地址转换,将指令指定的地址(称为逻辑地址或有效地址)转换为硬件对实际内存的访问。进程按指令、数据和堆栈分成若干段每一段都有段描述符(segmentdescriptor)0每一段描述符包含8个字节。内容包括段开始的基地址、段的容量和段的访问权限。段的描述符集屮放在段描述表屮。一个CPU内部寄存器保存访问段描述符表的基地址。除此Z外,CPU还包含一组段寄存器。每个寄存器指向描述表屮的一个段描述符项。如果发生了任何类型的内存访问,将选择一个CPU段寄存器(或者由访问内存的类型的隐含说明,或者由访问内存的指令的明确说明)用来进行地址计算。计算的结果得到线性地址。这里说得是每一次的内存访问,CPU都用一个内部寄存器的内容找到描述表的基地址。基地址和一个段寄存器的内容(它的最低3位的值为0)相加。相加的结果是指向描述符表的一个8字节的项的指针。注意:段的描述府项包含段在内存屮的基地址,段的容量和对本段的访问权限。访问内存的指令本身也提供一个地址,这个地址是已取得段描述符的内存段内部的逻辑地址(或有效地址)。指令的逻辑地址和段的基地址相加得到线性地址。必须对线性地址进行检查,保证它落在段的范围内(不超过段的容量),并检查是否允许在段内进行请求的访问类型(读、写或执行)。如果这些检查被通过,CPU现在有了用来访问内存的地址。我们已经看到的段描述符主表称为全程段描述表或者GDT,,可能愿意每个进程访问它自己的内存段。为满足这一要求,CPU也为每个进程提供另外一个描述符表,称为局部描述符表或者LDT,它通过GDT的项和处理机内部寄存器LDTR进行访问。如果每次内存访问都要查找描述符表(它木身又在内存中)的值,这将消耗大量的CPU时间。为了大大加速这一过程,CPU内部有一些隐藏的,不能由程序直接访问的寄存器。这些寄存器用作快速缓存,保存半前每个段寄存器所指的段描述符的值。只有有关的段寄存器的值改变时,或者描述符表的GDTR或LDTR的基地址改变吋,才用相应的段描述符值加载隐藏的寄存器。,可以建立起一个完全切实可行的多任务系统。只要在开始运行时每个进程知道它实际需要的内存容量,一开始就可以为这一进程在合适的位置分配它所需的内存块。在进程存在期间也不用再改变内存的分配。然而,有些UNIX版木要比上面的简单模型更为灵活。例如,它允许进程不必考虑周围实际上还有其他的进程存在的现实而增加它的内存要求。有的UNTX系统还允许同时运行比实际内存所能容纳的更多的进程。Z所以能这样做,因为利用了处理机提供的分页(paging)功能。在CPU屮是否进行调页由处理机控制寄存器屮的1位来进行控制。如果调页位设置,32位的线性

UNIX内核一内存管理机制 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数3
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sssmppp
  • 文件大小62 KB
  • 时间2020-09-22