前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊一聊内存管理(二)

聊一聊内存管理(二)

作者头像
算法与编程之美
发布2019-07-17 17:12:25
4390
发布2019-07-17 17:12:25
举报

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

在上一讲聊一聊内存管理(一)重点介绍了什么是内存管理,对内存管理有了整体的认识。简单来说就是,程序的运行需要内存,你如何管理并给这些程序分配内存。

本节介绍最简单的一种内存管理方案:单一连续区分配。为什么说这种内存分配是最简单的呢?接下来做详细的介绍。

单一连续区内存分配的基本思想是一段时间内只有一个进程在内存。将4G的内存分为两部分,一部分存放操作系统内核,另外一部分存放用户程序,且一段时间内只有一个用户程序在内存中。如图1-1所示:

图1 单一连续区内存分配

T1时刻有进程P1,需要512MB的内存,那么将内存分配给P1,如图1-2所示;

T2时刻有进程P2,需要1GB的内存,由于单一连续区内存分配的特点,此时用户区已经有了P1在执行,即时剩余内存充足,P2也无法运行,只有在P1运行结束并释放内存之后才能运行P2。

图2 进程 P1的内存分布

从上面的分析大家可以看到这种内存分配方式非常的简单,可以说没有什么方法比这种还要简单的了。但是缺点也非常明显:

  • 一段时间内只能运行一个程序,因此无法实现多道程序;
  • 在运行一个进程后,即使有足够的剩余内存也无法执行新的进程,而只有等待该进程运行结束后才能继续执行,因此内存的利用率相当的低;
  • 如果进程所需的内存大于用户程序的总大小,则该进程将无法得到运行,因此对要运行的进程有很大的限制条件,不是什么进程都可以运行的。

相信看到这里,大家应该都能感受到,当我们遇到问题的时候,根据我们的经验积累会想到一种简单的解决思路,但是经过分析我们会发现这种解决问题的方法会有很多的问题,那么接下来我们就会分析这些问题,并提出新的的方法,如此反复,不断的提出新问题,不断的提出新方案解决新的问题,科技因此才不断的进步。

关于内存管理,你有什么更好的思路呢?欢迎留言。

where2go 团队


微信号:算法与编程之美

长按识别二维码关注我们!

温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档