操作系统相关知识复习

逻辑地址(Logical Address) 是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑地址也就是在Intel 保护模式下程序执行代码段限长内的偏移地址(假定代码段、数据段如果完全一样)。应用程序员仅需与逻辑地址打交道,而分段和分页机制对您来说是完全透明的,仅由系统编程人员涉及。应用程序员虽然自己可以直接操作内存,那也只能在操作系统给你分配的内存段操作。


线性地址(Linear Address) 逻辑地址到物理地址变换之间的中间层。程序代码会产生逻辑地址,或者说是段中的偏移地址,加上相应段的基地址就生成了一个线性地址。如果启用了分页机制,那么线性地址可以再经变换以产生一个物理地址。若没有启用分页机制,那么线性地址直接就是物理地址。Intel 80386的线性地址空间容量为4G(2的32次方即32根地址总线寻址)。

物理地址(Physical Address) 是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。如果启用了分页机制,那么线性地址会使用页目录和页表中的项变换成物理地址。如果没有启用分页机制,那么线性地址就直接成为物理地址了。

虚拟内存(Virtual Memory) 是指计算机呈现出要比实际拥有的内存大得多的内存量。因此它允许程序员编制并运行比实际系统拥有的内存大得多的程序。这使得许多大型项目也能够在具有有限内存资源的系统上实现。一个很恰当的比喻是:你不需要很长的轨道就可以让一列火车从上海开到北京。你只需要足够长的铁轨(比如说3公里)就可以完成这个任务。采取的方法是把后面的铁轨立刻铺到火车的前面,只要你的操作足够快并能满足要求,列车就能象在一条完整的轨道上运行。这也就是虚拟内存管理需要完成的任务。

虚拟地址到物理地址的转化方法是与体系结构相关的。一般来说有分段、分页两种方式。以现在的x86 cpu为例,分段分页都是支持的。Memory Mangement Unit负责从虚拟地址到物理地址的转化。逻辑地址是段标识+段内偏移量的形式,MMU通过查询段表,可以把逻辑地址转化为线性地址。如果cpu没有开启分页功能,那么线性地址就是物理地址;如果cpu开启了分页功能,MMU还需要查询页表来将线性地址转化为物理地址:
逻辑地址 ----(段表)---> 线性地址 — (页表)—> 物理地址

不同的逻辑地址可以映射到同一个线性地址上;不同的线性地址也可以映射到同一个物理地址上;所以是多对一的关系。另外,同一个线性地址,在发生换页以后,也可能被重新装载到另外一个物理地址上。所以这种多对一的映射关系也会随时间发生变化。

TLB:Translation lookaside buffer,即旁路转换缓冲,或称为 页表缓冲;里面存放的是一些页表文件( 虚拟地址物理地址的转换表)。
  又称为 快表技术。由于“页表”存储在 主存储器中,查询页表所付出的代价很大,由此产生了TLB。
  X86保护模式下的 寻址方式:段式 逻辑地址—〉线形地址—〉页式地址;
  页式地址=页面起始地址+页内 偏移地址
  对应于虚拟地址:叫page(页面);对应于物理地址:叫frame( 页框);
  X86体系的 系统内存里存放了两级页表,第一级页表称为页目录,第二级称为页表。
  TLB和CPU里的一级、二级 缓存之间不存在本质的区别,只不过前者 缓存页表数据,而后两个缓存实际数据。


页缺失,又叫页错误。在引入分页机制的操作系统中,一个进程的代码和数据被放置在一个虚拟的地址空间中,地址空间按固定长度划分为好多。同时,物理内存也按固定长度划分为好多

因为物理内存小而硬盘空间大,为了在内存里放置更多的进程,操作系统的设计者们决定把页映射到内存帧或硬盘上的虚拟内存文件中。

进程的可视范围是它自己的地址空间,它并不知道某一页映射到内存里还是硬盘上,进程只管自己运行。当进程需要访问某一页时,操作系统通过查看分页表,得知被请求的页在内存里还是硬盘里。若在内存里,则进行地址翻译;若在硬盘里,则发生页缺失。操作系统立即阻塞该进程,将硬盘里对应的页换入内存,然后使该进程就绪(可以继续运行)。



缓存:
在计算机存储系统的层次结构中,介于中央处理器和主 存储器之间的高速小容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。
  某些机器甚至有二级三级缓存,每级缓存比前一级缓存速度慢且容量大。而这时,一开始的高速小容量存储器就被人称为一级缓存。
  高速缓冲存储器最重要的技术指标是它的命中率。

页面置换算法

在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法


常见的置换算法有:
  1.最佳置换算法(OPT)(理想置换算法)
  2.先进先出置换算法(FIFO):
  3.最近最久未使用(LRU)算法
  4.Clock置换算法(LRU算法的近似实现)
  5.最少使用(LFU)置换算法
  6. 工作集算法
  7 . 工作集时钟算法
  8. 老化算法(非常类似LRU的有效算法)
  9. NRU(最近未使用)算法
  10. 第二次机会算法

现代的内存管理单元是以页的方式,分割虚拟地址空间(处理器使用的地址范围)的;页的大小是2的n次方,通常为几KB。地址尾部的n位(页大小的2的次方数)作为页内的偏移量保持不变。其余的地址位(address)为(虚拟)页号。内存管理单元通常借助一种叫做转译旁观缓冲区Translation Lookaside Buffer,缩写为TLB)的相联高速缓存(associative cache)来将虚拟页号转换为物理页号。当后备缓冲器中没有转换记录时,则使用一种较慢的机制,其中包括专用硬件(hardware-specific)的数据结构(Data structure)或软件辅助手段。这个数据结构称为分页表,页表中的数据就叫做页表项(page table entry,缩写为PTE)。物理页号结合页偏移量便提供出了完整的物理地址。

页表或转换后备缓冲器中数据项包括的信息有:一、“脏位”(页面重写标志位)(dirty bit)——表示该页是否被写过。二、“存取位”(accessed bit)——表示该页最后使用于何时,以便于最近最少使用页面置换算法least recently used page replacement algorithm)的实现。三、哪种进程可以读写该页的信息,例如用户模式user mode)进程还是特权模式supervisor mode)进程。四、该页是否应被高速缓冲的信息。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值