操作系统实验一.docx

操作系统实验一.docx

ID:60836475

大小:293.42 KB

页数:5页

时间:2020-12-21

操作系统实验一.docx_第1页
操作系统实验一.docx_第2页
操作系统实验一.docx_第3页
操作系统实验一.docx_第4页
操作系统实验一.docx_第5页
资源描述:

《操作系统实验一.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验报告课程名称操作系统实验项目进程管理实验仪器台式电脑系别计算机科学与技术系专业计算机科学与技术班级/学号*学生姓名*实验日期2018年12月26日成绩指导教师*实验一进程管理实验时数:4学时实验类别:设计型实验批次:1批,1人/组实验地点:健翔校区计算中心一、实验目的1.掌握进程的概念,理解进程创建过程,能够使用系统调用完成进程创建,形成多个进程并发的环境。2.掌握进程控制方法。通过调用相关的系统调用,对进程实现睡眠、同步、撤销等控制。3.进一步认识并发执行的实质,分析进程竞争资源的现象,学习避免死锁的方法。二

2、、实验环境操作系统:任何Unix/Linux及SunSolaris或windows系列应用系统:gcc编译器。若OS为windows系列,则还需相应的模拟环境三、实验内容哲学家进餐问题。问题描述:五位哲学家围坐在一个圆桌周围,每人面前有一只碗,各碗之间分别有一根筷子,餐桌如下图。哲学家的生活包括两种活动:吃面条和思考。当哲学家感到饥饿时,他就分两次去取他左边和右边的筷子,每次拿一根(不能强行从邻座手中抢过筷子),如果成功,他就开始吃面条,吃完后把筷子放回原处继续思考。采用C语言编写Linux控制台程序,对并发环境中

3、的5个哲学家进程进行演示。问题分析:这是一个典型的避免死锁的问题,涉及操作系统中的互斥和同步、死锁和饥饿。可以采用以下方法避免死锁发生:最多只允许4个哲学家同时进餐,以保证有一人能够进餐。四、实验代码:#include"mysemop.h"#include#include#includeintroom_sem_id=0;intchopsticks_sem_id[5];intmain(intargc,charargv[]){pid_tpid;//pid_t为i

4、nt型、进程号类型pid_tchldpid[5];inti=0;charch;//创建一个信号量room_sem_id=CreateSem(4);for(i=0;i<5;i++){chopsticks_sem_id[i]=CreateSem(1);}for(i=0;i<5;i++){pid=fork();//fork()函数返回一个进程号if(pid<0){fprintf(stderr,"Whenforphilosopher%dFailed!",i);exit(-1);}if(pid==0){chldpid[i

5、]=getpid();while(1){printf("哲学家%d思考ing",i+1);sleep(1);Psem(room_sem_id);printf("哲学家%dhungry,进入房间准备eating",i+1);Psem(chopsticks_sem_id[i]);printf("哲学家%d拿起左边的筷子",i+1);Psem(chopsticks_sem_id[(i+1)%5]);printf("哲学家%d拿起右边的筷子",i+1);printf("哲学家%deating",i+1)

6、;sleep(5-i);Vsem(chopsticks_sem_id[(i+1)%5]);printf("哲学家%d放下右边的筷子",i+1);Vsem(chopsticks_sem_id[i]);printf("哲学家%d放下左边的筷子",i+1);Vsem(room_sem_id);printf("哲学家%d离开房间并继续思考",i+1);sleep(1);}}else{chldpid[i]=pid;}}ch=getchar();do{ch=getchar();}while(ch!='q');for

7、(i=0;i<5;i++){kill(chldpid[i],SIGTERM);DeleteSem(chopsticks_sem_id);}DeleteSem(room_sem_id);return0;}五、实验截图:六、实验总结通过本次实验,掌握了进程的概念,理解了进程创建过程,能够使用系统调用完成进程创建,形成多个进程并发的环境;掌握了进程控制方法,通过调用相关的系统调用,对进程实现睡眠、同步、撤销等控制;进一步认识并发执行的实质,分析进程竞争资源的现象,学会了避免死锁的方法。在老师和同学的帮助下,我成功解决了我

8、的一些问题和困惑,使我对操作系统更加感兴趣,也为今后的学习生活奠定了基础。七、课后问答题1:分析哲学家进餐问题,什么情况下会发生死锁?答:当所有哲学家都拿起左手或右手边筷子的时候就会产生死锁。2:本实验所采用方法可以避免死锁,试问:是否还有其他对抗死锁发生的方法,比较它们的优缺点。答:(1)最多只允许4个哲学家同时拿起筷子,从而保证一人可以进餐(2)仅当某哲

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

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

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