ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

操作系统进程同步例题(一)上机实习

2021-11-12 20:06:21  阅读:133  来源: 互联网

标签:上机 进程同步 学生 信号量 进程 while computer 实习 例题


操作系统进程同步例题(一)上机实习

题目: 某高校计算机系开设网络课并安排上机实习,设机房有共有2m台机器,有2n名学生选该课,规定:

(1)每2个学生组成一组,各占一台机器,合作完成上机实习

(2)只有一组2个学生到齐,并且此时机房有空闲机器时,该组学生才能进入机房

(3)上机实习由一名教师检查,检查完毕,一组学生同时离开机房

试用P、V操作实现上述实习进程

(提示:除了有学生和教师进程外,还应该有门卫进程)

PV操作题目分析步骤:

  1. 关系分析。找出题目中描述的各个进程,分析它们之间的同步、互斥关系。
  2. 整理思路。根据各进程的操作流程确定P、V操作的大致顺序。
  3. 设置信号量。并根据题目条件确定信号量初值。(互斥信号量初值一般为1,同步信号量的初始值要看对应资源的初始值是多少)

分析
在这个问题中,学生,教师,门卫是并行操作,所以,可以设置一个学生进程用来申请进入机房和申请教师检查,一个教师进程用来检查一组学生是否完成并进行检查,一 个门卫进程用来检查一组两个学生是否到齐和检查机房是否有两台计算机。然后需要确定信号量和其初始值。student是必然需要的,表示是否有学生;computer表示当前可用的计算机的数量;enter是机房的准入通道;finish表示是否有学生完成了实习;test是老师时候检查完一组学生。初始情况下,除了computer设为2m, 其余都应该是0。以上信号量均为同步信号量。

伪代码如下:

semaphore stduent = 0;
semaphore computer = 2m;
semaphore enter = 0;
semaphore finish = 0;
semaphore test = 0;

//学生进程
Student() { 
    while(1) {
        V(student);  //有学生到达
        P(enter);    //申请进入
        do(); //实习
        V(finish);   //完成实习
        P(test);     //申请检查
        V(computer); //释放计算机
    } //while
} //Student()

//老师进程
Teacher() {
    while(1) {
        P(finsh);    //等待学生实习结束
        P(finsh);    //等待另一个学生实习结束
        test(); //检查
        V(test);     //允许学生离开
        V(test);     //允许另一个学生离开
    } //while
} //Teacher()

//门卫进程
Guard() {
    while(1) {
        P(student);   //等待一名学生
        P(student);   //等待另一名学生
        P(computer);  //申请一台计算机
        P(computer);  //申请另一台计算机
        V(enter);     //允许学生进入
        V(enter);     //允许另一名学生进入
    } //while
} //Guard()

标签:上机,进程同步,学生,信号量,进程,while,computer,实习,例题
来源: https://blog.csdn.net/weixin_43533538/article/details/121294741

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有