聊聊操作系统设计

我关注操作系统已经好长时间了,其实这个领域有很多新鲜事,并不像人们认为的那样没有做应用有趣,我甚至认为设计操作系统是一种艺术,别看就那几项功能,它的设计难度要远高于一般的应用。

我认为设计操作系统要将操作系统作为一个主体看待而不是将它看做被设计的对象,设计者要认为自己设计的东西是活的。最终是操作系统来管理一切事物而不是设计操作系统的人,因此不要把操作系统当做客体,一定把它作为主体。前面的两篇文章谈到了linux多任务和多用户的一些要点,其实是操作系统的设计者设计出这一切了吗?不是,而是在操作系统被定位后必然的结果,比如unix/linux最开始就不是让普通用户用的,当然linux可能是,但是当时除了unix又有谁可以模仿呢?既然不是为普通用户设计的,那么就可以按照简洁,统一的原则来设计了,因为只要不是设计用户接口都是可以找到很艺术的方案的,毕竟用户是善变的,是难缠的。几个大的原则可以让unix哲学历经几十年依然闪亮,可见当时设计者的才华。在一款操作系统被设计出来后,一定要站在此操作系统的立场上看一下进程,内存,文件等等操作系统管理的对象,将灵魂注入作品,这个作品就活了,unix就包含着设计者的灵魂。

另一个要点就是寻找一个最简单的基本原则,比如狭义相对论的基本原则也就是那几点。在工程学上也是如此,往往设计得好的基本原则可以带来很多的好处,你可以看到unix/linux的fork模型多么简单,但是它们的分时调度性能和进程管理性能是多么得好,第一,越简单越好;其次,越直观越好,直观是给人看的,但是人做的事不一定就是对的,简单才是这个世界的本质。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验题目: 基于死锁避免动态策略的资源分配银行家算法的模拟实现 问题解析(对问题的分析、理解和解题方法): 对问题的分析: 并发进程共享系统时如处理不当可能发生死锁。要防止死锁的发生,必须保证系统状态是合理的。有效的避免死锁的算法必须能预见将来可能发生的事情的模式,以便在死锁发生之前就能察觉出它们潜在的危险的存在。这种预见类型的算法的代表是Dijkstra 提出法银行家算法。 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。 对问题的理解和解决: 操作系统按照一定的规则为进程分配资源,当某个进程申请资源时,首先要测试该进程对资源的需求量是否与最大需求量冲突,如果超出最大需求量,则不予分配。其次如果系统的可用资源能满足当前的进程的需求,则尝试性的分配,并接下来今年进入安全性检查。 否则不予分配。 如果进入安全性检查,在为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,并释放所占用的资源。否则就推迟分配。进入下个进程的资源申请。直到所有的进程都能合理的分配资源并结束。则安全性检查通过。系统处于安全的状态。否则若有进程无法完成,始终无法获得所需的资源,即检查出潜在的死锁。此时系统处于不安全的状态。 处于不安全的状态的进程资源申请因当驳回。并恢复分配前的状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值