篇一 :进程的同步实验报告

操作系统

        

                                                       

哈尔滨工程大学

计算机科学与技术学院


一、实验概述

1. 实验名称

进程的同步

2. 实验目的

⑴使用EOS的信号量,编程解决生产者?消费者问题,理解进程同步的意义。

⑵调试跟踪EOS信号量的工作过程,理解进程同步的原理。

⑶修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。

3. 实验类型

验证+设计

4. 实验内容

⑴准备实验

⑵使用EOS的信号量解决生产者-消费者问题

⑶调试EOS信号量的工作过程

①创建信号量

②等待释放信号量

③等待信号量(不阻塞)

④释放信号量(不唤醒)

⑤等待信号量(阻塞)

⑥释放信号量(唤醒)

⑷修改EOS的信号量算法

二、实验环境

WindowsXP + EOS集成实验环境

三、实验过程

1. 设计思路和流程图

                           图4-1.整体试验流程图

…… …… 余下全文

篇二 :进程同步实验报告

实验三 进程的同步

一、   实验目的

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);

…… …… 余下全文

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

  

班级:2009211311

学号:

姓名:  schnee 


目  录

1.    实验目的... 1

2.    实验要求... 1

3.    环境说明... 1

4.    实验前期思考... 1

5.    实验知识点储备... 1

5.1. 进程... 1

5.2. 线程... 1

5.3. 同步和互斥... 1

5.4. 库函数和类型储备... 1

6.    编程实现:... 1

6.1.   调整和框架... 1

6.2.   源程序实现(详细框架见注释)... 1

6.3.   实现中遇到过的困难和解决方法... 1

6.4.   运行示例及结果截图... 1

7.    心得和优化... 1

1.      实验目的

1)  理解进程/线程同步的方法,学会运用进程/线程同步的方法解决实际问题;

2)  了解windows系统或unix/linux系统下中信号量的使用方法。

2.      实验要求

编写一个有关生产者和消费者的程序:每个生产者每次生产一个产品存入仓库,每个消费者每次从仓库中取出一个产品进行消费,仓库大小有限,每次只能有一个生产者或消费者访问仓库。要求:采用信号量机制。

3.      环境说明

此实验采用的是Win7下Code::blocks 10.05编译器,采用Win API的信号量机制编程。

…… …… 余下全文

篇四 :进程的同步实验报告

操作系统

        

                                                       

哈尔滨工程大学

计算机科学与技术学院


一、实验概述

1. 实验名称

进程的同步

2. 实验目的

⑴使用EOS的信号量,编程解决生产者?消费者问题,理解进程同步的意义。

⑵调试跟踪EOS信号量的工作过程,理解进程同步的原理。

⑶修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。

3. 实验类型

验证+设计

4. 实验内容

⑴准备实验

⑵使用EOS的信号量解决生产者-消费者问题

⑶调试EOS信号量的工作过程

①创建信号量

②等待、释放信号量

③等待信号量(不阻塞)

④释放信号量(不唤醒)

⑤等待信号量(阻塞)

⑥释放信号量(唤醒)

⑷修改EOS的信号量算法

二、实验环境

 EOS操作系统 OS Lab软件

三、实验过程

1. 设计思路和流程图

                           图4-1.整体试验流程图

…… …… 余下全文

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

实验三:进程同步实验

一、实验任务:

(1)掌握操作系统的进程同步原理;

(2)熟悉linux的进程同步原语;

(3)设计程序,实现经典进程同步问题。

二、实验原理:

(1)P、V操作

        PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:

     P(S):①将信号量S的值减1,即S=S-1;

            ②如果S³0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。

     V(S):①将信号量S的值加1,即S=S+1;

            ②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。

(2)信号量

       信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。

一般来说,信号量S³0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S£0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。

…… …… 余下全文

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

进程管理实验报告

1实验目的:

(1)理解进程/线程同步的方法,学会运用进程/线程同步的方法解决实际问题;

(2)了解windows系统或unix/linux系统下中信号量的使用方法。

2.实验内容

编写一个有关生产者和消费者的程序:每个生产者每次生产一个产品存入仓库,每个消费者每次从仓库中取出一个产品进行消费,仓库大小有限,每次只能有一个生产者或消费者访问仓库。要求:采用信号量机制。

3、环境说明

本实验是在win7环境下使用dev编译器实现的,采用Win API的信号量机制。

4程序设计说明

该程序根据教材中的消费者生产者问题编写的,使用了教材中提供的框架思路以及库函数,使用  CreateThread建立新的线程,使用CreateMutex创建一个互斥信号量,使用CreateSemaphore创建信号量,使用ReleaseMutex释放线程的互斥信号量,使用ReleaseSemaphore对指定的信号量增加指定的值,使用WaitForSingleObject等待空位,使用CloseHandle在操作结束后关闭线程和信号量。

在这个程序里我设计了三个函数:

    Int main()是主函数,其中包含了缓冲区大小的设置,生产者消费者发出请求等内容以及线程创建等内容

DWORD WINAPI producer(LPVOID lpPara)是生产者等待缓冲区的使用权并对缓冲区进行操作

DWORD WINAPI consumer(LPVOID lpPara)是消费者等待缓冲区的使用权并对缓冲区进行操作

   该程序模拟生产者消费者问题,首先要设置缓冲区的大小,输入请求资源的各个进程的信息以及请求时间,并且按照请求时间对各进程进行排序,创建线程,然后按序依次对缓冲区进行操作,详细设计见源代码。

…… …… 余下全文

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

湖南农业大学信息科学技术学院

学 生 实 验 报 告

姓名:       年级专业班级     日期 20## 11 25日    成绩      

…… …… 余下全文

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

实验一、进程管理与进程同步

一、实验目的

了解进程管理的实现方法,理解和掌握处理进程同步问题的方法。

二、实验内容

实现银行家算法、进程调度过程的模拟、读者-写者问题的写者优先算法。

实验步骤:理解安全性算法和银行家算法的核心机制:针对3类资源、5个进程的情况,设计相应的数据结构,分别表示每个进程占用各类资源的情况;编程实现安全性算法函数,编制主函数,动态输入资源的占用情况,进程的资源申请,调用安全性函数,实现银行家算法;测试:输入可分配和不可分配的请求,测试系统的正确性。

三、实验环境

Windows 2000;Microsoft Visual C++ 6.0

四、程序源码与运行结果

银行家算法代码:

#include "malloc.h"

  #include "stdio.h"

  #include "stdlib.h"

  #define alloclen sizeof(struct allocation)

  #define maxlen sizeof(struct max)

  #define avalen sizeof(struct available)

  #define needlen sizeof(struct need)

  #define finilen sizeof(struct finish)

  #define pathlen sizeof(struct path)

  struct allocation

  {

  int value;

  struct allocation *next;

  };

  struct max

…… …… 余下全文