第四章进程管理.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 进程管理;4.1 进程(PROCESS);4.1.1 程序次序执行和并发执行;次序执行特征 次序性:按照程序结构所指定次序(可能有分支或循环) 封闭性:独占全部资源,计算机状态只因为该程序控制逻辑所决定 可再现性:初始条件相同则结果相同。如:可经过空指令控制时间关系。 并发执行特征 间断(异步)性:走走停停,一个程序可能走到中途停下来,失去原有时序关系; 失去封闭性:共享资源,受其它程序控制逻辑影响。如:一个程序写到存放器中数据可能被另一个程序修改,失去原有不变特征。 失去可再现性:失去封闭性 -失去可再现性;外界环境在程序两次执行期间发生改变,失去原有可重复特征。;并发执行条件:到达封闭性和可再现性;4.1.2 进程定义和描述;2. 进程特征;3. 进程与程序区分;4. 处理机调度器(dispatcher);5. 进程控制块 (PCB, process control block);进程控制块内容;6. PCB组织方式;7. 进程上下文;关键态和用户态;4.1.3 进程状态转换;4.1.3.1 两状态进程模型;1. 状态;2. 转换;4.1.3.2 五状态进程模型;五状态进程模型(单队列结构);五状态进程模型(多队列结构);1. 状态;创建状态(New):进程刚创建,但还不能运行(一个可能原因是OS对并发进程数限制);如:分配和建立PCB表项(可能有数目限制)、建立资源表格(如打开文件表)并分配资源,加载程序并建立地址空间表。 结束状态(Exit):进程已结束运行,回收除PCB之外其它资源,并让其它进程从PCB中搜集相关信息(如记帐,将退出码exit code传递给父进程)。;2. 转换;超时(Timeout):因为用完时间片或高优先进程就绪(被抢先)等造成进程暂停运行; 事件等候(Event Wait):进程要求事件未出现而进入阻塞;可能原因包含:申请系统服务或资源、通信、I/O操作等; 事件出现(Event Occurs):进程等候事件出现;如:操作完成、申请成功等;;4.1.3.3 挂起进程模型;单挂起进程模型;双挂起进程模型;1. 状态;2. 转换;激活(Activate):把一个进程从外存转到内存;可能有以下几个情况: 就绪挂起到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,会进行这种转换; 阻塞挂起到阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起(系统认为会很快出现所等候事件)进程;;事件出现(Event Occurs):进程等候事件出现;如:操作完成、申请成功等;可能情况有: 阻塞到就绪:针对内存进程事件出现; 阻塞挂起到就绪挂起:针对外存进程事件出现; 收容(Admit):收容一个新进程,进入就绪状态或就绪挂起状态。进入就绪挂起原因是系统希望保持一个大就绪进程表(挂起和非挂起);;4.1.4 操作系统代码执行;4.2 进程控制;4.2.1 进程控制功效;4.2.2 进程创建和退出;2. 退出;4.2.3 UNIX进程阻塞和唤醒;调用wait挂起本进程以等候子进程结束,子进程结束时返回。父进程创建多个子进程且已经有某子进程退出时,父进程中wait函数在第一个子进程结束时返回。 其调用格式为pid_t wait(int *stat_loc);;返回值为子进程ID。 waitpid()等候指定进程号子进程返回并修改状态; waitid()等候子进程修改状态; 调用pause挂起本进程以等候信号,接收到信号后恢复执行。当接收到中止进程信号时,该调用不再返回。 其调用格式为int pause(void);;;调用sleep将在指定时间seconds内挂起本进程。其调用格式为:unsigned sleep(unsigned seconds);;返回值为实际挂起时间。 调用kill可发送信号sig到某个或一组进程pid。其调用格式为:int kill(pid_t pid, int sig);。 信号定义在文件/usr/include/asm/signal.h中。命令kill可用于向进程发送信号。如:kill -9 100将发送SIGKILL到ID为100进程;该命令将中止该进程执行。;实例:UNIX_wait;main() { int local,i; pid_t child; if ((child=fork()) == -1) { // 创建失败 printf(Fork Error.\n); } if (child == 0) {// 子进程 printf(Now it is in child process.\n); if (execl(/home/xyong/work/ttt,ttt,NULL) == -1) { //

文档评论(0)

181****8523 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档