美文网首页操作系统程序员基础知识
一、操作系统导论和结构

一、操作系统导论和结构

作者: ZhengYaWei | 来源:发表于2018-07-09 23:39 被阅读54次

    引言

    出于三个原因,近期有一段时间没怎么写文章了。一、前段时间公司人员变动比较大,工作任务较为繁忙;二、家庭生活中有一些事需要处理;三、最近集中时间学习了一些与 iOS 开发并无直接关系的知识,如:操作系统、数据库系统、计算机组织和结构、设计模式。上述四个方向的知识点,一两个月的时间也知识了解了一些简单的皮毛,没有个一年半载的怕是只能了解各大概。上述四个方向的知识点,设计模式算是整体过了一遍,操作系统的知识看了不少,其它两面也就简单看了一丁点。计划近期抽出一些时间,将之前看的操作系统相关知识整理一下,写作一系列关于操作系统知识的文章。

    本篇文章主要讲述一些操作系统的基础知识。

    • 什么是操作系统
    • 操作系统发展过程
    • 操作系统类型
    • 操作系统的操作和功能
    • 操作系统结构
    • 虚拟机

    一、什么是操作系统

    1.1 操作系统不可或缺

    操作系统的最底层是硬件,最上层是用户。如果没有操作系统,程序将无法运行。操作系统作为计算机最底层的软件,是应用程序的基本支撑环境,不可或缺。


    计算机系统的四部分

    1.2 操作系统目标

    操作系统的核心目标是运行程序,其次是为了更高效实用计算机,更方便用户使用计算机。早期是为了高效,目前是为了方便用户使用。

    1.3 操作系统定义

    目前很难明确定义操作系统。存在两种观点:

    • 1.当你预定一个操作系统时,零售商所给的所有东西就是操作系统。
    • 2.内核才是操作系统。内核是一直运行在计算机上的程序,内核不运行则计算机无法运行。
      观点 1 最大化了操作系统,如内置在操作系统的软件 IE 浏览器实际不应该算是操作系统中的一部分;而观点 2 则细化了操作系统定义,仅仅有内核操作系统不足以运行起来。

    1.4 现代计算机系统

    主要有三部分组成:一个或多个CPU(也称核)和内存、若干通过总线相连接的设备控制器和 I/O 设备、总线。

    CPU从内存中读取指令和数据,并执行指令,也就是运行程序;而各个 I/O 设备则由各自的控制器控制。每个控制器相当于小型化的处理器,只不过该处理器只能负责特定设备的运行。所以CPU和设备控制器可并行运行,并竞争内存。

    接下来看看CPU通过设备控制器控制设备的过程。在此之前要知道每个设备控制器都有一个本地缓冲,CPU在内存和缓冲之间传输数据,I/O 控制器从设备到缓存之间传输数据(如图一)。举一个从磁盘读取数据的例子,具体控制过程结合图二。

    • 1.CPU 通过总线发出 I/O 指令给磁盘控制器。
    • 2.此时CPU可以去执行其他进程上的指令,而磁盘控制器在收到指令后从磁盘控制器中读取数据。
    • 3.磁盘将数据传送到磁盘控制器的缓冲区中。
    • 4.磁盘控制器通知 CPU 数据已经读取好了,触发CPU中断。
    • 5.CPU 响应中断,并将控制器缓冲区中的数据读入到内存中。

    上述过程中CPU和控制器是可以并行执行的,磁盘控制器在读入数据的同时,CPU可以执行其他指令。


    图一
    图二

    1.5 中断

    中断是指当出现需要时,CPU暂时停止当前进程的执行,转而执行处理新情况的中断处理程序。当执行完该中断处理程序后,则重新从刚才停下的位置继续当前进程的执行。

    为了区分不同的中断,每个设备有自己的中断号。系统有 0--255 个中断。系统中有一张中断向量表,用于存放 256 个中断的中断服务程序入口地址。每个入口地址对应一段代码,即中断服务程序。中断需要 CPU 的支持,一般 CPU 至少有一个引脚用于接收中断。

    二、操作系统发展过程

    2.1 人工操作

    由用户采用人工操作方式直接使用硬件系统。即由程序员将事先已穿孔(对应程序和数据)的纸带装入纸带输入机,将程序和数据输入到计算机,再启动计算机。程序运行完毕取走结果之后,下一个用户才能使用。

    2.2 简单批处理(单道程序设计)

    简单批处理系统的核心是一个常驻监控程序,负责调度作业运行,自动从一个运行完的作业切换到下一个作业。

    2.3 多道程序设计

    当内存中仅有一道程序时,每当程序在运行中发出 I/O 请求后,CPU 将会空闲下来,等待 I/O 操作完成后 CPU 才能继续运行,由此可见 CPU 的利用率显著降低。因此就出现了多道程序设计。在引入多道程序设计技术后,由于内存中同时装有若干道程序,可以交替运行。这样,当正在运行的程序因为 I/O 而暂停执行,系统可调度另一道程序运行,从而使CPU和I/O操作并行,是CPU处于忙碌状态,提高 CPU 利用率。

    额外说明下,并行是指两个或者多个作业在同一时刻运行;并发是指两个或多个作业在同一时间间隔内依次运行。随着多核处理器的发展,实际中对并行和并发不做严格区分。

    2.4 分时

    早期系统作业属于批处理作业,无需人机交互。后来为了实现实时人机交互作业(交互作业要求响应时间短),便出现了分时系统。在一段时间内,每个作业依次轮流运行一个时间片。这样可以使得每个作业都获得较短的响应时间,从而满足交互作业的要求。遵循分时策略的操作系统就是分时系统。单位时间内,每个用户获得一个时间片并运行,这样每个用户会感觉自己独占一台计算机。

    三、操作系统类型

    大型机系统

    大型机系统具有强大的计算和 I/O 能力,如 IBM AIX、IBM z/OS、HP-Unix。

    桌面系统

    个人计算机。

    手持系统

    手持设备如手机、平板等。

    嵌入式系统

    完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。随着单片机的出现而出现。如智能手环。

    分布式系统

    即把同一个复杂计算分布到不到的设备上进行,但目前真正意义上的分布式系统是不存在的。客户机-服务器系统等只算是分布式系统中的部分实现。

    多核/多处理器系统

    多处理器系统中有包含多个紧密通信的处理器,一般这些处理器在同一个主板上。多个处理器共享计算机总线、时间、内存和外设等。多处理器系统中,一个芯片有多个核,一个核即为一个处理器(如四核、八核等)。一般不对多处理器系统和多核处理器系统做区分。

    多处理器系统分为两类:

    • 对称处理(SMP):每个处理器运行操作系统的相同副本,每个处理器都处于对等地位。 SMP架构实际比较多。
    • 非对称处理(ASMP):各个处理器不对等。一般是一个主处理器和若干个从处理器,主处理器为从处理器安排任务,从处理器可能是专门处理图像的,专门处理网络通信等。ASMP架构相对较少,不适合PC,但是和手机等要求功耗的设备(如高通的骁龙820芯片手机CPU采用 ASMP 架构)。

    集群系统

    通过专用网络连接一群计算机,把这些计算机虚拟化为一台具有超强计算能的计算机公用户使用。可以看做是分布式处理系统和多处理器系统的折中形成。目前世界上的大多是超级计算机都数据集群系统,如计算能力世界第一的神威太湖之光,由 40960 块 4 核神威 26010 处理器组成。

    四、操作和功能

    4.1 操作系统操作

    双模式、I/O和内存保护、定时器三者是确保操作系统能够运行的关键技术。

    a、双模式

    为了保证操作系统不受其它故障程序的影响,进而产生系统崩溃的可能。一种常用的办法是引入双重模式,即用户模式和内核模式。内核模式只能运行操作系统的程序。所有的用户应用程序只能在用户模式下运行。 双模式需要CPU的支持,如果CPU有模式位,则可以在操作系统中实现双模式,目前主流的CPU基本都有模式位。双模式允许操作系统不受其它故障应用程序的影响。特权指令是指可能引起崩溃的指令,该指令只能运行在内核模式中。 如果用户程序需要使用特权指令,可以通过系统提供的API调用。

    b、I/O保护和内存保护

    定义所有I/O指令为特权指令,用户应用程序无法直接访问I/O指令,只能通过系统调用进行I/O操作,从而避免非法I/O操作。

    利用基址寄存器和限长寄存器隔离不同程序的内存地址。

    c、定时器

    如果用户程序死循环或用户程序不调用系统调用,此时操作系统将无法获得CPU并对系统进行管理。解决方法是引入定时器,在一段时间后发生中断,将CPU控制权返回给操作系统。

    4.2 操作系统功能

    操作系统主要有四个核心功能:进程管理、内存管理、文件管理以及 I/O 设备管理。

    五、操作系统结构

    5.1 简单结构

    早期操作系统规模小,简单且功能有限。所以早期的操作系统称为简单结构或无结构。简单结构导致系统内部比较混乱、不易维护、不适合大规模系统开发。

    5.2 层次结构

    层次结构中,将操作系统划分为若干层,在底层的基础上构建高层,每层只使用相邻低层次的功能和服务,不能夸层级使用更底层功能和服务。最底层为硬件,最高层为用户层。层析结构优点是:简化了系统设计和实现,便于调试和维护。缺点是:层的定义比较困难,其次是效率比较差,有的服务调用可能跨越多个层级,增加系统开销。iOS 系统就是典型的分层结构。同普遍分层结构不同的是iOS系统允许跨层级调用。



    核心系统层提供为上层结构提供最基础的服务如操作系统内核服务、本地认证、安全、加速等;核心服务层为程序提供基础的系统服务,如网络访问、浏览器引擎、定位、文件访问、数据库访问等;媒体层主要提供图像引擎、音频视频引擎框架;可触摸层主要提供用户交互先关的服务如界面控件、事件管理、通知中心、通知中心、地图等。

    5.3 微内核结构

    随着内核越大越大,越难管理,便产生了微内核,即核内移除尽可能多功能到用户空间。优点是便于扩充内核,便于移植操作系统到新架构系统上,更稳定(更少的代码运行在和心态);缺点是用户空间和内核空间通信的系统开销增加,但是采用消息传递机制可以解决该问题。

    5.4 模块化结构

    目前大多数系统采用的都是模块化结构。使用面向对象的方法,将每个核心部分拆开,每个模块在需要时被加载到内核。如Solaris模块:


    5.5 混合结构

    除了上述四种结构之外,也有很多系统采用多种混合结合。如Mac OS 系统。采用了 Mach 微内核和层次化结构。


    六、虚拟机

    虚拟机是一种通过软件模拟实现,具有完整硬件系统功能,并运行在一个完全隔离环境中的完整计算机系统。虚拟机最大的优点是物理计算机中的每个虚拟机同其他虚拟机隔离,相互之间不会干扰。虚拟机主要有三种实现途径:高级语言虚拟机、工作站虚拟机、服务器虚拟机。

    6.1 高级语言虚拟机

    高级语言虚拟机运行在操作系统之上,主要功能是提供代码运行的容器,模拟代码执行,使得代码能够跨平台运行。典型的代表是JVM(JAVA VM),它是JAVA语言的解释器。只要根据JVM规格将解释器一直到特定操作系统上,就能运行经过编译的任何Java代码,使得Java语言和平台无关。但是要注意,针对不同的操作系统需要不同的JVM。如下图,运行在操作系统上的JVM,为上层JRE、JDK以及JAVA的各种继承工具屏蔽掉操作系统的影响。


    6.2 工作站虚拟机

    工作站虚拟机也是运行在操作系统之上,是操作系统中的操作系统,也成 Guest OS。目的是多个操作系统可以同时在一个计算机上使用。宿主操作系统是指安装在硬件上的操作系统;客户操作系统是指安装在操作系统上的操作系统。工作站虚拟机作为一个软件安装在宿主操作系统中,在工作站虚拟机上可以安装一个或多个客户操作系统,从而使得一个计算机上可以使用多个操作系统。如VMWare Station、Virtual Box、Virtual PC 和Parallels Desktop 等。

    6.3 服务器虚拟机

    服务器虚拟机和前两者不同,它是直接安装在硬件上。目的是把一个物理计算机虚拟化为多个虚拟机,使得多用户、多操作系统在一个物理计算机上并存。如将服务器物理资源抽象成逻辑资源,让一台服务器编程几台甚至上百台相互隔离的服务器虚拟机。有两种常用模式:一虚多和多虚一。一虚多是指将一台服务器虚拟成多台服务器虚拟机。多虚一是指将多个独立的物理服务器虚拟为一个服务器虚拟机。

    相关文章

      网友评论

      • 阿棍儿_Leon:层析结构
        随着内核越大越大,越难管理
        更少的代码运行在和心态
        只要根据JVM规格将解释器一直到特定操作系统上
        让一台服务器编程几台甚至上百台相互隔离的服务器虚拟机

      本文标题:一、操作系统导论和结构

      本文链接:https://www.haomeiwen.com/subject/punheftx.html