操作系统2014课程设计(2)
status 进程状态 priority 进程优先数
nextwr 等待队链指针,指示在同一信号量上等待的下一个进程的标识。 ②信号量。对应于临界资源s1和s2分别有sem1和sem2,均为互斥号量,内容包括:
value 信号量值,初值为1
firstwr 等待链指针,指示在该信号量上第一个等待进程的标识数。 ③保留区。用数组saveaera[3][4]表示。即每个进程都有一个大小为4个单元的保留区,用来保存被“中断”时的现场信息,如通用寄存器的内容和断点地址等。
④全程变量。
exe 执行进程指针,其值为进程标识数 i 用来模拟一个通用寄存器。
(4)用Turbo C编写的程序代码: #include
int nextwr; //*等待链指针,指示在同一信号量上等待的下一个进行进程的标识符*
int priority; }pcb[3]; struct
{
int value;
int firstwr; /*等待链首指针,指示该信号量上第一个等待进程的标识数*/
}sem[2];
char savearea[3][4],addr; int i,s1=0,s2=0,seed,exe=NIL; init( ) { int j;
for(j=0;j<3;j++) {
pcb[j].id=j; pcb[j].status='r'; pcb[j].nextwr=NIL;
printf(\ scanf(\ pcb[j].priority=i; }
sem[0].value=1; sem[0].firstwr=NIL; sem[1].value=1; sem[1].firstwr=NIL; for(i=0;i<3;i++) for(j=0;j<4;j++) savearea[i][j]='0'; }
float random() { float m; srand(time(0)); m=(1+rand()%3)%3-0.1;
printf(\ getchar(); return(m); }
timeint(ad) /*time slice interupt*/ char ad; { float x; x=random();
if((x<0.33)&&(exe==0))return(FALSE); if((x<0.66)&&(exe==1))return(FALSE); if((x<1.0)&&(exe==2))return(FALSE); savearea[exe][0]=i; savearea[exe][1]=ad; pcb[exe].status='t';
printf(\ times slice interrupt exe=NIL; return(TRUE); }
scheduler( ) {
int pd;
if((pd=find())==NIL&&exe==NIL) return(NIL); /*quit system*/ if(pd!=NIL) {
if(exe==NIL) {
pcb[pd].status='e';
process%d enter into ready\\n\
exe=pd;
printf(\ }
else if(pcb[pd].priority pcb[exe].status='r'; printf(\ pcb[pd].status='e'; exe=pd; printf(\ } } i=savearea[exe][0]; addr=savearea[exe][1]; return(exe); } find( ) { int j,pd=NIL,w=MAXPRI; for(j=0;j<3;j++) { if(pcb[j].status=='r') if(pcb[j].priority w=pcb[j].priority; pd=j; } } if (pd==NIL) for(j=0;j<3;j++) { if(pcb[j].status=='t') if(pcb[j].priority w=pcb[j].priority; pd=j; } } return(pd); } p(se,ad) int se; char ad; { if(--sem[se].value>=0) return(FALSE); block(se); savearea[exe][0]=i; savearea[exe][1]=ad; exe=NIL; return(TRUE); } block(se) int se; { int w; printf(\ pcb[exe].status='w'; pcb[exe].nextwr=NIL;
相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




