进程同步实验报告

时间:2024.4.20

实验三 进程的同步

一、   实验目的

1、了解进程同步和互斥的概念及实现方法;

2、更深一步的了解fork()的系统调用方式。

二、实验内容

1、预习操作系统进程同步的概念及实现方法。

2、编写一段源程序,用系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。程序的输出是什么?分析原因。

3、阅读模拟火车站售票系统和实现进程的管道通信源代码,查阅有关进程创建、进程互斥、进程同步的系统功能调用或API,简要解释例程中用到的系统功能或API的用法,并编辑、编译、运行程序,记录程序的运行结果,尝试给出合理的解释。

4、(选做)修改问题2的代码,使得父子按顺序显示字符“a”;“b”、“c”编辑、编译、运行。记录程序运行结果。

三、设计思想

1、程序框架

(1)创建两个子进程:                      (2)售票系统:

        

(3)管道通信:

先创建子进程,然后对内容加锁,将输出语句存入缓存,并让子进程自己进入睡眠,等待别的进程将其唤醒,最后解锁;第二个子进程也执行这样的过程。父进程等待子进程后读内容并输出。

(4)修改程序(1):在子进程的输出语句前加上sleep()语句,即等待父进程执行完以后再输出。

2、用到的文件系统调用函数

(1)创建两个子进程:fork()

(2)售票系统:DWORD WINAPI Fun1Proc(LPVOID lpPartameter);

CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);

      CloseHandle(hThread1);

     (HANDLE)CreateMutex(NULL,FALSE,NULL);

     Sleep(4000)(sleep调用进程进入睡眠状态(封锁), 直到被唤醒);

     WaitForSingleObject(hMutex,INFINITE);

     ReleaseMutex(hMutex);

(3)管道通信:pipe(fd),fd: int fd[2],其中: fd[0] 、fd[1]文件描述符(读、写);

lockf( fd,function,byte)(fd: 文件描述符;function: 1: 锁定 0:解锁;byte: 锁定的字节数,0: 从当前位置到文件尾);    

write(fd,buf,byte)、read(fd,buf,byte) (fd: 文件描述符;buf : 信息传送的源(目标)地址;byte: 传送的字节数);    

sleep(5); 

exit(0);  

 read(fd[0],s,50)

(4)修改程序(1):fork();    sleep();

四、调试过程

1、测试数据设计

(1)创建两个子进程:

     

(2)售票系统:

运行结果:

  

(3)管道通信:

运行结果:

(4)修改程序(1):

        

 

2、测试结果分析

(1)调用fork()创建一个子进程,当运行到第一个子进程输出了b,当父进程运行时创建另一个子进程。所以出现了a,b,c。还有可能是a,c,b等等。

(2)两个线程相互切换,直到把票卖完停止。

(3)由pipe(fd)创建了一个管道(信号缓冲区),创建一个进程将信息写入buf;再将buf写入文件,再由父进程将信息读取出来输出。

    pipe()调用可以创建一个管道(通信缓冲区)。当调用成功时,我们可以访问文件描述符fd[0]、fd[1](其中fd[0]是用来读的文件描述符,而fd[1]是用来写的文件描述符)。

lockf()函数允许将文件区域用作信号量(监视锁),或用于控制对锁定进程的访问(强制模式记录锁定)。

wait(0)可以用来实现父子进程的同步。

(4)在子进程的输出语句前加上sleep()语句,即等待父进程执行完以后再输出。

五、总结

1、调试过程中遇到的主要问题及解决过程

(1)在修改程序(1)时,最开始使用了read()、schedual()、lock(),但是编译出现错误。

解决方法:使用sleep()函数。

(2)exit()缺少头文件。

解决方法:加头文件#include<stdlib.h>。

(2)sleep()等linux系统调用缺少头文件。

解决方法:加头文件#include<unistd.h>

2、体会和收获。

通过这次实验我知道了在不同的位置创建子进程执行的结果是不一样的,因为一次调用有两次返回;同时学到了更多的windows和linux的系统调用函数,也知道了一些新概念,比如句柄的的创建和关闭;学会了管道的概念,知道如何用管道进行进程间的通讯;知道了如何用lockf函数控制进程的执行结果,而不是随机的结果。同时我也更加深刻的了解了fork函数的调用过程。

六、附录:源程序代码(另附)


第二篇:进程创建模拟实验报告


进程创建模拟实验报告

一.实验目的

1.加深对进程概念的理解,明确进程和程序的区别。

2.深入了解系统如何组织进程,创建进程。

3.掌握进程相关数据结构。

二.实验要求

1.编写程序完成实验内容

2.对测试数据进行分析

3.撰写实验报告

三.实验内容

1.进程的创建

2.对代码进行测试

3.进程控制

四.实验原理

1.进程

(1)进程是程序是一次执行

(2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动

(3)进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

2.进程控制块

为了描述和控制进程的运行,系统为每个进程定义了一个进程控制块(PCB),它是进程实体的一部分,是操作系统管理进程最重要

的数据结构。其主要包含四类信息:进程标识符,处理机状态,进程调度信息,进程控制信息。

3.进程创建流程

(1)申请空白PCB

(2)为新进程分配资源

(3)初始化进程控制块

(4)将新进程插入就绪队列

4.进程树

P12 P6 P7 P8 P9 P10 P11 P2 P3 P1 P4 P5

五.实验步骤

1.在C++环境下输入实验提供的代码,并对程序运行

2.输入 createpc 命令创建进程,输入 showdetail 显示每个进程及其子进程的信息

3.对代码进行测试

六.实验总结

1.运行结果

2.解释函数

3.问题解答

更多相关推荐:
进程的同步实验报告

操作系统实验报告哈尔滨工程大学计算机科学与技术学院一实验概述1实验名称进程的同步2实验目的使用EOS的信号量编程解决生产者消费者问题理解进程同步的意义调试跟踪EOS信号量的工作过程理解进程同步的原理修改EOS的...

北邮大三上-操作系统-进程同步实验报告

操作系统实验二进程同步实验班级20xx211311学号姓名目录1实验目的22实验要求23环境说明24实验前期思考25实验知识点储备351进程352线程353同步和互斥354库函数和类型储备46编程实现661调整...

进程的同步实验报告

操作系统实验报告哈尔滨工程大学计算机科学与技术学院一实验概述1实验名称进程的同步2实验目的使用EOS的信号量编程解决生产者消费者问题理解进程同步的意义调试跟踪EOS信号量的工作过程理解进程同步的原理修改EOS的...

操作系统进程同步实验报告

实验三进程同步实验一实验任务1掌握操作系统的进程同步原理2熟悉linux的进程同步原语3设计程序实现经典进程同步问题二实验原理1PV操作PV操作由P操作原语和V操作原语组成原语是不可中断的过程对信号量进行操作具...

北邮操作系统进程同步实验报告及源代码

进程管理实验报告1实验目的1理解进程线程同步的方法学会运用进程线程同步的方法解决实际问题2了解windows系统或unixlinux系统下中信号量的使用方法2实验内容编写一个有关生产者和消费者的程序每个生产者每...

操作系统进程同步和互斥的实验报告

湖南农业大学信息科学技术学院学生实验报告姓名年级专业班级日期20xx年11月25日成绩

操作系统-进程管理与进程同步-实验报告

实验一进程管理与进程同步一实验目的了解进程管理的实现方法理解和掌握处理进程同步问题的方法二实验内容实现银行家算法进程调度过程的模拟读者写者问题的写者优先算法实验步骤理解安全性算法和银行家算法的核心机制针对3类资...

进程控制实验报告

进程控制与处理机调度实验报告院系:计算机与通信工程学院班级:嵌入式10-02班姓名:学号:一、实验目的通过模拟进程控制方法及单处理机系统的进程调度,了解进程的结构,进程的创建与撤消,进程的组织及进程的状态及其转…

进程管理实验报告

linux进程线程管理实验报告

西安郵電學院操作系统LINUX实验报告题题题系部名称专业名称班级学号学生姓名时间目1进程目2线程管理目3互斥计算机学院实验一进程管理一实验目的通过观察分析实验现象深入理解进程及进程在调度执行和内存空间等方面的特...

上海交大电机学实验+同步发电机运行特性

电机学实验报告实验四同步发电机运行特性一实验目的1掌握用实验方法测取三相同步发电机对称运行特性的方法2掌握用实验数据获取同步发电机稳态参数的方法二实验内容1测取发电机的空载特性2测取发电机的短路特性3测取额定电...

三相同步发电机的运行特性

三相同步发电机的运行特性一实验目的1用实验方法测量同步发电机在对称负载下的运行特性2由实验数据计算同步发电机在对称运行时的稳态参数二预习要点1同步发电机在对称负载下有哪些基本特性2这些基本特性各在什么情况下测得...

进程的同步实验报告(24篇)