计算机基础-------硬盘、内存、cpu的理解

简介: 计算机基础-------硬盘、内存、cpu的理解

  计算机是我们接触最多的工具,而作为一个优秀的程序员只有真正了解计算机内部构造,才能写出适合计算机解析的优质代码。

今天总结一下计算机存储数据的硬件:硬盘(外存)、内存、CPU


一、硬盘:


1.硬盘分类

硬盘包括固态硬盘和机械硬盘

固态硬盘:

因为固态硬盘使用电信号传输数据,所以读写速度快,不易损坏;但是随之而来的造价成本高,容量小,数据不可恢复。一般我们会给计算机装一个固态硬盘,把固态硬盘作为系统盘,来提升计算机的速度。

机械硬盘:


   机械硬盘采用机械方式读取数据,相对于电信号方式存取速度慢,但是机械硬盘容量大,造价低,适合存储大量数据。考虑到成本和容量以及众多要存储的数据,大多数公司都会采用机械硬盘存储数据,只要做到备份充足即可。


2.硬盘结构


   硬盘由多个盘片叠加,每个盘片上下两个面分别对应一个机械臂,每个盘面上都有圆形磁道 (实际不存在划分的扇区,只是我们口头说扇区更容易理解区分),每个磁道是由若干个弧长相等的数据块排列。


从该博主这里借用了以下两张图片

要注意:在硬盘中实际不存在划分的扇区,我们把每个盘块称为扇区。


image.png


image.png



一个新的磁盘其实就是一个空白板,它只是一些含有磁性记录材料的盘子,每个磁盘片都是扁平圆盘,类似我们见过的光盘,只是盘面比光盘更加光滑,每个磁盘片的两面都附着一个个磁性小颗粒,通过磁片上的磁性颗粒进行记录就可以保存信息了。


   现在一般的电脑默认4KB是一个块,假设我们的电脑内存是1T, 换算1T = 1024^3KB,这样1T的内存包括2.5亿个块, 又因为1KB=1024B,一个字节(1B)是8位,一位表示一个小颗粒, 该位可带正负电, 正电用1表示, 负电用0表示. 一个块只有一个地址来记录


二、内存:


内存读写速度优于外存很多很多(使用顺序存储),内存中又有多级缓存,可以加快CPU读取速度,但是存储量小,又由于其成本高的特点,一般只适用于做短时存储读取,也就是当我们关闭电脑,断掉电源,内存中的数据就会全部消失,所以不用担心内存中存储量过大导致崩溃。

内存的作用:


保存从硬盘读取的数据,提供给CPU使用


保存CPU的一些临时执行结果,以便CPU下次使用或保存到硬盘


三、CPU:


计算机的运算核心和控制核心,让电脑的各个部件顺利工作,起到协调和控制作用。

CPU处理速度快,以时钟周期“HZ”为单位,读取速度慢(读取速度是KB级别),读取时间是ms级别,并且容量更小,我们可以查看自己电脑CPU处理速度我这里是2.6GHZ


20190116160906449.png



四、硬盘、内存、CPU三者关系:


通过图片我们可以看出,硬盘和CPU之间不能直接进行数据的读取,假设运行硬盘和CPU直接传输数据,硬盘存储量,一次性向CPU传输1G的数据,而CPU一次只能读取几KB的数据,大概一千秒,这仅仅是1G的数据,太浪费时间,这时就体现了内存作为中间存储及传输数据中介的重要性。


20190116220856873.png


当硬盘里的数据需要做处理的时候,数据首先需要被放到内存里面,然后CPU通过多级缓存再去读取内存里的数据进行处理,处理完之后存回内存。(例如当你在用word 写一个文档时,你在写的时候底层的CPU也在不断的处理着数据,当然它处理的是二进制数据,此时的数据是在内存里面的,如果你不保存掉电之后你会发现之前写的东西都没了,而当你保存之后数据会被存放到硬盘里面,掉电之后数据还在!)


简单来说,硬盘用来存储我们的程序和数据,当我们运行程序的时候,CPU首先接到命令,之后CPU告诉硬盘,我要运行你存储的程序A,你把程序A送到内存去。CPU对内存说,我让硬盘把程序A送到你这里来了,你保存一下。等程序A被完整的送到内存之后。CPU就开始执行程序A。


这样来看,我们针对计算机的硬盘、内存和CPU就有了一个更加深入透彻的理解!!!


目录
相关文章
|
8天前
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
|
17天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
191 2
|
1月前
|
固态存储 内存技术
升级电脑内存和硬盘
升级电脑内存和硬盘
45 6
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
128 5
|
29天前
|
运维 JavaScript Linux
容器内的Nodejs应用如何获取宿主机的基础信息-系统、内存、cpu、启动时间,以及一个df -h的坑
本文介绍了如何在Docker容器内的Node.js应用中获取宿主机的基础信息,包括系统信息、内存使用情况、磁盘空间和启动时间等。核心思路是将宿主机的根目录挂载到容器,但需注意权限和安全问题。文章还提到了使用`df -P`替代`df -h`以获得一致性输出,避免解析错误。
|
1月前
|
C# 开发工具 Windows
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
42 0
|
2月前
|
Prometheus Kubernetes 监控
使用kubectl快速查看各个节点的CPU和内存占用量
在Kubernetes集群中,安装metrics-server,并使用kubectl快速查看集群中各个节点的资源使用情况。
128 0
|
3月前
|
存储 监控 Docker
如何限制docker使用的cpu,内存,存储
如何限制docker使用的cpu,内存,存储
|
3月前
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
369 0
|
22天前
|
存储 C语言
数据在内存中的存储方式
本文介绍了计算机中整数和浮点数的存储方式,包括整数的原码、反码、补码,以及浮点数的IEEE754标准存储格式。同时,探讨了大小端字节序的概念及其判断方法,通过实例代码展示了这些概念的实际应用。
45 1