“最近的电脑打开程序很是慢,并且运行的时候很卡,有没有什么解决办法呢?”算法
“去京东买个4G 的内存条加到电脑里面吧!”学习
在咱们的生活中,常常会遇到这样的对话。当咱们的电脑运行程序变得很慢很卡的时候,就会听到身边的朋友建议咱们去增长电脑的内存。这是为何呢?内存在计算机体系结构中起了什么样的做用?当咱们有了4G 的内存,操做系统又是如何管理这些内存的呢?操作系统
本系列博客将和你们一块儿深刻的探讨这些问题,主要介绍操做系统原理中的内存管理部分,从而让您更好的理解计算机。力求用最简单易懂的语言介绍相关原理及算法,即便您没有任何的专业基础,也能和咱们一块儿来感觉操做系统的魅力。图片
问题定义内存
介绍任何技术及理论以前,咱们首先都须要搞明白须要解决的问题是什么,也就是问题的定义,这是极其关键的一步。不少学生在学习的时候,每每不知道我为何要学习这个知识点,这个知识点和先后章节以及其余课程的关系是什么,这个知识点解决了什么问题,只是简单的去学某个知识点,而忽视了问题的定义以及先后关联。博客
每个程序的运行都须要占用内存,每个程序运行结束了之后,都会释放其占有的内存。这是你们首先须要了解的一个前提。内存管理
首先咱们来给你们介绍下什么叫内存管理。所谓内存管理简单来讲就是你要运行一个程序,就须要给这个程序分配相应的内存,那么该如何分配这些内存呢?基础
可能有些同窗说,这不是很简单的事情吗?好比我有4G 的内存条,来了一个程序,我就给它多少的内存,这个程序运行结束了,我就回收这些内存,以下所示:原理
图1- 1 A1 A2 A3程序内存分布程序
t1时刻执行A1程序,须要512MB 内存,t2时刻执行 A2程序须要256MB内存,t3时刻执行 A3程序须要1GB 内存。按照上述图示,为每一个程序分配相应的内存。
图1- 2 A1程序运行结束后内存分布
过了一段时间后,A1程序运行结束,释放以前占用的内存。
不是很简单吗?这有什么好讨论的呢?
事实真的如此简单吗?接下来便提出几个问题,看你该如何解决?
1) 以下图这是某时刻内存的分布状况,内存有 A1 A2 A3 A4共四个程序在运行。此时来了一个程序 A5,它须要的内存为512MB,而此时系统可用内存仅有256MB,那么 A5是否可以被执行呢?
图1- 3 某时刻内存分布状况
2) 以下图是某时刻的内存分布,系统可用内存有下面绿色部分总共256 + 256= 512MB 的可用内存,可是这两块内存不是连在一块儿的。此时来了一个程序 A5,须要512MB 的内存,请问 A5程序可以被执行吗?
图1- 4 某时刻内存分布状况
3) 内存大小总共为4GB,假设某程序须要占用6GB 的内存,请问是否能够运行该程序。
从上述提出的这些问题,你们能够看到,内存管理其实没有你们想象的那么简单,它须要解决的问题是很是多的。
后面的博客将带领你们一块儿来探索操做系统是如何解决内存管理的这些问题的,大师提出的解决方案和咱们本身的有什么不一样的地方。本节但愿你们掌握什么是内存管理,在总体上有个认识。
舒适提示:
因为手机屏幕大小的限制,请你们在阅读图片时,点击图片放大查看。
本文图例中全部的绿色部分表示系统可用内存,其余颜色表示某程序占用的内存。