内存管理

1.内存管理

虚拟内存

虚拟内存时一种计算机系统内存管理的技术,目的是为了防止不同的进程同一时刻对物理内存的抢夺。这种技术让每个进程认为它拥有连续可用的内存(一个连续完整的地址空间),互相不会干扰到对方。实际上,它通常被分隔成多个物理内存碎片,还有部分暂存在外部磁盘存储器上,需要时进行数据交换。这种技术使得大型程序的编写更容易,对真正的物理内存使用也更有效率。
对虚拟内存的定义是基于对地址空间的重定义,把地址空间定义为连续的虚拟内存地址,借以欺骗程序,让它认为自己正在使用一大块连续的地址。

虚拟内存管理

1、分页式存储管理:现代操作系统中,虚拟内存和物理内存都是按照页来进行管理的,一个内存页式一段固定大小的连续内存地址的总称,因此内存地址可以通过页号和页内偏移来进行表示。
在这种系统中,允许进程去把每一页离散的存储在内存的任一物理块中,为了在内存中找到每个页面的物理块,系统给进程建立一个一张页表,用来记录进程逻辑页面和内存物理页面之间的对应关系。
页表就是为了实现从页号到物理块号的映射。地址空间有多少页,该页表里就登记多少行,且按逻辑页的顺序排列。

2、分段式存储管理
段时按照程序的自然分界划分的长度可以动态改变的区域。通常程序员把子程序、操作数、常数等不同类型的数据划分到不同的段中,每个程序可以有多个相同类型的段,将用户程序地址空间分成若干个大小不同的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。

在段式虚拟存储系统中,虚拟地址由段号和段内地址组成,每个表项至少包括三个字段:有效位(指明该段是否已经调入主存)、段起址(该段在实存中的首地址)和段长(记录该段的实际长度)

3、段页式存储管理
段页式存储组织是分段式和分页式结合的存储组织方法,这样可充分利用分段管理和分页管理的优点。

  • 用分段方法来分配和管理虚拟存储器。程序的地址空间按逻辑单位分成基本独立的段,而每一段有自己的段名,再把每段分成固定大小的若干页。
  • 用分页方法来分配和管理实存。即把整个主存分成与上述页大小相等的存储块,可装入作业的任何一页。程序对内存的调入或调出是按页进行的。但它又可按段实现共享和保护。

2.分页调度算法

  • 1.最近最久未使用算法(LRU) Recently ,选择过去一段时间内最久没有使用的页面。
  • 2.最不经常访问算法(LFU) Frequently,每个数据块有一个引用计数,相同的按时间排序,淘汰末尾的,使用最少的页面。
  • 3.先进先出算法(FIFO) 置换最先调入的页面,先进入内存的页先推出。建立一个FIFO队列,收容所有在内存中的页,被置换页面总是在队列头,当一个页面放入内存时,就插在队尾。

3.虚拟内存实现。

为了让物理内存扩充成更大的逻辑内存,让程序获得更多的可用内存。
为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到不在物理内存中的页时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。

4.进程调度算法

  • 先来先服务:这是最简单,最基本的算法,它的思想非常简单,就是按照进程到来的时间顺序,逐个分配 CPU 资源
  • 短作业优先 从后备队列中选择运行时间最短的进程进行服务。
    缺点:
    【1】必须知道作业的运行时间,在采用这种算法时,要先知道每个作业运行时间。即使是程序员也很难估计作业的运行时间,如果估计过低,系统就可能按照估计的时间终止作业的运行,但此时作业并没有完成,故一般都会偏长估计。
    【2】对长作业非常不利,长作业的周转时间会明显的增长。
    【3】该调度算法完全未考虑作业的紧迫程度,故不能保证紧迫性作业能够得到及时处理。
  • 优先级调度:按照进程的优先级选择调度顺序
  • 时间片轮转算法:为CPU的执行设定一个时间片大小,每个进程轮询分配时间片,时间片借宿后暂停运行加入等待队列
  • 多级反馈队列调度算法:将时间片轮转与优先级调度相结合,把进程按优先级分成不同的队列,先按优先级调度,优先级相同的,按时间片轮转。优点是兼顾长短作业,有较好的响应时间,可行性强,适用于各种作业环境。
    -高响应比优先调度算法 根据“响应比=(进程执行时间+进程等待时间)/ 进程执行时间”这个公式得到的响应比来进行调度。高响应比优先算法在等待时间相同的情况下,作业执行的时间越短,响应比越高,满足段任务优先,同时响应比会随着等待时间增加而变大,优先级会提高,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应比开销大,适用于批处理系统。
原文地址:https://www.cnblogs.com/EvansPudding/p/12701895.html