- 第六章 同步
- 多个进程并发访问和操作同一数据并且执行结果与特定访问顺序有关,称为竞争条件
- 临界区问题:进程有进入区,临界区,退出区,剩余区,保证一个进程在他的临界区执行时,其他进程不允许正在他们的临界区执行,方案要互斥,进步,有限等待
- 抢占式内核,非抢占式内核
- 可以通过加锁来保护临界区
- 单处理器环境:可以通过在修改共享变量时禁止中断出现实现,但在多处理器下,中断禁止很耗时,不可行
- 现代os提供特殊硬件指令,用于原子地交换两个字(不可中断)
- 互斥锁(mutex lock)(用的false和true)(最简单的同步工具):获得锁,关键区,释放区,剩余区,缺点是要忙等待,因为acquire()需要循环调用,也称为自旋锁(spinlock),忙等待浪费cpu周期,这本可以有效用于其他进程;优点:没有上下文切换,当使用锁的时间较短时,自旋锁还是有用的
- 信号量(semaphore)更有鲁棒性(健壮):wait()和signal(),需要保证wait和signal要原子执行(感觉这种带数值的就得要原子执行),解决忙等待:wait直接给进程转移到等待队列中,signal再从等待队列中唤醒进程
- 优先级反转(造成中>高的现象):解决,采用优先级继承协议,所有正在访问资源的进程需要访问它的更高优先级进程的优先级
- 高级的同步工具:管程(monitor)(需要再看)
- 事务内存提供了一种进程同步的策略,内存事务是一个内存读写操作的序列,是原子的,如果事务中的所有操作都完成了,应该提交,否则应终止操作并回滚,软件事务内存,硬件事务内存
- 函数式编程语言:一旦一个变量被定义和赋值,它的值是不可变的,适用于多核系统的并发与并行执行
- 第七章 死锁
- 如果所申请的资源被其他等待进程占有,那么等待进程有可能再也无法改变状态,这种情况叫死锁
- 系统资源分配图
- 死锁处理方法:死锁预防(让死锁出现条件的四个中有一个不成立),检测恢复,直接忽视
- 死锁恢复:进程终止,资源抢占
操作系统概念黑书复习(3)第6,7章
最新推荐文章于 2024-07-24 13:16:26 发布