热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

操作系统哲学原理(01)基础原理 操作系统导论

说明:该系类文章更多的是从从哲学视角看操作系统这门学科。同时也是操作系统的学习笔记总结。因为博主这些年主要是以研究安卓系统和嵌入式Linux为主,因此这

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



1 操作系统导论

1.1 人造学科

一个角度看待所有事物分为两类:发明(创造)与发现(观察)

计算机本身就是一个人造学科,人造学科的4个特点,如下:

  • 不精确,有相对性:没有对错,只有适合/不适合
  • 从对人类活动的观察导出:对事物的观察与抽象
  • 依赖于人的主观判断力;人不同,看待事物的角度不同,抽象出来的对象不同,因此,对于标准,只是少数服从多数
  • 符合人的直觉:如果按照我们的意愿去理解这些原理,则十分直接了当

相对人造学科,神造学科具有的4个相反的特点:

  • 精确、绝对:只有对错,没有中间状态,例如数学领域
  • 从对自然的观察导出:通过自然现象严密推理获得自然的规律
  • 不依赖人的主观判断力:所有人的观察结果是一样的,即观察结果可以被任何人验证
  • 违反人的直觉:人类的思想和自然本身是不同的,需要通过观察发现规律,利用规律来推导结论,而不是主观臆断

操作系统是一个人造学科,因此要按照人造事物的特点来学习。

1.2 程序是如何运行的

从图中了解到,程序运行至少需要4个因素:

  • 程序设计语言
  • 编译系统
  • 操作系统(在程序的执行过程中具有关键的作用)
  • 指令集结构(计算机硬件系统)

1.3 什么是操作系统

操作系统(OS)的概念:一个介于计算机硬件和应用软件之间的一个软件系统,目的就是使得计算机变得好用,运作有序。操作系统的位置如果所示:

操作系统要做的事情:

  • 计算机的功能和复杂性在不断发生变化,掌控的事情越来越多,也越来越发杂,本身能够拥有的资源也会越来越多,因此需要不断改善。利用操作系统会使事情变得相对简单些,即操作系统升级的时候改动量降到最低。
  • 知晓计算机上发生的所有事情,从而维护计算机,保证计算机的健康。
  • 为了满足人类更加苛刻的要求,不断发展。

操作系统的功能:

  • 代替用户以及应用管理计算机上的软件、硬件资源。
  • 保证计算机资源的公平竞争和使用。
  • 防止对计算机资源的非法侵占和使用。
  • 保证操作系统自身正常运转。

1.4 魔术与管理

操作系统在计算机运行过程中扮演的角色:魔术师和管理者。

  • 魔术师:将丑陋变得美好,将少变多,将无变有。但是这并不是凭空想象,而是运用了类似于能量转换的一种方式,或者说是巧妙地拿空间来换取时间、拿时间来换取空间。
  • 管理者:对资源进行管理以达到公平,有效。

根据管理的资源不同,具体功能包括:

  • CPU管理:如何分配CPU给不同的应用和用户。
  • 内存管理:如何分配内存给不同的应用和用户。
  • 外存管理:如何分配外存给不同的应用和用户。
  • I / O管理:如何分配输入输出设备给不同的应用和用户。

除了对资源进行管理和抽象,还需要保证自身的稳定,那么还需要包括2项:

  • 健壮性管理:如何确保操作系统自身的正常运作。
  • 安全性管理:如何防止非法操作和入侵。

为了完成上述功能,人们设计了很多机制,而这些东西的背后隐含的是人类的哲学思想。

1.5 用户程序与操作系统

第一个视角:用户程序调用操作系统,如下所示:

应用程序调用系统API完成功能应用程序是主程序,操作系统被调用。

第二个视角:操作系统调用用户程序,如下所示:

操作系统先启动,是主程序,之后是调用各种应用程序,最后回到操作系统。

说明:两种观点无对错,只是角度问题,导致不同的观点。实际上操作系统和各个应用程序是可以看作是相互调用,从而形成一个非常复杂的动态关系。

1.6 操作系统的范畴

操作系统的具体任务:

@1 CPU管理(进程管理):

  • 公平:每个程序都有机会使用CPU
  • 非阻塞:阻塞不能妨碍其他进程继续前进
  • 优先级:优先级高的程序运行,则优先级低的必须让出资源

@2 内存管理:管理缓存、主存、磁盘、磁带等存储介质形成的内存架构。虚拟内存将时间转换为空间,同时对于物理内存需要进行分割和保护,即不能越界。

@3 存储管理(文件系统):将磁盘变成用户很容易使用的媒介。

@4 设备管理:管理输入输出设备。

@5 操作系统提供的机制:

  • 屏蔽不同设备的差异,方便用户访问;
  • 提供并发访问,使设备具有共享性
  • 批处理:无须人机交互的模式,主要是达到吞吐量最大化,单位时间完成的任务最多。    

1.7 为什么学习操作系统

操作系统的功能、技巧、思想、哲学理念在很多领域内使用,是源于生活的一种抽象,而这为触类旁通学习其他东西来讲容易多了。


推荐阅读
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
  • 深入解析 RuntimeClass 及多容器运行时应用
    本文旨在探讨RuntimeClass的起源、功能及其在多容器运行时环境中的实际应用。通过详细的案例分析,帮助读者理解如何在Kubernetes集群中高效管理不同类型的容器运行时。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 优雅地记录API调用时长
    本文旨在探讨如何高效且优雅地记录API接口的调用时长,通过实际案例和代码示例,帮助开发者理解并实施这一技术,提高系统的可观测性和调试效率。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 本文详细解析 Skynet 的启动流程,包括配置文件的读取、环境变量的设置、主要线程的启动(如 timer、socket、monitor 和 worker 线程),以及消息队列的实现机制。 ... [详细]
  • APP及其接口测试全面解析
    本文深入探讨了移动应用(APP)及其接口测试的关键点,包括安装与卸载、功能一致性、系统兼容性、权限管理等多个方面的测试策略,以及针对接口的功能、边界值、参数组合等专业测试方法。同时,介绍了几款常用的测试工具,帮助开发者提高测试效率和质量。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 YN2014.04
    雨林木风 GHOST XP SP3 经典珍藏版 YN2014.04 ... [详细]
  • 本文详细探讨了 Android Service 组件中 onStartCommand 方法的四种不同返回值及其应用场景。Service 可以在后台执行长时间的操作,无需提供用户界面,支持通过启动和绑定两种方式创建。 ... [详细]
  • 本文详细介绍了 Node.js 中 OS 模块的 arch 方法,包括其功能、语法、参数以及返回值,并提供了具体的使用示例。 ... [详细]
author-avatar
书友56952614
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有