说明:该系类文章更多的是从从哲学视角看 操作系统 这门学科。同时也是 操作系统的学习笔记总结。因为博主 这些年主要是以研究安卓系统和 嵌入式Linux为主,因此这个系类文章也是这两个领域不可或缺的基石之一,尤其是对操作系统感兴趣的伙伴可特别关注。


22 操作系统设计之哲学原理

操作系统就是将进程管理、内存管理、文件管理、I/O管理和安全管理整合到一起,而整合的原则就是操作系统的哲学原理。而这个原理就是人类的生活哲学,即从人类的生活哲学着眼设计,就能够设计出令多道乎人满意的操作系统。

22.1 操作系统设计的追求

操作系统设计的目标:

  • 保证操作系统本身的正确运行
  • 提供尽可能的功能
  • 尽量提高系统的效率(系统本身有很高的管理和运行效率,实现过程成本的降低)
  • 在追求效率的基础上尽量顾及到公平

人类的生活哲学很多,在操作系统上体现的淋漓尽致。而这里只是将主要的设计原则进行论述。

22.2 操作系统设计的第1条哲学原理:层次架构

操作系统分为多个模块,并且按层次分解,下一层为上一层提供服务,而上一层只能对下一层进行控制,这样做使得操作系统构造容易,符合人的习惯;也使得操作系统结构清晰,从而节省开发操作系统的成本。

22.3 操作系统设计的第2条哲学原理:没有对错

操作系统没有对错之分,只有好坏;操作系统的发展往往是因为人们对效率和公平的追求而导致的。

22.4 操作系统设计的第3条哲学原理:懒人哲学

因为无法预见未来,将事情提前做好或许是一种浪费,因为变化会使这变得毫无意义。(即提前做好的事情可能过一段时间就变得不值得一提了)

22.5 操作系统设计的第4条哲学原理:让困于人

把困难让给别人,把方便留给自己是人的本性;同样,这也适用于操作系统。(文件系统与死锁都是好的例子)

22.6 操作系统设计的第5条哲学原理:留有余地

做任何事情的时候都要留有余地,不能做绝;这样做往往有利于后期操作系统的改善,否则可能需要重新设计。

22.7 操作系统设计的第6条哲学原理:子虚乌有-海市蜃楼

操作系统的目的是服务上层的应用程序和用户;而这些上层应用的要求通常是五花八门且与硬件能够提供的服务相差很大;为了保证上层和下层都能满意,操作系统做了一个虚拟转换,虽然能力有限,但给人的感觉却是真实的。

22.8 操作系统设计的第7条哲学原理:时空转换-沧海桑田

根据实际的需求,在必要的时候,利用空间换取时间、利用时间换取空间,这两者都是代价。

22.9 操作系统设计的第8条哲学原理:策略机制分离与权力分离

对于一个国家而言,就是立法机构和执法机构不能是同一个团体,否则会出现滥用法律的情况。对于操作系统而言,策略和机制必须是分开的,这里不是为了公平,而是为了提高灵活性和使设计变得简单。

22.10 操作系统设计的第9条哲学原理:简单为美-求于至简,归于永恒

对于一个数学问题的解决方案,往往是最简单的被称为正确的。因为最有效。对于操作系统,也就是设计的越简单越好。

22.11 操作系统设计的第10条哲学原理:适可而止

这主要针对前面9条原理,即凡事都要有个度,要适可而止,不能走极端,否则就会否极泰来。即操作系统可以设计的简单,但是不能过分简单;操作系统可以分层,但是不能太多也不能太少;文件系统使用字节流虽然简单,但会降低效率,使用数据块又太大,也会降低效率,这需要一个度来权衡,这个度就是字节流。

操作系统哲学原理(22)操作系统设计原理-操作系统设计之哲学原理相关推荐

  1. 【操作系统原理】信号量及PV操作详解

    信号量 一个特殊变量 用于进程间传递信息的一个整数值 定义如下: struct semaphore {int count;quenue Type quenue; } 信号量说明:semaphore s ...

  2. 数据库原理—关系模型的数据操作(八)

    数据库原理-关系模型的数据操作(八)

  3. 【Hadoop】HDFS操作、数据上传与下载原理解析、高级特性及底层原理

    HDFS操作.数据上传与下载原理解析.高级特性及底层原理 1 HDFS操作 1.1 Web Console网页工具 1.2 命令行 1.2.1 普通的操作命令 1.2.2 管理员命令 1.3 Java ...

  4. COM的通信原理及ATL的通信操作 看过的一篇非常好的讲解通讯机制的文章

    COM的通信原理及ATL的通信操作 一.             COM的通信原理 1.  通信模型:一般,我们只使用客户端程序到组件的通信,并且这种通信是通过组件的接口来实现的.现在,我们讲一下服务 ...

  5. # 22.Flink-高级特性-新特性-异步IO\原理

    22.Flink-高级特性-新特性-异步IO-了解 22.1.原理 22.1.1.异步IO操作的需求 https://nightlies.apache.org/flink/flink-docs-rel ...

  6. Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties...

    你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新 ...

  7. Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties

    你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新 ...

  8. 8 操作系统第二章 进程管理 信号量 PV操作 用信号量机制实现 进程互斥、同 步、前驱关系

    文章目录 1 信号量机制 1.1 整形信号量 1.2 记录形信号量 1.3 信号量机制小结 2 用信号量机制实现进程互斥.同 步.前驱关系 2.1 信号量机制实现进程互斥 2.2 信号量机制实现进程同 ...

  9. 操作系统概念学习笔记 4 操作系统结构和操作简述

    操作系统概念学习笔记 4 操作系统结构和操作简述 操作系统结构 多道程序设计 多道程序设计指的是允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法.也就是说,计算机内存中可以同时存放多道 ...

  10. php中的数据库操作和字符串操作session与cookie操作,php中的数据库操作和字符串操作session与cookie操作...

    PHP面试干货 1.进程和线程 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一 ...

最新文章

  1. LSTM模型与前向反向传播算法
  2. ActFramework 小贴士 - 获得应用版本
  3. 说说进程与线程的区别与联系
  4. Android Studio开发RecyclerView遇到的各种问题以及解决(一)
  5. python使用字典格式化字符串-4.2.3Python下字典的格式化字符串
  6. C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板成员函数的实例化
  7. 八十、 Springboot整合异步任务和定时任务
  8. 【渝粤题库】陕西师范大学200431综合英语(一)作业(高起专、高起本)
  9. vscode怎么自动将px转换成vw_基于react/vue移动端适配之px自动转rem、vw
  10. 蓝色版去水印小程序源码+接口
  11. android导入导出txt通讯录,Android导入导出txt通讯录工具
  12. 盘点一下结构体标签在Go中的应用
  13. 翻牌抽奖 php,PHP+jQuery开发简单的翻牌抽奖实例
  14. pom.xml 添加 JUnit依赖
  15. PHP多进程初探 --- 再次谈daemon进程
  16. 通过CentOS开机自启动脚本设置iptables
  17. 微信小游戏代码包侵权的避开技巧(含处理脚本代码)
  18. 深入分析AIDL原理
  19. UiPath-压缩解压缩文件
  20. 基于单片机的智能台灯设计

热门文章

  1. Pocket Yoga for mac(掌上瑜伽教练软件)
  2. failed to allocate 2.00G (2147483648 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY: out of memory
  3. 机器学习1:关联分析及频繁模式挖掘Association rule mining(基于R language)
  4. ES分布式搜索引擎的故事
  5. 常见网络模型——ER随机图、规则图、BA、WS小世界
  6. 【元胞自动机】激进策略元胞自动机三车道(不开放辅路,软件园影响)交通流模型matlab源码
  7. 知乎精华:生活中有哪些行为是高情商的表现?
  8. python 实现两个文本文件内容去重
  9. skp 数据如何转slpk?
  10. 计算机适合做微课的知识点,利用微课促进《计算机应用基础》教学的有效途径...