操作系统原理之内存管理(第四章第二部分)

 一、基本分页存储管理方式

1、分⻚存储管理的基本原理:

  • 页:将⼀个进程的逻辑地址空间分成若⼲个⼤⼩相等的⽚
  • 页框:将物理内存空间分成与⻚⼤⼩相同的若⼲个存储块
  • 分⻚存储:将进程中的若⼲⻚分别装⼊多个可以不相邻的⻚框中
  • 页内碎片:进程最后⼀⻚⼀般装不满⼀个⻚框,形成⻚内碎⽚
  • 页表:实现从⻚号到⻚框号的映射

 ************************************************************************************************

 

 2、分⻚地址结构:基本分页存储管理方式的逻辑地址结构包括两部分,即页内偏移量 和页号

*******************************************************************************************************************

 例题:

 

*****************************************************************************************************************

 

 

 3、分⻚地址变换

  • 进程执行,PCB中页表起始地址和页表长度送到CPU的页表寄存器
  • CPU访问某个逻辑单元A
  • 由分页地址变换硬件自动将A分为页号和页内偏移两部分
  • 由硬件检索页表,得到A所在的页对应的页框号
  • 页框号和页内偏移地址送物理地址寄存器,计算物理地址。物理地址=页框大小✖页框号+页内偏移量

4、⻚⼤⼩的选择因素

  • 管理内存开销 :页较⼩,划分为较多⻚,⻚表过⻓,占内存 较⼤
  • 内存的利⽤率: 页较⼤,⻚内碎⽚⼤,空间利⽤率低

5、快表TLB:

快表也称“转换后援缓冲”,是为了提⾼CPU访存速度⽽采⽤的专⽤缓存, ⽤来存放最近被访问过的⻚表项。

 

 

 快表TLB的计算:

 

***************************************************************************************************************************************

 

 

 

 

 6、两级和多级⻚表

 将⻚表再分⻚,形成两级或多级⻚表,将⻚表离散地存放在物理内存中。

 

 

 **********************************************************************************************************

 

二、基于分页的虚拟存储系统

1、虚拟存储器:

  • 虚拟存储器是指具有请求调⼊功能和置换功能,能从逻辑上对内存容量 进⾏扩充的⼀种存储器系统
  • 就是说,先将进程的⼀部分装⼊内存,其余的部分什么时候需要,什么 时候请求系统装⼊,即请求调⼊
  • 如果请求调⼊时,没有⾜够的内存,则由操作系统选择⼀部分内存中的 进程内容移到外存,以腾出空间把当前需要装⼊的内存调⼊,即置换

 

 2、请求分⻚系统是最基本、最常⽤的虚拟存储系统的实现⽅式

  请求分⻚中的硬件⽀持:

    为了实现请求分⻚,需要: 特殊的⻚表、缺⻚异常机构和⽀持请求分⻚的地址变换机构。

 

 

 

 

 

 

 

 

   ⻚分配策略:

    

 ***************************************************************************************************************************** 

    

 ***********************************************************************************************************************************

     

****************************************************************************************************************************************

3、 ⻚置换算法:从内存⻚中选择换出⻚的算法

A、最佳置换算法(主要⽤于理论研究):选择以后永远不会被访问的⻚或者在未来最⻓时间内不再被访问的⻚作为换出⻚

 

B、先进先出置换算法FIFO(最简单的⻚置换算法):为每个⻚记录该⻚调⼊内存的时间,选择换出⻚时,选择进⼊内存时间最早的⻚

 

 

 

C、最近最久未使⽤置换算法 LRU(实现最佳算法的近似算法):选择最近最久未使⽤的⻚换出(⽤⼀个字段记录⼀个⻚⾃上次被访问以来所经历的时间)

 

 

 

D、附加引⽤位算法

E、简单Clock置换算法:选择最近没有被访问的淘汰

F、改进型Clock算法:选择既没有被访问过⼜没有被修改过的淘汰

G、最少使⽤置换算法:选择最近时期内使⽤次数最少的淘汰

H、⻚缓冲算法

4、请求分⻚系统的性能:

a、缺⻚率对有效访问时间的影响

有效访问时间=0.1+24999.9✖P(P为缺⻚率)

有效访问时间与缺⻚率成正⽐,缺⻚率越⾼,有效访问时间越⻓,访问效率越低有效访问时间越低

b、⼯作集 :   引⼊⼯作集⽬的:降低缺⻚率,提⾼访问内存效率     含义:某段时间间隔⾥,进程实际要访问的⻚的集合

c、抖动 :  运⾏进程的⼤部分时间都⽤于⻚的换⼊换出 ⼏乎不能完成任何有效果⼯作的状态

产⽣原因:   进程数量太多    分配⻚框太少

预防⽅法:采取局部置换策略      引⼊⼯作集      挂起若⼲进程

 三、分段存储管理

 分段机制的引⼊:在分段存储管理的系统中,程序员使⽤⼆维的逻辑地址,⼀个数⽤来表示段, 另⼀个数⽤来表示段内偏移。

 

 

 

 引⼊分段机制的优点: ⽅便编程、分段共享、分段保护、动态链接,以及动态空间的增⻓。

分段:

  • 进程的地址空间被划分成若⼲个段。
  • 每个段定义了⼀组逻辑信息,每个段的⼤⼩由相应的逻辑信息组的⻓度确定,段 的⼤⼩不⼀样,每个段的逻辑地址从0开始,采⽤⼀段连续的地址空间。 系统为每个段分配⼀个连续的物理内存区域,各个不同的段可以离散地放⼊物理 内存不同的区域。
  • 系统为每个进程建⽴⼀张段表,段表的每⼀个表项纪录的信息包括段号、段⻓和 该段的基址,段表存放在内存中。

分段的逻辑地址结构:

 

 

 段表:段表是由操作系统维护的⽤于⽀持分段存储管理地址映射的数据结构。每个进程有⼀个段表,段表由段表项构成。每个段表项包括段号、段基址(段的 起始地址)和段⻓(段⼤⼩)3个部分。

 

*********************************************************************************************************************************************************

 

 

 

**********************************************************************************************************************************

 

 分页和分段都属于离散分配⽅式,都要通过数据结构与硬件的配合来实现逻辑地址到物理地址的映射。

分⻚和分段的主要区别:

1)页是按物理单位划分的,分页的引入是为了提高内存的利用率和支持虚拟存储;分段是按逻辑单位划分的,一个段含有一组意义相对完整的信息,引入分段的目的是为了方便程序员编程。
2)页的大小是固定的,而段的大小不固定,取决于用户编写的程序;
3)分页的地址空间是一维的,分段的地址空间是二维的

 

四、段⻚式存储管理

1、段⻚式存储管理的基本原理

 

 

 

 四、 Linux的伙伴系统

 

转载于:https://www.cnblogs.com/jalja/p/11455440.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

d3.js 教程 模仿echarts柱状图

由于最近工作不是很忙,隧由把之前的charts项目用d3.js重写的一下,其实d3.js文档很多,但是入门不是很难,可是想真的能做一个完成的,交互良好的图还是要下一番功夫的。今天在echarts找到了一个柱状图,如图。 …

简单的动画函数封装(2)

<div></div><!-- <span></span> --><button class"btn1">点击500</button><button class"btn2">点击800</button>div{width: 100px;height: 100px;background-color: red;position: absolute;top: …

【蔡勒公式 】根据给定的年月日求出对应星期几

蔡勒公式 蔡勒&#xff08;Zeller&#xff09;公式&#xff0c;是一个计算星期的公式&#xff0c;随便给一个日期&#xff0c;就能用这个公式推算出是星期几。时间复杂度&#xff1a;O(1)。具体的在红书P229有。 若要计算的日期是在1582年10月4日或之前&#xff0c;公式则为&am…

放大镜制作(2)—此方法比较容易理解

<div class"box" id"box"><!--左侧的盒子--><div class"left_img"><!--图片--><img src"images/small.jpg" class"aaa" alt"小图片"/><!--黄色小盒子--><div class"…

js(Dom+Bom)第八天—Swiper(插件)

Swiper插件(库) 01-基本介绍 Swiper 是一款免费以及轻量级的移动设备触控滑块的js框架&#xff0c;使用硬件加速过渡&#xff08;如果该设备支持的话&#xff09;。主要使用于移动端的网站、移动web apps&#xff0c;native apps和hybrid apps。主要是为IOS而设计的&#xff…

第七节:EF Core调用SQL语句和存储过程

一. 查询类(FromSql) 1.说明 A. SQL查询必须返回实体的所有属性字段。 B. 结果集中的列名必须与属性映射到的列名相匹配。 C. SQL查询不能包含关联数据 D. 除Select以为的其它SQL语句无法运行。 2.调用SQL语句的几种情况 A. 基本的原生SQL查询 B. 利用$内插语法进行传递 C. 原生…

js(Dom+Bom)第八天

JavaScript 移动端事件介绍 touch事件类型 移动设备上无法使用鼠标&#xff0c;当手指按下屏幕的时候会触发 click,mousedown,mouseup事件&#xff0c;但是在移动设备上有专门的事件&#xff1a; touch 备注&#xff1a; 在移动端touch事件需要通过事件监听的方式添加touchsta…

为什么mysql 5.7.24启停不显示错误信息?log-error_verbosity参数

关键词&#xff1a;log-error_verbosity &#xff0c;mysql启停没有信息&#xff0c;mysql启停不显示错误信息&#xff0c;mysql不显示启停信息 原因就是因为 log-error_verbosity 2 被设置成了1/2&#xff0c;需要设置成3才行。 转载自&#xff1a;https://www.cnblogs.com/k…

ASP.NET Core 3.0中使用动态控制器路由

原文&#xff1a;Dynamic controller routing in ASP.NET Core 3.0 作者&#xff1a;Filip W 译文&#xff1a;https://www.cnblogs.com/lwqlun/p/11461657.html 译者&#xff1a;Lamond Lu 译者注 今天在网上看到了这篇关于ASP.NET Core动态路由的文章&#xff0c;感觉蛮有意思…

d3.js 教程 模仿echarts折线图

今天我们来仿echarts折线图,这个图在echarts是折线图堆叠&#xff0c;但是我用d3改造成了普通的折线图&#xff0c;只为了大家学习&#xff08;其实在简单的写一个布局就可以&#xff09;。废话不多说商行代码。 1 制作 Line 类 class Line {constructor() {this._width 1100;…

vue中v-for的使用

本人正在开始学习Vue,每天写写基础的记录,希望对大家有帮助,如有错误还望指出,我也是一个小白,也希望大家能一起进步 v-for指令的使用: 1.循环普通数组 item in list 中的item是自己个想写什么名写什么名 另一种写法 i 表示索引值 2.循环对象数组 3.循环普通对象 4.迭代数字 注…

js高级第一天

JavaScript面向对象 1.1两大编程思想&#xff1a; 1、面向过程 ​ 面向过程&#xff1a;POP(Process-oriented programming) 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候再一个一个的依次调用就可以了。 ​…

d3.js 教程 模仿echarts legend功能

上一节记录没有加上echarts的legend功能&#xff0c;这一小节补一下。 1. 数据 我们可以从echarts中看出&#xff0c;折线数据并不是我们传进入的原始数据&#xff08;多数情况下我们也不会修改原始数据&#xff09;&#xff0c;而是原始数组的一个备份而已。备份数组的方法有很…

小程序2-基本架构讲解(一)WXSS样式

项目里边生成了不同类型的文件: .json 后缀的 JSON 配置文件.wxml 后缀的 WXML 模板文件.wxss 后缀的 WXSS 样式文件.js 后缀的 JS 脚本逻辑文件WXSS 样式 WXSS (WeiXin Style Sheets)是一套样式语言&#xff0c;用于描述 WXML 的组件样式。WXSS 具有 CSS 大部分的特性 新增了尺…

js高级—tab栏切换(面向对象做法)

<main><h4>Js 面向对象 动态添加标签页</h4><div class"tabsbox" id"tab"><!-- tab 标签 --><nav class"fisrstnav"><ul><li class"liactive"><span>测试1</span><sp…

Win10卸载python总是提示error2503失败各种解决办法

最近win10的电脑装了python的3.4&#xff0c;然后想卸载&#xff0c;就总是提示error 2053&#xff0c;类似于这种&#xff1a; 下面是我的坎坷解决之路&#xff1a; 1、网上说&#xff0c;任务管理器 --> 详细信息 --> explorer.exe结束任务&#xff0c;结束资源管理器&…

js高级—查询商品案例

<div class"search">按照价格查询&#xff1a;<input type"text" class"start"> - <input type"text" class"end"><button class"search-price">搜索</button> 按照商品名称查询&a…

js高级第二天

构造函数和原型 构造函数和原型 在典型的OOP 的语言中&#xff08;如Java&#xff09;&#xff0c;都存在类的概念&#xff0c;类就是对象的模板&#xff0c;对象就是类的实例&#xff0c;但在ES6之前&#xff0c;JS 中并没用引入类的概念。ES6&#xff0c;全称ECMAScript6.0…

操作系统原理之文件系统(第五章)

一、文件 1、⽂件系统的⽤户接⼝包括⽂件的命名、类型、属性和对⽂件的操作 2、⽂件命名&#xff1a;所有操作系统都允许⽤1&#xff5e;8个字⺟组成的字符串 3、⽂件扩展名&#xff1a;多数操作系统都⽀持⽂件名⽤圆点隔开分为两部分&#xff0c;圆点后⾯的部分称为⽂件扩展名…