操作系统学习笔记十二(基于分页的虚拟存储系统)
导图
1. 虚拟存储器
1.1 是什么
虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。
1.2 实质
1)就是说,先将进程的一部分装入内存,其余的部分什么时候需要,什么时候请求系统装入,即请求调入。
2)如果请求调入时,没有足够的内存,则由操作系统选择一部分内存中的进程内容移到外存,以腾出空间把当前需要装入的内存调入,即置换。
1.3 优点
1)提高内存利用率
2)提高多道程序度:在进行进程运行的时候,并不是一口气把一个进程里的所有东西都调入到内存,先放一部分进内存,这样就可以放更多的进程进内存。
3) 把逻辑地址空间和物理地址空间分开:不用考虑物理内存的容量较小了。可以把外存在逻辑上扩充成内存的一部分。
1.4 特征
1) 离散性:实现虚拟存储管理的基础。包括分页、分段。都是不连续的。
2) 多次性:不用一次性的将进程装入内存。一次装一点儿,一个进程可以装多次。
3) 对换性:没用的换去外存,有用的置换进内存。
4) 虚拟性: 实现虚拟存储系统的最重要目标。实质上内存很小,但是通过内外存来回切换,在逻辑上扩充内存。
2. 请求分页系统
2.1 概念
请求分页系统是最基本、最常用的虚拟存储系统的实现方式。
2.2 请求分页中的硬件支持
为了实现请求分页,需要:特殊的页表、缺页异常机构和支持请求分页的地址变换机构
1) 特殊的页表
2) 缺页异常机构
在访问内存过程中发现缺页时产生缺页异常信号,0缺页,1不缺页。
3) 地址变换机构
2.3 页的分配策略
Q1:至少为进程分配多少个页框才能使进程正常运行?
最少页框数:保证进程运正常运行的所需要的最少页框数。最少页框数与进程的大小没有关系,它与计算机的硬件结构有关, 取决于指令的格式、功能和寻址方式。
Q2:内存不够时,从进程本身选择淘汰页,还是从系统中所有进程页中选择?
在基于分页的虚拟存储系统中,常采用两种置换策略,即局部置换和全局置换。
在请求分页系统中,从分配给进程的页框数量上来看,可以采用固定分配和可变分配策略。
1)固定分配局部置换:刚开始分配 10个页,当第11页来了,先置换自己。
2)可变分配全局置换:进程来了,分配了10个页,还预留了5个页作为候补。不够用的时候,先用候补。
3)可变分配局部置换:进程来了,分配了10个页,还预留了5个页作为候补。来一个就先置换自己,当你发现自己来来回回总被换时,就用候补。
Q3:采用什么样的算法为不同进程分配页框?
1)平均分配算法:有5个内存的框,有两个进程,一人分两个,剩一个。剩下的那个放在缓冲池,当候补去。
2)按比例分配算法:大规模的进程分的多,小规模的进程分的少。
3)考虑优先权的分配算法:优先权高的分的多,优先权低的分的少。
2.4 页的置换算法
1)最佳置换算法(主要用于理论研究):选择以后永远不会被访问的页或者在未来最长时间内不再被访问的页作为换出页
例题:
2)先进先出置换算法FIFO(最简单的页置换算法):为每个页记录该页调入内存的时间,选择换出页时,选择进入内存时间最早的页
例题:
3)最近最久未使用置换算法LRU(实现最佳算法的近似算法):选择最近最久未使用的页换出(用一个字段记录一个页自上次被访问以来所经历的时间)
例题:
2.5 其他置换算法
2.6 分析请求分页系统性能
1)缺页率对有效访问时间的影响
P为缺页率,有效访问时间=0.1+24999.9*P 。
有效访问时间与缺页率成正比,缺页率越高,有效访问时间越长,访问效率越低。
2) 工作集
引入工作集目的:降低缺页率,提高访问内存效率
含义:某段时间间隔里,进程实际要访问的页的集合
3) 抖动
运行进程的大部分时间都用于页的换入换出几乎不能完成任何有效果工作的状态
产生原因:进程数量太多、分配页框太少
预防方法:采取局部置换策略、引入工作集、挂起若干进程
操作系统学习笔记十二(基于分页的虚拟存储系统)相关推荐
- Python语言入门这一篇就够了-学习笔记(十二万字)
Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...
- OpenCV学习笔记(十二)——图像分割与提取
在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...
- 吴恩达《机器学习》学习笔记十二——机器学习系统
吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...
- ROS学习笔记十二:使用roswtf
ROS学习笔记十二:使用roswtf 在使用ROS过程中,roswtf工具可以为我们提供ROS系统是否正常工作的检查作用. 注意:在进行下列操作之前,请确保roscore没有运行. 检查ROS是否安装 ...
- Polyworks脚本开发学习笔记(十二)-输出和读取文本文件
Polyworks脚本开发学习笔记(十二)-输出和读取文本文件 Polyworks作为一个测量工具,将测量的数据方便的导出到文本文件则是一项必须的功能.在DATA_FILE这个命令下提供了很多子命令用 ...
- 哈工大操作系统学习笔记十——信号量与死锁
哈工大os学习笔记十(信号量与死锁) 文章目录 哈工大os学习笔记十(信号量与死锁) 一. 信号量临界区保护 1.为什么要保护信号量 2.临界区 3.保护信号量的方法 3.1 轮换法 3.2 标记法 ...
- 【现代机器人学】学习笔记十二:轮式移动机器人
目录 轮式机器人类型 全向轮式机器人 建模 单个全向轮是怎么运动的 多个全向轮是如何带动底盘运动的 运动规划和反馈控制 非完整约束轮式移动机器人 建模 独轮车 差速驱动机器人 车型机器人 非完整移动机 ...
- (C/C++学习笔记) 十二. 指针
十二. 指针 ● 基本概念 变量的地址就是指针,存放指针的变量就是指针变量(因而又叫作地址变量 address variable); 这个地址编号本身就是一个无符号的整数,在32位系统下为4字节(8位 ...
- 【theano-windows】学习笔记十二——卷积神经网络
前言 按照进度, 学习theano中的卷积操作 国际惯例, 来一波参考网址 Convolutional Neural Networks (LeNet) 卷积神经网络如何应用在彩色图像上? 卷积小知识 ...
- Vue.js 学习笔记 十二 Vue发起Ajax请求
首先需要导入vue-resource.js,可以自己下载引入,也可以通过Nuget下载,它依赖于Vue.js. 全局使用方式: Vue.http.get(url,[options]).then(suc ...
最新文章
- RayTracking 光线跟踪算法
- 重启随机游走算法(RWR:Random Walk with Restart)
- Oracle VM VirtualBox 虚拟机中ubuntu里,鼠标滚轮不能使用
- ASP.NET Web 页面生命中的一天
- php接口调用实例化,PHP抽象类和接口用法实例详解
- 外卖和快递行业数据_下周一起,整治全面启动!锁定全市外卖、快递行业!
- 检测和测试停滞的流– RxJava常见问题解答
- 决策者根据什么曲线做出决策_如何做出产品设计决策
- java t9 字母组合_太赞了!美团T9终于整理出Java架构之完美设计实战开源文档
- 对抗模拟浏览器的DDoS攻击
- Lynis – 用于Linux服务器的自动安全审计工具
- 布局文件是如何被解析的?
- 小米音频测试软件,小米10 Pro音频评测
- 下载列表失败_Mac配置的Motrix,高速下载百度云
- 引导工业物联网变革 中国占据有利位置
- 未来发展人工智能的意义是什么?
- Android、IOS和Java三个平台一致的加密工具
- dellnas存储服务器型号,Dell Storage NX系列NAS存储
- 搞算法的仙女妹子,爱了!!
- 剑指offe 和为S的连续正数序列