广州大学操作系统实验2020版 进程管理与进程通信

能力不足,答案有待验证,这个仅供参考–仅提供代码与结果

  1. 编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程并发执行,观察实验结果并分析原因
    代码:
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
  2. 用fork( )创建一个进程,再调用exec( ),用新的程序替换该子进程的内容,利用wait( )来控制进程执行顺序,掌握进程的睡眠、同步、撤消等进程控制方法,并根据实验结果分析原因。
    代码:
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
  3. 编写一段多进程并发运行的程序,用lockf( )来给每一个进程加锁,以实现进程之间的互斥,观察并分析出现的现象及原因。
    代码:
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
  4. 编写程序:用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按^c键);捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:
    Child process1 is killed by parent!
    Child process2 is killed by parent!
    父进程等待两个子进程终止后,输出如下的信息后终止:
    Parent process is killed!
    分析利用信号量机制中的软中断通信实现进程同步的机理。
    代码:
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
  5. 使用系统调用msgget( ),msgsnd( ),msgrev( ),及msgctl( )编制一长度为1k的消息发送和接收的程序,并分析消息的创建、发送和接收机制及控制原理。
    代码:
    在这里插入图片描述

    运行结果:
    在这里插入图片描述
  6. 编制一长度为1k的共享存储区发送和接收的程序,并设计对该共享存储区进行互斥访问及进程同步的措施,必须保证实现正确的通信。
    代码:
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43334673/article/details/106026698