操作系统课程设计实验报告—PV操作

操作系统课程设计实验报告—PV操作

ID:35626124

大小:127.50 KB

页数:14页

时间:2019-04-03

操作系统课程设计实验报告—PV操作_第1页
操作系统课程设计实验报告—PV操作_第2页
操作系统课程设计实验报告—PV操作_第3页
操作系统课程设计实验报告—PV操作_第4页
操作系统课程设计实验报告—PV操作_第5页
资源描述:

《操作系统课程设计实验报告—PV操作》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、操作系统设计实验报告——PV操作学院:计算机科学技术与通信工程学院班级:计算机0501班姓名:白璐学号:3050603018指导老师:牛德娇2008年1月18日14一、操作系统课程设计题目LINUX系统管理实践与进程控制、进程通信实现进程通信题目:桌上有一只盘子,每次只能放入3只水果。爸爸专放苹果,妈妈专放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用P,V操作实现爸爸、妈妈、儿子、女儿进程的同步控制,橘子用orange表示,苹果用apple表示,空用empty表示。二、开发环境LINUX环境三、分析设计(一)实验

2、原理1.原理:parents(包括father和mother)-->

3、+++

4、(缓冲区:存放3个水果)-->daughter和son。  Parents和daughter、son通过共享缓冲区进行通信,信号量用于对缓冲区互斥访问、对parents和daughter、son进行同步。2.共有五个程序:control,father,mother,son,daughter.其中control是主控程序.  control:实现对缓冲区的初始化,要最先执行,且只需要执行一次。father:把一个苹果放入缓冲区:从屏幕输入一个字符串(32字节

5、以内)。Mother:把一个橘子放入缓冲区:从屏幕输入一个字符串(32字节以内)。Son:从缓冲区取出一个橘子:从屏幕上输出一个字符串。Daughter:从缓冲区取出一个苹果:从屏幕上输出一个字符串。3.注意:信号量、共享缓冲区都是系统资源,其总个数是有上限的。每个资源的id在系统中唯一,并且系统不会主动释放它们,所以要小心使用,及时释放。 本程序中:control在执行一次后(成功执行),信号量、共享缓冲区就会分配。如果再执行它,control会提示资源已经分配,是否要释放它们?如果键入y(Y),则资源释放,此后执行father,

6、mother,son,daughter都会报错。当然也可以使用ipcsipcrm命令来查看或释放资源。4.为了结构清晰,程序没有多余的输入或输出。在father,mother,son,daughter程序中适当的位置增加输出语句,和输入字符语句将程序暂停在某个位置,以观察运行的详细进程。(二)虚拟机下linux挂载U盘需要让你的虚拟机GuestOS(Linux)能自动识别U盘。方法如下:保持焦点在Linux上,插入U盘,这时宿主操作系统Windows会弹出“找到新设备的提示”,然后一步一步的点下一步,结束以后,就可以在linux使用

7、fdisk-l14/dev/sdb命令查看到/dev/sdb1。在虚拟机识别出USB之后,用fdisk-l/dev/sdb或fdisk-l/dev/hdb查看,会看到U盘被识别为sdb1,使用mount命令挂载即可。先在/mnt建一个新的文件夹,例如usb。则可通过:mount-tvfat/dev/sdb1/mnt/usb挂载上U盘卸载使用:umount/dev/sdb1四、源程序1.主控程序control.c#include#include#include#in

8、clude#include#include#defineSHMKEY9075/*共享存储区的键*/#defineSEMKEY_son9084#defineSEMKEY_parents9085#defineSEMKEY_daughter9086#defineSEMKEY_MUTEX9087/*信号量数组的键*//*注意:上面的键在系统中必须唯一*/#defineBUFF_LEN3/*缓冲区可以存放3个产品*/#definePRODUCT_LEN10/*每个产品是一个字符串:<

9、=32字符*/voidset_sembuf_struct(structsembuf*sem,intsemnum,intsemop,intsemflg){/*设置信号量结构*/sem->sem_num=semnum;sem->sem_op=semop;sem->sem_flg=semflg;}main(){char*addr,end;intshmid;intsemid_parents,semid_daughter,semid_son,semid_mutex;/*信号量id*/structsembufsem_tmp;/*开辟共享存储区*

10、/if((shmid=shmget(SHMKEY,BUFF_LEN*PRODUCT_LEN+4,0777

11、IPC_CREAT

12、IPC_EXCL))==-1){if(errno==EEXIST){14printf("TheBufferH

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。