1、 操作系统课程设计 题目:题目:进程通信与进程同步机制实践进程通信与进程同步机制实践 所在学院:计算机学院 所在班级: 学生姓名: 学生学号: 指导教师: 2014 年 1 月 一、一、题目题目 LinuxLinux 或或 WindowsWindows 或或 UnixUnix 环境下,采用系统调用中的信号量、环境下,采用系统调用中的信号量、P P、V V 操作,编程解决以下问题。操作,编程解决以下问题。 题目:某银行提供题目:某银行提供 5 5 个服务窗口个服务窗口(4 (4 个对私服务窗口,个对私服务窗口,1 1 个对公服务窗个对公服务窗 口口) )和和 1010 个供顾客等待的座位。顾客到
2、达银行时,若有空座位,则到个供顾客等待的座位。顾客到达银行时,若有空座位,则到 取号机上领取一个号,等待叫号;若没有空座位,则在门取号机上领取一个号,等待叫号;若没有空座位,则在门外等待或离外等待或离 开。取号机每次仅允许一位顾客使用,有对公和对私两类号,每位顾开。取号机每次仅允许一位顾客使用,有对公和对私两类号,每位顾 客只能选取其中一个。当营业员空闲时,通过叫号选取一位顾客,并客只能选取其中一个。当营业员空闲时,通过叫号选取一位顾客,并 为其服务。请用为其服务。请用 P P、V V 操作写出进程的同步算法。操作写出进程的同步算法。 说明说明 (1)(1)可模拟设立一个服务时间区间如可模拟设
3、立一个服务时间区间如 9 9: 0000- -17:0017:00, 也可限定最大服务人, 也可限定最大服务人 数数 (2)(2)顾客达到时间随机, 办理对私或对公业务随机, 可通过随机数产生。顾客达到时间随机, 办理对私或对公业务随机, 可通过随机数产生。 要求打印:要求打印: 初始状态初始状态 中间变化的状态信息中间变化的状态信息 以及最终状态信息。以及最终状态信息。 二二、原理及算法原理及算法 顾客来了先判断银行内是否还有空座位, 如果没有, 则选择等待顾客来了先判断银行内是否还有空座位, 如果没有, 则选择等待 或离开;如果有,便坐下,直到取号机无人使用再去取或离开;如果有,便坐下,直
4、到取号机无人使用再去取号,取完号顾号,取完号顾 客继续等待服务,服务完了顾客离开;客继续等待服务,服务完了顾客离开; 五、五、主要数据结构和流程主要数据结构和流程 1 1、主要数据结构主要数据结构 定义定义两个两个全局变量统计顾客的号码全局变量统计顾客的号码和在门外等待顾客的数量和在门外等待顾客的数量, 定义四, 定义四 个线程句柄数组, 定义一个座位信号量来通知可分配的座位资源,个线程句柄数组, 定义一个座位信号量来通知可分配的座位资源, 通通 知等待营业员对私信号量通知可分配的等待对私资源, 通知等待营业知等待营业员对私信号量通知可分配的等待对私资源, 通知等待营业 员对公信号量等待对公资
5、源, 通知对私叫号信号量通知可分配的等待员对公信号量等待对公资源, 通知对私叫号信号量通知可分配的等待 通知对私服务资源, 通知对公叫号信号量通知等待对公服务资源。 在通知对私服务资源, 通知对公叫号信号量通知等待对公服务资源。 在 设置一个互斥信号量用于取号。设置一个互斥信号量用于取号。 再设置两个临界区来防止程序运行重再设置两个临界区来防止程序运行重 叠。叠。 2、PV 流程流程 Semaphore seat;Semaphore seat; seat.seat.value=10;value=10; Semaphore privatewindow;Semaphore privatewindo
6、w; privatewindow.value=1;privatewindow.value=1; Semaphore publicwindow;Semaphore publicwindow; publicwindow.value=4;publicwindow.value=4; Semaphore machine;Semaphore machine; machine.value=1;machine.value=1; Semaphore privatecustomer;Semaphore privatecustomer; privatecustomer.value=0;privatecustomer.value=0; Semaphore publiccustomer;Semaphore publiccustomer; publiccustomer.value=0;publiccustomer.value=0; process privatprocess privatecustomerecustomer