第7章UNIX系统分解.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内存。所以初始化的主要工作是复制父进程的proc表目中的某些项目以共享其打开的文件,复制正文段和当前目录表的表目(i节点),为子进程申请内存并把父进程所有可写的数据段部分复制到内存中去。 (2)进程的执行 子进程被建立后继承了父进程的正文段和数据段,这就限制了子进程可以执行的程序规模。为了扩充子进程的执行能力,使它可以执行不属于父进程的正文段和数据段,UNIX系统提供了一个系统调用原语exec来执行一个新的文件。这使得该进程以在此文件中指出的新的正文段和数据段来调换当前的正文段和数据段。这个操作仅改变进程执行的程序,而并不改变进程的标识符,它在进程树中的位置也未变。 (3)进程的终止 在UNIX系统中,一般的用户进程在完成其任务后应尽快予以撤消,以便及时收回其占用的资源。为了及时回收资源并减少父进程的干预,UNIX系统通过系统调用原语exit来实现自己的终结。 进程被终止时,关闭所有文件,将当前目录项的访问计数减1,释放正文段。将进程数据ppda写入盘对换区,释放数据段空间,唤醒父进程和1进程,最后,自我终止进程放弃处理机,内核再调度另一进程执行。 2.进程的同步和通信 UNIX中对可写的公用变量通常只允许系统进程访问。那么这些系统进程间如何实现临界段互斥执行呢。其主要的方法是: (1)UNIX的调度策略规定在系统进程执行期间发生中断或陷阱时,不进行进程的转换调度。只有在用户程序执行过程中被中断或陷阱、并且在处理中断后返回时,才可以进行进程的调度以重新分配处理机。所以在系统进程执行期间不会有别的进程操作插入。 (2)提高临界段等代码段的处理机中断优先级以屏蔽某些类别的中断,用来防止在系统进程中插入中断和陷阱处理程序时,可能改变进程的状态或修改公共数据等情况。 系统进程还可利用系统调用sleep和wakeup原语实现进程间同步。sleep原语使调用者进程以指定的原因和优先数睡眠(阻塞),而wakeup原语则唤醒在指定原因上睡眠的所有进程。这两个原语,用户进程是不能使用的,但用户进程之间可以利用核心程序提供的软中断信号机制来实现少量信息的传输和同步。它是某一个进程向另一个与之相关的进程发送一个 0~19之间的数(放在接收进程的proc结构p-sig中)。接收者进程在退出陷阱处理程序、时钟中断程序,和sleep原语时均要检查是否收到某个软中断信号,如已收到,则执行预先规定好的程序。UNIX系统的进程通信功能是很弱的,为了满足协同进程间的通信需要而设置了这一最简单的通信功能。 4.进程调度与存储管理 在UNIX系统中进程调度的功能是由一个专门的进程—0#进程来负责的,由于UNIX系统的进程调度的主要功能是响应分时用户,所以0#进程包括两部分任务: (1)把进程的映象从内存换出到磁盘; (2)分配处理机。 UNIX系统的进程调度是按照其优先级的高低进行调度的,每次调度拥有最高优先级的进程去占有处理机。每一个进程从它被创建时起,就拥有了一个随时间动态变化的优先级。系统进程的优先级高于用户进程的优先级,其最初的优先级取决于进程所等待的事件,事件优先级的排列次序为:磁盘事件,终端事件,时钟事件和用户进程事件。用户进程的优先级是基于其所使用了的处理机时间的多少而动态地变化,使用处理机时间越长,优先级越低。优先级高的进程优先得到处理机。UNIX每秒为每个用户进程计算一次优先级,优先数愈小,优先级愈高。 在分时系统中,各交互进程需要经常在内存和磁盘之间进行交换。实际上,任何一个待执行的进程,如果它不能在内存中占据必需的容量,它是不能被执行的。然而,内存是一种有限却很昂贵的资源,它不可能容纳系统中所有活动的进程。为使内存的紧张状况得到缓解,UNIX系统采用一种交换策略。一个在内存中非运行状态的进程,其进程的映象将被从内存中换出而存入磁盘的对换区中。而一个被选中运行的磁盘上的就绪进程,其映象可以被换入内存。在这两种情况下,均有内存或磁盘空间的分配和 释放问题。在UNIX中内存的磁盘空间的分配和释放模块是相同的,所使用的分配算法是最先适应法。 一个进程在运行过程中如果要求增加分给它的的内存块数时,系统就重新分给它一块足够大的内存空间,并把旧的内存区中的内容复制到新分给的内存区中同时释放旧的内存区。如果进程要求增加内存空间而系统不能满足其要求时,就将该进程换出内存而放入磁盘对换区中,直到以后有足够内存时才将它重新换入内存。 所有进程的对换工作全是由0#进程负责,其对换过程是这样的:当0#进程决定要从磁盘上换入进程时,它首先扫描系统的proc结构表,以找出不在内存但在磁盘上驻留时间最长的就绪进程并将其换入内存。如果内存不够,0

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档