第5讲 进程控制.pptx

  1. 1、本文档共110页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第5讲Linux多进程编程;本章概述;本章学习目标;本章主要内容;5.1逻辑控制流与并发流;一、什么是并发;二、逻辑控制流(逻辑流);三、并发流;〉多任务(multitasking):一个进程和其他进程轮流运行的概念

〉时间片(timeslice)与时间分配(timeslicing):每次分配给一个进程的执行时间称之为时间片,进程也因此划分为多个做时间分片。

〉示例:进程A的逻辑流由两个时间分片组成

进程B、进程C由几个时间分片?;四、并发与并行;5.2进程基本概念;5.2.1进程概念、结构与描述;二、进程结构;三、进程属性(保持在PCB中);四、PCB实例(Linux任务结构体:task_struct);5.2.2进程的基本状态及转换;5.2.3进程PCB组织;(2)双向链表+树形结构;5.2.4进程示例;;5.2.5操作进程的命令工具(ps、kill、);(3)ps-u命令显示当前用户拥有进程资源消耗信息;2.用kill终止进程

;3.后台执行进程(命令后加符号”???)

;5.2.6编程读取进程属性

;示例(getids.c):;*5.2.7进程权限和文件特殊权限位

;〉getids示例:;2.粘滞位(sticky)权限

;5.3进程控制;本节提纲;5.3.1创建进程;〉示例(fork1.c):;二、调用fork创建进程过程分析;;(4)fork调用后执行”pid=…“和赋值操作和后面代码;练习:;;三、进程族亲关系分析;(2)示例二:fork2.c

分析族亲关系和程序输出;〉验证示例二的进程族亲关系:添加sleep语句,让进程不急于结束;四、编写多进程并发程序(示例)

;;5.3.2多进程并发特征;父子进程输出结果交叉显示原因分析:;二、多进程并发一般情况(示例fork5.c);三、一般情况讨论;5.3.3进程等待、终止与回收;2.进程终止状态

〉常见终止状态(约定成俗):

;二、进程僵尸问题;2.僵尸进程示例(zombie.c):子进程已经终止但父进程尚未执行waitpid对其执行清理;三、进程回收(清理)

;4.进程回收示例(waitpid2.c):分析程序输出结果并验证;;;;;5.3.4让进程休眠;5.3.5进程加载;三、main函数执行时堆栈结构(为什么形式参数argv、envp是局部变量,因为在堆栈中为其分配地址);〉C语言程序中,操作环境变量的方法;四、加载程序示例:exec1.c用execvp函数加载并运行命令/bin/ps-opid,ppid,pgrp,session,tpgid,comm??代码;5.3.6调用fork、exec实现多进程应用示例

一、用fork、exec实现shell(shellex.c);(1)主控模块;〉加载和执行命令eval():;〉解析命令串:parseline;二、用fork、exec、wait和dup实现I/O重定向命令:

〉编写输入重定向程序exec2.c,父进程显示命令提示符%,从标准输入读入输入重定向命令串“sort/etc/passwd”,创建子进程,将标准输入重定向到文件/etc/passwd,然后加载和执行sort命令,实现对文件的排序功能;*5.3.7非本地跳转;示例一(setjmp/longjmp):setjmp.c;示例二(sigsetjmp/siglongjmp):restart.c;5.3.8进程与程序区别

;5.4信号机制;5.4.1信号概念;二.信号机制;三、信号表示与种类;2.Linux系统支持的信号种类;1.用/bin/kill程序发送信号

〉/bin/kill程序可以向另外的进程发送任意的信号,示例:

“$ki11-915213”发送信号9(SIGKILLL)给进程15213

2.从键盘发送信号

〉键入ctrl-c:发送SIGINT信号发送到这个前台进程组中的每个进程

〉键入ctrl-z:发送一个SIGTSTP信号到外壳,外壳捕获这个信号,并发送SIGTSTP信号给前台进程组中的每个进程

;3.用kill、raise函数发送信号

;4.用alarm函敢发送信号

;5.4.3接收函数;设置信号处理函数;typedef的使用;示例(1sigint1.c):它捕获用户在键盘上输入CTRL-C时外壳发送的SIGINT信号,将默认行为修改为捕获信号,输出一条信息,然后终止该进程;示例2:下面程序的语义是运行时,用户按下Ctrl_C键,执行为SIGINT定制的信号处理函数,向子进程发信号SIGNUSR1,子进程收到信号后输出”killedbypaprocess”而终止。;pid_tpi

文档评论(0)

执着仅一次 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档