51

操作系统导论和结构(一)

 5 years ago
source link: http://www.cocoachina.com/ios/20181113/25450.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

引言

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

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

  • 什么是操作系统

  • 操作系统发展过程

  • 操作系统类型

  • 操作系统的操作和功能

  • 操作系统结构

  • 虚拟机

一、什么是操作系统

1.1 操作系统不可或缺

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

rM73Ybv.png!web

计算机系统的四部分

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可以执行其他指令。

BjqAvaI.png!web

6jYZBzM.png!web

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系统允许跨层级调用。

fQRvEb6.png!web

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

5.3 微内核结构

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

5.4 模块化结构

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

NVNZfqm.png!web

5.5 混合结构

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

mEr6FvI.png!web

六、虚拟机

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

6.1 高级语言虚拟机

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

iYnyUzJ.png!web

6.2 工作站虚拟机

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

6.3 服务器虚拟机

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

作者:ZhengYaWei

链接:https://www.jianshu.com/p/9dfeb831e097


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK