中北大学操作系统课程设计说明书01.docx
- 文档编号:27424723
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:15
- 大小:543.45KB
中北大学操作系统课程设计说明书01.docx
《中北大学操作系统课程设计说明书01.docx》由会员分享,可在线阅读,更多相关《中北大学操作系统课程设计说明书01.docx(15页珍藏版)》请在冰豆网上搜索。
中北大学操作系统课程设计说明书01
中北大学
操作系统课程设计
说明书
学院、系:
软件学院
专业:
软件工程
学生姓名:
1121011050
学号:
任强强
设计题目:
基于Linux的实现进程的信号量互斥申请
起迄日期:
2013年11月22日-2013年12月6日
指导教师:
康珺
2013年11月6日
1需求分析
基于Linux的进程同步与通信的模拟实现需要完成以下功能:
(1)创建进程:
手动创建几个进程,或者随即创建几个进程,都在界面上完成;要求包括进程的名称(不能重复)、执行时间和申请资源的等待时间等。
在同一时刻可能有多个进行在内存申请某资源,即可以输入多个进程的资源申请。
(2)3类临界资源的管理,包括申请以及分配等。
分别通过信号量实现或者管程实现。
(3)银行家算法,判断是否可以进行资源的分配。
基于以上的功能,可以使用户选择操作,模拟临界资源的管理和银行家算法。
目的:
实现临界资源的管理及死锁的避免。
2总体设计
进程同步与模拟实现系统分为4个模块:
输入输出,进程对资源的随机申请及分配,临界资源管理,银行家算法避免死锁。
输入输出:
包括系统运行所需要的进程的名称,执行时间,申请资源的等待时间,进程对资源的需要量等信息以及系统所要显示出的进程的创建信息,资源的分配信息,进行执行信息,进行动态申请资源信息等。
进程对资源的随机申请及分配:
根据所输入的进程、资源、以及进程对资源的最大申请情况,随机产生进程当前对资源的申请,输出相应的分配信息与进程执行信息并调用银行家算法对进程的资源申请进行判断。
临界资源的管理:
创建相应个数的进程,完成进程的并发执行,使用互斥信号量使各进程互斥的进入各自的临界区对资源进行申请,进程执行完毕后,互斥的对资源进行恢复。
银行家算法避免死锁:
对当前进程对资源的申请利用银行家算法进行判断,看系统分配后是否处于安全状态,若处于安全状态,则将资源分配给进程,并输出分配信息,否则对不予以分配。
3.详细设计
在该系统中我主要实现了银行家算法中随机分配的模块,该模块中主要使用了数组的数据结构.
3.1随机分配算法:
3.1.1首先:
定义了一个结构体y其中放置了Max数组中申请资源量大于0的资源。
(包括进程下标,资源下标,进程是否对资源申请过的信号量,该资源是否已经被申请完的信号量)。
再定义一个数组col[]。
用来存放第m个进程中过滤(去除申请资源量为0)的资源数。
3.1.2
(1)遍历Max数组对二维Y数组和一维col数组进行初始化:
生成一个去除了申请量为0的新的二维结构体数组(记录有进程下标和资源下标)。
col中放置新的Y数组对应的信息(每个进程申请资源数)。
进程/资源未执行完毕
否
否
产生随机Request量
释放该进程使用的资源
还可以进行遍历,筛选并记录各进程对所有资源的最大申请量大于0的元素信息3.2数据结构
structzy{
chartype;//资源的名称
intn;//资源的数量
};
structjc{
charname;//名称
intruntime;//执行时间
intwaittime;//等待时间
inttypenum;//进程所申请的资源数
structzyr[5];//所申请资源的信息
};
structy{
intflag;//标志,0:
未出现过的资源,(进程a申请资源B1个资源B1个)1:
该资源已申请
intindex;//资源下标
inttr;//进程的下标
intflag1;//1:
该资源不能再申请;0:
该资源还可以申请
}Y[10][NUM];
structjcJC[5];
structzyZY[NUM];//每种资源的名称及数量
3.3核心代码
//对整个二维数组Y进行遍历
intjudge_pro(intm,intp[10]){
inti,j;
for(i=0;i for(j=0;j if(! (Y[i][j].flag1)){ return1; }//只要有1个进程的1种资源未申请完,则返回1 } } return0;//仅当所有进程对资源的申请都达到所需量时才返回0 } //对二维数组中的某一行(对应某种进程)进行遍历 intpanduan1(inttr,intp[10]){ inti; for(i=0;i if(! (Y[tr][i].flag1)) return0;//该进程只要有1个资源未申请完,则返回0 } return1;//仅当该进程所有资源都申请完时返回1 } //产生随机进程和进程所申请的资源,并调用银行家算法 intra(){ intcol[10]; inti,j,k=0,w=0,m=0,n=0,q=0;//k记录最大需求矩阵中数目不为0的元素个数 printf("\n"); if(u==0||a==0){ printf("请先输入信息! \n"); return0; } //对Max数组进行遍历,筛选并记录各进程对所有资源的最大申请量大于0的元素信息 for(i=0;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北大 操作系统 课程设计 说明书 01