《嵌入式操作系统》课程论文
Linux内存管理与进程调度策略
学 号 P B 0 9 2 0 2 8 1 0 9 班 级 09计算机科学与技术 姓 名 王 华 联系电话
Email : 810946067 @qq.com 学 院 贵州大学人民武装学院
2010年 06 月 29 日
Linux内存管理与进程调度策略
【摘 要】
内存是Linux内核所管理的最重要的资源之一,内存管理系统是操作系统中最为重要的部分。对于Linux的学习和熟悉Linux的内存管理是非常重要的。
进程是运行于虚拟地址空间的一个程序。可以说,任何在Linux系统下运行的程序都是进程。 Linux系统中包括交互进程和批处理进程。交互进程是由Shell控制和运行的,既可以在前台运行,也可以在后台运行。批处理进程不属于某个终端,被提 交到一个队列中以便顺序执行。大多数的进程都需要虚拟内存。因此,Linux进程的学习也是至关重要的。 【关键词】
linux; 进程调度;调度策略;内存管理
引 言
在Intel 80X86 CPU 中,程序在寻址过程中使用的是由段和偏移值构成的地址。该地址并不能直接用来寻址物理内存地址,因此被称为虚拟地址。为了能寻址物理内存,就需要一种地址变换机制将虚拟地址映射或变换到物理内存中,这种地址变换机制就是内存管理的主要功能之一(内存管理的另外一个主要功能是内存的寻址保护机制。。虚拟地址通过段管理机制首先变换成一种中间地址形式—CPU 32 位的线性地址,然后使用分页管理机制将此线性地址映射到物理地址。为了弄清Linux 内核对内存的管理操作方式,我们需要了解内存分页管理的工作原理,了解其寻址的机制。分页管理的目的是将物理内存页面映射到某一线性地址处。在分析本章的内存管理程序
2 / 21
时,需明确区分清楚给定的地址是指线性地址还是实际物理内存的地址。
内存管理以提高内存利用率和扩大内存量为主要目标,设计了各种内存分配管理方法、算法和数据结构,通过分析比较,得到不同管理方法的异同。同时,以地址映射为辅线条,描述分区、分页、分段、请求分页和请求分段的映射原理。
Linux内存管理
一个操作系统的内存管理方式很大程度上决定了它的效率,时间与空间的对立统一在内存管理上体现得最为明显,首先,分配/释放内存是一个发生频率很高的操作,所以它要求有一定的实时性,另外,内存又是一种非常宝贵的资源.所以要尽量减少内存碎片的产生.
Linux采用了伙伴系统算法来管理内存,即把内页按2^0,2^1,2^2…2^10大小进行分组.每次分配内存时,从相应大小的池中分配内存,然后再把余下的内存分配给它的下一级缓存池.
如右图
首先,它会到相应大小的(2^0)的空闲链表入队.判断相邻块的空闲情况,此时,因为第三个是空闲的,所以可以合并为一块2^1的空闲块.继续判断2^1链中相邻块是否是空闲的,上图中可以将2^1的两个块合成一个大块,然后继续判断
3 / 21