文档详情

《计算机操作系统 》课件_3.3进程控制.pptx

发布:2025-03-01约1.02万字共41页下载文档
文本预览下载声明

3.3进程控制原语(primitive):由若干条指令构成的“原子操作(atomicoperation)”过程,完成某种特定的功能,作为一个整体而不可分割--要么全都完成,要么全都不做。进程控制原语:(1)创建进程原语 (2)撤销进程原语

(3)阻塞进程原语 (4)唤醒进程原语进程创建进程撤销进程阻塞与唤醒Linux进程管理

253.3.1进程创建1.进程图:描述进程家族关系的有向树3.3进程控制ABCDHGFEIJK

253.3.1进程创建2.引起进程创建的典型事件3.3进程控制(1)作业调度(2)用户登录(3)提供特定服务(4)应用请求

253.3.1进程创建3.进程创建原语create(name,priority)创建一个新进程,建立进程的PCB结构并为其分配资源。3.3进程控制申请空闲PID申请空白PCB为新进程分配资源成功?成功?初始化PCB插入就绪队列返回PID入口YY出错出错NN

253.3.2进程撤销1.引起进程撤销的典型事件3.3进程控制进程正常运行结束而撤销进程异常终止而撤销进程应外界干预而终止:操作员或操作系统干预父进程请求父进程被撤销

3.3.2进程撤销由进程Pid获得其PCB若进程处于运行态,终止运行,设置重新调度标志若进程有子进程,递归撤销子进程或为子进程指定新的父进程回收进程资源将进程移出所在队列,待父进程收集其信息后,释放PCB2.进程撤销过程kill(Pid):回收进程资源

253.3.3进程阻塞与唤醒1.引起进程阻塞和唤醒的典型事件3.3进程控制当前进程请求资源失败当前进程需要等待某种操作的完成当前进程的前驱进程尚未完成当前进程无新工作可做

3.3.3进程阻塞与唤醒2.进程阻塞过程:sleep()3.3进程控制入口保存进程CPU现场信息到PCB或堆栈中置进程状态为“阻塞态”将进程PCB插入相应阻塞队列中转进程调度程序

3.3.3进程阻塞与唤醒3.进程唤醒:wakeup()3.3进程控制入口从阻塞队列中确定唤醒进程置进程状态为“就绪态”将进程PCB移出阻塞队列并插入相应就绪队列中

3.3.4Linux进程管理3.3进程控制进程描述符task_struct进程创建do_fork()执行程序exec()系列函数进程终止do_exit()等待子进程结束wait()进程睡眠wait_event*()进程唤醒wake_up()

3.3.4Linux进程管理由三部分组成:进程控制块(task_struct)正文段:进程要运行的程序代码数据段:又分为用户数据段和系统数据段用户数据段:进程在用户态下执行时直接操作的所有数据,包括全部变量及用户栈。系统数据段:主要是内核栈。保存中断现场信息和进程在内核态下执行函数嵌套调用的返回现场信息。内核栈的大小是静态确定的,而用户栈可以在进程运行时动态扩展1.Linux进程实体的组成:3.3进程控制

3.3.4Linux进程管理进程状态:state,exit_state:见前面3.2.3节的介绍相关标识符信息:pid:进程标识符tgid:线程组领头线程的PID,也是线程组所属进程的PIDpgrp:进程所属进程组的领头进程的PIDuid和gid:进程的用户ID及用户组的IDeuid和egid:有效的uid和gid,当用户使用“sudo”命令时,会暂时将root身份赋给euid和egid1.进程描述符task_struct()3.3进程控制进程状态信息相关标识符信息进程家族关系进程调度相关信息地址空间及文件系统信息内核堆栈及thread_info结构信号处理相关信息时间及定时器信息

3.3.4Linux进程管理进程家族关系:thread_group:指向该进程所在进程组中所有进程组成的链表real_parent:指向创建该进程的父进程parent:指向该进程的当前父进程children:指向该进程的子进程链表的头部sibling:指向兄弟进程链表中的下一个或前一个节点1.进程描述符task_struct()

3.3.4Linux进程管理进程调度相关信息:prio:进程的动态优先级,取值范围[0,139]static_prio:进程的静态优先级,取值范围[0,139]normal_prio:常规动态优先级rt_priority:实时进程优先级,取值范围[0,99]run_list:记录进程在就绪队列rq中的位置sched_class:进

显示全部
相似文档