计算机操作系统——存储器管理与虚拟存储器的手写总结

关键词

    • 1. 存储器管理
    • 2. 传统的存储器管理方式
    • 3. 虚拟存储器(通俗的讲,虚拟内存)
    • 4. 实现虚拟存储器
    • 5. 请求分页系统的页面置换算法
    • 6. 抖动
    • 7. 请求分段系统

1. 存储器管理

通俗的讲,存储器管理就是计算机在程序运行时,在内存中为程序分配内存的方式。
存储器管理的方式包括传统的存储器管理方式和被广泛应用且优越的使用虚拟存储器的方式。

2. 传统的存储器管理方式

传统的存储器管理方式包括了连续分配存储管理方式分页存储管理方式分段存储管理方式和段页式存储管理方式

(1)连续分配存储管理方式:程序被连续、整块地装入内存。

(2)分页存储管理方式:为了提高存储器(内存)的利用率,减少内存碎片的大小和出现概率,将程序的地址空间被分为许多大小相同的(2的幂,1~8KB),而内存也同样被分为许多大小相同的(也叫物理块,与页的大小相同)。把程序调入内存时,就把程序的页装入内存的块中,实现用户程序在内存中的离散分配。那么为了管理程序的被离散分配的页,系统为每一个进程引入一个叫做页表的数据结构(表),用于建立页和块的映射关系,进程在执行时可以找到程序的每页在内存中的块号。
借助于页表,可以完成地址变换的任务,而为了提高地址变换的效率,引入了叫做快表的缓冲寄存器,来缓存地址变换的运算结果。此外,还引入了两级页表和三级页表来解决页表规模太大的问题。

(3)分段存储管理方式:分页存储管理方式为了提高内存利用率,将程序分为了一个个大小相同的页,一个函数可能被分为了若干页;而分段存储管理方式则是将程序按照程序中各部分的逻辑关系,将程序分为大小不同的,比如主程序段、子程序段A、子程序段B、数据段、栈段等。段成为了信息的逻辑单位。
在编址方式上,分页存储管理方式中的各个页的地址是连续的,页内的地址对应的就是物理地址(当然是相对的),而分段存储管理方式中的各个段,每个段从0开始编址。
分段存储管理方式的好处体现在方便编程、信息共享、信息保护、动态增长、动态链接等方面。分段存储管理方式同样引入了类似于页表的段表。

(4)段页式存储管理方式:结合了分页存储管理方式和分段存储管理方式的存储器管理方式,通俗的说,就是在分段的基础上,把每段程序来分页。在段表中添加引用了每段程序的页表的引用,很好理解。

3. 虚拟存储器(通俗的讲,虚拟内存)

传统的存储器管理方式都需要将程序一次性地装入内存,并且需要程序在运行期间驻留在内存中,且不会被换出至外存。显而易见传统的方式使得程序占据大量内存,非常浪费内存资源,虚拟存储技术可以很好地解决这个问题。
虚拟存储技术是一种允许程序在运行时,仅将能够运行的最少的页(段)调入内存,并允许程序剩下的页(段)在程序需要使用时才调入内存的技术。它利用了程序的局部性原理,减小了程序在内存中的占用,允许了内存中运行更多的程序,无形之中让人产生了内存好像变大了的错觉,而这种内存的扩充是虚拟出来的,因此叫做虚拟存储。逻辑上的容量由内存外存之和决定。
虚拟存储器的存储系统必须具备(将页或段)请求调入(内存)和置换功能。请求调入,指程序访问未被调入的页(段)时,发出缺页(段)请求,让操作系统将缺页(段)的调入内存。光是调入还不够,虚拟存储器还需要能够将已调入的、暂时不会运行的页(段)换至外存的能力。
虚拟存储器的特点是多次性(多次调入,最重要)、对换性(允许进程、作业被换进或换出)和虚拟性(建立在前两者之上)。

4. 实现虚拟存储器

实现虚拟存储器需要实现请求调入和置换功能。主要实现方式有请求分页系统(换进换出的页大小固定,因此更简单)和请求分段系统等。
以请求分页系统为例,除了内存外存外,还需要提供请求页表机制、缺页中断机构以及地址变换机构。其中,请求页表时,有两种分配内存的机制,一是局部置换,将程序自身的部分换出,不影响其他程序,二是全局置换,为程序提供新的物理块(增加运行内存)。

5. 请求分页系统的页面置换算法

页面置换算法是请求分页系统选择换出页的算法,非常重要,其好坏直接影响系统的性能
(1)最佳置换算法:仅理论存在,是在选择换出页时,每次都选择在未来最长时间访问不到的页。
(2)FIFO先进先出算法:性能最差,先进入内存的先出去。
(3)最近最少使用算法(Least Recently Used)和最少使用算法(Least Frequency Used)
(5)Clock置换算法(LRU的近似算法):利用每个页的访问和修改的标记,优先选择最近未被访问且未被修改的页换出,其次是未访问已修改、已访问未修改、已访问已修改。
(6)页面缓冲算法:不实际将页面换出至外存,而是放在空闲块中,由空闲页面链表管理。

6. 抖动

抖动指页面被刚换出就需要被换进,这种频繁的缺页的现象
出现原因是并发的进程太多,系统给每个进程提供的物理块(内存)太少,进程运行中频繁缺页,导致每个进程的大部分时间都拿去请求调入缺的页去了,处理机效率直线下降甚至趋近于0。解决这个问题的方法有局部置换策略(只局部置换,不请求新的块)、选择暂停的进程等。

7. 请求分段系统

请求分页系统建立在分页的基础上,而请求分段系统建立在分段的基础上,机制和请求分页系统很相似。

你可能感兴趣的:(操作系统)