所谓的一个文件多大,也就是多少字节,具体是什么东西,也就是在硬件上表现为什么?

·

共 2 个回复


baiyuxiong

硬盘上存的是高低电平,一个高低电平是一位,八个高低电平连起来是一个字节
假设一个只有1KB的硬盘,就是有1024个字节,可以存储1024*8=8192位,也就是可以存8192个高低电平。这就像四大发明里的活字印刷术,一块印刷板可以填好多方块,每个方块上一个文字信息。
http://baike.baidu.com/view/399234.htm

比如一个文件只存了一个字母a,是一个字节。不考虑文件名等其它信息,只保存这个字母a,在ascii码表(http://baike.baidu.com/view/15482.htm)
里,a的值是十进制97,换成二进制是01100001 。
硬盘存的时候,假设存在最前面,里面的高低电平就是:低高高低低低低高(01100001)。

# 0

David

从下往上解释一下(最下面是你说的硬件,最上面是文件)

  1. 硬盘你可以看作是一条长长的带磁性带子盘成一个蜗牛壳一样的形状,然后有个磁头可以读取这条带子上的某个位置的信息。每一位的信息就是一个 0 或者 1,通常 8 位信息组成一个字节。上面说的是所谓的机械硬盘,SSD 之类的固态硬盘构造和实际的访问模式不一样,但是在这个问题上你可以先按照机械硬盘的方式来看待。
  2. 下面,硬盘会被一个叫操作系统的东西管理。操作系统也就是 Windows,MacOS, Linux 之类的,手机上 iOS,Android。
  3. 操作系统有很多种方式来管理硬盘,我随便说一种简单的:FAT16/32/64。简单的说,就是首先把硬盘分成固定大小一堆的块,同时给这些块编上序号。每次需要分配/释放空间的时候,会一整块一整块的使用。然后,在硬盘上分处一块特定的区域,用来记录这些块的信息。由于有分配和释放的操作,会有一些数据结构来组织这些块,这里就不细说了。
  4. 下面就到了题主最直接的问题了。假设我们要保存一个特定大小的文件,操作系统会首先计算出来需要多少个上面提到的固定大小的块,然后修改上面提到的单独分出来纪录块信息的部分,从而标记这些块被使用了。最后再把文件的内容写到这些块实际的位置上去。分配的空间大于或等于文件的实际大小,大于的时候通常只有前面的字节会被使用。这些块被标记为已经使用后,别的文件就不会被操作系统写到这些块上了,我们也就说这个文件占用了这么多的空间。
  5. 以上跳过了目录的概念,可以理解为一些特殊的文件用来组织一般的文件和子目录。文件的名字和帮助找到其占用的块的信息,会保存在目录里面。

作为科普,就说这么多了,实际的情况可能比这个复杂,但是基本的原理就是这样的。

# 1