* 基于程序执行的局部性原理,从而引入了虚拟存储技术。 * * * 虚拟存储技术可以结合连续分配方式实现吗? 连续分配方式是占据连续的内存空间,如果虚拟存储技术结合起实现,那么部分装入后为保证后续装入后程序仍然是具有连续性的,就必须把程序的后面的连续空间预留出来,这是无法实现扩充内存的。 基于离散分配的存储管理方式有:基本分页和分段。 * 允许部分页面的装入,运行中进行请求调页和页面置换,将后续页陆续调入内存,将暂时不运行的页调出内存。 * * 多次性:以前的存储器不具有的特征。 对换性:允许在作业的运行过程中进行换进和换出。从而提高内存利用率。 * * 和基本分页的划分方法相同的都是将用户程序分页和内存空间分块。大小相等, 分配过程为: * 现在主要看一下,若想实现请求分页存储管理方式所需的硬件和软件支持。 首先,有可能出现在程序运行过程中需要访问的页没有装入内存的情况,这时需要一些方法来发现和处理。 * 修改位:决定是否回存和置换判断。 * 针对前面的例子,它的页表的部分列就是这样的。123列分别是页号、块号、状态位 页长4k * 那么如果所访问的页不在内存又如何处理呢?即状态位为0。 * 缺页中断是一种中断,但又与一般的中断有所不同。 * 一般中断是在指令完成后检查中断的,而缺页中断是在执行一条指令时,发现需要访问的程序或数据不在内存,没调入内存,所以产生中断, * 能够区分执行到一条指令的不同部分的情况, * 因为是分页存储,所以逻辑地址和物理地址都是与前一样的。 (1)快表成功,修改访问位、修改位 (2)快表miss,页表中状态位为1,则成功,修改访问位、修改位,更新快表 (3)缺页中断:根据该页的外存地址将该页调入内存合适位置,修改状态位,内存块号,修改访问位、修改位,更新快表 这就是实现请求分页系统的硬件支持。 * 下面再来看一下软件支持:即一些调入和分配策略。而置换算法我们将在下次课中学习。 * 进程的页面的部分装入就引入一个问题,到底要至少装入多少个页面才能保证进程的正常运行呢? * 分配过多,会导致系统运行的进程过少 分配过少,导致频繁出现缺页中断,增加进程周转时间,降低系统吞吐量。 针对固定分配的缺点,出现另外的可变分配策略。 * 分配过多,会导致系统运行的进程过少 分配过少,导致频繁出现缺页中断,增加进程周转时间,降低系统吞吐量。 针对固定分配的缺点,出现另外的可变分配策略。 * 易实现,因为一般都从公共空闲物理块队列分配 但调出的是任意一个进程的一页,导致哪个进程的物理块数减少,从而增加其缺页率。 * 分配过多,会导致系统运行的进程过少 分配过少,导致频繁出现缺页中断,增加进程周转时间,降低系统吞吐量。 针对固定分配的缺点,出现另外的可变分配策略。 * 无论是固定分配还是可变分配,初始都要分配一些物理块给各个进程,那么给每个进程分配多少个物理块呢?有以下三种方法. 平均分配举例总共15可用,3个进程,则每个进程分配5个物理块, 导致不公平,因为… M 可用物理块数, si为第i个进程划分的总页面数, s 为所有进程划分的总页面数. p1-2 p2-4 p3-6 m=6 优先权 : 比如有个进程优先级高, 则该进程所占的比例就可以乘以一个系数,比如进程2的的优先级高,我们可以在其所需的总页面前乘以一个2,则 4*2 /(2+4*2+6)=1/2 再*6=3 M 可用物理块数, si为第i个进程所需的总页面数, s 为所有进程需要的总页面数. p1-2 p2-4 p3-6 m=6 优先权 : 比如有个进程优先级高, 则该进程所占的比例就可以乘以一个系数,比如进程2的的优先级高,我们可以在其所需的总页面前乘以一个2,则 4*2 /(2+4*2+6)=1/2 再*6=3 * 第四章 存储器管理 * 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 000 0 000 0 000 0 000 0 111 1 000 0 101 1 000 0 000 0 000 0 011 1 100 1 000 1 110 1 001 1 010 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 110 在/不在内存 页表 虚地址 8196 物理地址 24580 * 第四章 存储器管理 * 3、缺页中断(Page Fault)处理 在地址映射过程中,在页表中发现所要访问的页不在内存,则产生缺页中断。 操作系统接到此中断信号后,就调出缺页中断处理程序,根据页表中给出的外存地址,准备将该页调入内存。 此时应将缺页的进程挂起(调页
原创力文档

文档评论(0)