segmentation

段的定义:和英语阅读中每篇文章的每个段落paragraph一样,相同类型的数据和访问方式的逻辑空间。

段的访问:做阅读题时要标上段号,并且在每一段里标出一二三四五个句子。用数学里的坐标来表示就是(s, addr).

Page Table

  1. 为什么会有页表这个东西的存在呢?程序员写代码的时候,数据存在连续的虚拟内存里,实际上却在离散的物理内存里。页表就是逻辑页号和主存块号的一个映射的表单。所以页表有多少行,他就有多少个逻辑页,此之位页表长度。那逻辑页又是什么呢?
  2. 我们将逻辑地址页面大小设计成和主存块一样的大小,所以一个字节的页内地址和帧内偏移是一样的,根据逻辑地址里的逻辑页号从页表里找出想要的物理块号,与逻辑地址里的页内地址拼接,就能找到这个字节的物理地址。那页表为什么不直接存物理块号呢?节约该进程占用的实际物理地址,需要什么就存在主存里面。
  3. 页表项:逻辑页号+该页在主存中对应的块号

Page 到Page Frame 的转换记录

  • 页表放在页表基址寄存器里。
  • 页表长度☞页表有多少项,一行即是一页。
  • 有了进程存放在虚拟地址里的页号之后,页表项是等长的,ptbr告诉你pt的起始地址,就可以找到这个页号对应的页表项。那页表项里面存的是什么呢?
  • 页表项里面有页帧号,即该进程存放在物理地址里的哪个帧;页表随着进程动态变化,物理帧也会变化,那么怎么修改呢?就是通过标志位。
  1. resident bit:这个页面是否存在一个物理帧号和他相对应。表明这个页分配的动态性。
  2. dirty bit:页面内容是否被修改。
  3. clock bit:在过去一段时间里,是否有对页面的引用。局部页面置换算法里的改进的时钟算法。
  • 64位的机器,一个页面1k,占10位,其余的54位用来表示页表项,即有多少个页面。