本文曾经收录至我的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,一个爱慕外甥帅气相貌的舅舅,一个半吊子架构师,咱们下期见。