聊一聊内存管理(一)

简介: 聊一聊内存管理(一)

“最近的电脑打开程序非常慢,而且运行的时候很卡,有没有什么解决办法呢?”

“去京东买个4G 的内存条加到电脑里面吧!”


在我们的日常生活中,经常会遇到这样的对话。当电脑运行程序变得很慢很卡的时候,就会听到身边的朋友建议我们去增加电脑的内存。这是为什么呢?内存在计算机体系结构中起了什么样的作用?当我们有了4G 的内存,操作系统又是如何管理这些内存的呢?

 

本系列博客将和大家一起深入的探讨这些问题,主要介绍操作系统原理中的内存管理部分,从而让您更好的理解计算机。力求用最简单易懂的语言介绍相关原理及算法,即使您没有任何的专业基础,也能和我们一起来感受操作系统的魅力。

 

问题定义

介绍任何技术及理论之前,我们首先都需要搞明白需要解决的问题是什么,也就是问题的定义,这是极其关键的一步。很多学生在学习的时候,往往不知道我为什么要学习这个知识点,这个知识点和前后章节以及其他课程的关系是什么,这个知识点解决了什么问题,只是简单的去学某个知识点,而忽视了问题的定义以及前后关联。

 

每一个程序的运行都需要占用内存,每一个程序运行结束了以后,都会释放其占有的内存。这是大家首先需要了解的一个前提。

 

首先我们来给大家介绍下什么叫内存管理。所谓内存管理简单来说就是你要运行一个程序,就需要给这个程序分配相应的内存,那么该如何分配这些内存呢?

 

可能有些同学说,这不是很简单的事情吗?比如我有4G 的内存条,来了一个程序,我就给它多少的内存,这个程序运行结束了,我就回收这些内存如下所示: 

1  A1 A2 A3程序内存分布

 

t1时刻执行A1程序,需要512MB内存,t2时刻执行 A2程序需要256MB内存,t3时刻执行 A3程序需要1GB 内存。按照上述图示,为每个程序分配相应的内存。


2 A1程序运行结束后内存分布


过了一段时间后,A1程序运行结束,释放之前占用的内存。

不是很简单吗?这有什么好讨论的呢?

 

事实真的如此简单吗?接下来便提出几个问题,看你该如何解决?

  • 如下图这是某时刻内存的分布情况,内存有 A1 A2 A3 A4共四个程序在运行。此时来了一个程序A5,它需要的内存为512MB,而此时系统可用内存仅有256MB,那么 A5是否能够被执行呢?

3 某时刻内存分布情况


  • 如下图是某时刻的内存分布,系统可用内存有下面绿色部分总共

256 + 256=512MB 的可用内存,但是这两块内存不是连在一起的。此时来了一个程序A5,需要512MB的内存,请问A5程序能够被执行吗?

4 某时刻内存分布情况


  • 内存大小总共为4GB,假设某程序需要占用6GB 的内存,请问是否可以运行该程序。

 

 从上述提出的这些问题,大家可以看到,内存管理其实没有想象的那么简单,它需要解决的问题是非常多的。

 

后面的博客将带领大家一起来探索操作系统是如何解决内存管理的这些问题的,大师提出的解决方案和我们自己的有什么不同的地方。本节希望大家掌握什么是内存管理,在整体上有个认识。

目录
打赏
0
0
0
0
14
分享
相关文章
【C++初阶】6. C&C++内存管理
【C++初阶】6. C&C++内存管理
76 2
【C/C++内存管理】——我与C++的不解之缘(六)
【C/C++内存管理】——我与C++的不解之缘(六)
安卓应用开发中的内存管理优化技巧
在安卓开发的广阔天地里,内存管理是一块让开发者既爱又恨的领域。它如同一位严苛的考官,时刻考验着开发者的智慧与耐心。然而,只要我们掌握了正确的优化技巧,就能够驯服这位考官,让我们的应用在性能和用户体验上更上一层楼。本文将带你走进内存管理的迷宫,用通俗易懂的语言解读那些看似复杂的优化策略,让你的开发之路更加顺畅。
104 2
浅入 V8 内存管理
【8月更文挑战第31天】浅入 V8 内存管理
69 0
|
9月前
|
【C++初阶】—— C++内存管理
【C++初阶】—— C++内存管理
39 1
备战大厂,彻底搞懂垃圾回收机制底层原理(上)
备战大厂,彻底搞懂垃圾回收机制底层原理(上)
备战大厂,彻底搞懂垃圾回收机制底层原理(下)
备战大厂,彻底搞懂垃圾回收机制底层原理(下)
C++初阶(九)内存管理(上)
C++初阶(九)内存管理(下)
171 0
聊一聊内存管理(二)
聊一聊内存管理(二)
81 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等