乐趣区

关于操作系统:什么是操作系统

本文曾经收录至我的 GitHub, 欢送大家踊跃 star 和 issues。

https://github.com/midou-tech/articles

外甥上大一了,起初我还十分放心他,放心次要有两方面的起因:

  • 从小始终是校草,长的 太帅,会不会天天谈恋爱去了
  • 放心在大学没能做好本人的布局

于是常常和他视频聊天,外甥小我没几岁,咱们常常以兄弟相称,聊起来天然谐和

从我这几次和他聊天能够看出,我的担心有些太过了

他如同从没刻意他的帅气,而是一直的空虚本人的才华,篮球打得好、街舞跳的好、还去加入各种志愿者流动

要害是最近还对 计算机 产生了强烈的趣味。

唉,帅就算了,还这么认真,这年轻人不讲武德啊

上周末打电话,居然问我什么是操作系统?为什么要有操作系统?

于是就有了这篇文章,也筹备把我外甥的计算机相关疑难全副承包了,喜爱我记得关注我 公号 龙跃十二

喜爱我几个关注我

什么是操作系统?

说实话很难有一个精确的定义去形容操作系统,看了多本对于操作系统的书中是这样说的。

操作系统是一个运行在内核态的软件,该软件对底层各种硬件资源做了形象和治理,并提供对立的 API 接口供应用程序去调用这些资源。

这句话涵盖了好几个知识点

  1. 操作系统是一个软件
  2. 操作系统软件运行在 内核状态 下的软件,不在用户态下,利用开发者开发的各种系统软件都是在用户态下运行的

撒是用户态,撒是内核态?你很喜爱剖根问底,这个前面再说

  1. 对各种底层 硬件资源 进行了 形象 治理

    形象了处理器、存储器、时钟、磁盘、网络接口、外设等底层硬件资源,把各种资源都形象为一个个的文件描述符

    构想一下,多核状况下,多个应用程序同时应用一种资源,就会造成凌乱场面,此时操作系统就会表演一个管理者去治理这些资源的使用者。

    1. 提供对立对外拜访的接口

    操作系统处在中间层,下面有各种零碎应用程序、开发人员、用户,上面有各种计算机硬件资源。

    怎么脑海中浮现了 高低尴尬 的表情包,哈哈哈有内味了

    操作系统 设计者 硬件编程 人员能够间接去操作硬件资源

    操作系统设计者这不必解释了,都懂的,都在设计操作系统了,总不至于不能操作硬件资源吧

    硬件编程人员这个大家可能略微生疏点,有一类开发人员是间接对硬件进行操作的,如果是你是学习电子信息相干业余的,应该很相熟 烧程序

    大学做试验的时候龙叔就常常把写好的汇编程序或者 C 语言程序编译实现了间接烧到计算机硬件上,这叫 烧程序

    我写的程序外面有对硬件资源进行操作,比方操作某某管脚、某个串口等等

    所以 没有操作系统也是能够间接操作计算机硬件资源,也是能够跑程序的

    那为啥还要操作系统呢?

    为什么要有操作系统?

    下面曾经说了,没有操作系统是能够操作计算机硬件资源的,那为什么要有呢?

    1)最晚期计算机是没有操作系统的,每次要变更一下性能,都要手动去调整硬件,费时费力。

    2)随着电子管技术的倒退,各种硬件资源能够做成通用的,此时就急切需要一个操作系统去管制这些资源,每次改性能,只须要批改输出的信号即可。

    3)晋升计算机的功能性和灵活性

    操作系统的演变

    串行解决

    20 世纪 40-50 年代,电子管技术失去了倒退,诞生了第一台电子管计算机

    因为整机的集成度太低,一台计算机必须用一个 house 来搁置

    而且这台机器过后数百万美元的标价,价格是真的贵,个别人用不起,都是一些豪横的组织才用得起

    晚期的计算机是没有操作系统的,操作人员间接和计算机硬件交互,相似上面这样

    所有的操作在管制台上进行,管制台上有显示灯、触发器、输入输出设施

    每次作业都须要有专门的的人员来操作,应用汇编语言写程序到纸片上,再穿孔成卡片,再将这些卡片交给专门的操作人员去操作,再破费工夫等操作后果。

    计算机老本高,操作过程简单,工夫还长

    人们很天然就想到缩小机器工夫的节约,于是就诞生了 批处理零碎

    批处理零碎

    到了 20 世纪 50 年代 General Motors 开发了批处理零碎,那时候被称为 监控零碎

    监控零碎是常住在内存中的,他做的事件就是

    1. 加载用户程序到用户程序段
    2. 把控制权交给用户程序
    3. 读取用户程序指令交给处理器
    4. 将处理器的执行后果输入到设施
    5. 用户程序实现后交回控制权
    6. 进行下一个循环

    总结一下,监控程序次要次要实现调度性能,一批作业排队期待,处理器尽可能的被充分利用,不让他有任何闲暇工夫。

    监控程序很大水平上 进步了处理器的利用率,缩小了处理器闲暇工夫

    多道零碎

    批处理零碎曾经进步了程序的利用率,但还是没最大化压迫

    监控程序和用户程序须要来回 切换 转换控制权,这部分工夫处理器闲置

    监控程序在做 IO 操作时,因为 IO 是比较慢的,磁盘读写很慢的,此时处理器须要期待

    为了更好的利用处理器的计算性能,大佬们搞出了多道零碎

    多道零碎就是同时加载多个用户程序,当其中一个用户程序须要 IO 期待 时,切换 到另一个不在期待 IO 的用户程序进行解决。

    这就很好的缩小处理器资源的节约,同时进步了程序处理的效率。

    多道零碎会比单道零碎简单很多,比方 所有程序都在内存中,波及到 内存治理

    多个用户程序须要运行处理器先运行谁?这波及到 调度算法

    当然 别慌乱,这些常识都会在前面的文章中讲到。

    分时系统

    多道零碎曾经解决了处理器资源 正当且高效 利用问题,然而随着计算机的倒退,人们对于计算机又有了新的需要 交互式解决

    计算机须要具备多个用户同时拜访、操作和解决用户程序,此时 分时系统 就应运而生了。

    举个例子:程序 A 是一个 十分耗费 处理器资源的程序个别运行一次须要 10 分钟,程序 B 是一个简略计算程序,运行一次只须要 1 分钟。

    在多道零碎里,只能是程序 A 解决完了能力解决 B,然而这 B 等着焦急啊

    于是就有了分时系统,CPU 资源对用户程序是偏心的,每一个用户领有的资源是偏心的

    利用上下文信息,去切换 CPU 执行的工夫,做到尽可能让每个用户都平等领有资源

    在这个过程中,处理器的性能 并没有晋升,反而会因为调度切换升高利用率,然而对用户来说进步了用户程序响应效率。

    分布式系统

    随机计算机的倒退,终于到了个人电脑的呈现,这时候计算机又减少了新的需要,多个计算机之间网络互连、多核利用等等

    于是就诞生了 分布式系统,分布式系统就是在网络的帮忙下实现实时的计算和协同解决

    操作系统的体系结构

    操作系统是一种系统软件,在了解这个层次结构时能够联合软件设计的层次结构。

    单体零碎

    整个操作系统在内核以繁多程序的形式运行

    晚期 MS_DOS 零碎简略构造如上图所示,操作系统 应用程序 以及 设施驱动 都能够操作硬件。

    能够看进去没有很好的模块划分和拆散,这种形式的益处是任意调用都比拟 高效 ,毛病是程序大并且简单的调用会让操作系统变得 蠢笨 难以了解

    再来看看早起 UNIX 系统结构

    能够看到晚期 Unix 系统结构也是 无限的结构化 ,次要是晚期受到 硬件限度

    晚期思考操作系统设计的 外围 因素是 在 最小的空间 外面提供 最多的性能

    特地像互联网公司初期的零碎架构,全副单体利用,所有服务在一起,随着业务简单、并发减少

    慢慢这种单体利用的劣势会 齐全被笼罩,公司不得不进行架构降级

    档次式零碎

    单体构造的毛病在硬件一直倒退和用户需要激增下越来越显著

    相似公司规模一直增大,晚期架构的一点点劣势越来越敌不过毛病了,不得不进行架构降级

    层次化构造的准则是:每一层只能应用下一层提供的服务

    最早的层次化构造零碎是 Dijkstra 大佬设计进去的,叫 THE OS,他把整个零碎分为了 6 层

    这种层次化构造的显著长处:

    • 底层和高层 甚至于每层只有依照规定 都能够别离实现,便于裁减
    • 下层的谬误不会影响上层,便于调试、性能的增删改
    • 调用关系分明,下层对上层的单向依赖,防止递归调用,保障了设计和实现的正确性
    • 可移植性十分好

    当然也有显著的毛病:

    • 零碎中所有过程的管制转移、通信等工作都交给零碎的外围去治理,代价较大
    • 档次的划分和安顿,要保障不呈现双向依赖关系

    微内核

    微内核体现在一个微字,怎么样来达到这个微呢?

    1. 通过划分零碎程序和用户程序,把所有不必要的局部移除内核,造成一个小内核
    2. 微内核提供最大量的过程治理、存储管理、以及通信性能

    整个操作系统由两局部组成,运行在外围态的内核和运行在用户态的并且以 C / S 模式提供服务

    Windows NT 就是以这种架构形式

    微内核的显著长处:

    内核精美,内核提供外围性能 过程治理、存储管理、以及通信性能

    面向多处理机和分布式系统,基于微内核的零碎在内核中引入了多处理机调度和管理机制,并且引入了线程,有了线程就有了并行执行,这可不得了啊。

    基于 C / S 体系结构 微内核的工作通信机制和音讯机制采纳 CS 模式向用户提供服务

    古代操作系统的体系结构就是 微内核 档次式构造 的结合体

    以上就是本期的次要内容,根本答复了外甥的问题,也心愿能解答大家的纳闷。

    内容对大家有帮忙的话,求分享、求转发、求点赞,一键三连就是对我最大的激励,感激。

    我是龙 su,一个爱慕外甥帅气相貌的舅舅,一个半吊子架构师,咱们下期见。

退出移动版