操作系统第5次课.pptVIP

  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文档。上传文档
查看更多
操作系统第5次课

2.3.2 进程的创建(工程与科研) 2 进程的创建(主要工作是为被创建进程建立一个PCB) (1)创建原语首先从系统的PCB表中索取一个空白的PCB表目,并获得其内部标识。 i=getid(n)-------形式描述 (2)为新进程分配资源:为进程的程序、数据、用户栈分配内存空间,内存大小由提出创建进程的用户进程给出。 (3)初始化PCB 标识符—>PCB的相应位置 初始化CPU状态信息:PC—>程序入口地址;栈指针—>栈顶 初始化进程调度信息:进程状态为活动/静止就绪态, 优先级设为K 初始化进程控制信息:资源清单、 程序和数据地址等 (4)并把该PCB插入到就绪队列RQ中,就可进入系统并发执行。 BOOL bRet = ::CreateProcess ( NULL, // 不在此指定可执行文件的文件名 szCommandLine, // 命令行参数 NULL, // 默认进程安全性 NULL, // 默认线程安全性 FALSE, // 当前进程内的句柄不可以被子进程继承 CREATE_NEW_CONSOLE,//为新进程创建一个新的控制台窗口 NULL, // 使用本进程的环境变量 NULL, // 使用本进程的驱动器和目录 si, pi); if(bRet) { ::CloseHandle (pi.hThread); ::CloseHandle (pi.hProcess); printf( 新进程的进程ID号:%d \n, pi.dwProcessId); printf( 新进程的主线程ID号:%d \n, pi.dwThreadId); } return 0; } 2.3.3进程的撤消原语(Destroy) 1 引起撤消的事件 正常结束 异常结束 外界干预 操作员/系统干预(人为终止)非暂停、挂起 父终止子 撤父引起 2 进程撤消过程: 采用的策略是由父进程发出,撤消它的一个子进程及该子进程所有的子孙进程,被撤消进程的所有资源(主存、I/O资源、PCB表目)全部释放出来归还系统,并将它们从所有的队列中移去。如撤消的进程正在运行,则要调用进程调度程序将处理器分给其它进程。 2.3.3进程的撤消原语(Destroy) 1 由ID检索PCB集合 —>被撤进程的PCB,并读出其状态 2 若该进程正处于执行状态,则应立即终止执行,置调度标志=TRUE(表示该进程被终止后,可引起系统重新调度,调度别的进程执行),将它从队列中摘下。 3 终止其所有子孙进程(递归) 4 被撤消进程的所有资源(主存、I/O资源、PCB表目)全部释放出来归还系统/父进程。 5 移出PCB Windows下的情况 父进程结束,子进程并不跟着结束; 用户发起的应用程序都有相同的父进程,即ieexplore. 将ieexplore结束,其所有子进程不受影响; 重新启动ieexplore,具有了新的ID; 之后创建的进程,父进程为ieexplore新ID; Cmd的父进程是CreateProcess; 2.3.4 进程的阻塞与唤醒 1. 引起进程阻塞的原因 1)请求系统服务(系统并不能立即满足) 举例:请求某系统资源 2)启动I/O操作 (打印过程中,进程阻塞) 3)数据尚未到达 (合作的两个进程) 4)无新工作可做的系统进程 2. 阻塞过程 (1)首先找到对应PCB; (2)保护现场—>PCB; (3)立即仃止原来程序的执行,把PCB中的现行状态由运行 态改为活动阻塞态; (4)将PCB插入到等待某事件的阻塞队列中; (5)最后调用进程调度程序进行处理机的重新分配。 2.3.4 进程的阻塞与唤醒 3. 阻塞原语block() 进程阻塞是进程自身的主动行为。 4. 唤醒过程 引发原因: 所等待的资源出现了。 当被阻塞的进程所期待的事件发生时(例如I/O完成时),则有关进程和过程(例如I/O设备处理程序或释放资源的进程等)调用wakeup原语,将阻塞的进程唤醒。 唤醒过程:Wakeup() (1)找到PCB; (2)将等待该事件的进程PCB从阻塞队列

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档