Linux基础教程(清华课件)2.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
上述两种措施仍然没有得到足够的空闲页面时,系统 就要对所有进程进行扫描,寻找适合换出的候选进 程。好的候选进程应该有一个或多个可以丢弃或换 出的页面,系统选择其中部分页面丢弃或换出。 Linux系统采用记龄(aging)置换算法。Linux系统 根据访问次数来决定是否适合换出,优先换出那些 很长时间没有访问的页面。与前两种途径相比,换 出或者丢弃其他进程占用的页面的效率最低。 总的来看,请求页式存储管理方法在进程建立时只分 配少量内存,通过页面的交换来保证进程运行的时 候能够得到需要的页面,可以同时在内存中安排多 个进程。但是,内存利用率的提高是以牺牲系统时 间开销为代价换来的。 4.3 Linux进程调度 Linux系统中同时在内存中安排多个进程,这些进程 相互之间竞争处理机的使用权。系统的低级调度, 即进程级调度就是要按照一定的策略,从所有处于 就绪状态的进程中选择最应该执行的进程,把CPU 分配给它,开始执行。Linux系统的内核级线程也 按照进程来对待,使用进程调度统一处理进程和内 核级线程。 4.3.1 初始化过程及进程树 我们以Intel 386系列计算机为例,介绍Linux系统的 启动过程, 现假定系统已经完成了正常安装。打 开计算机电源,计算机首先从固化在主板ROM中 的BIOS开始启动,BOIS对计算机的硬件进行一系 列的检测,然后从指定设备的指定位置,把boot loader读入系统内存并把控制权转交给boot loader,接着,在boot loader的控制下,系统启动 代码被读入内存并进行初始化工作,控制权转交给 系统初始化代码后,引导整个操作系统进入内存并 控制整个系统,设置各种表格和数据结构,初始化 可运行队列的时候建立系统的0号进程,然后创建 系统最初的进程——init进程,该进程的进程号为 1。 init进程启动内核交换线程等系统内核线程,然后根 据系统提供的参数,启动相应的终端管理进程,在 每一个终端屏幕上显示login字样,等待用户的登 录,整个启动过程到此结束,参看图4.3。用户登 录过程中,init进程启动login进程对用户的账号和 密码进行验证,通过之后,由login进程启动shell命 令解释进程,为用户提供操作系统的接口,接受用 户的输入,解释执行用户命令,执行过程中又会创 建新的进程。 图4.3 Linux系统启动过程 Linux系统的所有进程共同构成一个完整的进程树, 如图4.3所示。从init进程开始, init进程是所有其 他进程的祖先。init产生终端管理进程mingetty, mingetty产生login,login产生用户的shell进程,然 后shell产生其他用户进程,因此,其他所有进程都 是由init或者它的子孙创建而来。同样,在进程结 束之后,父进程也要负责该进程的最后回收工作, 如果某一个进程创建了子进程之后,由于某种原因 先于子进程终止,由它创建的子进程成为孤儿进 程,孤儿进程的祖父进程就要负责回收工作,依此 类推。最后,在系统要关机之前,init进程还要负 责结束所有的进程,卸载所有文件系统并终止处理 器的指令执行。 4.3.2 进程的组织 为了管理进程,Linux系统采用多种方式来组织处于 各种状态的进程。 系统中每创建一个新的进程,就给它分配一个进程控 制块(PCB), PCB是系统感知、控制进程的静 态实体。系统访问PCB的频率非常高,因此所有进 程的PCB都直接存放在物理内存中。Linux系统中 使用一个称为task的数组来保存所有PCB的指针, Linux通过task数组来管理系统中所有的进程。每 一个进程都有一个惟一标识自己的进程号PID,进 程号和进程在task数组中的位置(数组元素的下 标)之间是不同的。 同时,系统中所有的进程还构成一个双向循环队列, 整个队列通过进程控制块中的两个指针next-task和 prev-task来维护。某个进程在整个进程树中的位 置,也通过PCB中指针描述。 为了方便进程的调度,系统把所有可运行的进程组织 成一个可运行队列,系统通过当前(current)指针 来区别就绪状态和执行状态,每一个CPU都有一个 当前指针,指向正在使用该CPU的进程。可运行队 列也是一个双向循环队列,队列中指向前后接点的 指针同样存放在PCB中,它们是next-run和prev- run。系统的调度函数根据一定的规则,查找整个 可运行队列,在其中寻找最值得执行的进程,给它 (或它们)分配CPU,投入执行。 Linux系统内部把所有进程分为三类,空闲线程、内 核线程和用户进程。空闲线程是系统中一个特殊的 具有标志作用的进程,它是task数组的0号元素 task\[0\],它的进程号也是

文档评论(0)

kaku + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8124126005000000

1亿VIP精品文档

相关文档