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

内存管理的⽬标:实现内存分配和回收,提高内存空间的利用率和内存的访问速度

一、存储器的层次结构

寄存器:在CPU内部有一组CPU寄存器,寄存器是cpu直接访问和处理的数据,是一个临时放数据的空间。

高速缓冲区:一般CPU都会从内存取数据到寄存器,然后进行处理,但由于内存的处理速度远远低于CPU,导致CPU在处理指令时往往花费很多时间在等待内存做准备工作,于是在寄存器和主内存间添加了CPU缓存,CPU缓存比较小,但访问速度比主内存快得多,如果CPU总是操作主内存中的同一址地的数据,很容易影响CPU执行速度,此时CPU缓存就可以把从内存提取的数据暂时保存起来,如果寄存器要取内存中同一位置的数据,直接从缓存中提取,无需直接从主内存取

缓存命中率:寄存器并不是每次数据都可以从缓存中取得数据,假如寄存器要获取的不是同一个内存地址中的数据,那寄存器就必须直接绕过缓存从内存中取数据。所以并不是每次都能从缓存中取到数据,这种现象叫做缓存的命中率。命中就直接取缓存中的数据,否则从内存中取;可见缓存命中率的高低也会影响CPU执行性能。

交互流程:当一个CPU需要访问主存时,会先读取一部分主存数据到CPU缓存(当然如果CPU缓存中存在需要的数据就会直接从缓存获取),进而在读取CPU缓存到寄存器,当CPU需要写数据到主存时,同样会先刷新寄存器中的数据到CPU缓存,然后再把数据刷新到主内存中。

数据存储的局部性原理:

 局部性:在⼀段较短时间内,程序的执⾏仅限于某个部分,相应地它所访问的存储空间也局限于某个区域

分类:

  • 时间局部性:某条指令⼀旦执⾏,不久 后该指令可能再次执⾏
  • 空间局部性:⼀旦程序访问了某个单元,不久 后附近的存储单元也将被访问

二、 程序的链接和装入

⾼级语⾔程序  -》   编译、链接 -》   可执⾏程序

程序的链接:将编译后的⽬标模块装配成⼀个可执⾏程序

  • 静态链接  程序运⾏前完成链接操作(程序运⾏前,⽤链接程序将⽬标模块链接成⼀个完整的装⼊模块。)       优:运⾏速度快
    • 链接程序的任务    1、对逻辑地址进⾏修改          2、变换外部调⽤符号
  • 动态链接  程序执⾏时进⾏链接操作(可将某些⽬标模块的链接推迟到这些模块中的函数被调⽤执⾏时才进⾏)      优:节省了空间

程序的装⼊

 

 

 

  • 绝对装⼊⽅式:编译时产⽣物理地址的⽬标代码
  •  可重定位装⼊⽅式 (静态重定位):编译时地址是逻辑地址,装⼊时 通过重定位转换为物理地址 ( 重定位:程序装⼊时对⽬标程序中的指令和数据地址的修改过程叫重定位
  • 动态运⾏时装⼊⽅式(动态重定位):程序执时通过重定位转换为物理地址

 物理地址=逻辑地址+程序在内存中的起始地址

 

三、 连续分配存储管理方式

连续分配方式:为一个用户程序分配一个连续的内存空间。

连续分配方式进一步分为:单一连续分配、固定分区分配、动态分区分配以及动态重定位分区分配。

1、单一连续分配:任何时刻主存储器最多只有⼀个作业

2、固定分区分配:每个分区⼤⼩固定不变(各个分区大小可以相同也可以不同),每个分区可以且仅可以装⼊⼀个作业

 

 

 固定分区说明表 :由固定分区说明表可以查看哪个分区空闲,哪个分区被占用

 

 

 3、动态分区分配:

 

 

  空闲分区表: 由空闲分区表可知 哪个分区已被占,哪个分区是空闲。(分区编号、分区大小、起始地址)

  空闲分区链:

 

 

 

3.1、动态分区分配内存算法:

  1、⾸次适应算法:空闲分区链以地址递增的顺序链接, 从链⾸开始查找 ,直⾄找到第⼀个满⾜要求的空闲分区, 从该分区中划出⼀块内存给进程 ,剩下的仍留在空闲链中。

 

 

 外部碎⽚:分配后留在空闲链上的。首次适应算法会产生该碎片。

 内部碎⽚:由于空闲的区域比申请的大一点点,系统就直接把多余的这一点也分配给你。

 

  2、循环⾸次适应算法:从上次找到的空闲分区的下⼀个空闲分区开始查找。 优点:空闲区分布均匀

 

  3、 最佳适应算法:空闲分区链以分区⼤⼩递增的顺序链接,从链⾸开始查找, 直⾄找到第⼀个与进程请求的空间⼤⼩ 最接近的空闲分区。

 

 3.2、动态分区回收内存的流程

1)释放⼀块连续的内存区域    2)如果被释放的区域与其他空闲区相邻,则合并空闲区      3)修改空闲分区链

 

 

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

 

 

 

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

 

 

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

 系统区用于驻留操作系统,用户区用于分配给用户进程使用

为了放哪工作用户程序对操作系统的破坏,保证系统的安全、可靠,在操作系统中应该考虑设置存储器保护机制。在单用户、单任务操作系统中较常用的方法是设置一个基址寄存器和一个界限寄存器。

界限寄存器:存放装入用户区程序的地址范围

基址寄存器:存放程序在物理内存中最小地址的是基址寄存器

 

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

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

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

相关文章

自写图片遮罩层放大功能jquery插件源代码,photobox.js 1.0版,不兼容IE6

版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/u010480479/article/details/27362147 阿嚏~~~ 话说本屌丝没啥开发插件的经验,可是天公不作美,公司须要让我自己开发个图片放大的插件 但公司老大的话&#xff0…

黑白两客进入页面(1)

<div><span>欢</span><span>迎</span><span>来</span><span>到</span><span><strong>黑白两客</strong></span><span>的</span><span>博</span><span>客</sp…

zookeeper学习之原理

一、zookeeper 是什么 Zookeeper是一个分布式协调服务&#xff0c;可用于服务发现&#xff0c;分布式锁&#xff0c;分布式领导选举&#xff0c;配置管理等。这一切的基础&#xff0c;都是Zookeeper提供了一个类似于Linux文件系统的树形结构&#xff08;可认为是轻量级的内存文…

前端js基础智能机器人

<script>var flag true;while(flag) {//获取用户输入信息 var code prompt(你好,我是小娜\n请输入编号或者关键词选择功能,输入Q(q)退出聊天\n1.计算\n2.时间\n3.笑话);switch( code ) {case q:case Q:alert(狠心的抛弃了小娜);flag false;break;case 1:case 计算:var…

2018-2019-2 《Java程序设计》第6周学习总结

20175319 2018-2019-2 《Java程序设计》第6周学习总结 教材学习内容总结 本周学习《Java程序设计》第七章和第十章&#xff1a; 内部类&#xff1a; 1.内部类可以使用外嵌类的成员变量和方法。 2.类体中不可以声明类变量和类方法。 3.内部类仅供外嵌类使用。 4.类声明可以使用s…

Hbase基本原理

一、hbase是什么 HBase 是一种类似于数据库的存储层&#xff0c;也就是说 HBase 适用于结构化的存储。并且 HBase 是一种列式的分布式数据库&#xff0c;是由当年的 Google 公布的 BigTable 的论文而生。HBase 底层依旧依赖 HDFS 来作为其物理存储。 二、hbase的列式存储结构 行…

最终的动画函数封装(2)

<button>点击触发1</button><button>点击触发2</button><div></div><style>*{margin: 0;padding: 0;}div{width: 100px;height: 100px;background-color: red;position: relative;top: 100px;left: 0;}.div1{display: block;width: …

第二次JAVA作业

感觉和C语言后面都差不多&#xff0c;就是开头的定义和输入输出有点差别&#xff0c;多写几次应该能搞清楚开头的定义&#xff0c;接下来是四道题目的截图。 第一题&#xff1a; 第二题&#xff1a; 第三题&#xff1a; 第四题&#xff1a; 转载于:https://www.cnblogs.com/YSh…

js(Dom+Bom)第七天(1)

JavaScript BOM介绍 概念 BOM&#xff08;Browser Object Model&#xff09;即浏览器对象模型。 本质&#xff1a; 通过对象抽象浏览器中的一些功能 例如&#xff1a;&#xff08;刷新页面&#xff0c;alert,confirm,pormpt,跳转 ...&#xff09;BOM顶级对象 window对象是js中…

「十二省联考 2019」皮配——dp

题目 【题目描述】 #### 题目背景一年一度的综艺节目《中国好码农》又开始了。本季度&#xff0c;好码农由 Yazid、Zayid、小 R、大 R 四位梦想导师坐镇&#xff0c;他们都将组建自己的梦想战队&#xff0c;并率领队员向梦想发起冲击。 四位导师的**派系**不尽相同&#xff0c;…

链表中环的入口结点

题目描述 给一个链表&#xff0c;若其中包含环&#xff0c;请找出该链表的环的入口结点&#xff0c;否则&#xff0c;输出null。 分析 第一步&#xff1a;确定一个链表中是否有环 我们可以用两个指针来解决&#xff0c;定义两个指针&#xff0c;同时从链表的头结点触发&#xf…

java 线程之线程状态

Thread 类中的线程状态&#xff1a; public enum State {NEW,//新建RUNNABLE,// 执行态BLOCKED, //等待锁&#xff08;在获取锁的池子里&#xff09;WAITING,//等待状态TIMED_WAITING,//定时等待TERMINATED; //终止 } 创建状态&#xff08;NEW&#xff09;&#xff1a;当一个线…

目标元素拖动

<div class"box"><div class"title">拖拽效果</div></div>* {margin: 0;padding: 0;}.box {width: 350px;height: 300px;border: 1px solid #ccc;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);cursor…

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

一、基本分页存储管理方式 1、分⻚存储管理的基本原理&#xff1a; 页&#xff1a;将⼀个进程的逻辑地址空间分成若⼲个⼤⼩相等的⽚页框&#xff1a;将物理内存空间分成与⻚⼤⼩相同的若⼲个存储块分⻚存储&#xff1a;将进程中的若⼲⻚分别装⼊多个可以不相邻的⻚框中页内碎片…

d3.js 教程 模仿echarts柱状图

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

简单的动画函数封装(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. 原生…