上边说了原始计算机的计算模型,这个模型有一个缺点就是不能对我们的数据进行存储,包括一些临时数据。
知识小补充:
(曾经我们要先给计算机输入数据进行预算,只能输入0和1这两个数字;
输出是以纸带的形式进行输出,在纸带上打眼的地方就代表数字1,没有打眼的地方就是0,但有一次人们发现在电脑没有问题的情况下输出不对,后来才得知是一个小飞虫堵住了纸带上的一个眼儿导致了错误的发生。小飞虫的英文是bug,于是后来人们把出现的问题就叫做bug。)
一、磁盘的形式
固态盘不是主要的应用对象,因为固态盘的使用次数有限,无法支撑高并发场景。
二、磁盘如何存储数据
磁盘存储的最基本原理是电生磁。
磁盘的磁道上有很多磁颗粒,而磁颗粒上面有一层薄膜——这是为了防止磁点氧化,很薄,手一碰就没了。
磁头上面有一个线圈,可以通过调整线圈的电流方向来控制磁头的磁极,那么在磁头上面的磁颗粒就会出现和磁头相反的磁性。假设我们用磁极N级代表数字1,磁极S级代表数字0,这样我们每个磁颗粒都存储在这相应的数据。每个磁颗粒都存储着一个数据,则将这个磁颗粒存储的数据叫做1比特。
三、磁盘如何读取
磁头在磁道上运转会切割磁感线,由于磁点有N级和S级,所以会产生两种方向相反的电压。因此磁头也需要带有一定的电压。
(例子)假设正电压产生的是2V,负电压也产生2V,我们默认让磁头拥有3V的电压,当它滑到正的时候就有5V的电压,而滑到负的时候就只有1V的电压。
磁头切割磁感线必然会产生电压,但并非所有的数据都是我们想要的,如何得到想要的数据呢?
数据的传输一定是一个闭合的电路。我们只需要在数据传输线路上加一个数据拦截器,当传到不合法的电压的时候会出现断路,如果出现合法的电压的时候则形成闭合回路。
CPU要想读取磁盘当中的某些数据,就必须先将地址发送给磁盘。默认数据拦截器内的电路是断开的状态,数据电压要想通过就必须和地址电压共同作用将数据拦截器内的半导体变为导体。
四、计算机磁盘空间分配
假设我们要存储一下数据:
0——>0
1——>1
2——>10
3——>11
4——>100
那么我们会得到这样的比特流:011011100
但这样做会出现歧义性,如何解决这个问题呢?——要按固定字符进行分割
比如这里我们使用8比特进行字符分割,那么储存以上的数据就会变成
00000000 00000001 00000010 00000011 00000100
我们通常把8比特称为1字节单位(B),也是磁盘中最小存储单元。
1T =1024G =1024*1024M =1024*1024*1024KB =1024*1024*1024*1024B