还记得在上半年的时候,自己参加了一次自考操作系统,虽然结果不怎么样,但是在这个过程中自己确实真正收获了许多的东西。
尤其是操作系统存储这一块的时候,让我感觉到自己一下子进入了计算机的内部工厂一样,看他们之间如何接受外界的指令,然后如何协调提高自己工作的能力。今天我就重点向大家分享计算机存储这一块的内容。
上面我用简单的图片说明了静态存储和动态存储的区别,那么接下来分享一个具体例子让我们理解更加的深刻。
静态存储:
说了静态存储之后,让我来分析一下动态存储的图。
看到他们两者的区别之后,静态存储更多的是用于堆里面,而动态存储更多的是用在了栈里面。
说完了存储之后,又面临一个新的问题,那就是内存的容量是有限的,如何使高效的使用内存让内存存储更多的资源,这就不可避免的牵涉到了存储的管理。
如上图所示,存储分实实在在的存储管理,还有就是虚存管理。可能你会好奇这个虚存管理是怎么会事儿,很简单的。为了解决小内存运行大程序的问题,用一定的外存当做内存来使用。
实存管理的方法:
最佳适应:内存大小与作业大小最接近的
首次适应:第一个可用的
最差适应:找最大的那个内存
如上图所示,有一个14k大小的作业,有一段自由的内存块大小如上图所示,A:20k B:15k C:30k D:40k
分别使用上述三种实存管理方法,选择结果如下:
最佳适应:B
首次适应:A
最差适应:D
我写到这个例子的时候突然就想到了咱们高考填志愿的那个单子,他们的思想不是有异曲同工之妙吗?最佳适应:恰好和你的实力量旗鼓相当。而首次适应则是类似于你的第一个志愿,有一点点的冒险,最差适应则是你的最后一个志愿,类似于保底备胎。
接下来就是分析虚存管理的方法--我重点分析一下页式存储。
前面我已经提到了虚存管理是为了利用一定的外存运行大程序的问题。同实存管理的核心思想类似,页式存储管理不同之处在于他增加了一个页表,用来对应内存中的块。
这一块容易牵涉到的内容就是关于页号还有页内地址的计算了。这一块的内容我就不进行赘述了,若是有不会的,欢迎和我交流。