内存管理

本页使用了标题或全文手工转换,现处于中国大陆简体模式
求闻百科,共笔求闻

内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效、快速的分配,并且在适当的时候释放和回收内存资源。

一个执行中的程序,譬如网页浏览器在个人电脑或是图灵机(Turing machine)里面,为一个进程将资料转换于真实世界及电脑记忆体之间,然后将资料存于电脑记忆体内部(在计算机科学,一个程序是一群指令的集合,一个进程是电脑在执行中的程序)。记忆体能被实际组织在许多方法里头,例如磁带或是磁盘,或是小阵列容量的微芯片。 从1950年代开始,计算机变的更复杂,它被连线于许多种类的记忆体。内存管理的任务也变得复杂,甚至必须要在同一台机器上相同的时间执行多个进程

在记忆体内,一个程序(操作系统)在每一个资料区块持续地追踪实体位置,及移动实体上的资料去改善其性能及保证可靠性,对于每个用户层(user-level)的程序,操作系统分配一段虚拟记忆体空间,当行程起始时,不需要移动资料到实体设备间,资料存于磁盘内的虚拟记忆体空间,也不需要去配置主记忆体空间给该行程,当用户有需要用到时,他们才会很自由地加载到主记忆体内。

可以想像一个很大的程序,当他执行时变成行程,而大部分的记忆体空间都被存到磁盘内虚拟记忆体地址,需要用到的部分才被加载到记忆体内部提供服务。

主记忆体使用

一个程序结构由以下两部分而成:

  • “本文区块”,也就是指令存放,提供CPU使用及执行
  • “资料区块”,储存程序内部本身设定的资料,例如常数字符串,像是GUI接口内部一些文字讯息,或是程序设计时所放入的讯息资料,资料可借由程序执行时由输入(input)的方式加入,或者经由程序执行的流程中被移除。

当一个程序执行,操作系统将程序的资料区块及本文区块映射到虚拟记忆体空间内部,然后在记忆体执行程序的指令(见范纽曼架构),无论如何,当程序执行时就必须去储存暂时性的资料,或更重要的,它会调用一些函数(function)或是例程(subroutine),并且储存当前函数的状态,最好的资料结构方法,资料由堆栈(stack)的方式储存,当我们完成这个函数,资料会由堆栈的pop方式取出,堆栈将会在函数的生命周期内动态的成长,操作系统提供区分本文区块及资料区块,而堆栈区块则在一个行程的最顶端,这种方式称为段式结构(segments)或“分段”。

参考文献

参见