聊一聊内存管理(二)

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

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

 

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

 

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

 

1 单一连续区内存分配


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

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

2 进程 P1的内存分布

 

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

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

 

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

 

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


目录
相关文章
|
4月前
|
存储 程序员 Linux
1024程序员节特辑 | C++入门指南:内存管理(建议收藏!!)
1024程序员节特辑 | C++入门指南:内存管理(建议收藏!!)
53 0
|
14天前
|
存储 算法 Java
深入浅出Java内存管理
【8月更文挑战第28天】Java的内存管理是每个Java开发者都绕不过去的技术话题。本文将通过生动的比喻和直观的例子,带你走进Java内存管理的奇妙世界。我们将一起探索对象在Java虚拟机中的生命周期,了解栈与堆的区别,以及垃圾回收机制如何默默守护着我们的应用程序。准备好,我们即将启程!
42 14
|
12天前
|
Web App开发 JavaScript 前端开发
浅入 V8 内存管理
【8月更文挑战第31天】浅入 V8 内存管理
21 0
|
2月前
|
存储 Java 数据库连接
Java堆栈内存管理与优化技巧的实践指南
Java堆栈内存管理与优化技巧的实践指南
|
3月前
|
存储 缓存 人工智能
深入探讨现代操作系统的内存管理机制
在不断发展的计算机科学领域,内存管理一直是操作系统设计中的关键问题。本文将深入探讨现代操作系统中使用的各种内存管理技术,包括虚拟内存、分页、分段和缓存策略。通过分析这些技术的实现原理和实际应用,我们不仅能了解它们如何提升系统性能,还能看出它们在不同场景下的优缺点。
90 0
|
4月前
|
存储 编译器 程序员
『C++成长记』内存管理
『C++成长记』内存管理
|
存储 Linux C++
【C++杂货铺】内存管理(二)
【C++杂货铺】内存管理(二)
51 0
|
存储 C语言 C++
【C++杂货铺】内存管理(一)
【C++杂货铺】内存管理(一)
76 0
|
存储 编译器 Linux
内存管理基础概念总述
内存管理基础概念总述
81 0
|
算法
聊一聊内存管理(一)
聊一聊内存管理(一)
82 0