重庆石桥铺网站建设,深圳低价网站建设,做网站 接活,wordpress内容折叠插件操作系统复习 七、八章 文章目录 操作系统复习 七、八章第七章 内存管理内存管理的基本要求和原理覆盖与交换连续分配管理方式非连续分配管理方式基本分段存储管理方式段页式管理方式补充 第八章 虚拟内存虚拟内存的基本概念请求分页管理方式易混知识点页面置换算法页面分配策略…操作系统复习 七、八章 文章目录 操作系统复习 七、八章第七章 内存管理内存管理的基本要求和原理覆盖与交换连续分配管理方式非连续分配管理方式基本分段存储管理方式段页式管理方式补充 第八章 虚拟内存虚拟内存的基本概念请求分页管理方式易混知识点页面置换算法页面分配策略抖动工作集 第七章 内存管理
基本概念 重定位机制、内存的保护和共享、逻辑地址、物理地址等 内存管理技术(表7.1)放置算法地址计算方法 固定分区动态分区简单分页简单分段
内存管理的基本要求和原理 程序执行前需要先放到内存中才能被 CPU 处理——缓和CPU与硬盘之间的速度矛盾 内存管理的功能 内存空间的分配与回收操作系统完成主存储器空间的分配和管理地址转换逻辑地址转换为物理地址内存空间的扩充利用虚拟存储技术或者自动覆盖技术从逻辑上扩充内存存储保护保护各道作业在各自存储空间运行互不干扰 程序的装入和链接 创建步骤 编译编译程序将用户源代码编译成若干目标模块链接由链接程序将编译后的形成的一组目标模块及所需要的库函数链接在一起形成一个完整的装入模块装入由装入程序将装入模块装入内存运行 链接的类型 静态链接程序运行之前将库函数连接成一个完整的可执行程序装入时动态链接将用户源程序编译后得到目标模块装入内存时采用边装入边链接的方式运行时动态链接对于某些目标横块的链接程序需要时才会对其链接 便于修改和更新便于实现对目标横块的共享 装入模式 绝对装入可重定位装入静态重定位 装入时按照实际的内存地址将程序和数据装入内存优点不需要对程序和数据的地址进行修改缺点只适用于单道程序环境 动态运行时装入动态重定位 装入程序把装入模块装入内存后并不立即把装入模块中的相对地址转换为绝对地址当程序真正执行时才进行转换特点需要重定位寄存器可以将程序分配到不连续的存储区中便于程序段的共享可以向用户提供更大的地址空间地址空间大于存储空间 逻辑地址空间与物理地址空间 逻辑地址空间即相对地址链接程序依次按照各个模块的相对地址构成统一的从0号单元开始编址的逻辑地址空间物理地址空间 内存中物理单元的集合是地址转换的最终地址进程在运行时执行指令和访问数据最后都要通过物理地址从主存中存取。地址重定位逻组地址转换成物理地址的过程。 内存保护 CPU中设置上、下限寄存器存放用户作业在主存中的下限和上限地址每当CPU要访问一个地址时分别和两个寄存器的数据比较判断是否越界重定位寄存器基址寄存器和界地址寄存器限长寄存图重定位寄存器中包含最小物理地址值界地址寄存器包含逻辑地址的最大值 地址转换过程逻铜地址-界地址寄存暑-重定位寄存器-物理地址
覆盖与交换
覆盖 思想将程序分为多个段多个模块常用的段常驻内存不常用的段在需要时调入内存将用户空间分为一个固定区和若干覆盖区活跃部分放在固定区即将访问的段放在覆盖区特点打破了必须将一个进程的全部信息装入主存后才能运行的限制内存中能够更新的地方只有覆盖区的段不在覆盖区的段会常驻内存 交换 思想内存空间紧张时系统将内存中某些进程暂时换出外存把外存中某些已具备运行条件的进程换入内存进程在内存与磁盘间动态调度换出将处于等待状态的程序从内存中转移到铺存换入把准备好竞争CPU运行的程序从辅存转移到内存结构把磁盘空间分为文件去和对换区两个部分 文件区主要用于存放文件主要追求存储空间的利用率因此对文件区空间的管理采用离散分配方式对换区空间只占磁盘空间的小部分被换出的进程数据就存放在对换区主要追求换入换出速度因此通常对换区采用连续分配方式 交换存在的问题 备份存储使用快速硬盘要求存储空间足够大并且能够对内存映像进行直接访问 转移时间和所交换的内存空间成正比只有进程空闲状态才能将进程换出交换空间通常作为磁盘的一整块且独立于文件系统因此使用起来会很快交换通常在有许多进程运行且内存吃紧时开始启动系统负荷降低就暂停普通的交换使用不多但交换策略的某些变体在许多系统中仍发挥作用 注意 PCB 会常驻内存不会被换出外存
连续分配管理方式 单一连续分配 内存分为系统区和用户区系统区仅供操作系统使用通常在低地址部分用户区为用户提供无须进行内存保护不会出现越界异常优点实现简单无外部碎片采用覆盖技术不需要额外技术支持只适用于单用户单任务的操作系统缺点存在内部碎片存储器利用率低 固定分区分配 种类 分区大小相等用一台计算机去控制多个相同对象的场合缺乏灵活性分区大小不等划分为多个较小的分区适量的中等分区和少量大分区 优点适用于多道程序的存储无外部碎片缺点 主存利用率低存在内部碎片不能实现多进程共享一个主存区程序太大无法放入任何一个分区 动态分区分配 在进程装入内存的时候根据内存的大小动态的建立分区优点分区大小可以根据进程的实际情况进行分配缺点存在外部碎片最后导致主存利用率下降采用紧凑技术可以缓解这种缺陷动态分配算法 首次适应算法 空闲分区按照地址递增的顶序进行查找找到第一个满足要求的分区进行分配优点综合看性能最好。算法开销小回收分区后一般不需要对空闲分区队列重新排序 最佳适应算法 按照容量递增的顶序进行查找分区将第一个满足条件的进行分配优点可以尽可能多地留下大片的空闲区缺点性能较差产生最多的外部碎片回收分区后可能需要对空闲分区队列重新排序 最坏适应最大适应算法 空闲分区按照容量递减的次序进行查找第一个满足条件的进行分配优点可以减少难以利用的小碎片缺点导致很快没有较大的内存块性能很差不利于大进程算法开销大 邻近适应算法首次适应算法 分配内存时从上次查找结束的位置开始继续查找优点算法开销小缺点会使高地址的大分区也被用完
非连续分配管理方式
允许一个程序分散的装入不相邻的内存分区基本分页存储管理方式 设计思想 将主存空间划分为大小相等且固定的块块相对较小作为主存的基本单位进程以块为单位尽行空间申请分页存储与固定分区技术很像但是其分页相对于分区又很小分页管理不会产生外部碎片产生的内部碎片也非常的小 分页存储的基本概念 页面和页面大小 进程中的块 页内存中的块 页帧进程申请主存空间为每个页面分配主存中可用的页框即页与页框一一对应页面大小要适中 页面太小进程页面数过多页表过程增加内存占用降低硬件地址转换效率页面太大页内碎片过多降低内存利用率 地址结构 页号有多少页的编号 页内偏移页内存了多少东西 页表 为了便于在内存中找到进程的每个页面对应的物理块系统为每个进程建立一张页表记录页面在内存中对应的物理块号页表一般放在内存中页表项页号物理内存中的块号不要与地址结构搞混页表项的物理内存块号地址结构中的页内偏移物理地址 基本地址变换机构 计算方式 也好P A / L以内偏移量 W A % L比较页号 P 和 页表长度 M若 P M产生越界中断页表中页号P对应的页表项地址 页表始址 F 页号 P * 页表项长度 取出该页表项内容b计算 E b * L w 使用 E去访问内存 页表项大小的设计应当尽量一页正好能装下所有的页表项分页管理存在的问题 地址变换过程必须足够快否则访存速率会峰低页表不能太大。否则会降低内存利用率 组成 设置一个页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M页表的始址和页表长度放在进程控制块(PCB)中 具有快表的地址变换机构 可优化方向如果页表放在内存中取地址访问一次内存按照地址取出数据访问一次内存共需要两次访问内存优化地址变换机构中增加一个具有并性查找能力的高速缓冲寄存器快表又称为相联存储器(TLB) 相联存储图既可以按照地址查找也可以按照内容查找访问一个逻辑地址的访问次数 基本地址变换机构 两次访存具有块表的地址变换机构 块表命中只需一次访存快表未命中需要两次访存 变换过程 CPU给出逻辑地址后先查询快表中是香命中若快表命中直接从快表中该页对应的页框好与页内偏移量拼接成物理地址若快表不命中再按照正常方式从页表中查询相应页表项并将该页表项存入快表中按照一定策路 两级页表 如果页数过多就会导致页表也过多那么我们可以考虑设置一个用来储存页表的页表套娃逻辑地址空间格式一级页号二级页号页内偏移设计多级页表的时候最后一定要保证顶级页表一定只有一个建立多级页表的目的在于建立索引不必浪费主存空间去储存无用的顶表项也不用盲目式的查询页表项
基本分段存储管理方式
出发点 分页是从计算机角度考虑设计的目的是为了内存的利用率提高计算机性能分页通过硬件机制实现对用户完全透明分段是从用户和程序员的角度提出满足方使编程信息保护和共享动态增长及动态链接等多方面的需要 分段 按照用户进程中的自然段划分逻辑空间地址结构段号S段内偏移量W页式系统中页号和页内偏移对用户透明段式系统中段号和段内偏移量必须由用户显示的提供 段表 每个进程都有一张逻相空间与内存空间映射的段表这个段表项对应进程的一段段表项记录该段在内存中的始址和长度段表内容段号段长本段在主存中的地址 地址变换机构 逻辑地址A中取出段号S和段内偏移量W比较段号S和段表长度M,若SM,则产生越界中断否则继续执行段号S对应的段表项地址段表始址F段号S段表项长度从该段表项中取出段长C,比较段内偏移量与C的大小判断是否出现越界取出段表项中该段的始址b,计算EbW,用得到的物理地址E去访问内存 段的共享与保护 共享 两个作业的段表中响应表项指向被共享段的同一个物理副本来实现的。纯代码或者可重入代码以及不可修改的数据可以被共享 保护机制 存取控制裱糊地址越界保护
段页式管理方式 页式存储有效的提高内存利用率分段存储能反映程序的逻辑结构并有利于段的分享将这两种方式结合一下。这种二者结合的方法经常在计算机理论中遇到 思想 作业的地址空间首先被分成若干逻辑段每段有自己的段号每个段分成若干大小固定的页对内存空间的管理仍然和分页存储管理一样 地址结构 段号S页号P页内偏移量W 为了实现地址变换系统为每个进程建立了一张段表每个分段有一个页表。一个进程中段表只能有一个页表可以有多个 地址变换方式
补充
不能被修改的代码称为纯代码或可重入代码不属于临界资源分段与分页的区别 分页对用户不可见分段对用户可见分页的地址空间是一维的分段的地址空间是二维的分页单级页表、分段访问一个逻辑地址都需要两次访存分段存储中也可以引入快表机构分段更容易实现信息的共享和保护纯代码问重入代码可以共享 分段与分页的优缺点 分段 优点很方便按照逻辑模块实现信息的共享和保护缺点 如果段长过大为其分配很大的连续空间会很不方便段式管理会产生外部碎片 分页 优点内存空间利用率高不会产生外部碎片只会有少量的页内碎片缺点不方便按照逻辑模块实现信息的共享和保护
第八章 虚拟内存
虚拟内存的特性虚拟内存的实现:软件和硬件结合 (页表分级、快表机制联想存储器TLB、存取时间计算、地址计算 硬件上: 请求分页、请求分段、段页式软件上: 操作系统的各种策略(表8.3)常用的替换策略 (OPT\LRU\FIFO\CLOCK)Belady现象缺页中断次数若没有说明的包括初始的
虚拟内存的基本概念
传统管理方式的特征 一次性作业必须一次性全部装入内存后才能开始运行 作业很大无法装入则无法运行大量作业要求运行时由于内存不足只能一部分作业先运行导致多道程序度下降 驻留性 作业装入内存后一直驻留在内存中任何部分不会被移出 局部性原理 时间局部性 一条指令执行后不就之后指令可能被再次执行数据被访问后不久后数据可能再次被访问原因程序中存在着大量的循环操作时间局部性通过将最近使用的指令和数据存储在高速缓冲存储器中 空间局部性 一旦程序访问了某个存储单元不久之后附近的存储单元也将被访问原因指令通常是顺序存放顺序执行的数据一般也是以向量、数组、表等形式簇聚存储的空间局部性使用较大的高速缓存将预取机制继承到高速缓存控制逻辑中实现 虚拟存储器的定义和特征 基于局部性原理程序的一部分装入内存一部分留在外存需要的时侯将外存内容调入内存就好像产生了一个巨大的内存空间特征 多次性作业在运行时分多次调入内存运行对换性作业不必一直驻留内存允许作业在运行过程中进行换进换出虚拟性从逻辑上扩充内存容量使用户看到的内存容量远大于实际的内存容量 虚拟内存技术的实现 建立在离散分配的内存管理方式上实现方式 请求分页存储管理请求分段存储管理请求段页式存储管理 硬件支持 一定容量的内存和外存页表机制或者段表机制中断机构地址变换机构
请求分页管理方式 系统建立在基本分页系统基础之上为了支持虚拟存储器功能而增加了请求调页功能和页面置换功能 页表机制 组成页号物理块号状态位P访问字段A 修改位M外存地址状态位当前页是否已经调入内存访问字段A:记录本页在一段时间内被访问的次数修改位M:记录本页是否被修改过外存地址指出该页在外存上的位置通常是物理块号 缺页中断机制 当访问页面不在内存时就会发生缺页中断特点 指令执行期间产生中断而不是指令执行之后产生中断和处理中断一条指令在执行期间可能产生多次缺页中断 地址变换机构 检索快表找到访问页修改页表项中的访问位利用页表项中给出的物理块号和页内地址形成物理地址没有找到改页的页表项去内存中寻找页表看该页是否已经调入内存没有调入则产生缺页中断请求从外存把该页调入内存
易混知识点
虚拟内存的最大容量是由计算机的地址结构(CPU寻址范围)确定的虚拟内存的实际容量min(内存和外存容量之和CPU寻址范固)
页面置换算法 最佳置换算法OPT 选择永不使用或者最长时间内不再访问的页面进行淘汰但是现实中是无法预知的无法实现优点缺页率最小性能最好 先进先出页面置换算法FIFO 优先淘汰最早进入的页面优点实现简单缺点与进程的实际运行规律不匹配Belady异常增大分配的物理块数但是故障数不减反增。只有先进先出算法会出现 最近最久未使用LRU置换算法 选择最近最长时间设有被访问的页面进行淘汰每个页面设置一个访问字段用来标识上次被访问到现在经历的时间优点性能好缺点实现复杂需要寄存器和栈的硬件支持LRU是堆栈类算法 时钟CLOCK置换算法 像一个时钟一样转图每个页面设置一个使用位访问位遇到设有被使用的就会将页面换出然后将使用位置0如果遇到使用的就会将使用位置零然后扫描下一个优点性能接近于最佳置换算法缺点实现复杂开销大改进型CLOCK算法 使用位访问位的基础上增加修改位扫描过程 扫描缓冲区选择第一个使用位和修改位都为0的页面换出第一步失败后查找使用位为0修改位为1的进行替换对于每个跳过的帧将使用位置为0第二步失败后指针回到初始地点且使用位访问位均为0重复第一步 优点相对于未改进型节省了时间
页面分配策略 驻留集给一个进程的分配的物理页框的集合就是这个进程的驻留集 考虑因素 分配给一个进程的的存储量域小任何时侯驻留在主存中的进程数就域多可以提高处理机的时间利用率一个进程在主存中的页数过少页错误率就会相对较高页数过多对进程的错误率也不会产生过多的影响 分配策略 固定分配局部置换 每个进程分配固定物理块数缺页的时候就进行换页难以确定每个进程应该分配的物理块数太多导致资源利用率下降太少导致频繁缺页中断 可变分配全局替换 进程分配一定物理块系统自身保留一定空闲物理块如果进程缺页就对该进程分配新的物理块优点最容易实现动态调整物理块分配缺点如果盲目分配物理块就会导致多道程序并发能力下降 可变分配局部替换 根据进程的缺页情况对物理块进行动态分配如果频繁缺页就对其多分配物理块如果缺页率特别低就减少其物理块优点保特了系统的多道程序并发能力缺点增大了开销实现复杂 调入页面的时机 预调页策略 将预计不久被访问的页面调入成功率位50% 请求调页策略 当进程提出缺页的时候再按照一定策略进行调页特点一次调入一夜调入/调出页面数多时会花费过多的I/O开销 从何处调页 拥有足够的对换空间可以全部从对换区调入所需页面提高调页速度缺少足够的对换区空间不会被修改的文件从文件区调入可能被修改的部分换入对换区以后再从对换区调入。原理读速度比写速度块UNX方式进程相关文件访问文件区没有运行的页面从文件区调入曾经运行过但又被换出的页面放在对换区
抖动
刚换出的页面又要换入内存原因 分配到物理页帧数不足主要原因置换算法不当
工作集
某段时间内进程要访问的页面集合原理 操作系统跟踪每个进程的工作集并为进程分配大于其工作集的物理块落入工作集的页面需要调入驻留集中落在工作集外面的页面可以从驻留集中换出若还有空闲物理块可以再调入一个进程到内存以增加多道程序数。若所有进程的工作集之和超过了可用物理块的总数操作系统就会暂停一个进程并将其页面调出并将其物理块分配给其他进程 大家好我是xwhking一名技术爱好者目前正在全力学习 Java前端也会一点如果你有任何疑问请你评论或者可以加我QQ2837468248说明来意希望能够与你共同进步