内存管理
此条目没有列出任何参考或来源。 (2010年8月17日) |
内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效、快速的分配,并且在适当的时候释放和回收内存资源。
一个执行中的程式,譬如网页浏览器在个人电脑或是图灵机(Turing machine)里面,为一个进程将资料转换于真实世界及电脑记忆体之间,然后将资料存于电脑记忆体内部(在电脑科学,一个程式是一群指令的集合,一个进程是电脑在执行中的程式)。记忆体能被实际组织在许多方法里头,例如磁带或是磁盘,或是小阵列容量的微晶片。 从1950年代开始,计算机变的更复杂,它被连线于许多种类的记忆体。记忆体管理的任务也变得复杂,甚至必须要在同一台机器上相同的时间执行多个进程。
在记忆体内,一个程式(作业系统)在每一个资料区段持续地追踪实体位置,及移动实体上的资料去改善其效能及保证可靠性,对于每个用户层(user-level)的程式,作业系统分配一段虚拟记忆体空间,当行程起始时,不需要移动资料到实体装置间,资料存于磁碟内的虚拟记忆体空间,也不需要去配置主记忆体空间给该行程,当使用者有需要用到时,他们才会很自由地载入到主记忆体内。
可以想像一个很大的程式,当他执行时变成行程,而大部分的记忆体空间都被存到磁碟内虚拟记忆体位址,需要用到的部分才被载入到记忆体内部提供服务。
主记忆体使用
编辑一个程式结构由以下两部分而成:
- “本文区段”,也就是指令存放,提供CPU使用及执行
- “资料区段”,储存程式内部本身设定的资料,例如常数字串,像是GUI介面内部一些文字讯息,或是程式设计时所放入的讯息资料,资料可借由程式执行时由输入(input)的方式加入,或者经由程式执行的流程中被移除。
当一个程式执行,作业系统将程式的资料区段及本文区段映射到虚拟记忆体空间内部,然后在记忆体执行程式的指令(见范纽曼架构),无论如何,当程式执行时就必须去储存暂时性的资料,或更重要的,它会呼叫一些函式(function)或是例程(subroutine),并且储存当前函式的状态,最好的资料结构方法,资料由堆叠(stack)的方式储存,当我们完成这个函式,资料会由堆叠的pop方式取出,堆叠将会在函式的生命周期内动态的成长,作业系统提供区分本文区段及资料区段,而堆叠区段则在一个行程的最顶端,这种方式称为段式结构(segments)或“分段”。