死锁的避免 此源码为操作系统设计与实践的实验作业
上传时间: 2013-12-26
上传用户:lps11188
根据哲学家就餐算法实现的程序。主要是解决可能出现的死锁问题。
上传时间: 2014-01-09
上传用户:guanliya
作系统进程通信(预防死锁)算法 Dijkstra银行家C语言实现
上传时间: 2013-12-10
上传用户:gtzj
死锁避免演示算法。 本实验是基于银行家算法的思想通过编写C++程序实现银行家算法的计算机程序化,使其更实用。
上传时间: 2018-06-20
上传用户:薛大神6
资源分配图化简,判断是否发生死锁,操作系统课程设计--死锁的检测,附源代码
上传时间: 2019-05-26
上传用户:jinqiliang
哲学家进餐问题是荷兰学者Dijkstra 提出的经典问题之一,它是一个信号量机制问题的应用,在操作系统文化史上具有非常重要的地位。对该问题的剖析有助于学生深刻地理解计算机系统中的资源共享、进程同步、死锁等问题,并能熟练地应用信号量来解决生活中的控制流程,即将生活中的控制流程用形式化的方式表达出来。 假设有5个哲学家,他们花费一生中的时光思考和吃饭。这些哲学家共用一个圆桌,每个哲学家都有一把椅子。在桌子中央是一碗通心面,在桌子上放着5只筷子。(如图所示)当一个哲学家思考时,他与其他同事不交互。时而,哲学家会感到饥饿,并试图拿起与他相近的两只筷子(他与邻近左、右之间的筷子)。一个哲学家一次只能拿起一只筷子。显然,他不能从其他哲学家手里拿走筷子。当一个饥饿的哲学家同时有两只筷子时,他就不能不用释放他的筷子而自己吃了。当吃完后,他会放下两只筷子,并再次开始思考。 规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子;而偶数号哲学家则相反。按此规定,将是1、 2号哲学家竞争1号筷子;3、4号哲学家竞争3号筷子。即五位哲学家都先竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总会有一位哲学家能获得两只筷子而进餐。
上传时间: 2013-12-10
上传用户:zhangzhenyu
哲学家进餐问题是荷兰学者Dijkstra 提出的经典问题之一,它是一个信号量机制问题的应用,在操作系统文化史上具有非常重要的地位。对该问题的剖析有助于学生深刻地理解计算机系统中的资源共享、进程同步、死锁等问题,并能熟练地应用信号量来解决生活中的控制流程,即将生活中的控制流程用形式化的方式表达出来。 假设有5个哲学家,他们花费一生中的时光思考和吃饭。这些哲学家共用一个圆桌,每个哲学家都有一把椅子。在桌子中央是一碗通心面,在桌子上放着5只筷子。(如图所示)当一个哲学家思考时,他与其他同事不交互。时而,哲学家会感到饥饿,并试图拿起与他相近的两只筷子(他与邻近左、右之间的筷子)。一个哲学家一次只能拿起一只筷子。显然,他不能从其他哲学家手里拿走筷子。当一个饥饿的哲学家同时有两只筷子时,他就不能不用释放他的筷子而自己吃了。当吃完后,他会放下两只筷子,并再次开始思考。 规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子;而偶数号哲学家则相反。按此规定,将是1、 2号哲学家竞争1号筷子;3、4号哲学家竞争3号筷子。即五位哲学家都先竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总会有一位哲学家能获得两只筷子而进餐。
上传时间: 2014-01-23
上传用户:teddysha
用银行家算法实现资源分配。多个进程动态共享系统的资源可能会产生死锁现象。但只要资源分配策多个进程动态共享系统的资源可能会产生死锁现象。但只要资源分配策略能保证进程不出现循环等待,系统就不会发生死锁。本实验通过编写和调试一个系统动态分配资源的简单模拟程序,观察死锁产生的条件,并采用适当的算法,有效的防止和避免死锁的发生。
上传时间: 2016-03-12
上传用户:磊子226
T-Kernel作为一种嵌入式操作系统,由于实时性和开源性,在嵌入式操作系统领域中的应用越来越广泛。ARM是一款比较好的微处理器,T-Kernel在ARM上的应用研究基本上是空白,所以结合两者进行研究促进T-Kernel在国内嵌入式领域的发展。同时,T-Kernel内部调度机制存在着优先级反转缺陷,优先级反向使得高优先级任务的执行时间无法预测,增加了实时系统的不确定性。早期的解决协议较好地解决了优先级反转问题,但同时也存在着自身不足之处。 针对T-Kernel存在的缺陷,在深入研究相关协议的基础上,本论文提出了一种新的改进的优先级继承协议。该协议设置超时保护机制,避免任务在获取信号量时长时间的阻塞,结合Havender提出的“有序资源使用法”防止死锁发生,给出该协议的分析过程,并把该协议结合到T-Kernel中。在这个基础之上,建立研究开发平台;针对硬件设备,研究引导程序的执行原理,实现系统的引导程序;构建T-Kennel内核;移植内核到开发板;最后对T-Kernel的启动过程进行了详细的分析。 T-Kernel在ARM上的移植研究,为嵌入式系统开发的提供了一种开发流程,同时对于T-Kernel的启动过程的分析,为以后的应用程序开发提供了一个接口;对于T-Kernel存在的优先级反转问题的解决,可以改进T-Kernel的实时性和灵活性,同时为实时系统的性能改进提供了参考。
上传时间: 2013-04-24
上传用户:shangdafreya
随着国内工业化、数字化的迅速发展,嵌入式开发在IT行业中的重要性越来越显著。嵌入式开发领域对产品的功能性、稳定性、实时性等方面的要求也越来越高。 采用嵌入式实时操作系统作为开发平台,以高性能的嵌入式处理器为工业控制等领域的主控制器可以有效地提高系统的可靠性、实时性、和软件编程的灵活性。在嵌入式处理器方面,ARM构架已经在高性能、低功耗、低成本的嵌入式领域里占领先地位。而在嵌入式操作系统方面,适合国内发展方向的解决方案以及系统基础结构方面并不理想。首先,国外成熟的嵌入式实时操作系统大都成本高、结构复杂,不适合强实时应用;其次,因大部分实时操作系统不公开源码,使开发的产品存在安全隐患。而类似μC/OS-II的小型强实时嵌入式操作系统内核虽然具有低成本、易控制、小规模、高性能等特性,但这类系统的基础较为薄弱,面临产品化和商业化还有一定的距离。 本文针对这种情况,结合现有的操作系统内核理论及嵌入式强实时系统的特殊需求,特别是对μC/OS-Ⅱ的研究分析基础上,面向强实时应用,设计、构造了一种适合在32位ARM处理器环境下使用的内核。这样做的目的是为了提供一个基础牢固、值得信赖的基本平台。 本文研究工作主要集中在以下几个方面: 针对嵌入式环境中高效、简洁、易扩展、易剪裁的要求,对内核体系结构框架进行了设计。内核整体上采用分层结构,在各层中采用功能相对独立的模块:在最底层借鉴微核的原理,只提供最基本的功能模块。 针对系统快速和稳定的实时响应能力需求,为IRQ中断建立了统一的中断入口,采用合理的半嵌套工作方式;保留FIQ为不可屏蔽中断,在快速反应场合使用;引入中断分段处理机制解决中断和任务的ITC机制共享,需要硬保护机制相互协调所引起的硬保护机制被隐性地泛滥使用问题。 针对应用提出的系统行为的可预测性需求,在调度算法方面采用基于优先级位图的抢占阈值调度算法,提高了处理器的利用率和任务集合的可调度性,减少了内核存储开销;在共享资源访问控制方面,以优先级天花板协议为依据,使用互斥事件解决优先级反转和死锁问题的发生。 为了保障系统的强实时性能,本文还对内核的时钟管理、内存管理等方面进行了设计。最后,通过实时性能测试,结果表明该实时内核有很好的强实时特性。
上传时间: 2013-04-24
上传用户:alia