【计组OS】访存过程以及存储层次化结构

2024-05-08 03:36

本文主要是介绍【计组OS】访存过程以及存储层次化结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                                                                            苏泽 

本专栏纯个人笔记作用 用于记录408 学习的笔记记录(敲了两年码实在不习惯手写笔记了)

                                                         如果能帮助到大家当然最好   

但由于是工作后退下来备考 很多说法和想法都会结合实际开发的思想 可能不是那么的纯粹应试

希望大家挑选自己喜欢的口味食用    仅供参考


首先捋清楚 存储体系的层次化结构  我把知识整理成了这样的一张图

那么我们就能很清晰的在这张图上面理解到CPU在访问存储数据的过程

  1. Cache 访问

    • CPU尝试从Cache中获取所需的数据。
    • 如果Cache命中(Cache Hit),则直接从Cache中读取数据,完成访存操作。
  2. TLB 查询

    • 如果Cache未命中(Cache Miss),CPU接下来会检查TLB(Translation Lookaside Buffer)。
    • TLB是一种特殊的存储器,用于快速地址转换,存储最近访问的页表条目。
    • 如果TLB命中(TLB Hit),则使用TLB中的信息完成地址转换。
  3. 页表查询

    • 如果TLB未命中(TLB Miss),CPU将访问页表进行地址转换。
    • 页表存储逻辑地址到物理地址的映射关系。
    • 操作系统维护页表,其中包含有效位,指示对应的页面是否在物理内存中。
  4. 有效位检查

    • 在页表中找到对应的页表项后,CPU检查该项的有效位。
    • 如果有效位为1,表示数据在主存中,CPU可以继续访问主存以获取数据。
  5. 缺页异常处理

    • 如果有效位为0,表示数据不在主存中,即发生了缺页异常(Page Fault)。
    • 缺页异常处理程序被调用,操作系统开始处理这一异常。
  6. 辅存访问

    • 操作系统确定辅存中数据的位置,通常通过页面置换算法的数据结构来选择一个页面进行置换。
  7. 数据加载与页表更新

    • 操作系统从辅存中加载缺失的数据到主存。
    • 加载完成后,操作系统更新页表,将新的物理地址映射到原来的逻辑地址。
  8. 重新尝试访问

    • 页表更新后,操作系统会重新执行导致缺页异常的指令。
    • CPU再次尝试访问数据,这次数据应该已经在主存中,可以成功访问。
  9. 继续执行程序

    • 一旦数据被加载到主存并且页表被更新,CPU可以继续执行程序,就像没有发生缺页异常一样。

这篇关于【计组OS】访存过程以及存储层次化结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/969192

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

Solr 使用Facet分组过程中与分词的矛盾解决办法

对于一般查询而言  ,  分词和存储都是必要的  .  比如  CPU  类型  ”Intel  酷睿  2  双核  P7570”,  拆分成  ”Intel”,”  酷睿  ”,”P7570”  这样一些关键字并分别索引  ,  可能提供更好的搜索体验  .  但是如果将  CPU  作为 Facet  字段  ,  最好不进行分词  .  这样就造成了矛盾  ,  解决方法