会计考友 发表于 2012-8-2 09:13:07

2011年计算机软件水平考试嵌入式系统设计师辅导笔记(26)

2011年计算机软件水平考试嵌入式系统设计师辅导笔记(26)来源:考试大   【考试大——我选择,我喜欢】   2011年2月6日  8、页式存储管理(重点)
  基本思路:把物理内存划分为许多固定大小的内存块,称为物理页面;把逻辑地址空间也划分为大小相同的块,称为逻辑页面。当一个用户程序被装入内存时,不是以整个程序为单位,把它存放在一整块连续的区域,而是以页面为单位来进行分配的。对于一个大小为N 的页面程序,需要有N 个空闲的物理页面来把它装载。这些物理页面不一定是要连续的。
  在页式存储管理中需要解决三个问题:数据结构、内存分配与回收、地址映射。
  数据结构有两个:页表和物理页面表。
  A. 页表:给出了任务逻辑页面号和内存中物理页面号之间的对应关系。
  B. 物理页面表:描述内存空间中,各个物理页面的使用情况。
  具体的例子请参考《教程》317页(博客中画不了图,有兴趣自己看)。
  内存的分配过程:
  A. 对于一个新来的任务,计算它所需要的页面数N,然后查看位示图,看是否还有N 个空闲的物理页面。
  B. 如果有足够的空闲物理页面,就去申请一个页表,其长度为N,并把页表的起始地址填入到该任务的控制块中。
  C. 分配N 个空闲的物理页面,把他们的变换填到页表中,建立逻辑页面与物理页面直接的对应关系。
  D. 修改位示图,对刚刚被占用的那些物理页面进行标记。
  地址映射的基本思路:
  A. 逻辑地址分析:对逻辑地址,找到它所在的逻辑页面,以及它在页面内的偏移地址。
  B. 页表查找:根据逻辑页面号,从页表中找出它对应的物理页面号。
  C. 物理地址合成:根据物理页面号和页内偏移地址,最终确定物理地址。
  逻辑地址分析:
  页面的大小都是2的整数次幂。对于给定的一个逻辑地址,可以直接把它的高位部分作为逻辑页面号,把它的低位部分作为页内偏移地址。例如,假设页面的大小是4KB,即2的12次幂,逻辑地址为32为,那么在一个逻辑地址当中,最低12位为页内偏移地址,而剩下的20位就是逻辑页面号。
  计算方法:
  逻辑页面号=逻辑地址/页面大小
  页内偏移量=逻辑地址%页面大小
  页表查找:
  页表作为操作系统的一个数据结构,通常保存在内核的地址空间中。
  页表基地址寄存器用来指向页表的起始地址;页表长度寄存器用来指示页表的大小,即对于当前任务,它总共包含有多少个页面。
  物理地址合成:
  假设物理页面号为f,页内偏移地址为offset,每个页面大小为2n,那么相应的物理地址为:f×2n+offset。
页: [1]
查看完整版本: 2011年计算机软件水平考试嵌入式系统设计师辅导笔记(26)