当前位置: 首页 > news >正文

操作系统理论 第四章(存储器管理)—第一节(存储器的层次结构)

 写在前面:

  1. 本系列笔记主要以《计算机操作系统(汤小丹…)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:操作系统(汤小丹等第四版)_哔哩哔哩_bilibili

一、内存管理概述

        存储器管理的主要对象是内存,至于外存,它主要用来存放文件,所以外存的管理归为文件管理的内容。

        操作系统对内存的划分和动态分配,就是内存管理的概念。内存管理的功能有:

        ①内存空间的分配和回收:由操作系统完成主存储器空间的分配和管理,使程序员摆脱存储分配的麻烦,提高编程效率。

        ②地址转换:在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致,因此存储管理必须提供地址变换功能,把逻辑地址转换成相应的物理地址。

        ③内存空间的扩充:利用虚拟存储技术或自动覆盖技术,从逻辑上扩充内存。

        ④存储保护:保证各道作业在各自的存储空间内运行,互不干扰。

二、多层结构的存储器系统

        对于通用计算机而言,存储层次至少应具有三级:最高层为 CPU寄存器,中间为主存,最底层是辅存。在较高档的计算机中,还可以根据具体的功能细分为寄存器、高速缓存、主存储器、磁盘缓存、固定磁盘、可移动存储介质等6层。

        在存储层次中,层次越高(越靠近CPU),存储介质的访问速度越快,价格也越高,相对所配置的存储容量也越小其中,寄存器、高速缓存、主存储器和磁盘缓存均属于操作系统存储管理的管辖范畴,掉电后它们中存储的信息不再存在;而低层的固定磁盘和可移动存储介质则属于设备管理的管辖范畴,它们存储的信息将被长期保存

三、主存储器与寄存器

1、主存储器

        主存储器简称内存或主存,是计算机系统中的主要部件,用于保存进程运行时的程序和数据,也称可执行存储器。通常处理机都是从主存储器中取得指令和数据的,并将其所取得的指令放入指令寄存器中,而将其所读取的数据装入到数据寄存器中;或者反之,将寄存器中的数据存入到主存储器。

        由于主存储器访问速度远低于CPU执行指令的速度,为缓和这一矛盾,在计算机系统中引入了寄存器和高速缓存。

2、寄存器

        寄存器具有与处理机相同的速度,故对寄存器的访问速度最快,完全能与CPU协调工作,但价格却十分昂贵,因此容量不可能做得很大。

四、高速缓存和磁盘缓存

1、高速缓存

        高速缓存是现代计算机结构中的一个重要部件,它是介于寄存器和存储器之间的存储器,主要用于备份主存中较常用的数据,以减少处理机对主存储器的访问次数,这样可大幅度地提高程序执行速度。高速缓存容量远大于寄存器,而比内存约小两到三个数量级左右,访问速度快于主存储器。

        在计算机系统中,为了缓和内存与处理机速度之间的矛盾,许多地方都设置了高速缓存。

2、磁盘缓存

        由于目前磁盘的I/O速度远低于对主存的访问速度,为了缓和两者之间在速度上的不匹配,而设置了磁盘缓存,主要用于暂时存放频繁使用的一部分磁盘数据和信息,以减少访问磁盘的次数。但磁盘缓存与高速缓存不同,它本身并不是一种实际存在的存储器,而是利用主存中的部分存储空间暂时存放从磁盘中读出(或写入)的信息。主存也可以看作是辅存的高速缓存,因为辅存中的数据必须复制到主存方能使用,反之,数据也必须先存在主存中,才能输出到辅存。

相关文章:

  • 笔记82:关于 C++ 中的 swap 函数
  • 电子模拟卷1
  • V R元宇宙平台的未来方向|V R主题馆加 盟|游戏体验馆
  • 【Hive】with 语法 vs cache table 语法
  • 机器学习:探索数据中的模式与智能
  • 【笔记】以论文发表形式通俗理解 TCP/IP模型
  • linux 命令行下的计算器
  • 【论文阅读】Faster Neural Networks Straight from JPEG
  • 【C语言基础】:字符串函数(二)
  • js的事件
  • hive授予指定用户特定权限及beeline使用
  • 【C++】静态成员
  • 单链表的查找
  • Python第三次作业
  • Linux:环境变量的特性及获取
  • Facebook AccountKit 接入的坑点
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • markdown编辑器简评
  • Redis的resp协议
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 阿里云Kubernetes容器服务上体验Knative
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 聊聊sentinel的DegradeSlot
  • 人脸识别最新开发经验demo
  • 实现简单的正则表达式引擎
  • 使用 QuickBI 搭建酷炫可视化分析
  • 使用API自动生成工具优化前端工作流
  • 试着探索高并发下的系统架构面貌
  • 手写一个CommonJS打包工具(一)
  • 学习笔记TF060:图像语音结合,看图说话
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 再谈express与koa的对比
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • (1)(1.11) SiK Radio v2(一)
  • (windows2012共享文件夹和防火墙设置
  • (待修改)PyG安装步骤
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (南京观海微电子)——I3C协议介绍
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (三)模仿学习-Action数据的模仿
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)Google的Objective-C编码规范
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .htaccess配置重写url引擎
  • .naturalWidth 和naturalHeight属性,
  • .net 提取注释生成API文档 帮助文档
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .Net7 环境安装配置
  • .net对接阿里云CSB服务