第一范文网 - 专业文章范例文档资料分享平台

操作系统课程设计报告之和尚喝水 孟衡

来源:用户分享 时间:2025/8/15 11:17:14 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

学院:专业:

课程设计报告

课程名称:操作系统课程设计

设计题目:进程同步P、V操作模拟—和尚喝水

管理工程学院 信息管理与信息系统

组别:第组

学生姓名:孟衡学号:1141807103 指导教师:张正伟

目录

1需求分析 .................................................................................................. 3 1.1需求概述 ....................................................................................... 3 1.2需求设计 ....................................................................................... 3 2功能设计 .................................................................................................. 4 2.1 实现方案 ...................................................................................... 4 2.2模块说明 ....................................................................................... 5 2.3 操作的流程图 .............................................................................. 6 3开发环境及源程序的主要部分 ............................................................. 7 3.1开发环境 ....................................................................................... 8 3.2源程序............................................................................................ 9 4测试用例,测试过程及情况分析 ....................................................... 10 4.1测试用例 ..................................................................................... 13 4.2测试过程及情况分析 ................................................................. 14 5心得体会 ................................................................................................ 15

2

进程P、V操作模拟设计

——和尚喝水

1需求分析

1.1需求概述

一个寺庙里有小老和尚若干,有一口水井由小和尚挑水入缸给老和尚饮用。水缸可以装10桶水,水取自同一口井,水井口较窄,每次只可容纳一只桶取水,寺庙里一共有3只水桶,每次倒入取用缸中水的量均为1桶,且二者不可同时进行。用P,V操作实现老和尚、小和尚、取水、用水喝水的同步进程控制,水缸水量用semaphore表示,水桶用pail表示,水缸容量用empty表示。

1.2需求设计

以上问题是进程同步的模拟,可以把井中取水、倒水入缸、用水喝水的过程可以看作是一个个进程的操作,这些进程是互斥的,同时也存在一定的同步关系。通过实际编程时来看,就是随机调用其中一个进程的操作,而这些进程的操作相当于程序中的函数调用。而计算机在执行的每一个时刻只能执行一个操作,这就默认了互斥。还有同步模拟是实现函数调用的前提关系,即先决条件。所以这样进程同步模拟就完全能够通过函数的调用来实现。

具体每一个操作对应的函数变量关系: 水井取水:semaphore

小和尚准备取水:mutex1=1

水缸喝水:empty

老和尚用桶喝水mutex2=1 水缸初始量:full=0(最大值10)

3

水桶数量:pail=3

2功能设计

2.1 实现方案

(1)用一个变量full表示没水,初始值为0,当取水时full加1,用水时full减1。变量full=10是最大值,当值为10时表示水缸已经满,此时若进行装水操作,则将处于等待状态;为0时表示水缸无水,此时若进行用水喝水操作,则操作将处于等待状态。

(2)变量mutex1和mutex2分别表示小和尚取水和老和尚喝水,初始都为1,semaphore=mutex1+mutex2。

(3)用6个bool型的变量full_lag,semaphore_lag,mutex1_lag,mutex2_lag empty_lag,psil_lag表示六个进程是否处于等待状态。处于等待时,变量值为true。

(4)若取水、喝水的进程同时处于等待状态时,用水的操作将自动执行等待取水的操作,执行按等待的先后顺序;若水缸满了、桶全用去喝水了的进程同时候处于等待状态时,取水的操作将自动执行等待喝水的操作,按等待的先后顺序进行。

(5)用一个随机的函数产生0—5的6个整数,分别对应六个进程的调用。

2.2模块说明

2.2.1 main函数

用一个随机的函数产生0—5的6个整数,分别对应六个进程的调用,调用时程序

自动输入,本程序共产生了10次随机的调用进程。 .2.2.2 6个进程函数

水井取水:semaphore

4

操作系统课程设计报告之和尚喝水 孟衡.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c523px0nayz83hrt8bf1m52amw9lhr300883_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top