操作系统(1)计算机存储结构

文章目录

  • 一、计算机存储结构
    • 1、基本概念
    • 2、计算机存储结构的组成部分
    • 3、局部性原理
    • 4、高速缓存
      • 4.1、基本概念
      • 4.2、工作原理
      • 4.3、层次结构
      • 4.4、对系统性能的影响
      • 4.5、一致性问题
    • 5、寄存器
      • 5.1,种类
      • 5.2,特点
      • 5.3、作用
      • 5.4、寄存器与缓存的差异

前言

计算机存储结构是指计算机系统中用于存储数据和程序的各种硬件设备及其组织方式。它包括了存储器的层次结构、类型、性能参数以及它们之间的相互关系。计算机存储结构的设计直接影响到计算机系统的性能、稳定性和可扩展性。本文将介绍计算机存储结构的基本概念、组成部分以及它们之间的关系。

一、计算机存储结构

1、基本概念

计算机存储结构是指计算机系统中用于存储数据和程序的各种硬件设备及其组织方式。它包括了存储器的层次结构、类型、性能参数以及它们之间的相互关系。计算机存储结构的设计直接影响到计算机系统的性能、稳定性和可扩展性。

2、计算机存储结构的组成部分

计算机存储结构主要包括以下几个部分:

  • 高速缓存(Cache):高速缓存是一种位于CPU与内存之间的快速存储器,用于缓解CPU与内存之间速度差异的问题。高速缓存通常采用静态随机存取存储器(SRAM)技术,具有极高的读写速度。
  • 主存储器(内存):主存储器是计算机中用于存储程序和数据的主要设备,通常采用动态随机存取存储器(DRAM)技术。内存具有较高的速度和较大的容量,但仍然远低于CPU的速度。
  • 辅助存储器(外存):辅助存储器主要用于存储长期保存的数据和程序,包括硬盘、固态硬盘、光盘、U盘等。外存具有较大的容量和较慢的速度,但成本相对较低。
  • 远程存储:远程存储是指通过网络连接的其他计算机或服务器上的存储资源,如云存储、网络硬盘等。远程存储可以实现数据的远程访问和共享,但速度受到网络带宽的限制。

计算机存储结构的各个部分之间存在紧密的联系。例如,高速缓存可以缓解CPU与内存之间的速度差异,提高系统性能;内存作为主要的存储设备,需要与外存进行数据交换以满足程序运行的需求;远程存储可以扩展本地存储资源的容量和可访问性。因此,在设计和实现计算机存储结构时,需要充分考虑各个部分之间的相互关系,以实现整体性能的最优化。存储结构如下图:

在这里插入图片描述

3、局部性原理

局部性原理是计算机科学中的一个概念,它指的是程序在执行时呈现出的局部性规律,即程序在一段时间内的执行通常局限于某些特定的部分。局部性原理具体可以分为以下两种形式:

  • 时间局部性:这是指如果一个数据或指令已经被访问过,那么它将很可能在不久的将来再次被访问。这种原理是基于程序执行时重复使用数据的倾向。例如,循环和递归等程序结构就会导致时间局部性的出现。
  • 空间局部性:这是指如果一个数据或指令已经被访问,那么与它在内存中相邻的数据也很可能将被访问。这是因为程序往往按顺序执行,连续的指令和数据存放在连续的内存位置上。

局部性原理对于计算机系统的设计有着重要的意义,尤其是在缓存设计、内存管理和页面置换算法等方面。例如,操作系统会根据这个原理来管理虚拟内存和物理内存之间的页面调度,以减少页缺失的发生,提高系统效率。

总的来说,局部性原理是现代计算机体系结构设计中的一个核心原则,它帮助设计者优化存储系统的性价比和性能。通过理解这一原理,可以更好地理解计算机是如何处理和存储数据的,以及如何设计出更高效的算法和系统架构。

4、高速缓存

在现代计算机系统中,高速缓存(Cache)是位于CPU与主内存之间的一种快速、小型的存储设备。它的主要作用是缓解CPU与主内存之间速度差异的问题,从而提高整个系统的运行效率。本文将介绍计算机高速缓存的基本概念、工作原理以及其对系统性能的影响。

4.1、基本概念

高速缓存是一种容量较小、速度较快的存储器,它存储了最近被CPU使用或预计即将被使用的数据和指令。由于高速缓存的速度接近甚至等同于CPU的速度,因此它可以迅速提供CPU所需的数据,避免了CPU等待从较慢的主内存读取数据的延时。

4.2、工作原理

高速缓存的工作原理基于局部性原理,即程序在执行时呈现出的时间局部性和空间局部性。时间局部性指的是如果某个数据或指令已经被访问过,那么它将很可能在不久的将来再次被访问;空间局部性指的是如果某个数据或指令已经被访问,那么与它在内存中相邻的数据也很可能将被访问。

4.3、层次结构

高速缓存层次结构是计算机存储体系中的一个重要组成部分,它通过多级缓存来提高数据访问速度和能源效率。以下是对CPU高速缓存层次结构的详细介绍:

  • L1缓存(一级缓存):L1缓存位于处理器核心内部,是最接近CPU的缓存。它分为数据缓存和指令缓存,用于存放即将执行的指令和数据。L1缓存的访问速度最快,但容量也最小。
  • L2缓存(二级缓存):L2缓存位于处理器核心外部,其容量比L1缓存大,访问速度略慢。L2缓存的主要作用是弥补L1缓存和主内存之间的速度差异,提供一个中间层次的存储,以减少对主内存的直接访问。
  • L3缓存(三级缓存):在多核处理器中,L3缓存作为共享缓存使用,为多个核心提供数据共享和保护机制。L3缓存的容量最大,访问速度相对较慢,它是整个处理器的最后一个缓存级别,在所有核心之间共享数据。

此外,在设计高速缓存时,还需要考虑到写回问题、缓存参数对性能的影响以及如何编写对高速缓存友好的代码等因素。这些因素共同决定了高速缓存的性能和效率。

4.4、对系统性能的影响

高速缓存对系统性能的影响主要体现在以下几个方面:

  • 提高CPU利用率:高速缓存可以迅速提供CPU所需的数据和指令,避免了CPU等待从较慢的主内存读取数据的延时,从而提高了CPU的利用率。
  • 减少主内存访问次数:高速缓存通过预取技术将预计即将被使用的数据提前加载到高速缓存中,从而减少了对主内存的访问次数。
  • 降低系统功耗:由于高速缓存的访问速度较快,因此可以减少系统的功耗。

总之,计算机的高速缓存是现代计算机体系结构中不可或缺的一个组成部分。它通过利用局部性原理来提高系统性能、降低功耗和成本。了解和掌握高速缓存的基本概念和工作原理有助于我们更好地理解计算机系统的运行机制和优化方法。

4.5、一致性问题

在多核处理器系统中,每个核心都有自己的cache,这就涉及到cache之间的数据一致性问题。系统需要通过一定的协议(如MESI协议)来确保不同核心的cache之间数据的一致性。

5、寄存器

计算机中的寄存器是CPU内部的小型存储区域,它们用于存放数据,包括参与运算的数据、运算结果以及一些CPU运行所需的信息。以下是对计算机寄存器的详细阐述:

5.1,种类

下面是一些常见类型的寄存器,如下:

  • 通用寄存器:用于一般目的的数据处理,如算术和逻辑运算。
  • 专用寄存器:设计用于特定功能,如索引寄存器或段寄存器。
  • 控制寄存器:存储关于CPU的控制信息,如状态标志和指令指针。

5.2,特点

  • 高速度访问:由于寄存器位于CPU内部,并且与CPU的内部总线相连,因此它们的访问速度非常快,通常只需要一个时钟周期即可访问。
  • 有限的容量:相比于其他存储设备,寄存器的容量非常小,因为它们的成本较高,但它们提供的快速访问对于CPU的操作至关重要。
  • 数据传送速度快:在寄存器之间的数据传送是非常快速的,这对于CPU执行指令和处理数据是非常重要的。

5.3、作用

  • 暂存数据:寄存器用来暂时存放参与运算的数据和运算结果,以及一些CPU运行需要的信息。
  • 指令执行:在执行指令时,寄存器存储操作数和指令代码,使得CPU能够快速地访问这些信息进行运算。

5.4、寄存器与缓存的差异

计算器寄存器与缓存在功能差异、访问速度和存储容量上有一定的区别。以下是具体分析:

  • 功能差异:寄存器是CPU的内部组成单元,用于暂存指令、数据和地址,是CPU运算时取指令和数据最快的地方。而缓存是一种暂时存储区域,它存储从内存提取的数据,以便快速访问。
  • 访问速度:寄存器的速度最快,可以在一个时钟周期内访问,因为它们是位于CPU内部的物理组件。相比之下,缓存的访问速度虽然比内存快,但仍然慢于寄存器,通常可以在几个时钟周期内访问。
  • 存储容量:由于寄存器的成本较高,它们的容量相对较小,通常只有几十个到几百个。缓存的容量介于寄存器和主内存之间,它利用局部性原理来提高数据访问效率。

总的来说,计算器寄存器与缓存在功能差异等方面有所不同。寄存器主要用于暂存CPU即将处理的指令和数据,而缓存则作为一个中间存储层次,存储频繁使用的数据以提高访问速度。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MybatisPlus实现数据权限隔离

引言 Mybatis Plus对Mybatis做了无侵入的增强,非常的好用,今天就给大家介绍它的其中一个实用功能:数据权限插件。 数据权限插件的应用场景和多租户的动态拦截拼接SQL一样。建议点赞收藏关注,方便以后复习查阅。 依赖 首先导入M…

【网安小白成长之路】7.burp基本使用

🐮博主syst1m 带你 acquire knowledge! ✨博客首页——syst1m的博客💘 🔞 《网安小白成长之路(我要变成大佬😎!!)》真实小白学习历程,手把手带你一起从入门到入狱🚭 &…

计算机网络3——数据链路层1

文章目录 一、介绍1、基础2、内容 二、数据链路层的几个共同问题1、数据链路和帧2、三个基本问题1)封装成帧2)透明传输3)差错检测 三、点对点协议 PPP1、PPP协议的特点1)PPP 协议应满足的需求2)PPP 协议的组成 2、PPP协…

vmware安装ubuntu-18.04系统

一、软件下载 百度网盘: 链接:https://pan.baidu.com/s/1fK2kygRdSux1Sr1sOKOtJQ 提取码:twsb 二、安装ubuntu系统 1、把ubuntu-18.04的压缩包下载下来,并且解压 2、打开vmware软件,点击文件-打开 3、选择我们刚刚解…

限制登录Linux服务器的几种方式

一.第一种方法 通过修改TCP Wrappers服务访问控制来实现限制登录Linux 1.这里以sshd服务为例,配置完成后,只允许配置允许的IP才能ssh连接本机服务器,其他IP拒绝判断某一个基于tcp协议的服务是否支持tcp_wrapper,要先判断它是否支…

【C语言】<动态内存管理>我的C语言终末章

<动态内存管理> 1. 为什么要有动态内存分配2. malloc和free2.1 malloc2.2 free 3. calloc和realloc3.1 calloc3.2 realloc 4.常见的动态内存错误4.1 对NULL指针的解引用操作4.2 对动态开辟空间的越界访问4.3 对非动态开辟内存使用free释放4.4 使用free释…

Linux下SPI设备驱动实验:实现SPI发送/接收数据的函数

一. 简介 前面文章介绍了SPI设备数据收发处理流程,后面几篇文章实现了SPI设备驱动框架,加入了字符设备驱动框架代码。文章如下: SPI 设备驱动编写流程:SPI 设备数据收发处理流程中涉及的结构体与函数-CSDN博客 SPI 设备驱动编写…

PgSQL之WITH Queries/Statement

PostgreSQL WITH 子句 在 PostgreSQL 中,WITH 子句提供了一种编写辅助语句的方法,以便在更大的查询中使用。 WITH 子句有助于将复杂的大型查询分解为更简单的表单,便于阅读。这些语句通常称为通用表表达式(Common Table Express…

基于有序抖动块截断编码的水印嵌入和提取算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 噪声测试 旋转测试 压缩测试 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................…

Spring(24) Json序列化的三种方式(Jackson、FastJSON、Gson)史上最全!

目录 一、Jackson 方案(SpringBoot默认支持)1.1 Jackson 库的特点1.2 Jackson 的核心模块1.3 Maven依赖1.4 代码示例1.5 LocalDateTime 格式化1.6 统一配置1.7 常用注解1.8 自定义序列化和反序列化1.9 Jackson 工具类 二、FastJSON 方案2.1 FastJSON 的特…

折叠面板组件(vue)

代码 <template><div class"collapse-info"><div class"collapse-title"><div class"title-left">{{ title }}</div><div click"changeHide"> <Button size"small" v-if"sho…

LeetCode-706. 设计哈希映射【设计 数组 哈希表 链表 哈希函数】

LeetCode-706. 设计哈希映射【设计 数组 哈希表 链表 哈希函数】 题目描述&#xff1a;解题思路一&#xff1a;超大数组解题思路二&#xff1a;拉链法解题思路三&#xff1a; 题目描述&#xff1a; 不使用任何内建的哈希表库设计一个哈希映射&#xff08;HashMap&#xff09;。…

SpringBoot基于RabbitMQ实现消息延迟队列方案

知识小科普 在此之前&#xff0c;简单说明下基于RabbitMQ实现延时队列的相关知识及说明下延时队列的使用场景。 延时队列使用场景 在很多的业务场景中&#xff0c;延时队列可以实现很多功能&#xff0c;此类业务中&#xff0c;一般上是非实时的&#xff0c;需要延迟处理的&a…

【讲解下常见的Web前端框架】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Linux-管道

目录 无名管道关闭未使用的管道文件描述符 管道对应的内存大小与shell命令进行通信&#xff08;popen&#xff09;命名管道FIFO创建FIFO文件打开FIFO文件 无名管道 管道是最早出现的进程间通信的手段。 管道的作用是在有亲缘关系的进程之间传递消息。所谓有亲缘关系&#xff…

【YOLOV5 入门】——Pyside6/PyQt5可视化UI界面后端逻辑

声明&#xff1a;笔记是做项目时根据B站博主视频学习时自己编写&#xff0c;请勿随意转载&#xff01; 一、环境安装 VScode/Pycharm终端进入虚拟环境后&#xff0c;输入下面代码安装pyside6&#xff0c;若用的Pycharm作为集成开发环境&#xff0c;也下载个pyqt5&#xff1a; …

移动Web学习07-适配单位vw/vh哔哩哔哩移动端vw单位适配案例

1.1、VW相对单位 前面我们已经学习了rem单位 &#xff0c;他是一个相对单位、相对于HTML表格字号大小 VW/VH也是一个相对单位&#xff0c;他是相对于视口的尺寸计算结果 VW&#xff1a;viewport width VH: viewport height <meta name"viewport" content"…

C语言之探秘:访问结构体空指针与结构体空指针的地址的区别(九十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

华为HarmonyOS 4.2公测升级计划扩展至15款新机型

华为近日宣布&#xff0c;HarmonyOS 4.2操作系统的公测升级计划将扩展到包括华为P50系列在内的15款设备。这一更新旨在为用户提供更优化的系统性能和增强的功能。 参与此次公测的机型包括华为P50、华为P50 Pro及其典藏版、华为P50E、华为P50 Pocket及其艺术定制版、华为nova系…

学习STM32第十四天

软件SPI读写W25Q64 一、简介 对W25Q64模块进行读写操作时&#xff0c;输出引脚配置为推挽输出&#xff0c;输入引脚配置为浮空或上拉输入。时钟、主机输出和片选都是输出引脚&#xff0c;主机输入是输入引脚。SPI协议是通过命令和数据进行通信&#xff0c;在硬件中使用移位寄…