Problem Description有非常多从磁盘读取数据的需求,包含顺序读取、随机读取。为了提高效率,须要人为安排磁盘读取。然而,在现实中,这样的做法非常复杂。我们考虑一个相对简单的场景。磁盘有很多轨道,每一个轨道有很多扇区,用于存储数据。当我们想在特定扇区来读取数据时,磁头须要跳转到特定的轨道...
分类:
其他好文 时间:
2014-07-01 17:43:54
阅读次数:
183
说明:MBR:MasterBootRecord(主引导记录)DBR:DOSBootRecord(引导扇区)FAT:FileAllocationTable(文件分配表)硬件:本文SD卡为Kingston4GB,FAT32格式,簇大小4KB,每扇区512字节。第一章硬盘结构与SD卡结构1.1硬盘介绍1....
分类:
其他好文 时间:
2014-06-30 23:09:50
阅读次数:
321
使用dmesg检查是否有关于磁盘错误的信息,果不其然发现大量磁盘扇区错误的信息,如下:end_request:I/O error, dev 03:06 (sda), sector 从上面的输出我们判定扇区可能出现了问题,使用badblocks -s -v -o /root/badblocks.log...
分类:
系统相关 时间:
2014-06-30 15:27:18
阅读次数:
330
注:本文仍然主要来自《writeos-1.0-2-weekly》 一、加载指定扇区支指定空间 《运行自己的操作系统(linux版) -0.01》提到读入启动扇区,那是由硬盘自动完成的。 若要读入其它扇区到一个特定的内存空间,就要自己写代码完成,使用底层BIOS系统提供的BIOS 13h号中断,如图:...
分类:
其他好文 时间:
2014-06-28 09:57:43
阅读次数:
261
minfo命令——ms-dos文件系统的各项参数的显示minfo这个指令主要用于显示MS-DOS文件系统的各项参数,包括扇区数、磁头数、柱面数等。参数主要有以下几个:-v 显示详细的参数drive 指定驱动显示系统C盘的参数信息并显示启动扇区内容。[root@redhat ~]# minfo ...
分类:
系统相关 时间:
2014-06-27 11:07:11
阅读次数:
228
在BIOS触发0x19中断将磁盘的第一个扇区(512B)加载到内存中后,计算机才真正开始执行磁盘上的程序。而这512B的程序bootsect.s中的第一批代码,此时处理器还处于实模式内存寻址的最大范围是1M(0x0000-0xFFFF),接下来我们看看在bootsect.s的第一批代码中做了些什么?...
分类:
系统相关 时间:
2014-06-24 19:09:03
阅读次数:
291
hdparm - 获取/设置硬盘参数
总览
hdparm [ -a [扇区数] ] [ -A [0|1] ] [ -c [芯片组模式] ] [ -C ] [
-d [0|1] ] [ -f ] [ -g ] [ -i ] [ -k [0|1] ] [ -K [0|1] ] [ -L [0|1] ]
[ -m [扇区数] ] [ -p [0|1|2|3|4|5] ] [ -P [扇区数] ...
分类:
其他好文 时间:
2014-06-22 19:34:37
阅读次数:
228
我们知道硬盘的读取速度是很慢的,那么如何实现文件系统才能让计算机更加高效呢?这时候就要引入B树的概念了。B树是平衡二叉树的推广形式,它的每个节点可以有很多的子节点。子节点的数量取决于扇区的大小。因为硬盘读取一个扇区的开销是最节省时间的。
下图展示了B树的样子,每个节点可以有多个子节点。
平衡树的应用
红黑树有着广泛的应用
...
分类:
其他好文 时间:
2014-06-16 11:52:50
阅读次数:
146
我们看\projects\03_day\harib00j中的文件ipl10.nas:
相当于一个boot源文件,它使用int 0x13
ah=0x2加载某些扇区的文件(loader+kernel)到内存0x从c200中asmhead.nas:相当于一个loader源文件,作用是1.设置VGA为320...
分类:
其他好文 时间:
2014-06-16 11:10:32
阅读次数:
174
在准备替换或加装硬盘时,如何得到硬盘信息?可以用smartctl,hdparm等命令来查询。在日志中显示硬盘有坏扇区tail
/var/log/messagesMar1 09:42:55 c1g smartd[1848]: Device: /dev/hda, 2 Currently
unreadab...
分类:
其他好文 时间:
2014-06-13 20:27:42
阅读次数:
921