目录
4.1 进程(线程)间相互作用
- 相关进程、无关进程
- 与时间有关的错误
4.2 进程互斥
- 计算机系统中资源共享的程度可分为三个层次:互斥、死锁和饥饿。
- 临界资源访问过程分为四个部分:进入区、临界区、退出区、剩余区。
- 进程同步机制准则:空闲则入、忙则等待、有限等待、让权等待。
- 进程互斥的软件方法:
- 单标志算法
- 双标志、先检查算法
- 双标志、后检查算法
- 先修改、后检查、后修改者等待算法
- 进程互斥的硬件方法
- TS指令
- Swap指令
4.3 信号量
P原语相当于进入区操作,V原语相当于退出区操作。P用wait(s),V用signal(s)。
4.5 管程
- 采用P\V同步机制的缺点:
- 程序易读性差、程序不利于修改和维护、正确性难以保证。
- 一个管程是一个由过程、变量及数据结构等组合的集合。
- 一个管程由四部分组成:管程名称、共享数据说明、对数据进行操作的一组过程和对共享数据赋初值的语句。
- 管程的特点:模块化、抽象数据类型、信息隐蔽。
Pthread调用
相关 | 线程调用 | 描述 |
互斥量 | pthread_mutex_init | 创建一个互斥量 |
pthread_mutex_destroy | 撤销一个已存在的互斥量 | |
pthread_mutex_lock | 获得一个锁或阻塞 | |
pthread_mutex_trylock | 获得一个锁或失败 | |
pthread_mutex_unlock | 释放一个锁 | |
条件变量 | pthread_cond_init | 创建一个条件变量 |
pthread_cond_destroy | 撤销一个条件变量 | |
pthread_cond_wait | 阻塞以等待一个信号 | |
pthread_cond_signal | 向另一个线程发信号唤醒 | |
pthread_cond_broadcast | 全部唤醒 |
4.6 进程通信
- 共享内存
- 消息机制
- 消息缓冲通信
- 信箱通信
- 管道通信