‘壹’ 如何在不用软件的情况下直接向硬盘的扇区里写数据
那是不可能的,最基本的你也要用DEBUG来写,这个属于DOS的内部 命令,所能系统上都带,这个虽然只是个命令,也相当于软件不是?主板BIOS是最底层的命令,就是把你所有软件产生的指令变成电脑能理解的代码去执行,你所有的操作实际上都是用软件来调用这些指令,就象自行车一样,你不去蹬怎么会跑呢?用手直接去转?那行,你直接找块磁铁,打开硬盘,用他吸就行了
‘贰’ 硬盘如何实现信息的存储
一块小小的硬盘,储存的信息几乎可以相当于全世界图书馆的总和,是怎么做到的?
虽然硬盘在我们生活中已经随处可见,但他的储存方法和原理,却不是每人都了解的。
想象一架飞机以离地面1毫米的高度飞行,每25秒绕地球一圈,还能覆盖每一寸表面。
再将其缩小成手掌大小,你就会得到和现代硬盘差不多的东西,它所包含的信息比你们当地图书馆还要多。
那么它是如何在这么小的空间 储存这么多的信息呢?
多亏了一代又一代工程师,材料科学家,还有量子物理学家们的共同努力,这个拥有不可思议的能量, 无比精确的小工具才能在你手掌中旋转。
欢迎关注微信公众号infoVision,更多精彩科普动画等着你!
‘叁’ 在linux下如何把程序写入指定的硬盘扇区
用dd命令即可。
‘肆’ 怎样向U盘固定的物理地址或扇区写入数据
你可以用磁盘编辑工具打开相应扇区,然后写入数据
‘伍’ 硬盘是如何存储数据的
硬盘数据存储原理
硬盘是一种采用磁介质的数据存储设备,数据存储在密封于洁净的硬盘驱动器内腔的若干个磁盘片上。这些盘片一般是在以铝为主要成分的片基表面涂上磁性介质所形成,在磁盘片的每一面上,以转动轴为轴心、以一定的磁密度为间隔的若干个同心圆就被划分成磁道(track),每个磁道又被划分为若干个扇区(sector),数据就按扇区存放在硬盘上。在每一面上都相应地有一个读写磁头(head),所以不同磁头的所有相同位置的磁道就构成了所谓的柱面(cylinder)。传统的硬盘读写都是以柱面、磁头、扇区为寻址方式的(CHS寻址)。硬盘在上电后保持高速旋转(5400转/min以上),位于磁头臂上的磁头悬浮在磁盘表面,可以通过步进电机在不同柱面之间移动,对不同的柱面进行读写。所以在上电期间如果硬盘受到剧烈振荡,磁盘表面就容易被划伤,磁头也容易损坏,这都将给盘上存储的数据带来灾难性的后果。
硬盘的第一个扇区(0道0头1扇区)被保留为主引导扇区。在主引导区内主要有两项内容:主引导记录和硬盘分区表。主引导记录是一段程序代码,其作用主要是对硬盘上安装的操作系统进行引导;硬盘分区表则存储了硬盘的分区信息。计算机启动时将读取该扇区的数据,并对其合法性进行判断(扇区最后两个字节是否为0x55AA或0xAA55 ),如合法则跳转执行该扇区的第一条指令。所以硬盘的主引导区常常成为病毒攻击的对象,从而被篡改甚至被破坏。可引导标志:0x80为可引导分区类型标志;0表示未知;1为FAT12;4为FAT16;5为扩展分区等等。
硬盘信息与硬盘数据恢复
在计算机的CMOS中也存储了硬盘的信息,主要有硬盘类型、容量、柱面数、磁头数、每道扇区数、寻址方式等内容,对硬盘参数加以说明,以便计算机正确访问硬盘。当CMOS因故掉电或发生错误时,硬盘设置可能会丢失或错误,硬盘访问也就无法正确进行。这种情况我们就必须重新设置硬盘参数,如果事先已记下硬盘参数或者有某些防病毒软件事先备份的CMOS信息,只需手工恢复即可;否则也可使用BIOS设置(setup)中的“自动检测硬盘类型”(HD type auto detection)的功能,一般也能得到正确的结果。
硬盘故障大体上可以分为软故障和硬故障两大类,具体有硬盘操作系统被损坏、硬盘主引导区被破坏、 FAT表表被破坏、CMOS硬盘参数不正确、硬盘控制器与硬盘驱动器未能正常连接、硬盘驱动器或硬盘控制器硬件故障、主板故障等情况。比如:
开机自检过程中,屏幕提示“Hard disk drive failure”或类似信息,则可以判断为硬盘驱动器或硬盘控制器(提示“Hard drive controller failure”)硬件故障。
开机自检过程中,屏幕提示“Hard disk not present”或类似信息,则可能是CMOS硬盘参数设置错误或硬盘控制器与硬盘驱动器连接不正确。
开机自检过程中,屏幕提示“Missing operating system”、“Non OS” 、“Non system disk or disk error,replace disk and press a key to reboot”等类似信息,则可能是硬盘主引导区分区表被破坏、操作系统未正确安装或者CMOS硬盘参数设置错误等。
开机用软盘启动后无法进入C盘,可能是分区表被破坏,硬盘数据恢复是可以的。
‘陆’ 能把数据转移到其他扇区么
HD Tune的亲们可以啊。错误扫描扫出坏道的时候,它已经上市了啊的物理位置。每个分区有多少你可以检查我的电脑好了,剩下的就是没有做作的减法。
‘柒’ c++里面函数的参数在内存中是怎么存储的
就如你问题中提到的,当函数int MAX(int x,int y)被赋予实参时,如下面代码所示
intmain()
{
inta=3,b=4;
MAX(3,4);
return0;
}
此时函数MAX接收到的是a和b的拷贝值,也就是说函数在堆里面开辟一个空间,这个空间保存着两个值,分别是3和4,函数接下来操作的数值都是这个堆空间上的数值,跟main函数里面的a和b无关,当函数执行完毕时(也就是return执行完)会回收空间,这时堆空间里面的3和4就会被处理掉
‘捌’ 关于 绝对磁盘扇区读、写数据
absread()写磁盘绝对扇区函数
原形:int absread(int drive,int num,int sectnum,void *buf)
drive=0(A驱动器)、1(B驱动器)、
num=要写的扇区数(最多64K个);
sectnumt=起始逻辑扇区号;
buf=要读取数据的内存起始地址。
功能:从drive指定的驱动器磁盘上,sectnum指定的逻辑扇区号开始读取(通过DOS中断0x25读取)num个(最多64K个)扇区的内容,储存于buf所指的缓冲区中。
参数:drive=0对应A盘,drive=1对应B盘。
返回值:0:成功;-1:失败。
头文件:dos.h
abswrite()写磁盘绝对扇区函数
原形:int abswrite(int drive,int nsects,int lsect,void *buffer)
drive=0(A驱动器)、1(B驱动器)、
nsects=要写的扇区数(最多64K个);
lsect=起始逻辑扇区号;
buffer=要写入数据的内存起始地址。
功能:将指定内容写入(调用DOS中断0x26)磁盘上的指定扇区,即使写入的地方是磁盘的逻辑结构、文件、FAT表和目录结构所在的扇区,也照常进行。
返回值:0:成功;-1:失败。
头文件:dos.h
用absread读出的数据是二进制形式的,其内容就是原本在磁盘中存储的数据的副本,至于表示什么,就依赖于原先存储的格式及数据的内容了.
abswrite函数将内存中指定的数据写入磁盘的特定位置,其内容也是二进制形式的,如果想再找到写入内容,当然可以用absread在原位置读出.
举一个简单的例子,比方说C盘主引导区受损,则可用软盘或光盘启动系统,利用abswrite将主引导区的备份重新写入,覆盖逐级损的部分,即可达到手工修复的目的.
函数名: absread, abswirte
功 能: 绝对磁盘扇区读、写数据
用 法: int absread(int drive, int nsects, int sectno, void *buffer);
int abswrite(int drive, int nsects, in tsectno, void *buffer);
程序例:
/* absread example */
#include <stdio.h>
#include <conio.h>
#include <process.h>
#include <dos.h>
int main(void)
{
int i, strt, ch_out, sector;
char buf[512];
printf("Insert a diskette into drive A and press any key\n");
getch();
sector = 0;
if (absread(0, 1, sector, &buf) != 0)
{
perror("Disk problem");
exit(1);
}
printf("Read OK\n");
strt = 3;
for (i=0; i<80; i++)
{
ch_out = buf[strt+i];
putchar(ch_out);
}
printf("\n");
return(0);
‘玖’ 硬盘上的资料具体是怎样存储在扇区里的存入数据的扇区和没有存入数据的扇区有什么区别
例如:
该报文,或之后有一个文本的每一行之间的空白,如果腾出大量的留白的空间填充回后的文本。
磁盘碎片整理程序“的原理是
‘拾’ 怎么通过程序获取磁盘指定扇区的数据
(1)先用函数
CreateFile
获取硬盘的句柄
h;
(2)然后用函数
DeviceIoControl
得到硬盘扇区大小;
(3)之后用函数
SetFilePointerEx
将硬盘的文件指针移动到要读取的位置;
(4)最后用
ReadFile
读取数据。
第二步是必要的,因为对硬盘的ReadFile/WriteFile/SetFilePointer等操作,必须读/写/将指针移动扇区大小的整数倍