死锁

计算机系统中有许多独占资源,当一个进程占用了某独占资源,又去申请另一个独占资源,这时就有可能会引发死锁。

生产者,消费者问题的死锁

IO操作的死锁:
占有资源和求资源形成环路。
没有占用CPU,block状态就是死锁
活锁:优先级反转:空转操作,占用CPU
饥饿:写者饥饿问题。

这些都是需要避免的,操作系统采取忽略策略。
计算机系统中许多独占资源,当一个进程占用了某独占资源,又去申请另一个独占资源,这是就有可能会引发死锁。
资源的种类:硬件设备;信号量;数据组
资源分类:可剥夺的资源如储存器,页面的更新;
不可剥夺式:打印机
资源的使用过程:申请、使用、释放

死锁模型
引起死锁的条件:占有与申请
生产者—消费者:信号量模拟资源:
必要条件:互斥条件;保持和等待条件;非剥夺条件;循环等待条件
进程和资源:
有向图表示方法:

死锁的解决方法:忽略,重开机;预防:谨慎分配资源;回复:破坏死锁的必要条件

鸵鸟算法:忽略
死锁的检测并恢复:
资源分配时,检测进程——资源关系图中是否有环路出现
死锁出现时,采用强制进程放弃资源来破坏环路。

破坏互斥条件:增加资源量
破坏保持——等待条件:条件变量:一侧申请所需所欲的资源,不能满足则全部放弃并等待
破坏循环链条件:规定每一个进程在任意时刻只能占有一个资源
对所有的资源进行编号,每个进程申请资源时必需按照编号的大小,从小到大申请。保持小的资源,申请大号的资源,不存在回走的进程,不会形成环路
每次只能申请比已占用的资源编号更高的资源。
信号量采取的策略也是一致的。

避免死锁的集中算法:

银行家算法::

放出去的前能够收回来。
单种资源的银行家算法
总资本10万
条件:每位客户最大贷款数10万
按需,尽可能分期贷款
达到贷款总数时,立刻全数归还。

软件构建:

第一章的概念:
微内核,层次结构
进程文件内存管理
a.out到底是如何执行起来的。

操作系统首先判断此命令并非shell命令,于是以linux可执行文件视之。shell父进程调用fork,创建一个新进程,此新进程即为可执行文件的进程,fork调用完成后,新进程获得了新的页目录项,除此之外与shell父进程共享同一套页表结构。此时切换到新进程执行,执行execve系统调用,获取可执行文件的header信息,将其拷贝到主存中,并为之建立新的页表结构。通过header信息,建立新进程的进程地址空间与可执行文件的映射关系。此时新进程的进程地址空间视图中代码段、数据段仍为空,可执行文件相应的数据仍未拷贝到主存中,通过header中指定的执行程序入口,逐步将相应的段数据拷贝到主存中,并利用缺页中断位置建立相应的页表结构。除了一些header信息,在整个加载过程中没有任何从磁盘到主存的数据拷贝,直到CPU引用一个未被映射的虚拟页导致缺页中断的发生,才会进行拷贝。此时,操作系统利用它的页面调度机制自动将页面从磁盘拷贝到主存储器中。
http://blog.csdn.net/lux_veritas/article/details/9345781
写时复制技术
父进程通过fork()系统调用创建子进程,子进程复制父进程的页目录和页表结构,同时将对应的物理页设为只读。当其中的一个进程在自己的虚拟地址范围内进行写操作的时候,就会产生异常,引起中断,中断处理函数就会在物理内存中再分配一个空闲页,并将引起异常的这个页的内容copy进去,并修改对应的页表项,同时将这两个页修改为可读写,这样这两个进程就各自拥有了一个物理页了。这就是写时复制机制。
按需加载机制
在fork出一个新进程后,通常会伴随着execve系统调用,为这个进程加载内容。这个时候,execve会删除这个进程原有的数据段和代码段占用的页表项,随后系统会为加载进来的环境参数和命令行参数分配一定物理页和对应的页表。除此之外,这个进程的代码和数据没有占用物理内存的任何空间,它门还在磁盘上。但一旦从程序的开始处执行的时候,访问代码和数据的时候,就会发现它们没在内存中,这个时候就会引起缺页中断,中断处理会将在内存中申请一页内存存放数据,并在设置页表中的对应的页表项,如果不存在页表的话,还要申请一页内存存放页表,最后将请求的代码或者数据以块为单位从磁盘上复制到内存中。这就是需求加载机制。

操作系统决定的,编译器决定的?

系统调用:涵盖哪些功能,颗粒性
进程管理,信号,重要的系统调用

PCB结构:
跟踪:比如闹钟的申请
以进程来描述整个机器的运作。
进程并发的运行,进程间通信(互斥(忙等与非忙等)、同步(信号量)),调度
进程作为线程的容器。
信号量编程,说过的模型理解,说清
低级通信与高级通信要搞清楚,速度问题和通信量问题。
同一个文件映射到不同的进程地址空间里。动态连接文件,数据共享。strace的作用,mmap,地址空间大小。
分页式管理,可变分区的交换来实现的管理
计算题:页面替换。
做过的练习一定要搞懂。单级页表,多级页表,快表,缺页处理。
时间和空间的转换。
虚地址、实地址转换。
路径名解析和mount(mout),要访问几次磁盘,分别访问什么数据
文件:以空间换时间
特殊文件的类型:目录,inode数据块
4层架构。
**inode
硬连接软连接
高速缓存

阅读更多
个人分类: 学习 OS操作系统
想对作者说点什么? 我来说一句

数据库死锁

2011年10月13日 957B 下载

数据库死锁adafsdfasdf

2010年07月09日 61KB 下载

ch7 死锁.ppt

2008年12月07日 399KB 下载

oracle解锁,死锁

2010年04月11日 238B 下载

避免资源死锁!!!!

2009年09月14日 25KB 下载

Oracle 死锁处理

2010年07月14日 32KB 下载

db2死锁问题.doc

2009年01月19日 28KB 下载

一键解决死锁

2017年11月22日 533B 下载

没有更多推荐了,返回首页

不良信息举报

死锁

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭