笔记目录大纲
- 1.存储技术
-
- 1.1 存储层次模型
- 1.2 随机访问存储器 RAM
-
- 1.2.1 静态RAM - SRAM(高速缓存)
- 1.2.2 动态RAM - DRAM(内存/主存)
-
- 1.2.2.1 内存模块
- 1.2.2.2 内存逻辑结构
- 1.2.2.3 内存的访问
- 1.2.2.4 增强DRAM
- 1.2.3 ROM(只读存储器)
- 1.3 持久存储器 - 磁盘
-
- 1.3.1 磁盘构造
- 1.3.2 磁盘容量
- 1.3.3 磁盘操作
- 1.3.4 闪存技术/固态硬盘
- 1.3.5 RAID磁盘冗余阵列技术
- 1.4 存储技术的局部原理
- 2. 总线
-
- 2.1 系统总线
- 2.2 内存总线
- 2.3 IO总线
- 2.4 总线按分工分类
- 3.I/O设备
-
- 3.1 输入输出实现模式
-
- 3.1.1 普通模式(数据流/忙等待)
- 3.1.2 中断
- 3.1.3 DMA(直接内存访问)
- 4. 二进制
-
- 4.1 十进制转二进制
- 4.2 二进制转十进制
- 4.3 八进制,十六进制
- 4.4 计算机数据表示形式
-
- 4.4.1 原码
- 4.4.2 反码
- 4.4.3 补码
- 5.编码/字符集
-
- 5.1 字符集
- 5.2 编码
- 6.链接
-
- 6.1 符号/符号表
- 6.2 目标文件
- 6.3 静态库
- 6.4 静态链接
- 6.4 动态链接
1.存储技术
计算机信息最终需要存储设备存储在时空区域,根据不使用的应用场景可以分为大小和速度。不同的存储技术构成了计算机的存储层模型,每个层次都有自己的责任和必要性。
1.1 存储层次模型
1.2 随机访问存储器 RAM
随机访问存储器 Random Access Memory
简称RAM,它分为静态和动态两类。速度,静态RAM比动态RAM访问速度更快,只需要几个时钟,但成本更贵。
1.2.1 静态RAM - SRAM(高速缓存)
将每个位置存储在元中存储每个位置,存储单元采用六晶体管电路。 CPU的寄存器、L1级、L2级、L使用3级高速缓存,详细描述后续文章。
1.2.2 动态RAM - DRAM(内存/主存)
将每个位置存储为电容器充电,每个单元由一个电容器和一个访问晶体管组成。计算机主存储采用DRAM实现,主存是一种临时存储数据的设备,从逻辑上讲,主存是一个线性字节数组,每个字节都有唯一的内存地址。
1.2.2.1 内存模块
DRAM芯片包装在内存模块中,插入主板的内存插槽。不同的处理器结构对内存引脚有不同的支持。在64操作系统中,DRAM芯片以64位为块,将数据传输到内存控制器,然后通过内存控制器编写数据。
1.2.2.2 内存逻辑结构
事实上,内存是一个逻辑的线性一维数组,但它将是DRAM为了减少芯片上地址的引脚数量,设计成二维阵列,但也有一个缺点,那就是地址搜索分为两个步骤,增加了时钟周期。如图所示,如果要从内存中找到(0,2)单元的数据,DRAM将银行数据复制到内部缓冲区,然后发送到内存控制器
,然后由内存控制器交互。
1.2.2.3 内存的访问
CPU通过总线电路和内存交互数据,交互步骤统称为总线事务
。 读事务
:从主存传输数据到CPU。 写事务
:从CPU传回数据到主存。
1.2.2.4 增强DRAM
如今,许多内存制造商会加速内存速度DRAM架构优化,优化手段常见快页模式
、FPM DRAM模式
、双倍速率同步DRAM
等。
1.2.3 ROM(只读存储器)
RAM如果断电会丢失数据,计算机需要一个可以在断电后保持数据的随机存储器,以支持计算机启动的准备。 ROM的特点是非易失
、只读
存储设备通常印在主板生成过程中。
1.3 持久存储器 - 磁盘
现代工业,RAM不能完全支持计算机的存储需求,磁盘
磁盘存储容量比的目的是解决大数据存储问题RAM大得多,现在磁盘成本低,工业技术要求不太高,现在磁盘容量往往是数百GB甚至数TB但磁盘最大的缺点是访问时间长。
1.3.1 磁盘构造
- 盘片
盘片
:多个磁盘形成基本磁盘,每个磁盘有两面,其表面覆盖着精密磁性材料 磁盘上的所有数据都存储在磁盘上。当计算机运行时,磁盘固定在主轴上 速运转。
- 主轴
主轴
:中轴固定盘旋转,主轴旋转驱动盘旋转。转速一般为5400~15000 /分,主轴转速越快,磁盘读写效率越高,但功耗和噪音也会增加。
- 磁臂
磁臂
:控制磁头在盘上方读取数据的设备 磁臂调度算法
:详细回答后续文章
- 磁头
磁头
:磁臂头位置的读写数据设备,跟随磁臂附着在盘子上方,通过盘子旋转,在盘子的磁道上读取磁信号。
- 磁道
磁道
:盘子上密密麻麻的沟壑叫磁道。换句话说,磁道是一组同心圆,一起形成磁盘。严格来说,数据存储在磁道上。
- 扇区
扇区
:将磁道细分为一段的逻辑概念伪连续
空间,每个空间都叫扇区,它的数据大小通常是512字节,连续扇区之间有狭窄的间隙 不存储数据,而是识别风扇区域的格式位置。
- 柱面
柱面
:这也是一个逻辑概念。柱面由多个磁盘组成,与主轴中心相等。
1.3.2 磁盘容量
磁盘容量由记录密
、磁道密度
、面密度
决定。
1.3.3 磁盘操作
磁盘控制器控制磁臂寻找数据道(寻道) -> 等待盘片旋转到指定位置 -> 感知磁信息 磁盘读取数据主要由3部分组成
- 寻道时间:平均3~9ms,最大可到几十毫秒
- 旋转时间:和转速有关,转速越快,耗时越短,通常<10ms
- 传输时间:通常<1ms,微妙级别
1.3.4 闪存技术/固态硬盘
固态硬盘基于闪存技术实现,其内部工作逻辑和常规磁盘差别很大,其内部数据以块 为单位进行存储,因为其使用块擦除技术,所以相较之普通磁盘,读写次数大打折 扣,但是其读写效率通常比普通机械磁盘快许多,因为避免了寻道、旋转时间。
1.3.5 RAID磁盘冗余阵列技术
现代计算机为了提高磁盘的读写效率,提出了RAID磁盘阵列的概念,操作系统统一对 接RAID接口,屏蔽了具体实现。RAID是将多个磁盘进行阵列组合,达到并行读写、 数据冗余的特点。
1.4 存储技术的局部性原理
// TODO,后续在操作系统章节详细剖析
2. 总线
总线
是一个贯穿整个系统的电子管道的总称,他的职责是将链接总线的设备信息进行提供信息传递的功能。通常总线会被设计成定长的字节块,简称字
。
2.1 系统总线
CPU内部可分为2个总线结构,其中CPU本地总线负责CPU高速缓存和CPU计算单元通信,其速度较快;其叫法还有后端总线、存储总线等。
2.2 内存总线
CPU和内存交互数据的总线线路的别称,CPU通过北桥的IO桥接器设备进行和内存数据交互。
2.3 IO总线
I/O总线是基于PCI/PCIe协议的数据总线统称,计算机I/O设备均与I/O总线对接,进行数据传递。
2.4 总线按分工分类
总线根据功能可划分为:
- 数据总线
- 地址总线
- 控制总线
3.I/O设备
I/O设备是系统与外部的联系通道,每个I/O设备都通过一个IO控制器/适配器
与计算机的I/O总线相连。 控制器
:插在电路板上的一组芯片,其功能是在IO设备和IO总线之间传递数据。
3.1 输入输出实现方式
CPU使用一种内存I/O映射
技术来向I/O设备发出命令。系统地址空间和I/O设备通信对应,每一个这样的地址称之为I/O端口
,当一个设备注册连接到总线时,就会与一个或多个端口相关联。
3.1.1 普通模式(数据流/忙等待)
1. 用户程序发出一个系统调用
1. 内核将其翻译为对应设备驱动程序的调用函数
1. 驱动程序启动I/O,并不断轮询检查设备
1. I/O结束,驱动程序将数据通过总线传送到指定内存地址
3.1.2 中断
同普通模式一样,只不过设备驱动程序不需要轮询检查,在I/O进行过程中,CPU可以调度其它程序,等I/O完毕时,设备驱动程序发出中断
通知CPU完成操作,CPU后续进行逻辑处理。
3.1.3 DMA(直接内存访问)
DMA是一种特殊的芯片,它可以控制设备控制器和内存数据交互的数据流,无需CPU干预。
1. CPU通过设置DMA控制器的寄存器,告诉数据需要传送到目的地址、磁盘扇区信息等。
1. DMA控制器负责和I/O控制器进行I/O数据交互。
1. DMA每完成一个数据块,给CPU发出一个中断来通知CPU。
4. 二进制
现代计算机几乎是使用二进制的表示形式来处理数据,逢二进一,只有0和1两个数字表示,每一个数字表示一位,bit;
4.1 十进制转二进制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-chP9RWJv-1656240472801)(https://cdn.nlark.com/yuque/0/2022/svg/393019/1643375477224-ab8d9e36-e2cf-46b5-b2fe-a8ef2d93ccea.svg#clientId=u9594b452-4e71-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u0f3f11d5&margin=%5Bobject%20Object%5D&originHeight=27&originWidth=478&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u722c62c3-f3f4-48f8-952c-69e0f2c1202&title=)]
4.2 二进制转十进制
4.3 八进制、十六进制
4.4 计算机数据表示形式
因为计算机只有加法运算,没有减法,所谓的减法都是通过二进制位加法运算进行,所以计算机对二进制的表示有了补码。
4.4.1 原码
正数的原反补三码一致
4.4.2 反码
4.4.3 补码
对于负数而言,将其绝对值的原码取反,0变1,1变0,然后+1
5.编码/字符集
5.1 字符集
规定了计算机表示字符的集合,常见的字符集有:
- ASCII字符集:诞生于
美国,一共128个字符 - ISO 8859系列字符集:比ASCII添加了一些西欧符合,一共256个字符 - GB2312字符集:中国,三千多字符集 - Unicode字符集:通用字符集
5.2 编码
基于不同的字符集,每种字符集在计算机系统中可以有不同的编码规则,目前使用广泛的Unicode字符集的编码方式极为常见:
- UTF-8编码
- UTF-16编码
其中,UTF8和UTF16采用变长方案,UTF-8是1个字节的码元,UTF-16使用2个字节码元。UTF-8同样兼 容ASCII码,目前UTF-8编码已经超过ASCII的使用市场。
6.链接
链接
是将各种代码片段和数据片段收集、组合为一个单一的文件的过程,文件被加载到内存中可执行。现代的计算机系统是通过链接器
程序工作完成。
6.1 符号/符号表
每一个可重定位目标模块都有一个符号表,包含了模块定义和引用的符号信息,其中包括3类符号:
- `全局符号`:能够被其它模块引用的符号
- `外部符号`:有其它模块定义,并被本模块引用的符号
- `局部符号`:只被本模块定义和引用的符号
6.2 目标文件
- `可重定位目标文件`:包含二进制代码和数据,在编译时与其它可重定位目标文件合并。
- `可执行目标文件`:包含二进制代码和数据,可直接被复制到内存并执行。
- `共享目标文件`:特殊的可重定位目标文件,可以再运行时被动态加载到内存。
6.3 静态库
静态库
:编译器将相关目标模块打包成为一个单独的文件。
6.4 静态链接
以一组可重定位目标文件和命令参数为输入,生成一个可运行的可执行文件为输出,其过程有2个主要任务:
1. 符号解析:将文件每一个符号引用和符号表定义符号关联起来。
1. 重定位:链接器通过吧每个符号定义与内存地址相关联,以修改这些符号引用,从而指向内存地址。
6.4 动态链接
在程序运行时,加载共享库的函数代码资源,并和本程序践行链接,形成一个完整的程序。因为库函数是共享的,所以减少了程序大小,相较之静态链接,动态链接性能下降5%,但是节省了空间。