网站大量收购独家精品文档,联系QQ:2885784924

Linux内存管理与进程调度策略教材.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《嵌入式操作系统》课程论文 Linux内存管理与进程调度策略 学 号 P B 0 9 2 0 2 8 1 0 9 班 级 09计算机科学与技术 姓 名 王 华 联系电话 Email : 810946067 @ 学 院 贵州大学人民武装学院 2010年 06 月 29 日 Linux内存管理与进程调度策略 【摘 要】 内存是Linux内核所管理的最重要的资源之一,内存管理系统是操作系统中最为重要的部分。对于Linux的学习和熟悉Linux的内存管理是非常重要的。 进程是运行于虚拟地址空间的一个程序。可以说,任何在Linux系统下运行的程序都是进程。 Linux系统中包括交互进程和批处理进程。交互进程是由Shell控制和运行的,既可以在前台运行,也可以在后台运行。批处理进程不属于某个终端,被提 交到一个队列中以便顺序执行。大多数的进程都需要虚拟内存。因此,Linux进程的学习也是至关重要的。 【关键词】 linux; 进程调度;调度策略;内存管理 引 言 在Intel 80X86 CPU 中,程序在寻址过程中使用的是由段和偏移值构成的地址。该地址并不能直接用来寻址物理内存地址,因此被称为虚拟地址。为了能寻址物理内存,就需要一种地址变换机制将虚拟地址映射或变换到物理内存中,这种地址变换机制就是内存管理的主要功能之一(内存管理的另外一个主要功能是内存的寻址保护机制。。虚拟地址通过段管理机制首先变换成一种中间地址形式—CPU 32 位的线性地址,然后使用分页管理机制将此线性地址映射到物理地址。为了弄清Linux 内核对内存的管理操作方式,我们需要了解内存分页管理的工作原理,了解其寻址的机制。分页管理的目的是将物理内存页面映射到某一线性地址处。在分析本章的内存管理程序时,需明确区分清楚给定的地址是指线性地址还是实际物理内存的地址。 内存管理以提高内存利用率和扩大内存量为主要目标,设计了各种内存分配管理方法、算法和数据结构,通过分析比较,得到不同管理方法的异同。同时,以地址映射为辅线条,描述分区、分页、分段、请求分页和请求分段的映射原理。一个操作系统的内存管理方式很大程度上决定了它的效率,时间与空间的对立统一在内存管理上体现得最为明显,首先,分配/释放内存是一个发生频率很高的操作,所以它要求有一定的实时性,另外,内存又是一种非常宝贵的资源.所以要尽量减少内存碎片的产生. ?Linux采用了伙伴系统算法来管理内存,即把内页按2^0,2^1,2^2…2^10大小进行分组.每次分配内存时,从相应大小的池中分配内存,然后再把余下的内存分配给它的下一级缓存池. 如图 ?????? 首先,它会到相应大小的(2^0)的空闲链表入队.判断相邻块的空闲情况,此时,因为第三个是空闲的,所以可以合并为一块2^1的空闲块.继续判断2^1链中相邻块是否是空闲的,上图中可以将2^1的两个块合成一个大块,然后继续判断2^2中是否可以继续合并,依次类推. 上述,涉及到几个位操作,分析如下: 1:得到相邻块的的起始page: buddy1 = base + (page_idx ^ (1 order))align=center 根据上面的分析,可得知page_idx本身就是order位对齐的,所以,它的低order位为零.此外,再根据0与任何数异或值不变,1与数异或都相反的规律,我们可以得知,位运算结果只跟order+1位有关.据此就可以计算出它的“伙伴块”2:得到高一级空闲链的首空闲块序号: mask = 1; page_idx = mask; 只要按着高一级链表的order位对齐就行了 3:得到空闲块在高一级链表中对应的分配位图位index = 1; 在前面分析过对应位的计算方法,在高一级空闲链中的位对应当前除二 其实这一个过程在操作系统设计中也叫“内存拼凑”,就是把剩余小内存,拼成连续的大内存,以满足某些程序的需要。Intel 80x86 体系结构中,Linux 内核的内存管理程序采用了分页管理方式。利用页目录和页表结构处理内核中其它部分代码对内存的申请和释放操作。内存的管理是以内存页面为单位进行的,一个内存页面是指地址连续的4K 字节物理内存。通过页目录项和页表项,可以寻址和管理指定页面的使用情况。 在Linux 0.11 的内存管理目录中共有三个文件,如列表10-1 中所示: 其中,page.s 文件比较短,仅包含内存页异常的中断处理过程(int 14)。主要实现了对缺页和页写保护的处理。memory.c 是内存页面管理的核心文件,用于内存的初始化操作、页目录和页表的管理和内核其它部分对内存的申请处理过程。 一·内存管理的

文档评论(0)

502992 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档