操作系统-硬件结构(小林coding笔记)

2023-05-16

控制和管理整个计算机系统的硬件和软件资源;提供给用户和其他软件方便的接口和环境;主要包括进程管理、内存管理、文件系统、设备管理和网络系统

图灵机的工作方式

    基本思想就是用机器模拟人类用纸笔进行数学运算的过程。主要包含读写头、存储单元、控制单元、运算单元。

冯诺依曼模型

基本结构:运算器、控制器、存储器、输入设备、输出设备

内存

存储程序和数据,存储区域是线性的;基本单位是字节,一字节等于8bit。

中央处理器(CPU)

32位cpu一次可以计算4个字节;64位cpu一次可以计算8个字节。

内部常见的组件:寄存器、控制单元和逻辑运算单元。

寄存器主要存储计算时的数据,可以分为:通用寄存器(存放需要运算的数据)、程序计数器(存储cpu要执行下一条命令的内存地址)、指令寄存器(存放当前执行的指令)。

总线

用于cpu和内库以及其他设备直接的通信,可以分为:地址总线(指定cpu将要操作的内存地址)、数据总线(用于读写内存的数据)、控制总线(发送和接收信号)。

线路位宽和CPU位宽

        线路位宽最好一次就能访问到所有的内存地址,CPU想要操作内存地址就需要地址总线,那么操作4G大的内存,就需要32条地址总线,因为2^32=4G。

        CPU位宽最好不要小于线路位宽,最好和和线路位宽相匹配。

程序执行的基本过程

        CPU根据程序计数器里的内存地址,从内存里面把需要执行的指令读取到指令寄存器里面执行,然后根据指令长度自增,开始读取下一条指令。

        数据和指令是分开区域存放的,存放数据的是数据段,存放指令的是正文段。

指令

        指令周期:Fetch(取得指令),Decode(指令译码)、Execute(执行指令)、Store(数据回写)。

        指令类型:数据传输类型、运算类型、跳转类型、信号类型、闲置类型。

指令的执行速度:

        程序的CPU执行时间=CPU时钟周期数*时钟周期时间

                                         =指令数*CPI*时钟周期时间

存储器

        层次结构

                寄存器;CPU Cache(L1、L2、L3);内存;硬盘

        寄存器   :最靠近CPU的控制单元和逻辑计算单元的存储器,速度最快                   

        CPU Cache:用的是一种叫SRAM(静态随机存储器)的芯片,有电数据就保持存在,断电数据就会丢失。 

         内存:使用DRAM(动态随机存取存储器)的芯片。数据存储在电容里面,电容会不断漏电,所以要定时刷新电容,才能保证数据不丢失。

        SSD/HDD硬盘:SSD固态硬盘结构和内存类似,但断电后其数据还是存在的;HDD机械硬盘,通过物理读写方式访问数据,速度很慢。

        层次关系

        每个存储器只和相邻的一层存储器设备打交道。

         CPU Cache数据读取过程

                一个内存的访问地址,包括组标记、CPU Cache Line索引、偏移量三种信息。

                CPU Cache里的数据结构,是由索引+有效位+组标记+数据块组成。

        

         提升数据缓存的命中率:按照内存布局顺序访问,可以有效利用CPU Cache。

        提升指令缓存的命中率:和分支预测器有关,如果可以预测要执行的指令,就可以提前把指令放到缓存中,提高执行速度。

        提升多核CPU缓存命中率:把线程绑定到一个CPU核心上。

CPU缓存一致性

        CPU Cache的数据写入

                要把Cache中的数据同步到内存中。

                写直达:把数据同时写入内存和Cache中;

                写回:减少写回内存的频率,当发生写操作时,新数据仅仅被写入Cache Block中,只有当修改过得Cache Block(被替换)时才需要写到内存中。

        多核缓存一致性:需要同步两个不同核心里面的缓存数据,第一写传播:某个CPU核心里的Cache数据更新时,必须传播到其他核心的Cache。第二事务的串行化:某个CPU核心里对数据的操作顺序,必须在其他核心看起来是一样的。

        实现写传播的最常见方式是总线嗅探,把该事件广播通知到其他核心。

        MESI协议

        该协议基于总线嗅探实现了事务串行化,同时用状态机机制降低了总线带宽压力。

        MESI 协议,是已修改、独占、共享、已失效这四个状态的英文缩写的组合。

         CPU读写数据

                伪共享:多个线程同时读写一个Cache Line的不同变量时,导致CPU Cache失效的现象。

                避免伪共享:避免这些数据出现在同一个Cache Line中。利用宏定义使得变量在Cache Line中是对齐的。空间换时间

 CPU选择线程

        Linux中主要分为实时任务和普通任务,优先级越小,优先级越高。为了保障优先级高的任务先执行,分为了几种调度类。

        完全公平调度:让分配给每个任务的CPU时间是一样的,调度时会优先选择vruntime少的任务,以保证公平性。

        CPU运行队列:包含三个队列,Deadline运行队列dl_rq、实时任务运行队列rt_rq和CFS运行队列cfs_rq,其中cfs_rq是用红黑树来描述的,按vruntime排序的。

通过调整nice值来调整优先级

中断:系统响应硬件设备请求的一种机制。中断处理程序响应中断时可能会临时关闭中断,意味着其他中断无法被响应。

中断的处理程序分为上下两部分,上半部分直接处理硬件请求,也就时硬中断,下半部分由内核触发,也就是软中断,以内核线程的方式执行。      

计算机存储小数:以浮点数形式存储的,符号位:表示数字是正数还是负数;指数位:指定小数点在数据中的位置(要加偏移量);尾数位:小数点右侧数字也就是小数部分。

        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统-硬件结构(小林coding笔记) 的相关文章

随机推荐

  • 【记录】python搭建openpose环境遇到的坑(不能再多了。。)

    记录 python搭建openpose环境遇到的坑 xff08 不能再多了 xff09 背景 xff1a 重装的系统 xff0c anaconda3 1 坑1 xff1a 在anaconda下创建一个新的环境时遇见如下问题 xff1a Co
  • http请求报文与响应报文

    https blog csdn net weixin 45912307 article details 109454522 1 http get请求报文 请求行 GET HTTP 1 1 61 gt 请求方法 方式 请求的资源路径 http
  • 函数执行时堆栈的详细过程

    文章目录 1 函数示例2 main函数中局部变量入栈过程3 main函数调用sum函数参数压栈4 调用sum函数的准备5 调用sum函数6 sum函数执行结束7 处理sum函数的结果返回 1 函数示例 2 main函数中局部变量入栈过程 3
  • java get方式请求url

    public String sendGet String result 61 34 34 BufferedReader in 61 null 读取响应输入流 try 创建URL对象 java net URL connURL 61 new j
  • 做自动化项目的时候自由协议通信怎么做

    工业现场 xff0c 一些扫码枪 称重传感器的通信协议 xff0c 有可能是厂家自己规定的 比如下面我给大家看一段RFID设备的通信协议 xff0c 如果你不能理解它是在干什么 xff0c 那就要好好学习plc的自由协议通信 这边举一个典型
  • vue3 element-plus el-progress 圆形circle进度条 内置文字换行

    span class token operator lt span div span class token operator gt span span class token operator lt span el span class
  • 一文彻底搞懂激光雷达原理!

    点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 最近一直在搞激光雷达相关东西 xff0c 今天把了解的激光雷达知识做一个框架整理 xff0c 顺便梳理了一下行业里面激光雷达相关公司 xff0c
  • 基于深度学习网络 在可穿戴式机器人中使用IMU实现人体活动实时识别

    可穿戴式外骨骼机器人已成为支持人类运动的一种新兴高科技产品 xff0c 能够在人体康复训练 日常活动和制造任务中提供必要的运动支持 xff0c 而搭建高精度 低延迟的人体活动识别系统 xff0c 能够帮助可穿戴式机器人快速准确地识别人体活动
  • DAY19-20 PX4入坑成功

    这几天在研究科学上网 xff0c 我就不写出来了 总之 xff0c 我把PX4拉到了自己的电脑上 在入门的过程中 xff0c 我根据自己以前的学习习惯 xff0c 开始大面积地搜集教程视频 xff0c 可惜并没有 xff01 这下我瞬间没招
  • 记一次C++ std::cout未定义及大量报错处理

    原因是什么并不清楚 但无论怎么处理 xff0c cout lt lt xxxxx 都会报 cout 未定义 xff0c 并且强行编译会一直报错 我最终处理方法是把MinGW给卸载 xff0c 然后重新下载安装 结果是此方法完全可行
  • ubuntu16.04 针对rosdep init初始化报错的解决方案(一针见血版)

    Ubuntu16 04 ros安装以及出现的问题 一 更换国内源 二 添加ROS源 三 添加密钥 四 安装ROS 五 初始化ROS 一 更换国内源 先复制一份源文件 再更换源地址 sudo cp etc apt sources list e
  • Linux使用gcc编译报错对pthread_create未定义的引用

    在包含pthread h头文件后 还是报错未定义的引用 span class token operator span tmp span class token operator span cc6zqi5F span class token
  • 狂神说java java基础篇 学习笔记

    java基础的视频内容笔记都在这了前言等字数非常长的章节 xff0c 使用了AI语音识别成文字后修改的 xff0c 有错漏欢迎提出面对对象模块的按照自己的理解进行了内容修改 xff0c 可以对比原视频内容理解 xff0c 如有建议欢迎提出
  • 解决Ubuntu没有wifi图标的问题

    在配置过程中输入命令后就没有wifi图标了 xff0c 不能上网了 xff08 可能是删除了网卡驱动 xff09 后续使用命令查询网卡 hardware of Internet 状态 lshw C network 查看网卡状态发现 无线网被
  • 2022-11-15日Linux安装csitools问题及解决办法

    问题一 xff1a 执行完这三步后电脑没有wifi图标了 xff0c 不能联网了 sudo modprobe r iwldvm iwlwifi mac80211 sudo modprobe r iwlwifi mac80211 cfg802
  • win10扩展c盘容量(2022-11-17)亲测可用

    个人经验 xff1a 想要通过右键我的电脑 管理 磁盘管理 xff0c 将紧挨着C盘的E盘压缩一100G扩展给C盘 这种做法试了不行 xff0c 即使让可用空间挨着C盘 xff0c C盘的扩展卷选项也是灰色的 解决 xff1a 下载傲梅分区
  • S-V信道模型理解

    Saleh和Valenzuela提出的S V信道模型是基于大量室内信道测试构建的 xff0c 更加符合室内真实路径的传播规律 xff0c 可以用来进行信道建模与仿真 下图显示了具有多簇射线的S V信道模型 xff0c 该模型中多径以簇形式达
  • wifi收发数据包分析

    根据802 11n协议WIFI每次发送64字节数据 Intel5300网卡接收的数据包大小为213字节或者393字节或者573字节 说明接受的数据包包含多个发送的包 猜想每个数据包是由多个主体重复加上固定的标志位组成 x 61 1 2 3
  • 清华大学 | 摄像头-激光雷达的时空在线集成标定方法

    点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 后台回复 多模态综述 获取论文 xff01 后台回复 ECCV2022 获取ECCV2022所有自动驾驶方向论文 xff01 后台回复 领域综述
  • 操作系统-硬件结构(小林coding笔记)

    控制和管理整个计算机系统的硬件和软件资源 xff1b 提供给用户和其他软件方便的接口和环境 xff1b 主要包括进程管理 内存管理 文件系统 设备管理和网络系统 图灵机的工作方式 基本思想就是用机器模拟人类用纸笔进行数学运算的过程 主要包含