操作系统---存储管理

news2024/12/24 8:56:05

存储管理

  • 操作系统将外存的文件调入到内存中,以便CPU调用,如果调用的内容不在内存中,则会产生缺页中断;
  • 产生缺页中断后,这事需要从外存调数据到内存中,然后CPU接着从断点继续调用内存中的数据;
  • 在外存调入内存的过程中,是超大的文件,需要对超大文件的一些内容切割之后分散放置到内存中;
  • 根据切割方式的不同,会有不同的存储和调用方式;

页式存储

在这里插入图片描述

  • 分页存储管理就是页式存储的过程;
  • 它会将文件和内存划分成相同大小的一些区域,这些区域称为:页或者块;
  • 把用户程序和内存中文件之间的映射关系用一个表来记录,这个表就是页表;
  • 页表中记录着用户程序中的页号,也叫做逻辑页号,用户程序的地址也叫做逻辑地址;
  • 页表中记录着内存中文件切割后分散存放的块号,也叫做物理块号(页帧号),在内存中的地址也叫做物理地址;
  • 根据用户程序中的逻辑地址查页表,从而得到内存中的物理地址;
  • 逻辑地址和物理地址之间转换关系:
    • 所有的地址划分成2个部分:页内的具体地址(页内地址,偏移量,相对位置),页外的页号编号(记录页内对应关系[记录在页表中](相对位置)的编号);
    • 逻辑地址 = 页号 + 页内地址;
    • 物理地址 = 百帧号(物理块号) + 页内地址;
    • 页内地址保存不变,变化的只有页内的对应关系(逻辑地址中是页号、物理地址中是百帧号(物理块号));
    • 完整的逻辑地址和物理地址可以用二进制、十六进制、十进制表示;

计算页内地址、页号、百帧号(物理块号)

  • 涉及页面大小的定义;
  • 页面大小转化为B,例如上图的4KB = 4096B = 2^12,那么页内地址的长度就是12位,上图中,二进制逻辑地址:10 1100 1101
    1110,从低位到高位12位就是页内地址,此外就是页号10,10转换成十进制就是2,所以在页表中查询对应的百帧号就是6,十进制6转换为二进制110,页内地址保持不变,所以通过二进制逻辑地址:10
    1100 1101 1110,和页内地址的长度12位,还有页表找到的物理地址就是:110 1100 1101 1110;

抖动现象
操作系统的抖动,又叫颠簸。颠簸是不作处理的计算机活动,通常是因为内存或其他资源耗尽或有限而无法完成所要执行的操作。当上述情况发生时,程序就会通过操作系统发出请求,操作系统就试图从其他程序中拿来所需的资源。

在这里插入图片描述

  • 当内存不足时,需要淘汰其他在内存中进程的资源;
  • 状态位记录进程是否在内存中,淘汰时无需考虑不在内存中的进程资源(不考虑状态位:0);
  • 其次,访问位记录着是否最近被访问过,优先考虑最近访问过的,最近未访问的优先淘汰;
  • 然后,修改位记录着内容最近是否被修改过,最近未修改过的先于修改过的被淘汰;
  • 不考虑状态位:0 ----> 先淘汰访问位:0 ----> 再考虑淘汰修改位:0;

段式存储

在这里插入图片描述

  • 页式存储从大小考虑文件在内存中,并没从需要切割的超大文件内容的逻辑连贯性去考虑划分;比如代码的连贯性;
  • 从超大文件内容的逻辑连贯性去考虑划分,在内存中的存储,就有了段式存储;
  • 按逻辑划分为不同大小的段,每段的起始位置就是段内偏移量;
  • 段表中存有段号(每个自然段的开始位置),段长(每个自然段的大小不同,段的长度),基址(每段在内存中存储的开始位置);

在这里插入图片描述

  • 逻辑地址:(段号,段内偏移量);
  • 通过段号查段表得到基址,基址+偏移量就是在内存中的地址;
  • 合法段地址就是要段号对应的内存地址中不溢出不能越界,该段的基址+偏移量没超过该段在内存存储的大小;
  • 非法段地址:逻辑地址到物理地址转换时地址越界;

段页式存储

在这里插入图片描述

  • 将段式存储管理和页式存储管理结合;

在这里插入图片描述

  • 页内地址长度固定大小(上图有8-0+1的长度,所以有2^9个页内地址);
  • 页号长度不固定(最多有:13-9+1的长度,所以有2^5个页号),大小不确定,大小不固定,可变长;
  • 段号长度不固定(最多有:16-14+1的长度,所以有2^3个段号),大小不确定,大小不固定,可变长;

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

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

相关文章

Webshell管理工具

Webshell管理工具Webshell简介Webshell作用Webshell管理工具菜刀蚁剑Webshell简介 Webshell是以ASP、PHP、JSP或者CGl等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。 Webshell使用方法简单,只需上传一个代码文件…

C语言详解双向链表的基本操作

目录 双链表的定义与接口函数 定义双链表 接口函数 详解接口函数的实现 创建新节点(BuyLTNode) 初始化双链表(ListInit) 双向链表打印(ListPrint) 双链表查找(ListFind) 双链…

SiteWhere 宣布推出 SiteWhere 企业版 (EE) 测试版

开源物联网应用程序支持平台 (AEP) 供应商 SiteWhere 刚刚宣布推出SiteWhere 企业版 (EE) Beta。SiteWhere EE基于SiteWhere 开源开发项目,是为企业客户打造的平台。SiteWhere EE 已经引起了全球各行业公司的兴趣。 SiteWhere EE 有许多功能,但 MachNati…

Vue3之组件间传值

何为组件间传值 在Vue3之组件文章中,我们学会了定义使用组件,但是我们似乎还缺少什么将组件之间联系起来,说到组件之间的联系就不得不提组件间的传值,而组件间的传值其实也不难理解,就是如何在子组件中接收到父组件传…

C语言再学习第三章

例题3-1 编写一个函数&#xff0c;实现华氏度和摄氏度的转化。 已知公式&#xff1a;c &#xff08;5/9)*(f-32) #include <stdio.h>double f_value 0; double c_value 0; int main(void) {printf("请输入华氏温度\n");scanf("%lf",&f_valu…

两阶段提交(2 Phase Commit) 在 PostgreSQL 和 RocksDB 中的实现

文章目录前言用法PostgreSQLRocksDB实现PostgreSQL 2PCRocksDB 2PCWRITE_COMMITTEDWRITE_PREPARED解决 snapshot-read 问题解决 rollback 问题WRITE_UNPREPARED总结前言 本节中提到的代码实现是基于 PG&#xff1a;REL_15_STABLE 和 Rocksdb: master-fcd816d534 代码介绍的 2PC…

shell:#!/usr/bin/env python作用是什么

我们经常会在别人的脚本文件里看到第一行是下面这样 #!/usr/bin/python或者 #!/usr/bin/env python 那么他们有什么用呢&#xff1f; 要理解它&#xff0c;得把这一行语句拆成两部分。 第一部分是 #! 第二部分是 /usr/bin/python 或者 /usr/bin/env python 关于 #! 这个…

Java8 新特性 之 lambda 表达 和 函数式接口

—— lambda 表达式 概念 lambda 表达式是一个匿名函数&#xff0c;可以把 lambda 表达式理解为是一段可以传递的代码。更简洁、更灵活&#xff0c;使 Java 的语言表达能力得到了提升lambda 表达式是作为接口的实现类的对象&#xff08;万事万物皆对象&#xff09; 使用语法…

世界那么大,你哪都别去了,来我带你了解CSS3(三)

文章目录‍❤️‍&#x1f525;CSS动画‍❤️‍&#x1f525;CSS雪碧图‍❤️‍&#x1f525;CSS字体图标‍❤️‍&#x1f525;CSS盒子模型&#xff08;Box Model&#xff09;‍❤️‍&#x1f525;CSS新特性‍❤️‍&#x1f525;CSS动画 动画是使元素从一种样式逐渐变化为另…

【Rides】使用Xshell 链接云服务器安装Rides及其三种启动方法详解

文章目录一.NoSQL和SQl的概念1.1 总结二.Rides2.1 Rides特点2.2 Rides安装2.2.1 上传安装包并解压2.3 Redis启动&#xff08;前台启动不推荐&#xff09;2.4.指定配置启动2.5 开机自启三.Redis客户端2.1.Redis命令行客户端2.2.图形化桌面客户端2.2.1.安装2.2.2.建立连接一.NoSQ…

Vue.js 实现带拖动功能的时间轴

带拖动功能的时间轴timeline-slider-vueDemoGithub环境node V12.20.0npm 6.14.8&#x1f4e6; Installnpm install --save timeline-slider-vue全局引用main.jsimport TimelineSliderVue from timeline-slider-vueimport timeline-slider-vue/lib/timeline-slider-vue.cssVue.u…

数据库复习

什么是数据库系统 数据库系统是指在计算机系统中引入数据库后构成的系统&#xff0c;一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成 数据库系统的特点是什么&#xff1f; 数据结构化数据的共享性高&#xff0c;冗余度低且易扩充数据独立性高数…

吐血整理的TCP协议相关原理

文章目录一、 TCP报文的结构二、TCP建立连接-三次握手2.1 三次握手建立连接的过程2.2 三次握手的思考2.3 针对连接过程的DDOS攻击-SYN flood三、 TCP断开链接-四次挥手3.1 客户端主动断开链接的过程3.2 四次挥手的思考四、 TCP状态机六、 TCP的流量控制-滑动窗口协议七、 TCP拥…

openpnp - 顶部相机高级矫正的细节

文章目录openpnp - 顶部相机高级矫正的细节概述ENDopenpnp - 顶部相机高级矫正的细节 概述 设备到手的时候, 只有一个主校准点, 是一块只带一个mark点的小PCB拧在设备正面前部中间的凸台上. 配置openpnp时, 需要指定次校准点. 开始自己做了一块长条形PCB, 上面有mark点, 拧在…

【C++知识点】重载

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;C/C知识点 &#x1f4e3;专栏定位&#xff1a;整理一下 C 相关的知识点&#xff0c;供大家学习参考~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;…

阿赵的MaxScript学习笔记分享十二《获取和导出各种数据》

大家好&#xff0c;我是阿赵&#xff0c;周日的早上继续分享MaxScript学习笔记&#xff0c;这是第十二篇&#xff0c;获取和导出各种数据 1、导出数据的目的 使用3DsMax建立3D模型后&#xff0c;很多时候需要输出模型到别的引擎去使用&#xff0c;常用的格式有Obj、FBX、SLT等…

geoserver之BlobStores使用

概述 geoserver是常用的地图服务器之一&#xff0c;除了基本的能力之外&#xff0c;也提供了很多的插件方便大家使用。在本文&#xff0c;讲述一下如何在geoserver中使用BlobStores和gwc-sqlite-plugin插件实现地图的切片和部署。 BlobStores简介 在geoserver中&#xff0c;…

Linux安装Nginx和Nginx基础配置

下载Nginx 方式一&#xff1a;通过官网下载后上传 通过官网下载安装包。下载地址https://nginx.org/en/download.html 这里选择稳定版的进行下载。 这里使用FinalShell终端工具操作&#xff0c;使用其他工具操作亦可。FinalShell工具下载地址&#xff1a;http://www.hostbuf…

带加权的贝叶斯自举法 Weighted Bayesian Bootstrap

在去年的文章中我们介绍过Bayesian Bootstrap&#xff0c;今天我们来说说Weighted Bayesian Bootstrap Bayesian bootstrap 贝叶斯自举法&#xff08;Bayesian bootstrap&#xff09;是一种统计学方法&#xff0c;用于在缺乏先验知识的情况下对一个参数的分布进行估计。这种方…

【Node.js】HTTP协议、HTTP的请求报文和响应报文

HTTP协议、HTTP的请求报文和响应报文HTTP协议HTTP主要特点HTTP的请求报文和响应报文请求报文请求行请求消息头空行请求体响应报文响应状态行响应消息头空行响应体总结HTTP协议 HTTP 全称为超文本传输协议&#xff0c;是用于从WWW服务器传输超文本到本地浏览器的传送协议&#…