您的位置:首页 > 其它

现代操作系统——存储管理

2015-10-27 20:35 302 查看

1.地址空间

概念:为程序创造了一个抽象的内存。地址空间是一个进程可用的寻址内存空间。
处理内存超载技术的两种方法:交换技术和虚拟内存。
交换技术:一个进程完整调入内存,运行一段时间,然后存回磁盘。空闲进程主要是存在磁盘里的。由于交换中可能产生多个空闲区,通过把所有进程下移动,可能使小的空闲区合并成一个大块,这种计数叫做内存紧缩。但内存紧缩的时间花费太大,一般不允许这样的操作。
空闲内存管理:操作系统跟踪内存的方式有两种:位图和空闲链表。
位图:把内存分成无数个小内存块,每个内存块对应位图中的一位,由于需要为一个进程分配空余的内存单元,所以我们要在位图里面查找空余内存,这是个耗时工程,这也是位图的缺点。
链表管理:用一个链表来记录一个已分配内存区和空闲内存段的链表。使用链表的分配算法有:首次适配法,下次适配法,最佳适配法,最差适配法,快速适配法。

2.虚拟内存:

概念:每个程序有自己的地址空间,这个空间被分割成多个块,每一块称为一页,每一页有自己的连续范围,这些页被映射到物理内存,但并不是所有的页都必须在内存中运行,当程序引用到一部分在物理内存中的地址空间时,由硬件执行必要的映射。当程序引用到一部分不在物理内存中的地址空间时,由操作系统负责负责将缺失的部分装入物理内存并重新执行失败的指令。

分页:由汇编语言在开始程序运行时会给一个虚拟地址,它们构成一个虚拟地址空间,虚拟地址空间按照大小划分成页面的若干单元,在物理内存中对应的单元称为页框。当程序访问到一个非映射的页面时,cpu会陷入操作系统,这个称为缺页中断,操作系统找到一个很少使用的页框把它的内容写入磁盘,随后把需要访问的页面回到刚刚回收的页框中,然后重新启动引起陷阱的指令。可用页号称为页表的索引。

页表:把虚拟页面映射到页框中的函数。这就是说每个进程都有自己的页表来进行查询。
加速分页技术:1.加一个硬件设备,这个设备存那些常常被访问的虚拟地址直接映射到物理地址,不需要访问页表,该设备称为转换检测缓冲区(TLB)。
TLB的工作原理:先将虚拟地址放入MMU转换,硬件首先通过将该虚拟页号与TLB上的表项同时进行匹配,如果发现一个有效的匹配且不违反保护位,则将页框直接取出,但是当虚拟页号不在TLB中,就会进行页表查找,接着从TLB淘汰一个表项,从新找到的表项代替它。
处理大内存的页表:多级页表(适合32位)和倒排页表(为每一个页框分配一个表项)

3.页面置换算法:

由于发生缺页中断,操作系统必须从内存中选择一个页面将其换出内存。这就涉及页面置换的问题。
页面置换算法:最优页面置换(无法实现的),最近未使用页面,先进先出页面,第二次机会页面,时钟页面,最近最少使用,软件模拟LRU,工作集页面,工作集时钟页面置换算法等
介绍两种常用的:老化算法和工作集时钟算法:
老化算法:由于老化算法是一个和软件计数器相关联,计数器的初值为0,,当发生缺页中断时,由操作系统扫描缺页中所有的页面,把页面R位的值先右移一位,将R加到计数器的左端,置换计数器最小值的页面。
工作集时钟算法:设置一个空表,当装入一个页面后,,每个表项包含来之基本工作集算法的上次使用时间和R.M位,当发生中断时,首先检查指针指向的页面,若R为1,表明不适合淘汰,页面R置0,指针后移。
分页的全局算法和局部算法:局部算法是为每个进程分配固定的内存片段,全局算法是动态的分配内存的调动。
4.分段:
段是机器上相互独立的地址空间,称为段地址空间,每个段的长度是可以变化的。
纯分段的实现会造成棋盘形碎片,需要通过外部紧缩来解决。
分段和分页的结合:MULTICS和Intel Pentium
MULTICS:第一个实现这种结合的系统,设计者把每个段看做一个虚拟内存,并把每个段分成多个页。MULTICS中的地址有两部分构成:段和段内地址,段内地址分为页号和页内字。结合TLB进行高速访问常用的页实现整个系统的设计。

Intel Pentium:也是类似于MULTICS先分段在分页的过程,不过,它还含有LDT(局部描素表)和GDT(全局描素表)两张表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: