P、V 原语的模拟实现.doc

P、V 原语的模拟实现.doc

ID:50250403

大小:62.43 KB

页数:8页

时间:2020-03-07

P、V 原语的模拟实现.doc_第1页
P、V 原语的模拟实现.doc_第2页
P、V 原语的模拟实现.doc_第3页
P、V 原语的模拟实现.doc_第4页
P、V 原语的模拟实现.doc_第5页
资源描述:

《P、V 原语的模拟实现.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、P、V原语的模拟实现一、实验目的本课题实习的目的是,加深对进程概念及进程管理各部分内容的理解;熟悉进程管理中主要数据结构的设计及进程调度算法,进程控制机构、同步结构、通迅机构的实施。要求设计一个允许n个进程并发运行的进程管理模拟糸统。该糸统包括有简单的进程控制、同步及通迅机构,其进程调度算法可任意选择。每个进程用一个PCB表示,其内容可根据具体情况设置。各进程之间应有一定的同步关糸。糸统在运行过程中应能显示或打印各进程的状态及有关参数的变化情况,以便观察诸进程的运行过程及糸统的管理过程。1)理解信号量相关理论;2)掌握记录型

2、信号量结构;3)掌握P、V原语实现机制。二、实验要求1)输入给定代码;2)进行功能测试并得出正确结果。3)分析P和V函数功能模块;4)在实验报告中画出P和V函数流程图;5)撰写实验报告。三、实验内容本实验针对操作系统中信号量相关理论进行实验,要求实验者输入实验指导书提供的代码并进行测试。代码主要模拟信号量的P操作和V操作。1)信号量信号量也称为信号锁,主要应用于进程间的同步和互斥,在用于互斥时,通常作为资源锁。信号量通常通过两个原子操作P和V来访问。P操作使信号量的值+1,V操作使信号量的值-1。2)记录型信号量记录型信号量

3、采用了“让权等待”的策略,存在多个进程等待访问同一临界资源的情况,所以记录型信号量需要一个等待链表来存放等待该信号量的进程控制块或进程号。在本实验中,使用记录型信号量。四、功能测试五.#include#defineTRUE1#defineFALSE0#defineMAXPRI100#defineNIL-1struct{intid;charstatus;intnextwr;intpriority;}pcb[1];struct{intvalue;intfirstwr;}sem[2];charsavearea[1

4、][3],addr;inti,s1,s2,seed,exe=NIL;init(){intj;for(j=0;j<1;j++){pcb[j].id=j;pcb[j].status='r';pcb[j].nextwr=NIL;printf("process%dpriority?",j+1);scanf("%d",&i);pcb[j].priority=i;}sem[0].value=1;sem[0].firstwr=NIL;sem[1].value=1;sem[1].firstwr=NIL;for(i=1;i<1;i++)f

5、or(j=0;j<3;j++)savearea[i][j]='0';}floatrandom(){intm;if(seed<0)m=-seed;elsem=seed;seed=(24151*seed+11839)%64416;return(m/12565.0);}timeint(charaddr){floatx;x=random();if((x<0.11)&&(exe==0))return(FALSE);if((x<0.66)&&(exe==1))return(FALSE);if((x<1.0)&&(exe==2))retu

6、rn(FALSE);savearea[exe][0]=i;savearea[exe][1]=addr;pcb[exe].status='t';printf("Timessilceinterrupt'process%denterintoready.",exe+1);exe=NIL;return(TRUE);}find(){intj,pd=NIL,w=MAXPRI;for(j=0;j<1;j++)if(pcb[j].status=='r')if(pcb[j].priority

7、d=j;}if(pd==NIL)for(j=0;j<1;j++)if(pcb[j].status=='t')if(pcb[j].priority

8、lseif(pcb[pd].priority

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

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

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