信号量机制实现进程的互斥关系 假定有一组并发进程P1、P2、...、Pn,它们共享一个临界资源R。则应 用信号量机制实现它们互斥并发执行的模型如下: semaphore mutex=1; Pi()(i=1,...,n) { ...; P(mutex); 使用资源R的临界区; V(mutex); ...;//非临界区操作 } //非临界区操作
进程管理的功能 控制、同步、通信、调度和安全性
• 3、进程控制
进程控制块(PCB)及作用 进程队列(PCB链表) 原语(primitive) 进程控制的含义 进程创建(create) 引用的事件 进程创建的过程(主要操作) 进程图 进程终止(destroy) 引用的事件 进程终止的过程(主要操作) 进程阻塞(blocked) 引用的事件 进程阻塞的过程(主要操作)
• 5、经典同步问题
PC问题 简单PC问题 一般PC问题 复杂PC问题 哲学家进餐问题 读者-写者问题
• 5、进程通信
什么是进程通信 为什么要进程通信 进程的独立性 进程的任务协作 进程通信的类型 进程高级通信 进程低级通信
进程通信的方式 共享存储器系统
互斥关系实例 假定系统用堆栈管理空闲块,定义一个栈顶stack及指针top、两个操作pop()和 push(free_block)。有两个并发进程PA、PB调用pop()申请得到一个空闲块, 调用push(free_block) 归还一个空闲块。
uint pop(){ void push(uint free){ uint free=stack[top]; top=top+1; top=top-1; stack[top]=free; return free; } } (这里暂不考虑堆栈的边界问题),这两个操作可以正确地 工作吗?如何用信号量机制解决?