基于Linux的实现进程的信号量互斥申请操作系统课程设计.doc_第1页
基于Linux的实现进程的信号量互斥申请操作系统课程设计.doc_第2页
基于Linux的实现进程的信号量互斥申请操作系统课程设计.doc_第3页
基于Linux的实现进程的信号量互斥申请操作系统课程设计.doc_第4页
基于Linux的实现进程的信号量互斥申请操作系统课程设计.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中北大学操作系统课程设计说 明 书学 院、系:软件学院专 业:软件工程学 生 姓 名:1121011040学 号:周英明设 计 题 目:基于Linux的实现进程的信号量互斥申请 起 迄 日 期:2013年11月22日- 2013年12月6日指 导 教 师:康珺2013 年 11月 6 日1需求分析 基于Linux的进程同步与通信的模拟实现需要完成以下功能:(1)创建进程:手动创建几个进程,或者随即创建几个进程,都在界面上完成;要求包括进程的名称(不能重复)、执行时间和申请资源的等待时间等。在同一时刻可能有多个进行在内存申请某资源,即可以输入多个进程的资源申请。(2)3类临界资源的管理,包括申请以及分配等。分别通过信号量实现或者管程实现。 (3)银行家算法,判断是否可以进行资源的分配。基于以上的功能,可以使用户选择操作,模拟临界资源的管理和银行家算法。 目的:实现临界资源的管理及死锁的避免。2 总体设计 进程同步与模拟实现系统分为4个模块:输入输出,进程对资源的随机申请及分配,临界资源管理,银行家算法避免死锁。 输入输出:包括系统运行所需要的进程的名称,执行时间,申请资源的等待时间,进程对资源的需要量等信息以及系统所要显示出的进程的创建信息,资源的分配信息,进行执行信息,进行动态申请资源信息等。 进程对资源的随机申请及分配:根据所输入的进程、资源、以及进程对资源的最大申请情况,随机产生进程当前对资源的申请,输出相应的分配信息与进程执行信息并调用银行家算法对进程的资源申请进行判断。 临界资源的管理:创建相应个数的进程,完成进程的并发执行,使用互斥信号量使各进程互斥的进入各自的临界区对资源进行申请,进程执行完毕后,互斥的对资源进行恢复。 银行家算法避免死锁:对当前进程对资源的申请利用银行家算法进行判断,看系统分配后是否处于安全状态,若处于安全状态,则将资源分配给进程,并输出分配信息,否则对不予以分配。3详细设计在该系统中我主要实现了输入和输出管理的模块,该模块中主要使用了结构体数组的数据结构.3.1进程模拟thread模块输入进程信息输入资源信息图3.1输入流程图源代码:/输入资源信息int ziyuan()int i,x;printf(*n);printf(请输入资源的种类数:n);fflush(stdin);x=scanf(%d,&a);while(x=0)printf(不符合规则,请重新输入!n);fflush(stdin);x=scanf(%d,&a);for(i=0;ia;i+)printf(请输入第%d种资源的名称(A-Z):n,i);scanf(%c,&ZYi.type);while(ZYi.type=n)scanf(%c,&ZYi.type);while(!isupper(ZYi.type)printf(不符合规则,请重新输入!n);scanf(%c,&ZYi.type);while(ZYi.type=n)scanf(%c,&ZYi.type);printf(请输入资源%c的数量:,ZYi.type);fflush(stdin);x=scanf(%d,&ZYi.n);while(x=0)printf(不符合规则,请重新输入!n);fflush(stdin);x=scanf(%d,&ZYi.n);Availablei=ZYi.n;/对可使用资源向量进行初始化return 0;/进程的信息int jincheng()int i=0;int j,g,x;char name;printf(请输入进程的个数:n);fflush(stdin);x=scanf(%d,&u);while(x=0)printf(不符合规则,请重新输入!n);fflush(stdin);x=scanf(%d,&u);for(i=0;iu;i+) printf(请输入第%d种进程的名称:n,i);scanf(%c,&JC);while(JC=n)scanf(%c,&JC);for(g=0;ga;g+)JCi.rg.type=ZYg.type;for(j=0;jZYj.n)printf(进程%c对资源%c的最大申请量大于资源%c的数量,请重新输入:,JC,JCi.rj.type,JCi.rj.type);fflush(stdin);x=scanf(%d,&Maxij);while(x=0)printf(不符合规则,请重新输入!n);fflush(stdin);x=scanf(%d,&Maxij);init();return 0;运行结果:图3.2 资源输入图3.3进程输出信息4.心得体会 经过这次的操作系统课程设计,让我经历了一次有意义的项目开发过程,让我了解了团队合作的重要性,起初我们只是在不停的各干各的,发现根本不可能完成预期的任务,后来我们坐下来讨论了系统的功能,然后各司其职,发现效果真的不一样,虽然在这两周的时间里我们做了很多,中间也遇到了一些问题,比如说临界资源管理模块和银行家模块怎样结合起来,起初是将两个交叉起来,可是效果不是很好,最后还是决定将它们分开,慢慢地其他问题也同样得到了解决,这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论