buffer
供者 A |
用者 B |
送 |
取 |
1) 为 A 、 B 分别设私用信号量 Sa 、 Sb ,初值分别为 1 、 0 。
2) 用 wait ( Sa )、 signal ( Sb )框住供者的临界区。
用 wait ( Sb )、 signal ( Sa )框住用者的临界区。
3 .生产者与消费者问题
4 .读写者问题
设有一个数据结构,有若干个进程要去读或写它
1 ) 第一类读写问题的规则是:
(1)写是互斥的。当一个进程正在写时,其它进程即不能写,也不能读。
(2)读可同时进行。只要没有进程在写,则任何进程都可以同时去读。
要求对读写的同步过程要很清楚。
2 )第二类读写问题的规则是:
除了满足以上两条规则外,还要满足第三条规则:
(3)写比读优先。如果当前有要求写的进程则要求读的进程要等待,直至没有要求写的进程存在才可以去读。
对于此类问题通常要能看懂读与写的流程。关键要:
对信号量的物理概念很清楚;
对wait、signal操作要很请楚;
要对互斥、同步的概念要很清楚;
四.消息缓冲队列通信机制
1 .发送原语( send )
getbuf ()从缓冲池申请一个空闲的 buffer 。调用了缓冲池管理程序。
原语中的同步与互斥。
2 .接受原语( receive )
原语中的同步与互斥。
用完的 buffer 应该调用缓冲池管理程序 putbuf ()过程交还给系统。
3 .缓冲池管理程序见( p159 )
3 个队列( emq 、 inq 、 outq )
4 个工作缓冲区
2 个过程 getbuf 与 putbuf ,以及互斥与同步
第三章.调度与死锁
l 调度类型
1 .高级调度(以进程方式运行):作业调度。
2 .中级调度(以进程方式运行):对换进程 , UNIX 中的 0 号进程。
负责内存与盘对换区之间信息的交换(页面、逻辑段、进程映象),凡是有此功能的系统,外存都有系统专用的对换区。
3 .低级调度(原语):进程调度:
非抢占方式:适用于多道批处理系统。
抢占方式:时间片的原则、短进程优先、优先权高者优先原则(适用于分时、实时、及批处理系统)
l 调度队列模型
1 .仅有进程调度: p72 (图 3-1 )
适用于分时系统、实时处理系统。
交互用户终端上的命令解释进程为用户的行命令或点击的图标创建进程并直接投入就绪对列。
2 .具有高级与低级调度: p73 (图 3-2 )
适用于批处理系统和分时系统,要求后备队列按优先级排列,每过一段时间内外存作业交换( MULTICS ),以保证交互用户的响应时间。
3 .具有三级队列的调度模型:( p74 图 3-3 )
批作业进入后备队列,作业调度为后备作业创建进程投入就绪队列。
交互作业由命令解释进程直接创建进程投入就绪队列。
中级调度把进程映象在内存与交换区之间换入换出。
l 调度方式和算法评价
1 .面向系统准则:吞吐量要高、 CPU 利用率要高、资源利用率要高