硬盘的原理学习

了解硬盘的原理对于编程,做数据优化(比如磁盘i/0瓶颈,机械硬盘慢的原因)都是有好处的。

以前总觉得不太需要了解这些,但是越是做到后面,发现,了解计算机各个组件的原理,其实才能理解更加深入的知识,否则永远只是一个敲代码的工人。

<数据库系统的实现>里面之所以开辟一个专门的章节讲解磁盘的原理,是理解到磁盘在数据库优化中的重要地位。

总结知识点(包含我的疑问,以后补充):

盘片。一个盘片有两个盘面:上盘面和下盘面。

每个盘面都要配置一个磁头来读取里面的数据。

我疑问在于:

磁盘的控制器竟然能够做到这么精准,能够识别出盘面的某个点已经旋转到我这里来了,马上读取数据。

是不是这样子,盘片就的主轴就是负责旋转就可以了,不停的旋转,磁盘控制器控制磁头读取盘片上的数据。

我表示非常感叹,吃惊。竟然能够这么精准得做到控制。

一个1tb的和500g的磁盘,是盘片数量的增加,还是盘片体积增加呢。

我看到3.5寸的磁盘,以前也是350g的。而2.5寸的磁盘,能够做到500g。这样说明与体积无关。

那是如何计算硬盘的容量大小的呢。

先看有多少个盘面。假设是4个盘面(我的笔记本硬盘坏了,我拆开看)

然后计算每个盘面的容量大小,那么就把4个盘面的大小加起来。

要想知道一个盘面的容量大小。先求出这个盘面有多少个磁道(即同心园)。一般是65536的磁道的(2的16次方个)。

每个磁道里面存储数据的地方实际上是扇区。是把磁道划分为相同大小空间的扇区。扇区之间有一点点间隙,这个间隙没有被磁化为0和1标识。

一个磁道,大概含有256个扇区。

一个扇区的大小是4096个字节。

于是大小就出来了:

4*(65536*256*4096)=274877906944字节。

262144M。转换成g单位,就是256g?

奇怪了,那么笔记本的磁盘500g看来是错误了。是哪里错误了,磁道数错误了吗?

硬盘控制器其实也有一个缓存的,网上是这么介绍:

缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。

时间: 2024-10-14 20:21:47

硬盘的原理学习的相关文章

Android自复制传播APP原理学习(翻译)

 Android自复制传播APP原理学习(翻译) 1 背景介绍 论文链接:http://arxiv.org/abs/1511.00444 项目地址:https://github.com/Tribler/self-compile-Android 吃完晚饭偶然看到这篇论文,当时就被吸引了,马上翻译总结了一下.如有错误欢迎斧正. 该论文的研究出发点比较高大上这里我们就不多说了,简而言之就是想通过移动设备来实现一个自组网,在发生灾难的时候,手机之间能够自动传输关键数据,减少损失.整个目标通过设计一个能够

编译原理学习导论

编译原理学习导论 大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,但是编译原理却一直作为大学本科的必修课程,同一时候也成为了研究生入学考试的必考内容.编译原理及技术从本质上来讲就是一个算法问题而已,当然因为这个问题十分复杂,其解决算法也相对复杂.我们学的数据结构与算法分析也是讲算法的,只是讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比較专注解决一种的算法了.在20世纪50年代,编译器的编写一直被觉得是十分困难的事情

linux 文件系统的管理 (硬盘) 工作原理

一.系统在初始化时如何识别硬盘 1.系统初始时根据MBR的信息来识别硬盘,其中包括了一些执行文件就来载入系统,这些执行文件就是MBR里前面446bytes里的boot loader 程式,而后面的16X4的空间就是存储分区表信息的位置:如下图 2.在分区表中,主要储存了以下信息:(1)分区号,常见的分区号有以下几种:其它编号可以使用fdisk指令,再执行 l (小写L) 查看 0x5 (or 0xf) 扩展分区 0x82 Linux swap 0x83 Linux 0x8e Linux LVM

编译原理学习笔记 -- 绪论1

1. 语言处理器 语言处理系统 _________ 经过预 _______ 源程序 --> |预处理器| --> 处理的 --> |编译器| --> 目标汇编程序 -------- 源程序 ------- _______ 可重定位的 ______________ --> |汇编器| --> 机器代码 --> |链接器/加载器| --> 目标机器代码 ------- -------------- ↑ 库文件/可重定位对象文件 预处理器:把源程序聚合在一起,并宏

计算机原理学习(7)-- x86-32 CPU和内存管理之分段管理

前言 前一篇我们介绍了内存管理中的分页试内存管理,分页的主要作用就是使得每个进程有一个独立的,完整的内存空间,通过虚拟内存技术,使得程序可以在较小的内存上运行,而进程之间内存空间相互独立,提高了安全性.这一篇将主要介绍内存管理中分段管理,以及两种的结合,也是目前计算机普遍采用的段页式内存管理.这也直接决定了的后面程序的编译,加载以及允许时的内存布局. 1. 内存分段 1.1 为什么分段? 在x86-16体系中,为了解决16位寄存器对20位地址线的寻址问题,引入了分段式内存管理.而CPU则使用CS

硬盘读写原理

转自:http://blog.csdn.net/hguisu/article/details/7408047 硬盘的种类主要是SCSI .IDE .以及现在流行的SATA等:任何一种硬盘的生产都要一定的标准:随着相应的标准的升级,硬盘生产技术也在升级:比如 SCSI标准已经经历了SCSI-1 .SCSI-2.SCSI-3:其中目前咱们经常在服务器网站看到的 Ultral-160就是基于SCSI-3标准的:IDE 遵循的是ATA标准,而目前流行的SATA,是ATA标准的升级版本:IDE是并口设备,

编译原理学习

编译原理学习笔记---- 不确定有穷自动机(NFA) 一个不确定的有穷自动机T是一个五元组,M={K,∑,f,S,Z} ⒈K是一个有穷集他的每一个元素称作一个状态. ⒉∑是一个字母表,他的每一个元素称为一个输入符号. ⒊f是一个从Kx∑*到K的子集映射即K*∑*->2^K,其中2^K表示K的幂集. ⒋S包含于K集,是一个非空初态集合. ⒌Z包含于K是一个非空的终态集合. 确定有穷自动机(DFA) 一个确定的有穷自动机M是一个五元组:M=(K, ∑,f,S,Z)其中, 1)K是一个有穷集,他的每个

硬盘工作原理

硬盘的种类主要是SCSI .IDE .以及现在流行的SATA等:任何一种硬盘的生产都要一定的标准:随着相应的标准的升级,硬盘生产技术也在升级:比如 SCSI标准已经经历了SCSI-1 .SCSI-2.SCSI-3:其中目前咱们经常在服务器网站看到的 Ultral-160就是基于SCSI-3标准的:IDE 遵循的是ATA标准,而目前流行的SATA,是ATA标准的升级版本:IDE是并口设备,而SATA是串口,SATA的发展目的是替换IDE: 我们知道信息存储在硬盘里,把它拆开也看不见里面有任何东西,

Java锁原理学习

Java锁原理学习 为了学习Java锁的原理,参照ReentrantLock实现了自己的可重入锁,代码如下: 先上AQS的相关方法: // AQS = AbstractQueuedSynchronizer, 抽象队列同步器 // 它提供了对资源的占用.释放,线程的等待.唤醒等接口和具体实现 // 它维护了一个volatile int state来代表共享资源的状态,和一个FIFO线程等待队列 // 获取排它锁 // 先尝试获取锁,如果获取不到则添加到等待队列 // 等待队列通过 LockSupp