计算机存储原理
计算机在内存中一般都是以1010101二进制的方式
计算机存储的方式一般分为三种
- CPU
- 内存
- 磁盘
- 机械盘
- 固态盘
其中CPU和内存都是断电之后数据就会消失,而磁盘存储断电之后就不会消失。
磁盘之间的差别
其中磁盘又分为机械盘和固态盘,咱们在工作当中一般是以机械盘为主
其中的主要原因有:
- 内存的主要数据来自于磁盘,每不管对文件进行什么操作一般都是操控磁盘内的数据,将磁盘内数据加载到内存中,进行增删改查再保存到磁盘中。这就是为什么明明在word里写了文章但是不保存缺数据丢失的原因。
- 固态磁盘是有读写次数的大概30万次,机械磁盘理论无限。虽然固态盘读写更快但是由于次数的限制比如阿里腾讯每次登录游戏或者qq都要进行数据库查询也就是读操作,那么假设有30万个人同时登录qq那么读取30万次可能瞬间报废一个固态盘。
数据存储
我们内存中的数据基本都是来源于磁盘之中,而显示器中的数据都是来源于内存之中。
磁盘中在存储0101的时候依赖的是磁介质,我们可以将磁介质看为一个个很小的磁铁,每个磁铁具备N极和S极--->N级是1,S级是0。N-1 S-0 高电压-1 低电压-0
数据传输
数据传输之间依赖的是导线,在计算机组成原理之中我们学习的总线就是导线
计算机内任何两个元件通讯都要通过导线形成闭合电路,闭合电路(最少一来一回两根导线)其中接收方和发送方可以选择电压传输也可以选择电流传输,
在计算机中我们选择的是电压传输其中高电压是1低电压是0。
为什么是电压传输不是电流?
任何测量都有误差,比如误差是0.1只有当数值足够大才会不受影响比如是1或者是2,如果值就是0.1那么误差也是0.1那么测出来的值是不可信的。
那么我们这时候有两种可以表达1或者2的信号,高低电压和高低电流
限制 假设 传输的是1和2 其中导线不变,电阻不变。假设电流和电压都是x
则电流为 x = r * v 、电压为 v = x / r
很明显电流消耗大、如果只要电压的话那种不需要关注电流的大小
网络传输中任何两个设备直接都是通过电压传输(网线也是导线)
磁盘数据读取
在磁盘中由多个盘片,每个盘片从正面看都是一个正圆,上面一圈一圈的分布满了磁介质称之为磁道。
从数学上来讲,任何一个磁盘片严格意义上都是一个圆柱体。从其侧面看
上面的每一个小长方体都代表一个小磁介质,当磁头划过磁介质表面时(产生位移)在磁场中滑动,根据安培定律会产生电压。不管是经过N级还是S级,都有经过的时候慢慢增大,离开的时候慢慢减小。其接近的时候和远离的时候它产生的电压是相反的。既经过每个磁颗粒点都会产生正反电压例如下面的差分曼彻斯特编码(虽然是讲网络的但是磁盘和它基本一样)
正反电压例如(-2和+2)和高低电压不一样,产生正电压的时候是磁头给内存传递消息,产生反电压的时候由于内存电势低电流就会逆过来流,就是内存往磁头传递数据。
那么怎么才能讲正反电压变为高低电压呢,就是给定一个初始电压。例如给定一个3V的初始电压
那么遇到正电压就是2+3=5,遇到低电压就是-2+3=1。就是变化为高低电压,而不是正反电压。
而磁介质的产生的磁场也不是一成不变的,我们可以通过强电压击穿磁场使得电荷方向产生改变。
例如工业磁头都是可以任意改变N极和S极的方向的。
所以磁头不仅可以读写,还可以通过强电压改变磁介质的方向。所以存数据比读数据消耗的能量要高一些
加入经过高低电压讲数据传递到内存,内存中是电容,里面存储的是正负电荷
其中计算机里所有的数据删除是修改有效和无效数据的边界,因为每个磁颗粒要么是0要么是1其实磁盘是存满的。例如我们在学数据结构的时候标记数据删除都是修改边界。
这就是那些数据恢复软件为什么能恢复
# 显示器 - 内存的关系
电脑具备:视觉信息和听觉信息
视觉信息
显示器-由像素点构成--由颜色、形状、亮度构成
每一个像素点都有:坐标、亮度、颜色(345、321、三原色)--共56bit 先是x-y坐标再是三原色 其中坐标为32bit 颜色24bit 。
分成了很多的子区域进行的显示每个区域有自己的小处理器,分别处理自己相对于的,可以加快显示速度
颜色:光学三原色(红绿蓝) 三个数值 比例一样颜色一样,数值越高颜色越深,每个颜色占用(1byte --8位)无符号数 0-255
坐标:记录坐标需要占用(16+16)bit数据 使用shot--16位存储
假设每个文字200个像素点 那么 200*56 = 11200bit/一个字符,如果将字符直接放入内存那么占用的空间太大了,那么由计算机先记录每个形状的组合方式(形状库 + 编码),那么内存种只用记录每个字符的编码就可以--这就是编码的由来(ASCII编码 - 8位 就是256种性转 un编码16位 utf-8编码是16-32位 都是在磁盘内存着的)
记事本的存储没有位置信息 在开头的时候记录的读取多少位(编码方式),在排列的时候挨个显示。由于每次都是等长的存入或者读取 所以借助数组来记录编码。byte[](一般在进行文件操作的时候都是用这个)