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

文章详细介绍了计算机系统的基础构成,包括冯诺依曼模型的五大组成部分,CPU的结构,内存的存储方式,以及存储器的层次结构,如寄存器、Cache、内存和硬盘。还涉及到CPU的位宽、程序执行过程、指令类型、中断处理和浮点数的存储。
摘要由CSDN通过智能技术生成

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

图灵机的工作方式

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

冯诺依曼模型

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

内存

存储程序和数据,存储区域是线性的;基本单位是字节,一字节等于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值来调整优先级

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

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

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

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值