不用dw怎么做网站,wordpress 豆瓣电台,下沙做网站的公司,安徽省住房城乡建设厅网站官网#x1f3a5; 个人主页#xff1a;深鱼~#x1f525;收录专栏#xff1a;操作系统#x1f304;欢迎 #x1f44d;点赞✍评论⭐收藏
推荐 前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到… 个人主页深鱼~收录专栏操作系统欢迎 点赞✍评论⭐收藏
推荐 前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站 前言 最近在备战期末考试所以本专栏主要是为了备战期末操作系统这门考试讲的比较浅显但是都是期末常考的考点和题型仅限于“期末不挂”的层面 一、内存管理
1.内存管理的概念
计算机不可能将所有用户进程和系统所需要的全部程序和数据放入主存因此操作系统必须对内存空间进行合理的划分和有效的动态分配
内存管理的概念就是操作系统对内存的划分和动态分配 2.内存管理功能
1内存空间的分配与回收:由操作系统完成主存储器空间的分配和管理
2地址转换: 将逻辑地址转换成相应的物理地址
3内存空间的扩充:利用虚拟存储技术或自动覆盖技术从逻辑上扩充主存
4存储保护:保证各道作业在各自的存储空间内运行互不干扰 3.将用户源程序变为可在内存中执行的程序的步骤:
1编译:由编译程序将用户源代码编译成若干目标模块(把高级语言翻译成机器语言)
2链接:由链接程序将编译后形成的一组目标模块及所需的库函数连接在一起形成一个完整的装入模块(由目标模块生成装入模块链接后形成完整的逻辑地址)
3装入:由装入程序将装入模块装入内存运行装入后形成物理地址 程序的链接有以下三种方式:
1静态链接:在程序运行之前先将各目标模块及它们所需的库函数连接成一个完整的可执行文件(装入模块)之后不再拆开
2装入时动态链接:将各目标模块装入内存时边装入边链接的链接方式
3运行时动态链接:在程序执行中需要该目标模块时才对它进行链接。其优点是便于修改和更新便于实现对目标模块的共享 (考选择)内存的装入模块在装入内存时有以下三种方式:
1绝对装入:在程序编译时就知道程序需要放在内存中的什么地方编译后的程序不是从0开始的逻辑地址而是真实的物理地址按照编译程序产生的绝对地址进行装入
2静态可重定位装入:编译后的模块需要连续装入内存但是在内存中的物理地址可与逻辑地址不同可以存在一定偏移比如逻辑地址是0-100它可以在内存中存储在100-200的内存单元中需要设定-个偏移量就是100同时也需要为其分配连续的存储空间不然通过偏移量是无法找到的现在就可以通过作业的逻辑地址偏移量获得作业在内存中的绝对地址(考大题
3动态运行时装入:将不同的模块可以装入在不同的内存地址不同模块可以不连续但是同一模块还是要连续存放的同一模块需要设定一个重定位寄存器每个模块的重定位寄存器中的值就是对应的偏移量。装入程序会把模块装入内存但是并不会立即将装入模块的相对地址转换为绝对地址而是把这种地址转换推迟到程序真正执行时才进行
可以将程序分配到不连续的存储区 4.覆盖
覆盖技术的基本思想:将程序分为多个段常用的段常驻内存不常用的段在需要时调入内存。
特点:打破了必须将一个进程的全部信息装入主存后才能运行的限制解决了程序大小超过物理内存总和的问题 5.交换
交换技术的基本思想:内存空间紧张时系统将内存中的某些进程暂时换出外存把外存中某些已具备运行条件的进程换入内存 二、分配管理方式
1.连续分配管理方式
连续分配方式是指为一个用户程序分配一个连续的内存空间。主要包括单一连续分配、固定分区分配和动态分区分配
1内部碎片:分配给某进程的内存区域中有些部分没用上
2外部碎片:是指内存中的某些空闲分区由于太小而难以利用 1单一连续分配(无外部碎片有内部碎片) 在单一连续分配方式中内存被分为系统区和用户区系统区用于存放操作系统相关数据;用户区用于存放用户进程相关数据
内存中只能有一道用户程序用户程序独占整个用户区空间 2固定分区分配(无外部碎片有内部碎片)
它将用户内存空间划分为若干固定大小的分区每个分区只装入一道作业当有空闲分区时便可再从外存的后备队列中选择适当大小的作业装入该分区
固定分区分配分为分区大小相等和分区大小不等两种方式 3动态分区分配(没有内部碎片但有外部碎片)
动态分区分配不预先分配内存而是在进程装入内存时根据进程的大小动态地建立分区并使分区的大小正好适合进程的需要。(某些空闲分区由于太小而难以利用) 动态分区分配的策略有以下几种算法:
1首次适应算法First-Fit
每次都从低地址开始查找选择第一个能够满足大小的空闲分区
优点:综合看性能最好。算法开销小回收分区后一般不需要对空闲分区队列重新排序
2最佳适应算法Best-Fit
优先使用更小的空闲分区将空闲分区按照容量递增链接每次寻找大小能够满足的第一个空闲分区 优点:会有更多的大分区被保留下来更能满足大进程需求 缺点:开销大产生很多小碎片
3最坏适应算法Worst-Fit
为了防止留下太多细碎的空闲空间每次分配时优先使用最大的空闲分区。可以将空闲分区按照容量递减链接
缺点:由于每次都使用最大的空闲分区因此较大的连续分区会很快被利用完导致大进程到来时可能不足以分配
优点:可以减少难以利用的小碎片
4邻近适应算法Next-Fit
由于首次适应算法每次都从链头开始查找可能导致低地址 部分出现很多小的空闲分区而每次查找时都会遍历这些分区增加了查找开销。因此将空闲分区按照地址递增的顺序排成一个循环链表每次都从上次结束的位置开始查找使用第一个满足的空闲分区
优点:不用每次都从低地址的小分区开始检索 2.非连续分配管理方式
非连续分配概念
如果可以将一个进程分散的装入到许多不相邻的分区中便可以充分的利用内存
1基本分页存储的管理方式(考大题:根据页表求地址
将用户进程的地址空间也分为与页框大小相等的一个个区域称为页、或称页面每个页面也有一个编号即页号页号也是从0开始的
各个页面不必连续存放也不必按先后顺序来可以放到不相邻的各个页框中 2基本地址变换机构 步骤: 1根据逻辑地址计算出页号、页内偏移量 2判断页号是否越界 3查询页表找到页号对应的页表项确定页面存放的内存块号 4用内存块号和页内偏移量得到物理地址 5访间目标内存单元
(考大题例题: 例:若页而大小L为1K字节页号2对应的内存块号b8将逻辑地址A2500转换为物理地址E 答:1KB1024B说明页内偏移量占10位 页号2对应的内存号b8 第一步:计算页号、页内偏移量 页号PA/L2500/10242 页内偏移量WA%L2500%1024452 第二步:求块号 页号为2对应的内存块号为8 第三步:求物理地址 Eb*LW8*10244528644 3分段存储管理方式
进程的地址空间按照程序程序自身的逻辑关系划分为若干个段每个段都有一个段名每段从0开始编址 4段页式管理方式
先分段再将各段分页再将内存空间分为大小相同的内存块然后进程内各个分页装入各个内存块中 局部性原理
时间局部性:如果执行了程序中的某条指令那么不久后这条指令很有可能再次执行;如果某个数据被访问过不久之后该数据很可能再次被访问。(因为程序中存在大量的循环)
空间局部性:一旦程序访问了某个存储单元在不久之后其附近的存储单元也很有可能被访问。因为很多数据在内存中都是连续存放的) 虚拟内存的基本概念
基于局部性原理在程序装入时可以将程序中很快会用到的部分装入内存暂时用不到的部分留在外存就可以让程序开始执行。
在程序执行过程中当所访问的信息不在内存时由操作系统负责将所需信息从外存调入内存然后继续执行程序。若内存空间不够由操作系统负责将内存中暂时用不到的信息换出到外存。在操作系统的管理下在用户看来似乎有一个比实际内存大得多的内存这就是虚拟内存 虚拟内存技术的实现
虚拟内存技术的实现需要建立在离散分配的内存管理方式的基础上
虚拟内存的实现有以下三种方式:
1.请求分页存储管理
2.请求分段存储管理
3.请求段页式存储管理 缺页中断
在请求分页系统中每当要访问的页面不在内存中时便产生一个缺页中断请求操作系统将所缺的页调入内存。此时应将缺页的进程阻塞(调页完成唤醒)若内存中有空闲块则分配一个块将要调入的页装入该块 若此时内存中没有空闲块则要淘汰某页若被淘汰的页在内存期间被修改过则要将其写回外存 快表
快表就是存放在[高速缓冲存储器]的部分页表。作为页表的Cache它的作用与页表相似但是提高了访问速率。由于采用页表做地址转换读写内存数据时CPU要访问两次主存。有了快表有时只要访问一次高速缓冲存储器一次主存这样可加速查找并提高指令执行速度。
地址转换流程 1.按照逻辑地址中的页号查快表 2.若该页*己存在*快表中则由页架号和单元号形成绝对地址 3.若该页*不在*快表中则再查主存页表与单元号形成绝对地址同时将该页登记到快表中 4.当快表填满后又要登记新页时则需要按照一定替换策略淘汰一个旧的登记项 页面置换算法
最佳置换算法(OPT)
最佳页面置换算法选择的被淘汰页面是以后永不使用的页面或是在最长时间内不再被访问的页面以便保证获得最低的缺页率但是人们无法预知进程在内存下的若干页面中的哪个是未来最长时间内不再被访问的因为该算法无法实现
先进先出页面置换算法(FIFO)
优先淘汰最早进入内存的页面即再内存中驻留时间最久的页面
最近最久未使用置换算法(LRU)
选择最近最长时间未访问过的页面予以淘汰它认为过去一段时间内未访问过的页面在最近的将来可能也不会被访问。该算法为每个页面设置一个访问字段来记录页面自上次被访问以来所经历的时间淘汰页面时选择现有页面中值最大的予以淘汰
近期最少使用算法(LFU算法
选择近期最少访问的页面作为被替换的页面 页面抖动
概念:刚刚换出到外存的页面马上要调入内存刚刚调入内存的页面马上要调出到外存
原因:系统为进程分配的物理块大小不足。内存驻留的进程太多 页面置换策略
固定分配局部置换:
系统为每个进程分配一定数量的内存块(物理块)在整个运行期都不改变。若进程在运行过程中发生了缺页则只能在本进程的内存页面中选出一个进行调出再调回需要的页面
缺点:不好确定一个进程到底应该分配多大的实际内存才合理
可变分配全局置换:
系统为每个进程分配一定数量的内存块。操作系统还会保持一个空闲物理块的队列。若某个进程发生缺页可以从空闲物理块中取出一块分配给该进程。如果空闲物理块没有了那么会选择一个未锁定(不那么重要可能是其它进程的)的页面换出到外存再将物理块分配给缺页的进程
缺点:在空闲物理块没有的情况下如果将其它进程的页面调出外存那么这个进程就会拥有较小的驻留集(即拥有的物理块)如此会导致该进程的缺页率(访问某个页面这个页面不在内存中的概率)上升
可变分配局部置换:
刚开始为每个进程分配一定数量的物理块。当进程发生缺页时只允许从当前进程的物理块中选出一个换出内存。如果当前进程在运行的时候频繁缺页系统会为该进程动态增加一些物理块直到该进程缺页率趋于适中程度;如果说一个进程在运行过程中缺页率很低或者不缺页则可以适当减少该进程分配的物理块。通过这些操作可以保持多道程序的并发度较高
与可变分配全局置换 区别:
可变分配全局置换:只要发生缺页就会分配新的物理块
可变分配局部置换:根据缺页率动态增加或者减少物理块的数量 真题速通
1.根据页表求地址 由页表可知绝对页号是8物理地址Eb块号*L页面大小W偏移量1Kx84511024x84518643 2.页面置换
在一个请求分页存储管理系统中一个作业的页面走向432143543215.当分配给作业的物理块数为3时试计算采用下述页面淘汰算法时的缺页率(假设开始执行时主存中没有页面)并比较结果
1) 最佳置换算法(从左往右看第一次出现的地方最远的那个被替换) 当页面走向为第一个1的时候向后找第一次出现的地方最远的那个432中2离的最远后面如果有说明没有缺页就不用管下一个就是5然后再走到2这个时候发现后面没有34那么默认34都在最后一个位置即最后一个5的后面所以随机置换一个3/4都可以
缺页率7/12
2)先进先出置换算法(看这行元素出现的次数淘汰掉次数最大的) 当页面走向为第一个1的时候看物理页这行4出现3次3出现2次2出现1次那么就需要置换出现最多次数的那个也就是4
缺页率9/12
3)最近最久未使用算法(从右往左看第一次出先的地方最远的那个被替换) 当页面走向为第一个1的时候看页面走向这行从右往左看4出现的最远置换4
缺页率10/12