读书笔记-现代操作系统-6死锁-6.7其他问题
2016-07-13 15:52
337 查看
6.7 其他问题
6.7.1 两阶段加锁
数据库中常用的,两阶段加锁:进程试图对所有所需的记录进行加锁,一次锁一个记录。如果第一阶段加锁成功,就开始第二阶段,完成更新过后然后释放锁。如果第一阶段加锁失败,那么该进程释放它所有加锁的记录,然后重新开始第一阶段。
这种方法类似于提取或者至少是未释放一些不可逆操作之前请求所有资源。
6.7.2 通信死锁
两个或者两个以上进程利用发送信息来通信时,当进程a向进程b发送请求信息,然后阻塞直至b回复,假设请求信息丢失,而a将阻塞以等待回复,而b会阻塞等待一个向其发送命令的请求,因此发生死锁。每个进程因为等待另外一个进程引发的事件而产生阻塞,这就是一种死锁。这样的死锁就是通信死锁。
通常来说中断通信死锁的方式是超时。
6.7.3 活锁
轮询(忙等待)可用于进入临界区或存取资源。这样也会导致类似死锁的情况,虽然两个进程都没有阻塞或休眠,这样的情况呗称为活锁(livelock)。在一些系统中限制了最大进程数,如果有活锁会导致占用一些进程进入活锁无法被有效利用。
通常当进程表满了之后再过一段时间尝试fork。
6.7.4 饥饿
在动态运行的系统中,任何时刻都可能请求资源。这时候需要一些决策系统来判断分给那个进程资源。如果决策系统设计的问题导致一些进程时钟无法得到自己的资源会导致饥饿(starvation)现象。通常饥饿可以通过先到先服务来解决。
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- 应用领航:盘点那些年我们一起追过的OS
- 无奇不有!盘点各国自己开发的操作系统
- 只需十分钟,结果大不同 |《深度思考》
- DB2实例管理
- DB2实例管理
- 《洋葱阅读法》读书笔记
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- C#实现子窗体与父窗体通信方法实例总结
- sql2008 还原数据库解决方案