上传者: 43781121
|
上传时间: 2020-01-03 11:40:40
|
文件大小: 267KB
|
文件类型: docx
实验一 Linux系统的安装及用户界面的使用
一.实验目的
1. 了解Linux系统的安装、熟悉系统的启动过程和使用环境。
2. 掌握Linux环境下vi编辑器的使用方法。
3. 掌握Linux系统中编辑、编译、调试、运行一个C语言程序的全过程。
二.实验内容
1、实验要求
1. 在VMWare虚拟机环境或真实物理机器上,安装一个Linux操作系统。
2. 体验Linux操作系统中X Windows系统的使用。
3. 尝试Linux系统键盘命令的使用,并熟练掌握常用的基本命令。
4. 掌握命令行方式下vi编辑器的使用。
5. 编写一段C程序,使用系统调用fork()创建两个子进程。各进程显示不同的信息,如父进程显示字符“a”,子进程分别显示字符“b”和“c”。多次运行观察显示结果,并分析产生这种执行效果的原因。
实验二 Linux进程控制
一.实验目的
1. 掌握进程的概念,明确进程和程序的区别。
2. 认识和了解并发执行的实质。
二.实验内容
1、实验要求
1. 编写一段程序,使用系统调用fork()创建两个子进程。各进程显示不同的信息,如父进程显示字符“a”,子进程分别显示字符“b”和“c”。多次运行观察显示结果,并分析产生这种执行效果的原因。
2. 修改上面编写的程序,将每个进程的输出由单个字符改为循环输出一句话,如父进程显示:“parent:”加上进程ID,子进程分别显示:“Child1:”(或“Child2:”)加上自己的进程ID。再观察程序执行时屏幕上出现的现象,并分析原因。
3.一个父进程创建一个子进程,子进程通过exec系统调用执行另一个文件。各自的代码中显示不同的信息,观察其运行结果,分析两个进程并发执行的效果。
4. 编写程序创建如图所示的进程树,在每个进程中显示当前进程ID和父进程ID。
实验三 Linux进程间通信
一.实验目的
(1) 分析进程争用临界资源的现象,学习解决进程互斥的方法;
(2) 学习如何利用进程的“软中断”、管道机制进行进程间的通信,并加深对上述通信机制的理解;
(3) 了解系统调用pipe( )、msgget( )、msgsnd( )、msgrcv( )、msgctl( )、shmget( )、shmat( )、shmdt( )、shmctl( )的功能和实现过程,利用共享存储区机制进行进程间通信。
二、实验内容
1、实验要求
(1) 进程的控制
修改已编制的程序,将每个进程输出一个字符修改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析出现问题的原因,进一步理解各个进程争夺临界资源的情况。
如果在程序中使用系统调用locking( )来给每一个进程加锁,可以实现进程之间的互斥,试观察并分析出现的现象。
(2) 进程的软中断通讯
编制一段程序,实现进程的软中断通讯:使用系统调用fork( )创建两个子进程;再使用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按Del键);在捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发信号;子进程捕捉到信号后分别输出下列信息后终止:
Child process1 is killed by parent!
Child process2 is killed by parent!
父进程等待两个子进程都终止以后,输出如下信息后终止:
Parent process in killed!
(3) 进程的管道通讯
编制一段程序,实现进程的管道通讯:使用系统调用pipe( )建立一条管道线;两个子进程分别循环向这条管道写一句话:
Child 1 is sending a message!
Child 2 is sending a message!
而父进程则循环从管道中读出信息,显示在屏幕上。
实验报告 内含源代码