作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!

大城市里の小女人 提交于 2020-02-03 02:54:44

截止目前,我已经分享了如下几篇文章:

一个程序在计算机中是如何运行的?超级干货!!!

作为一个程序员,CPU的这些硬核知识你必须会!

作为一个程序员,内存的这些硬核知识你必须懂!

这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。

再说啦,学习这些,也看不出来有什么用啊!

我现在告诉你,这些知识很有用,尤其对于作为程序员的你,这些是让你写代码的过程中让你不仅知其然,还知其所以然的知识,了解了这些,对你的编程只有大大的好处。

以上三篇文章可谓都是干货中的干货,看了一定让你功力大增😎

今天再来分享一下关于内存和磁盘的有关重要知识,如此一来,CPU,内存和磁盘 这比较重要的几个货,我们就都有所了解了。

关于磁盘,你了解多少?

可能大伙听到的比较多的是硬盘,毕竟这是我们每天使用电脑接触比较多的一个概念,再加上现在买电脑基本上从之前的机械硬盘都过渡到了现在的固态硬盘。

所以大家对硬盘这个名词不陌生,相对的,对磁盘的概念似乎就有点陌生了

啥是磁盘

首先记住,磁盘是个总的,也就是说磁盘包括硬盘,那么还要知道磁盘是干嘛的,磁盘最主要的功能就是保存电脑里面的信息,但是磁盘又有一些分类,不过我们首先要知道,在计算机中,保存信息的有这么两类:

第一:内部存储器

这个就是我们说的内存了,是由内存条提供内存空间,特点是存储信息速度快,但是容量不大,而且很重要的一点就是只要一断电,里面什么玩意儿都没有了,断电就会丢失所有的信息。

第二:外部存储器
这个主要就是磁盘了,对就是磁盘,可不是硬盘,也不是内存,对于外部存储器也就是磁盘而言,它有这么些特性,首先就是不像内存那样一断电就丢失所有的信息,存储的数据不会受到断电的影响,但是它的速度相比内存那就慢的多了。

到了现在起码知道在计算机中保存信息有两类存储器,一是内部存储器,而是外部存储器也就是磁盘,下面我们再来说说磁盘,其实磁盘也有分类

磁盘的简单分类

一是:硬盘
这个我们就比较熟悉了,就是我们电脑中的c盘啊d盘啊,这里再说一点,还记得之前说的这些其实就是硬盘空间的分区嘛,要记住c盘是主分区,是安装操作系统的,其他盘可以叫做扩展盘,所以c盘也叫做系统盘,不过他们都属于硬盘,而硬盘又是属于磁盘的,这个关系要理清

二是:软盘
好了到这里你就要知道磁盘是分为硬盘和软盘的,硬盘可能我们还比较清楚,这个软盘估计很多人没有太多概念,先来看张软盘的图片吧:

在这里插入图片描述
估计看到图片有些人就会觉得有那么点熟悉了,这就是软盘了,那么该如何解释这个软盘呢?其实你完全可以把软盘理解之前之前的u盘,只不过在出现了真正的u盘之后,这个软盘慢慢就都淡出了市场,要知道没有u盘的时候,软盘是很受欢迎的。不过科技总归是在进步的嘛!

知道啥是磁盘缓存不

提到磁盘缓存,应该有不少人会想到CPU缓存,CPU缓存主要是为了解决速度匹配问题,因为CPU快内存慢,为了缩小速度差距带来的问题引入了缓存,这里的快慢主要针对的是对于数据的读取。

那啥是磁盘缓存呢?

会不会有人觉得磁盘缓存在磁盘里?其实不是,磁盘缓存不是在磁盘中,而是在内存中。

对了,我觉得这里非常有必要说下,我们这里说的磁盘,一般就是指的咱们电脑上的硬盘,Windows电脑中的什么C盘,D盘这些,我们的大部分数据信息也都是保存在这上面的。

其实磁盘缓存和CPU缓存的机制差不多。

磁盘缓存是把从磁盘中读取到的数据保存到内存中,下次读取该数据的饿时候不会再从磁盘中去读取,而是直接从内存中读取

缓存好像经常听说

作为一个程序员,你一定会经常听说缓存这个概念的,因为缓存在很多方面起到了很重要的作用,因为它的存在解决了很多问题,那啥是缓存啊。

缓存英文是cache,是不是很熟悉,我们现在提到缓存觉得它应该是一种技术,实现某种功能或者解决某个问题的一种方式,但是在最开始,缓存似乎并不是这样的。

还记得之前说的RAM吗?内存也即是主存的意思,然后还有DRAM(动态随机存取存储器)和SRAM(静态随机存取存储器),之前的缓存其实是一种SRAM。

但是嘞,现在的缓存概念被扩展了,现在的缓存更代表一块数据,比如我这么这里说的磁盘缓存,其实就是把磁盘中的部分数据保存到内存中,那么保存到内存中的这块数据其实就是缓存,下次如果要从磁盘中读取数据会先从内存这里的磁盘缓存中读取,看看是不是有自己需要的数据,毕竟从内存中读取数据要比从磁盘中读取快太多了。

缓存概念的扩充

所以啊,对于现在的缓存,不仅CPU和内存之间有CPU缓存,在内存和磁盘之间也存在我们这次说的磁盘缓存,甚至在硬盘和网络之间也存在缓存,比如网络内容缓存。

这里举个例子吧,比如我们上网浏览一张图片,第一次浏览加载该图片的时候其实是比较慢得,但是我们下次再次打开该网的这个图片,速度就会快很多,那是因为这张图片数据保存在了我们的硬盘上,再次读取是直接从我们的硬盘上读取,而不是从服务器上拉取了。

所以啊,看了那么多,其实缓存这玩意就是把低速设备的数据保存在高速设备上,需要的时候直接从高速设备上将其读取。

不读入内存就无法运行?

这是咋回事,相信看了我之前几篇分析CPU和内存的文章就知道我这里说的什么意思了,CPU被设计成只能从内存中读取数据来运行相关程序,而内存中的数据是哪里来的呢?

我们平常写的程序啥的都是保存在本地硬盘中,好吧,是磁盘,我们上面说的磁盘,但是你得知道磁盘和硬盘他们之间啥关系啊。

要想这个程序被运行,那么首先需要把这段程序数据加载进内存,只有进了内存才能被CPU读取运行啊,也就是这么个图:

在这里插入图片描述
简单来说,就这么个情况。

虚拟内存很有料

虚拟机内存这块包含的知识点我个人觉得挺复杂的,可以单独拿出来讲一讲了,不过在这里不打算铺开来将,其实大部分时候,我们还真没有必要一下就把这些知识弄得很深深透。

啥是虚拟内存

不是不可,只是目前不是很有必要,我们只需要只能一些就差不多了。

那么对于虚拟内存来说,我们首先要搞清楚,什么是虚拟机内存?

有个概念是这么说的:

虚拟机内存是把磁盘的一部分作为假想的内存来使用

听起来有点魔幻,不是那么好理解,不直观,首先虚拟内存肯定不是真的内存,虽然不是真的是虚拟的,但是人家也叫内存,所以,虚拟内存能够起到内存的一些作用,啥意思嘞?

我们知道,程序需要加载进内存供CPU读取运行,如果内存空间不够,如何运行大内存程序呢?

比如说现在内存空间仅剩10M,但是现在有个大小20M的程序需要运行,在没有虚拟内存的情况下,这个程序是无法被运行的,但是有了虚拟内存就可以,虚拟内存通过特定技术把磁盘中的一部分容量作为内存来使用,也就是说会把这个20M大小的程序的部分数据存放在磁盘中的这块虚拟内存中,然后在真正的内存中也存放部分这个程序的数据,在运行这个程序的时候,如果所需要的数据没有在内存中,而是在磁盘中的虚拟内存中,那么就会发生数据交换,把虚拟内存中需要现在用到的数据与内存中这段程序暂时不用的数据进行交换,以此来保证程序的正常运行。

这,就是虚拟内存了。

其实吧,关于虚拟内存还有很多可以说的,但是,还是之前那句话,没必要非得现在把它们全部搞定,只了解那些必要的知识,这才是所谓的高效学习。

好啦,关于这次的内存和磁盘的一些知识点,我们就介绍到这里了。

感谢阅读

大家好,我是ithuangqing,一路走来积累了不少的学习经验和方法,而且收集了大量的精品学习资源,现在维护了一个公众号【编码之外】,寓意就是在编码之外也要不停的学习,主要分享java技术相关的原创文章,现在主要在写数据结构与算法,计算机基础,线程和并发以及虚拟机这块的原创,另外针对小白还在连载一套《小白的java自学课》,力求通俗易懂,由浅入深。同时我也是个工具控,经常分享一些高效率的黑科技工具及网站

对了,公众号还分享了很多我的学习心得,可以一起探讨探讨!

关注公众号,后台回复“庆哥”,2020最新java自学资源立马送上!更多原创精彩尽在【编码之外】

在这里插入图片描述

感谢各位大大的阅读🥰

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!