《linux内核分析》实验指导书10

《linux内核分析》实验指导书10

ID:27694898

大小:902.89 KB

页数:29页

时间:2018-12-05

《linux内核分析》实验指导书10_第1页
《linux内核分析》实验指导书10_第2页
《linux内核分析》实验指导书10_第3页
《linux内核分析》实验指导书10_第4页
《linux内核分析》实验指导书10_第5页
资源描述:

《《linux内核分析》实验指导书10》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、《Linux内核分析》课程实验指导书实验一、进程管理实验【实验目的】1、加深对进程概念的理解,明确进程和程序的区别2、进一步认识并发执行的实质3、分析进程争用资源的现象,学习理解进程互斥的方法4、了解lirwx系统中进程通信的基本原理【实验内容】编写一段程序,实现软中断通信。使用系统调用fork()创建两个子进程,再用系统调用signal0让父进程捕捉键盘上发出的中断信号(即按Del键),当父进程接受到这两个软中断的其中某一个后,父进程用系统调用killO向两个子进程分别发送整数值为16和17软中断信号,子进程获

2、得对应软中断信号,然后分别输出下列信息后终止:Childprocess1iski1ledbyparent!!Childprocess2iskiliedbyparent!!父进程调用wait()函数等待两个子进程终止后,输出以下信息,结束进程执行:Parentprocessiskilled!!多运行几次编写的程序,简略分析出现不同结果的原因。【实验指导】(1)算法流程图(图H1)初始化软中断信号集否创建子进程1否创逮子进程2当前运行的足父进程?得到软中断号16发生?得到软中断号否17发生子进程2终止是等待软中断发生

3、接受软中断SIGQUITSIGAL调溫4濃子S3子进程1终止搏待子进程1终止父进程终止结朿图1-1软屮断通信程序流程图(2)参考程序源代码^include^include〈signal,h〉^include^includeintwait_flag;voidstopO;mainOintpidl,pid2;//定义两个进程号变量signal(3,stop);//或者signal(14,stop);while((pidl=fork())二二-1);//若创

4、建子进程1不成功,则空循环if(pidl>0){//子进程创建成功,pidl为进程号while((pid2=fork())==-D;//创建子进程2if(pid2>0){wait_flag=1;sleep(5);//父进程等待5秒kill(pidl,16);//杀死进程1kill(pid2,17);//杀死进程2wait(0);//等待子进程1结束的信号wait(0);//等待子进程2结束的信号printf(“Parentprocessiskilled!!”);exit(0);//父进程结束}else{w

5、ait_flag=1;signal(17,stop);//等待进程2被杀死的屮断号17printf(“Childprocess2iskilledbyparent!!”);exit(0);}}else{wait_flag=1;signal(16,stop);//等待进程1被杀死的中断号16printf(“Childprocess1iskilledbyparent!!’,);exit(0);voidstop(){wait_flag=0;}(3)程序运行结果编译运行后,等待从键盘输入“Del”,有如下结

6、果:Childprocess1iskilledbyparent!!Childprocess2iskilledbyparent!!Parentprocessiskilled!!或者:(运行多次后会出现如下结果)Childprocess2iskilledbyparent!!Childprocess1iskilledbyparent!!Parentprocessiskilled!!实验二、模块编程实验【实验目的】通过学习内核模块的编写和运行,了解模块是LinuxOS的一种特有的机制,可根据用户的实际需要在不需要对内核进

7、行重新编译的情况T,模块能在内核中被动态地加载和卸载。编写一个模块,将它作为LinuxOS内核空间的扩展来执行,并通过insmod命令来手工加载,通过命令rmmod来手工卸载。【准备知识】Linux模块是一些可以作为独立程序来编译的函数和数裾类型的集合。在装载这些模块时,将它的代码链接到内核屮。Linux模块有两种装裁方式:静态装裁(內核启动吋装载)和动态装载(在内核运行过程中装载)。若在模块装载之前就调用了动态模块的一个函数,则此调用将失败:若模块已被装载,则内核就可以使川系统调川,并将其传递到模块中的相应函数

8、。模块通常用來实现设备驱动程序(这要求模块的八PT和设备驱动程序的AH相一致)。模块可用来实现所期望的任何功能。一、模块的组织结构模块一旦被装载进系统,就在内核地址空间中管态下执行。它就像任何标准的内核代码一样成为内核的一部分,并拥有其它内核代码相同的权限和职贵(当然也会引起系统的崩溃)。若模块知道内核数裾结构的地址,则它可以读写A核数裾结构。但Linux是一个整体成的内

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。