黄小华的个人网站
熬过无人问津的日子才有诗和远方!
内存和磁盘结构及存取原理

一 磁盘(disk)也就是我们电脑的硬盘,磁盘由以下5个组织构成

像MYSQL数据库存储的数据就是在磁盘中 即使断电数据也不会消失,不过性能没有基于内存的Redis高
QQ截图20200401232430.png

1.盘片(platter)

磁盘中一般有多个盘片组成,每个盘片包含两个面,上下两面各一个读/写磁头。受到硬盘整体体积和生产成本的限制,盘片数量一般在5片以内。 盘面的编号自下而上,最底为第0面。

2.磁头(head)

磁头可以沿磁盘半径方向运动(寻道),不同磁头以磁头号来区分,
QQ截图20200402001103.png

3.磁道(track)

磁道是磁盘旋转时磁头在盘面划出的一个圆形轨迹,以磁道号区分,由最外(0磁道)到内编号

4.扇区(sector)

扇区是磁道上的一个弧段,是磁盘的最小组成单元,通常是256个字节大小,(有些厂商是4k)
QQ截图20200402002159.png

5.柱面(cylinder)

相同编号的磁道形成一个圆柱,称之为磁盘的柱面,它的数量与磁道数相同

磁盘存储容量计算

存储容量 = 磁头数 × 磁道数 × 每道扇区数 × 每扇区字节数
如上图容量为6 * 7 * 12 * 512 = 258048(25G)

磁盘读取响应时间

寻道时间:磁头从开始移动到数据所在磁道所需要的时间,寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms,一般都在10ms左右。
旋转延迟:盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间,旋转延迟取决于磁盘转速。普通硬盘一般都是7200rpm,慢的5400rpm。
数据传输时间:完成传输所请求的数据所需要的时间。
读写一次磁盘信息所需的时间可分解为:寻道时间、延迟时间、传输时间。为提高磁盘传输效率,软件应着重考虑减少寻道时间和延迟时间

块是虚拟出来的,磁盘块是操作系统与磁盘打交道的最小单位,一个块可以包括2的n次方个扇区
块的出现是为了读取方便,由于扇区比较小,数目众多在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。 分离对底层的依赖 块也是操作系统中最小的逻辑存储单位,操作系统可以忽略对底层物理存储结构的设计。

二 内存(RAM)随机读写存储器

由于存储介质的特性,主存存取速度快,存取速度是磁盘的几百倍,像Redis就是直接操作内存的 速度快 但是断电存储的数据会消失
主存是一系列的存储单元(晶体管)组成的矩阵,通过行地址和列地址可以定位唯一存储单元,
主存存取过程:当系统需要读取主存时,将地址信号放到地址总线,主存读到地址信号,后解析信号并定位指定存储单元,
然后将此存储单元数据放到数据总线,供其它部件读取;
写主存:系统将要写入单元地址和数据分别放在地址总线和数据总线,主存读取两个总线的内容,做相应的写操作
QQ截图20200402004230.png

页(page)

页操作系统与内存进行通信的最小基本单位,是虚拟的概念。与硬盘打交道,就是以块为最小单位。

计算机科学著名的局部性原理

当一个数据被用到时,其附近的数据也通常会马上被使用。(磁盘读取会有被预读,相比如寻道时间,只需很少的旋转时间就能完成磁盘顺序读取,减少IO操作。)
预读(数据从磁盘读到内存中)的长度一般为页(page)的整数倍。页是计算机存储器的逻辑块,页的大小通常为4K。

计算机存储缓存

寄存器 64bit: CPU工作台,存放计算数据的地方
一级缓存L1 4x 64K
二级缓存L2 4x 256K
三级缓存L3 8MB
内存 4GB
磁盘 500GB