linux菜鸟私房菜读书心得,鸟哥的私房菜读书笔记——磁盘

概述

程序员应该更加深入的理解一个计算机系统,包括它的硬件系统和软件系统。今天一起看看计算机内部的硬盘(我们主要看的是传统的磁盘)的构造以及它与主板的接口主要有哪些。这里主要是介绍一下硬件系统,不涉及与磁盘息息相关的文件系统(file system)。

磁盘的构造

A hard disk drive (HDD) is a data storage device used for storing and retrieving digital information using one or more rigid ("hard") rapidly rotating disks (platters) coated with magnetic material. The platters are paired with magnetic heads arranged on a moving actuator arm, which read and write data to the platter surfaces.Data is accessed in a random-access manner, meaning that individual blocks of data can be stored or retrieved in any order rather than sequentially. HDDs retain stored data even when powered off.

一图胜千言,这张图找了半天,上图:

cee768f88b6bdaa5e08f9707e195d4c6.png

硬盘是由盘片、机械手臂、磁头、主轴马达组成。实际的数据都是写在具有磁性物质的盘片上,读写则是通过机械手臂的上的读取头(head)完成。实际运行时,主轴马达让盘片转动,机械手臂通过伸展,使得读取头在盘片上进行读写的操作。且由于单一的盘片的存储量有限,因此,有的硬盘内部会有两个以上的盘片。

盘面上的数据的具体的存储方式是怎样的呢 ?这个就得深入到细节了,如下图所示,整个盘面上, 可以看做是多个同心圆绘制出的饼形图,由圆星以发射状的方式分割出磁盘的最小的存储单位,即扇区(sector),其大小为512bytes.其中第一个扇区最重要,因为第一个扇区包含了两个重要的记录,1.主引导分区(Master Boot Record,MBR),446字节,The MBR holds the information on how the partitions, containing file systems, are organized on that medium. The MBR also contains executable code to function as a loader for the installed operating system—usually by passing control over to the loader's second stage, or in conjunction with each partition's volume boot record (VBR). This MBR code is usually referred to as a boot loader.;2.分区表(partition table),64字节,记录了整块硬盘的分区的状态。而扇区组成一个圆就成了磁道(track);在多盘硬盘上,所有的盘面上的磁道可以组成一个柱面(cylinder)。图中的实例上有8个读写头,4个盘面。因此,直观上就可以知道,硬盘存储量的计算公式:head*cylinder/head*sector/cylinder*512bytes/sector.即,每一个无限划分的sector的存储量的总和。也可以理解成每个head所能伸缩到的cylinder上的所有的sector上的存储容量之和。

早期系统就是直接使用磁头柱面和扇区来对硬盘进行寻址(这称为CHS寻址),这需要分别存储每个区域的三个参数(这称为3D参数),使用时再分别读取三个参数,然后再在送到磁盘控制器去执行。由于系统用8b来存储磁头地址,用10b来存储柱面地址,用6b来存储扇区地址,而一个扇区共有512B,这样使用CHS寻址一块硬盘最大容量为256 * 1024 * 63 * 512B = 8064 MB

172fbcf8ffe119ac87067a6a6cad196c.png

磁盘与主板之间的接口

硬盘与主机系统的系统总线通过特定的传输接口相连。

IDE and SATA are different types of interfaces to connect storage devices (like hard drives) to a computer's system bus. SATA stands for Serial Advanced Technology Attachment (or Serial ATA) and IDE is also called Parallel ATA or PATA. SATA is the newer standard and SATA drives are faster than PATA (IDE) drives. For many years ATA provided the most common and the least expensive interface for this application. But by the beginning of 2007, SATA had largely replaced IDE in all new systems.

The ATA interface (ATA stands for AT attachment where "AT" refers to IBM's PC/AT for which it was originally built) evolved in stages from Western Digital's original Integrated Drive Electronics (IDE) interface. After the introduction of Serial ATA in 2003, the original ATA was retroactively renamed Parallel ATA.

1ac9461d9b82bb8af57ac05a5d2b6ee2.png

SATA的数据线占用的空间更小,散热性能更优。SATA3.0传输数据的能力远远优于PATA(IDE),达到了600MB/s;且支持热插拔,即使主机正在运转,也可以拆卸旧的的硬盘,安装新的硬盘。如下图,左边的是PATA(IDE)传输接口的硬盘,右边的是SATA接口的硬盘。硬盘都需要适配器与主板相连接,来屏蔽掉底层的硬件细节,从而使得两种硬盘可以适配到不同的主板上,但是需要注意的是,同样的主板一次只能选择其中一种规格的硬盘而不能混搭使用。这是由于系统读写文件时需要一致的步调来驱动机械臂和数据传输接口,混搭使用显然是不符合要求的。现在大多数的PC机的硬盘使用的是SATA规格的数据传输接口。值得指出的是,USB这种规格的数据传输接口也是一种类似于上面介绍的硬盘与主板之间的接口类似的接口,比如说,当U盘连接到电脑时,可以将这个U盘视为一个普通的磁盘,只是容量和存储、读写机制不一样而已。

947ae9a33e436ec01d46b47cac51347f.png

磁盘分区

磁盘分区的重要性在于

保证数据的安全性,由于每个分区的数据是分开的,相对处在一种比较独立的状态下,因此,当需要对某个分区的数据重整时,如,重装系统,你只需要将装载系统的那个磁盘里的重要文件事先备份到其他分区。

分区后系统性能会更好。由于分区会将数据集中在某个柱面(cylinder)的特定的区段,当读写特定分区的数据的时候,只用搜寻对应的柱面范围即可,而不必全盘检索,这就大大提高了数据读取的速度和性能。

固态硬盘

现在大家最喜爱的硬盘是固态硬盘。那么固态硬盘与我上面说的,构造有些不同。

SSDs have no moving (mechanical) components. This distinguishes them from traditional electromechanical magnetic disks such as hard disk drives (HDDs) or floppy disks, which contain spinning disks and movable read/write heads.固态硬盘的价格更高,抛开价格因素不谈,固态硬盘的性能更优,只是由于闪存的次数是有限的,因此,固态盘的寿命对于那些发烧级的电脑用户来说有点遗憾,不过,现在的固态硬盘的技术都足以确保大多数情况下,你的硬盘还好好的,你却已经爱上了别的一款性能更优的超极本。

-Linux内核启动-内核的生成...........................................2 读核感悟-Linux内核启动-从hello world说起...................................3 读核感悟-Linux内核启动-BIOS.................................................5 读核感悟-Linux内核启动-setup辅助程序........................................6 读核感悟-Linux内核启动-内核解压缩...........................................8 读核感悟-Linux内核启动-开启页面映射.........................................9 读核感悟-Linux内核启动-链接脚本............................................11 读核感悟-伪装现场-系统调用参数.............................................13 读核感悟-伪装现场-fork()系统调用...........................................15 读核感悟-伪装现场-内核线程:...............................................17 读核感悟-伪装现场-信号通信.................................................19 读核感悟-kbuild系统-内核模块的编译.........................................22 读核感悟-kbuild系统-编译到内核和编译成模块的区别...........................24 读核感悟-kbuild系统-make bzImage的过程.....................................26 读核感悟-kbuild系统-make menuconfig........................................31 读核感悟-文件系统-用C来实现面向对象........................................32 读核感悟-设计模式-用C来实现虚函数表和多态..................................32 读核感悟-设计模式-用C来实现继承和模板......................................33 读核感悟-设计模式-文件系统和设备的继承和接口...............................34 读核感悟-设计模式-文件系统与抽象工厂.......................................36 读核感悟-阅读源代码技巧-查找定义...........................................37 读核感悟-阅读源代码技巧-变量命名规则.......................................42 读核感悟-内存管理-内核中的页表映射总结.....................................43 读核感悟-健壮的代码-exception table-内核中的刑事档案.......................44 读核感悟-定时器-巧妙的定时器算法...........................................45 读核感悟-内存管理-page fault处理流程.......................................45 读核感悟-文件读写-select实现原理...........................................47 读核感悟-文件读写-poll的实现原理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值