银行排队系统

银行排队系统
1、编程实现一个“银行排队模拟系统” 思想:
程序等待标准输入,若检测到有标准输入,则创建对应的进程。如果目前等待态的
进程个数等于座位数,在门外等待(即放入消息队列等待创建);若目前阻塞的进程个数
小于座位数则进程阻塞。与此同时,检测等待态的进程个数小于座位数,消息队列中存
在消息,则从消息队列中取出一条消息,同时创建一个新进程。
本程序使用信号量进行进程间通信,使用消息队列存储从stdin输入的消息。m2卡
设置一信号量,标示大厅中座位。设置一消息队列,标示在门外等待。
本程序,没有实现,老师所说的,“窗口进程”。只是在主控进程中,对S3,S4进
行了操作来实现与子进程的通信。
相当于,主控进程作为一个窗口进程,来处理各个客户进程。由于,想要做到,在
同一时间,主控进程最多只有两个子进程(客户进程)在执行,其他的都在阻塞状态,因此,本程序,将S3的初始值设置为2
1) 该程序模拟客户到银行取号-排队-被叫号-被服务的过程; 2) 程序执行流程如下:
Step1: 客户到达银行,并从取号机取号;
Step2: 如果大厅中有空闲座位,则座下等待,否则,在大厅外等待;
Step3: 银行职员如果发现有客户等待,则依次叫号服务,否则休息;
Step4: step1-step4重复执行 3) 大厅中座椅数量为20个; 4) 服务窗口为2个;
5) “客户到来”通过命令行输入客户名字模拟;
6) 为了模拟实际情况,每个客户服务时间不小于20秒,可随机确定;纸浆模具
蒸馏水发生器7) 程序顺序列出不同窗口服务客户的:名称,窗口号,服务时间 2、提示
1) 需一个主控进程,随时监控客户到来,并为之创建进程; 2) 取号机应视为互斥
型临界资源 3) 座椅应视为临界资源
4) 客户等待及被叫号应视为进程间同步过程主控进程(serve.c)执行流程图:
客户端进程(client.c)执行流程图:
光线路终端需求分析:
本系统,没有实现,窗口进程,最初目的在于,保证在同一时间,父进程即主控进程弹力玩具
最多具有2个子进程在执行。
本模拟系统需要两个程序,一个作为主控进程,负责宏观调度(检测是否有标准输入,如果有,则创建子进程・・・);一个作为子进程,负责输出服务窗口(自己的PID),
系统对自己的服务时间,自己等待系统服务的时间,(也可输出自己的名称,此处的传值
方式与信号量的ID原理相同,因此省去本项)。 PS:此程序以实现  serve.c 为主控进
kawd-445client.c为子进程,子进程的二进制文件名必须为client,绝对路径必须为
“mnt/usb/signal”如果想要修改,可以参看课本execle函数的使用守则
del.c如果主控进程异常退出但是有没有执行删除消息队列,信号量集合是使用,记
得修改参数 serve.c
#include #include #include #include #include #include #include #include
jmp_buf crt;//设置跳转节点 jmp_buf end;
char *env_init[]={\初始化环境表中的信息
union semun//使用信号量函数,我们必须自己定义 semun 联合类型。 {    };
int val;
struct semid_ds *buf; unsigned short *array;
感谢您的阅读,祝您生活愉快。

本文发布于:2024-09-21 16:43:03,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/183121.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:云函数间调用
下一篇:MQ的基本概念
标签:进程   消息   客户   等待   队列   信号量
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议