b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

in/指令读写端口访问ATA硬盘每个硬盘控制器分配了8个8-bit端口

电脑杂谈  发布时间:2021-04-23 08:00:46  来源:网络整理

词汇表:气缸,缸盖,缸盖

使用柱面号,头号和扇区号形成地址的寻址方法称为CHS

在实模式下,有两种访问ATA硬盘的方法,调用BIOS INT 13中断例程,并直接使用IN / OUT指令读写相应的端口。本文介绍了两种方法,CHS寻址模式的接口和硬盘容量的限制。输入/输出指令读写端口,用于访问ATA硬盘

每个硬盘控制器分配有8个8位端口,其中4个端口中的28位用于寻址(其余4位用于设置一些控制信息)。如果寻址模式为LBA28,则扇区从0开始计数,总共支持2 ^ 28个扇区,硬盘容量限制为2 ^ 28 * 512B,即128GB。如果寻址方式为CHS,则圆柱地址使用16位,头地址使用4位,扇区地址使用8位,CHS寻址要求扇区从1开始计数,共计65536 * 16支持*(255- 1)个扇区,硬盘容量限制约为128GB。

2. BIOS中断例程INT 13

INT 13 AH = 0xH(AH = 02H,AH = 03H)寻址方式为CHS,以AH = 02(读扇区)为例:

AH = 02H
	AL = number of sectors to read	(1-128 dec.)
	CH = track/cylinder number  (0-1023 dec., see below)
	CL = sector number  (1-17 dec.)
	DH = head number  (0-15 dec.)
	DL = drive number (0=A:, 1=2nd floppy, 80h=drive 0, 81h=drive 1)
	ES:BX = pointer to buffer
	- the parameters in CX change depending on the number of cylinders;
	  the track/cylinder number is a 10 bit value taken from the 2 high
	 order bits of CL and the 8 bits in CH (low order 8 bits of track):
	  |F|E|D|C|B|A|9|8|7|6|5-0|  CX
	   | | | | | | | | | |	`-----	sector number
	   | | | | | | | | `---------  high order 2 bits of track/cylinder
	   `------------------------  low order 8 bits of track/cyl number

CH和CL的高2位构成一个柱面地址,共10位,最大柱面数为1024;

DH构成头地址,并支持最大数量的头16; (为什么这里的最大值不是256,而是16,我将在后面说明)

CL的低6位构成扇区地址,支持的最大扇区数为64-1 = 63(减去1的原因与上面相同)。

为了区分两种访问方法的CHS接口,我们将ATA端口使用的CHS寻址接口称为PCHS(物理CHS),将INT 13 AH = 0xH使用的CHS寻址接口称为LCHS(逻辑CHS)。从上面的介绍中我们知道

PCHS的结构是圆柱(16位),磁头(4位),扇区(8位),

飞机移动电源容量限制_320g硬盘实际容量_硬盘容量限制

LCHS的结构为圆柱(10位),磁头(8位),扇区(6位)。

LCHS中的头地址实际上是整个DH(8位),但是早期计算机(原始IBM PC / XT)的BIOS不支持CHS-Translation,BIOS将直接传输相应的C和C INT 13 AH = 0xH通过的LCHS值。 H和S被分配给PCHS的C,H和S。我们知道PCHS的头地址只有4位,因此LCHS只能在DH中使用4位,因此支持的头的最大数量只有16位。同样,LCHS柱面地址也只有10位,并且最大扇区地址只有6位,因此,没有CHS转换的原始BIOS支持的最大硬盘容量为1024 * 16 * 63 * 512B,大约为500M。请注意,这仅是BIOS引起的容量限制。程序员还可以在实模式下绕过操作系统和BIOS,使用IN / OUT进行端口读取和写入,并直接使用PCHS来访问容量高达128GB的硬盘。由这种直接分配的“惰性”方法引起的麻烦不仅是容量限制,而且使用INT 13读取和写入硬盘的程序也无法访问具有超过1024个柱面(10位)的硬盘。

对于早期的计算机,500M硬盘容量可能无法达到,因此当时的PC制造商(主要是邪恶的IBM)设计了BIOS以节省麻烦。但是,随着硬盘技术的飞速发展,越来越大的硬盘开始出现。为了支持更大容量的物理硬盘,并与更多结构化的硬盘兼容(柱面数超过102 4),PC制造商已将INT 13 AH = 0xH设置为添加了一些转换代码(CHS翻译)从LCHS到PCHS而不是直接分配。例如,硬盘的物理结构是2000个柱面,5个磁头和50个扇区,并且该硬盘不能处于INT 13访问的直接分配模式。我们可以设计一个逻辑LCHS可访问的结构,1000个气缸,10个缸盖和50个扇区,以确保总容量保持不变(2000 * 5 * 50 = 1000 * 10 * 5 0)),经过转换算法可以实现-从逻辑扇区到物理扇区的一种映射。用户程序使LCHS调用INT13 AH = 0xH,BIOS使用CHS-Translation获得PCHS,然后使用端口读写命令来实现相应的功能。可以是对物理结构的限制硬盘损坏,可以访问具有超过1024个柱面的物理硬盘。同时,通过CHS-Translation,可以充分利用LCHS的8位头地址,并且总容量限制从大约500M更改为8GB(1024 * 256)。 * 6 3)。

不同的供应商具有不同的CHS-Translation算法。最常用的是Phoenix,非凤凰和位移。

Phoenix首先将LCHS转换为LBA,然后将LBA转换为PCHS。

将CHS转换为LBA的公式:

LBA =((圆柱* heads_per_cylinder + heads * * sectors_per_track)+扇区1

将LBA转换为CHS的公式:

汽缸= LBA /(heads_per_cylinder *扇区_per_track)

temp = LBA%(heads_per_cylinder * * sectors_per_track)

head = temp /扇区数/跟踪

sector = temp%ectors_per_track + 1

尽管CHS-Translation解决了硬盘物理结构上的限制,并将容量限制从500M增加到8GB,但仍不能完全利用ATA硬盘端口提供的最大128GB硬盘地址空间。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/dianqi/article-370280-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...