实验4进程通信signal软中断课件

上传人:磨石 文档编号:243144740 上传时间:2024-09-16 格式:PPT 页数:20 大小:380.50KB
返回 下载 相关 举报
实验4进程通信signal软中断课件_第1页
第1页 / 共20页
实验4进程通信signal软中断课件_第2页
第2页 / 共20页
实验4进程通信signal软中断课件_第3页
第3页 / 共20页
点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,实验4进程通信signal软中断,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验4进程通信signal软中断,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验4进程通信signal软中断,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验4进程通信signal软中断,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验4进程通信signal软中断,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验4进程通信signal软中断,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验4进程通信signal软中断,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验4进程通信signal软中断,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验4进程通信signal软中断,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验4进程通信signal软中断,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验4进程通信signal软中断,*,第四章 进程管理实验,4,.1,实验目的,一、,加深对进程概念的理解,明确进程和程序的区别,二进一步认识并发执行的实质,三分析进程争用资源的现象,学习解决进程互斥的方法,四了解,Linux,系统中进程通信的基本原理,4,.2,准备知识,4,.2.1,基本概念,进程的概念,进程与程序的区别,并发执行的概念,进程互斥的概念,进程通信的基本原理,1,实验4进程通信signal软中断,系统调用,图,4,-1,系统调用的参数表方式,变元表:,N,参数,1,参数,2,参数,n,(a),直接方式,trap,参数,1,参数,2,参数,n,变元表:,N,指针,(b),间接方式,系统调用是一种进入系统空间的办法。通常,在,OS,的核心中都设置了一组用于实现各种系统功能的子程序,并将它们提供给程序员使用。程序员在需要,OS,提供某种服务的时候,便可以调用一条系统调用命令,去实现希望的功能,这就是系统调用。因此,系统调用就像一个黑箱子一样,对用户屏蔽了操作系统的具体动作而只是提供了调用功能的接口。,2,实验4进程通信signal软中断,系统调用与一般的过程调用有下述几方面的明显差别:,(,1,)运行在不同的系统状态。,(,2,)通过软中断进入。,(,3,)返回问题。当调用进程仍具有最高优先级时,才返回到调用进程继续执行;否则,将引起重新调度,以便让优先权最高的进程优先执行。,(,4,)嵌套调用。系统调用也可以嵌套进行,实验4进程通信signal软中断,实验4进程通信signal软中断,实验4进程通信signal软中断,系统调用的实现,系统调用的实现与一般过程调用的实现相比,两者间有很大差异。,对于系统调用,控制是由原来的用户态转换为系统态,这是借助于中断和陷入机制来完成的,在该机制中包括中断和陷入硬件机构及中断与陷入处理程序两部分。,中断,是指,CPU,对系统发生某事件时的一种响应,.,实验4进程通信signal软中断,中断分为外中断和内中断,(1),所谓,外中断,是指由于外部设备事件所引起的中断,.,(2),内中断,则是指由于,CPU,内部事件所引起的中断,.,如程序出错(地址越界,),、电源故障等。内中断(,trap,)被译为“捕获”或“陷入”,。,陷入,是由于执行了现行指令所引起的,;,中断,则是由于系统中某事件引起的,该事件与现行指令无关。,实验4进程通信signal软中断,进程创建与软中断通信,fork,系统调用,:,由于进程为执行程序的环境,因此在执行程序前必须先建立这个能,跑,程序的环境。,Linux,系统提供系统调用拷贝现行进程的内容,以产生新的进程,调用,fork,的进程称为,父进程,;而所产生的新进程则称为,子进程,。,子进程,会承袭父进程的一切特性,但是它有,自己的数据段,,也就是说,尽管子进程改变了所属的变量,却不会影响到父进程的变量值。,父进程和子进程,共享一个程序段,,但是,各自拥有自己的堆栈、数据段、用户空间以及进程控制块,。,换言之,两个进程执行的程序代码是一样的,但是各有各的程序计数器与自己的私人数据。,实验4进程通信signal软中断,linux,是多用户和多进程的操作系统,进程在操作系统中的创建,都会生成一个进程描述块,描述当前进程的所有信息,包括,数据段、代码段、堆栈段的地址,当前进程的环境变量,文件描述符等。,fork,函数过程:操作系统先创建一个进程描述块,然后把父进程的所有进程描述符的信息精确拷贝过来,和父进程一样(除了进程,ID,不一样外),代码段共享,数据段和堆栈段复制,所有的寄存器的值全部精确拷贝,文件描述符也许精确拷贝。,fork,的返回值,,,fork,在,父进程,空间中返回子进程的,PID,,在,子进程,空间中返回,0,。,9,实验4进程通信signal软中断,图,3-2,父进程和子进程的内存映像,用户内存区,父进程的,vm_arce_struct,vm start,vm start,count = 2,vm start,vm start,count = 2,子进程的,vm_arce_struct,子进程数据区,子进程堆栈区,父进程数据区,父进程堆栈区,共享正文区,10,实验4进程通信signal软中断,一,fork(),函数,:,用于创建一个新进程(子进程),int,fork(,);,pid,= fork(),;,if(pid, 0,) ,printf(,The,parent process is running now!n,);,exit(0);,11,实验4进程通信signal软中断,进程创建与软中断通信,信号与软中断,信号,是,OS,系统中使用的一种,进程间通信方式,,它提供一种处理异步事件的方法。,例如,:用户可以通过一个,中断指令中断,一个程序的执行,两个进程间可以通过,发送信号,通知一个异步事件,系统或进程通过信号报告突发的硬件故障(如非法指令或运算溢出)。,此外,系统还可以,通过信号实现软中断,,即用户进程向自身发送信号,以调用某些系统功能,或转入某些特定处理。,实验4进程通信signal软中断,进程创建与软中断通信,“软中断”,不同于普通中断,它是指通过随机向进程,发送信号,,通知进程完成某事件。,只有,执行状态,的进程才会,响应,该信号,与处理普通中断一样,进程转而执行信号要求的处理。,如果信号到达时,进程处于,执行状态以外,的其他状态,则信号,不,会被,响应,。,实验4进程通信signal软中断,进程创建与软中断通信,系统调用,signal,是进程用来设定某个信号的处理方法;,系统调用,kill,是用来发送信号给指定进程的。,这 两个调用可以形成信号的基本操作。,处理信号有三种类型,:,进程接收到信号后退 出;,进程忽略该信号;,进程收到信号后执行用户设定用系统调用,signal,的函数。,信号,SIGINT,由按下,Ctrl-C,发出,信号,SIGQUIT,由按下,Ctrl-,发出。,实验4进程通信signal软中断,信号,功能,值,SIGHUP,挂起,1,SIGINT,键盘中断,键盘按,Delete,键或,Break,键,2,SIGQUIT,键盘按,Quit,键,3,SIGILL,非法指令,4,SIGTRAP,跟踪中断,5,SIGIOT,IOT,指令,6,SIGBUS,总线错,7,SIGFPE,浮点运算溢出,8,SIGKILL,要求终止进程,9,SIGUSR1,用户定义信号,#1,10,SIGSEGV,段违法,11,SIGUSR2,用户定义信号,#2,12,SIGPIPE,向没有读进程的管道上写,13,SIGALRM,定时器告警,时间到,14,SIGTERM,kill,发出的软件结束信号,15,SIGCHLD,子进程死,17,SIGCONT,若已停止则继续,18,SIGPWR,电源故障,30,实验4进程通信signal软中断,W,ait(),函数,W,ait(),函数常用来控制父进程与子进程的同步。,在父进程中调用,wait,()函数,则父进程被阻塞,进入等待队列,等待子进程结束。当子进程结束时,会向父进程发出,SIGCHLD,信号。当接收到信号后,父进程从,wait,()函数返回继续执行原程序。,E,xit(),函数,是进程结束最常调用的函数。,在正常终止时,,exit,()函数返回进程结束状态。,实验4进程通信signal软中断,进程创建与软中断通信,#include ,#include ,#include ,#include ,int wait_flag;,void stop();,main() ,int pid1,pid2;,wait_flag=1;,signal(2,stop); /or signal(14,stop);,实验4进程通信signal软中断,进程创建与软中断通信,while(wait_flag=1);,while(pid1=fork()=-1);,if(pid10) ,while(pid2=fork()=-1);,if(pid20) ,wait_flag=1;,sleep(5);,kill(pid1,16);,kill(pid2,17);,wait(0);,wait(0);,printf(Parent process is killed !n);,exit(0);,实验4进程通信signal软中断,进程创建与软中断通信,else ,wait_flag=1;,signal(17,stop);,while(wait_flag=1);,printf(Child process 2 is killed by parent !n);,exit(0);,实验4进程通信signal软中断,进程创建与软中断通信,else ,wait_flag=1;,signal(16,stop);,while(wait_flag=1);,printf,(Child process 1 is killed by parent !n);,exit(0);,void stop() ,wait_flag=0;,实验4进程通信signal软中断,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!