Skip to content

Latest commit

 

History

History
201 lines (149 loc) · 21.8 KB

41 操作系统概要、功能特征与发展演变.md

File metadata and controls

201 lines (149 loc) · 21.8 KB

#操作系统

操作系统(英语:Operating System,OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序,作为计算机系统的内核与基石,操作系统的设计与实现则是软件工业的基础与内核。下图为Linux操作系统的内核的架构简图。

[1] 操作系统的概念、功能

一台电脑,从外形来看就是一堆硬件机器,可是从出厂生产出来,到能安装游戏上网看视频,这个过程虽然很简单,但是细究起来,操作系统扮演着重要的角色,但是常常为人们所忽视。

1.操作系统的概念(定义)

操作系统控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境。它是计算机系统中最基本的系统软件。

直观的例子,打开 Windows 操作系统的“任务管理器”(快捷键:Ctrl+Alt+Del),即可直观感受对计算机软件资源和硬件资源的管理。

2.操作系统的特点

操作系统位于计算机体系结构中,硬件和软件的中间的衔接部分。

  1. 操作系统是系统资源的管理者;
  2. 操作系统,向上层提供方便易用的服务;
  3. 操作系统,向下是最接近硬件的一层软件。

3.封装与提供服务

操作系统的功能和目标,就是向上层提供方便易用的服务
【问题】
硬件只听得懂二进制指令,如:01010111101110111010101,如果单纯使用这种方式交互,对普通的用户极其不友好。如何让用户能够友好地操作机器?
解决方法就是,在硬件之上安装了操作系统,操作系统对外暴露了“美丽”、友好的交互接口。类比汽车的驾驶员,并不一定需要了解汽车内部的构造原理,只需要知道接口(方向盘、按钮、挡位)的使用就可以。

封装思想,是一种重要的软件工程思想。操作系统把一些丑陋的硬件功能封装成简单易用的服务,使用户能更方便地使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出命令即可。

4.OS类型

1. 命令行接口

使用命令接口进行作业控制的主要方式,分为两类:

  • 脱机控制方式:系统按作业说明书的规定控制作业的执行。
    • 脱机命令接口由一组作业控制命令组成。 脱机用户不能直接干预作业的运行。系统调度时,由系统中的命令解释程序对作业说明书上的命令逐条解释执行。 例如使用windows系统的搜索功能,搜索C盘中的 *.bat文件,用记事本任意打开一个文件显示,内部是一条一条批处理指令:

  • 联机控制方式:用户交互式
    • 联机命令接口提供一组键盘命令供用户使用。 键盘命令分为:
      • 内部命令:命令简单、短小、使用频繁。在系统初始启动时被引导至内存并常驻。
      • 外部命令:独立作为一个文件驻留在磁盘上,需要时从磁盘调入内存。 例如,Windows的Powershell命令行、Linux的Shell界面,早期的Dos系统提供的交互式界面:

总之,联机命令接口,即交互式命令接口,用户说一句, 系统跟着做一句;而脱机命令接口,即批处理命令接口,用户说一堆, 系统跟着做一堆,中间一般不停顿。

2. GUI:图形化用户接口(Graphical User Interface)

用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令、参数。 例子:在 Windows 操作系统中,删除一个文件只需要把文件“拖拽”到回收站即可。

3. 系统调用(程序接口)

可以在程序中进行系统调用的方式,来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用

系统调用处理程序的执行过程一般有以下步骤:

  • 0.正常执行程序;
  • 1.获取系统调用命令,为执行系统调用命令做准备。主要工作是保留现场,并把系统调用命令的参数放入指定的存储单元。
  • 2.执行系统调用。根据系统调用命令的编号找到相应子程序的入口地址,然后转去执行。
  • 3.系统调用命令执行后的处理。主要工作是恢复现场,并把系统调用的返回参数送入指定存储单元。
    系统调用与过程调用的区别主要在于:
  • 运行状态不同:系统调用在内核态下运行,子程序在用户态下运行。
  • 进入方式不同:系统调用通过中断机构进入以实现运行状态的改变,子程序直接调用不涉及运行状态改变。

以printf函数为例,这就是一种典型的系统调用。

操作系统实现对硬件机器的拓展

没有任何软件支持的计算机成为裸机,在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器。 通常而言,把覆盖了软件的机器成为扩充机器,通过这个机器,实现软件模拟,可以具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,能提供物理计算机。又称之为虚拟机

[2] 操作系统的特征

操作系统有四个特征:并发(concurrency)、共享(sharing)、虚拟(virtualization)、异步(Asynchronous)。
其中并发和共享是两个个最基本的特征,二者互为存在条件。

1.并发

并发常常与并行两个概念相互混淆:

  • 并发(concurrency):指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
  • 并行(parallellism):指两个或多个事件在同一时刻同时发生。

如图,显示了在四种不同场景下如何处理两个任务 A 和 B:

  1. 既没有并发性也没有并发性,最容易理解。既没有并发性也没有并行性的场景,每个任务由一个工作人员按顺序完成。必须先完成任务 A,然后才能开始处理任务 B。
  2. 有并发性但没有并行性,一个工作线程可以从任务 A 中休息一下,在任务 B 上做一些工作,然后来回交替,直到两个任务都完成。我们仍然只有一个工作线程,因此完成这两项任务的总时间最终与场景 1 大致相同。
  3. 有并行性但没有并发性,能够让多个工作线程工作。但是,由于我们没有并发性,这仍然意味着所有工作人员将首先处理任务 A,完成它,然后才能开始处理任务 B。因为拥有更多的工作线程,方案 3 比前两个方案更快。
  4. 同时具有并发性和并行性。最好的情况,同时具有并行性和并发性,以及多个级别的并发性。我们不仅可以利用许多工人能够同时工作的优势,而且还可以同时处理不同的任务。

操作系统的并发性指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观上看是交替运行的。
操作系统就是伴随着“多道程序技术”而出现的。因此,操作系统和程序并发是一起诞生的。 因此对于单核和多核CPU而言:

  • 单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行。
  • 多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。

但是即便对于多核CPU(Multi-Core CPUs),其运行进程大于核数的情况下,并发性依然是必不可少的,因此并发性是操作系统一个最基本的特性。

2.共享

共享即资源共享(shared resource),是指系统中的资源可供内存中多个并发执行的进程共同使用。 有两类资源共享方式:

  1. 互斥(mutually exclusive)共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。例如,使用QQ和微信视频。同一时间段内摄像头只能分配给其中一个进程。
  2. 同时(simultaneously)共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问。使用QQ发送文件A,同时使用微信发送文件B。宏观上看,两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是交替着访问硬盘的。 这里的共享,还是针对单个计算机的资源共享(内存、处理机),而不是互联网的网络资源共享。

★ 并发与共享的关系

并发性,指计算机系统中同时存在着多个运行着的程序。共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。
例如,使用QQ发送文件A,同时使用微信发送文件B。

  1. 两个进程正在并发执行(并发性),如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义。
  2. 需要共享地访问硬盘资源(共享性),如果失去共享性,则QQ和微信不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发。

3.虚拟

虚拟(virtualization)是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。虚拟技术中的“时分复用技术”。微观上处理机在各个微小的时间段内交替着为各个进程服务。
例如:某些程序同时运行需要的内存远大于4GB,但是它们还可以在内存4GB电脑上同时运行。或者,实际上只有一个单核CPU,在用户看来似乎有6个CPU在同时为自己服务。

虚拟技术有多种,例如空间分复用技术(虚拟存储器技术、虚拟网卡)、时分复用技术(虚拟处理器)。

4.异步

异步(Asynchronous)相对同步而言。同步意味着程序中的第一个任务必须完成处理,然后才能继续执行下一个任务,而异步执行意味着第二个任务可以开始并行执行,而无需等待先前的任务完成。 在操作系统多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性

以现实世界的具体例子类比:你想要一个汉堡,并决定去麦当劳。在柜台点汉堡后, 你被告知要等待你的汉堡准备好。在这种同步情况下,你被困在柜台前,直到你得到你的汉堡。这就是同步处理。你想要一个汉堡,并决定去另一个电子商场。你去柜台点了一个汉堡。电子商场给你一个蜂鸣器,一旦你的汉堡准备好了,它就会通知你。在这种异步情况下,人在等待时拥有更多自由。 如果失去了并发性,即系统只能串行地运行各个程序,那么每个程序的执行会一贯到底。只有系统拥有并发性,才有可能导致异步性

[3] 操作系统的发展与分类

1.手工操作阶段

由于二次大战对武器装备设计的需要,美国、英国和德国等国家,陆续开始使用真空管建造数字电子计算机。在这个阶段,通过在一些插板上的硬连线来控制计算机的基本功能,程序设计全部采用机器语言,没有程序设计语言(甚至没有汇编语言),更谈不上操作系统。这时实际上所有的题目都是数值计算问题。到了20世纪50年代早期,出现了穿孔卡片,可以将程序写在卡片上。 在一个程序员上机期间,整台计算机连同附属设备全被其占用。程序员兼职操作员,效率低下。其特点是手工操作、独占方式,这种计算方式计算速度快,输出速度慢。后来人们开发了汇编语言及相应的汇编程序,以及其他一些控制外设的程序等。这种方式的主要缺点就是。用户独占全机、人机速度矛盾导致资源利用率极低。

2.监控程序(早期批处理)

五十年代晶体管的发明极大地改变了整个状况。计算机变得比较可靠,厂商可以成批地生产并销售计算机给用户,用户可以指望计算机长时间运行,完成一些有用的工作。出现了FORTRAN、 ALGOL以及 COBOL等高级语言。
此时要运行一个作业(JOB,即一个或一组程序),程序员首先将程序写在纸上(用高级语言或汇编语言),然后穿孔成卡片。再将卡片盒带到输入室,交给操作员。计算机运行完当前任务后,其计算结果从打印机上输岀,操作员到打印机上取下运算结果并送到输出室,程序员稍后就可取到结果。然后,操作员从已经送到输入室的卡片盒中读入另一个任务。如果需要 FORTRAN编译器,操作员还要从文件柜把它取来读入计算机。
由于处理器速度的提高,导致手工操作设备输人/输出信息与计算机计算速度不匹配。因此,人们设计了监督程序(或管理程序),来实现作业的自动转换处理。操作员将作业“成批”地输入到计算机中,由监督程序识别一个作业,进行处理后再取下一个作业。这种自动定序的处理方式称为“批处理(Batch Processing)”方式。批处理往往是每个任务都需要的重复性计算任务的统称,而计算机领域多数的工作都是重复性的计算。

而且,由于是串行执行作业,因此这个阶段的批处理任务:称为单道批处理(uniprogramming)。

  • 主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。
  • 主要缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。

3.多道批处理系统

随着计算机硬件的不断发展,通道使得输人/输出操作与处理器操作并行处理成为可能。与此同时软件系统也随之相应变化,实现了在硬件提供并行处理之上的多道程序设计。所谓多道是指它允许多个程序同时存在于内存之中,由中央处理器以切换方式为之服务,使得多个程序可以同时执行。如图所示,计算机资源不再是“串行”地被一个个程序独占,而可以同时为几个程序共享,从而极大地提高了系统在单位时间内处理作业的能力。这时管理程序,已经变成多道批处理程序(multiprogramming),并并且迅速地发展成为一个重要的软件分支——操作系统

  • 主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大。
  • 主要缺点:用户响应时间长,没有人机交互功能;用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。人无法调试程序/无法在程序运行过程中输入一些参数。

4.分时与实时操作系统

批处理系统不适合交互式的作业,对交互式工作方式的需求导致了分时系统(Time Sharing System)的出现。
分时系统与批处理系统不同,批处理系统无需用户交互即可执行一系列作业。在批处理中,用户将其作业提交到队列中,系统按顺序执行作业。另一方面,分时系统允许用户与系统实时交互并同时执行他们的任务,并且共享一个计算机系统而互不干扰,就好像自己有一台计算机。

由于调试程序的用户常常只发出简短的命令(如编译一个五页的源文件),而很少有长的费时命令(如上百万条记录的文件排序),所以计算机能够为许多用户提供交互式快速的服务,同时在CPU空闲时还能运行大的后台作业。

  • 主要优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
  • 主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。

实时系统(RTOS)一般用于对时间有特殊要求的工作,例如天气预报、工业控制等。实时系统对时间点要求苛刻,需要对事件及时响应

  • 主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
    在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特点是及时性和可靠性。

5.UNIX通用操作系统

20世纪60年代末,贝尔实验室的 Ken Thompson和 Dennis m. ritchie设计了UNX操作系统。它是现代操作系统的代表,显示出了强大的生命力。 UNIX是用C语言编写的,因此它是可移植的,UNⅨX是世界上唯一能在笔记本电脑、PC、工作站直至巨型机上运行的操作系统。UNIX操作系统源代码非常有效,系统容易适应特殊的需求。UNIX是一个良好的、通用的、多用户、多任务、分时操作系统。UNⅨ有树形文件系统和一定的安全机制;有简洁的字符流文件和文件保护机制;UNIX有功能强大的Shell,它既是命令解释器,又是编程用高级语言,还可用于扩充系统的功能。UNIX不但在理论界有着广泛而深入的影响,而且因为UNIX出色的设计思想与实现技术,它在产业界同样掀起了一场革命,许多重要的软件公司相继推出了自己的UNX版本,这进一步推动了操作系统的发展。

6.个人计算机操作系统

20世纪70年代末,出现了面向个人计算机的操作系统,例如微软公司的 MS-DOS操作系统。 MS-DOS属于单用户单任务操作系统。 1984年,出现了具有交互式图形功能的苹果操作系统。1992年微软推出了有交互式图形功能的操作系统Windows3.1。 Windows95在1995年8月正式登台亮相,从此, Windows成为个人计算机平台的主流操作系统。 1991年 Linus在 Internet上公布了 Linux操作系统,于是, Linux从最开始的一个人的产品逐渐演变变成了一个成功的操作系统。 Linux遵从国际UNX标准POSIX,继承了UNX的全部优点,而且还开放全部源码,并能在网上自由下载。Linux极其健壮,世界上很多Linux连续不停机运行一年以上而不曾崩溃过。Linux是UNⅨ操作系统家族中,具有自由版权的UNIX类操作系统中一个较突出的代表

7.Android操作系统

Android操作系统是一款主要面向移动设备、基于Linux内核的开源移动操作系统,包括了Linux内核、中间件和关键移动应用的一整套软件。 Android操作系统起源于安迪·鲁宾(Andy Rubin)等人2003年在美国加利福尼亚州创立的 Android科技公司(Android Inc.)。最初, Android操作系统是为智能相机而专门开发的一款高级操作系统,后来由于智能手机市场迅速发展,它被改造成面向手机的操作系统。 Google在2005年收购了Android科技公司。随后,在2007年1l月Google联合了包括硬件制造商、软件开发商和电信运营商在内的多家科技企业成立开放手持设备联盟(OHA)来共同发展 Android操作系统,并且发布了基于 Linux2.6内核的Android1.0beta版(2007年11月5日)。

第一款搭载 Android操作系统的智能手机HTC Dream于2008年10月发售。自从2008年起, Android操作系统快速发展,先后经历了多次重大更新,其中主要的版本有纸杯蛋糕(Cupcake)、甜甜圈(Donut)、闪电泡芙(eclair)、冻酸奶(Froyo)、姜饼(Gingerbread)、蜂巢(Honeycomb)、冰激凌三明治(Ice cream sandwich)以及果冻豆(Jelly Bean)。在2010年底,仅正式推出两年的 Android操作系统在市场占有率上已经超越Symbian,成为全球第一大智能手机操作系统。2012年6月,Goge在2012 Google l0大会上表示全球市场上有4亿部 Android设备被激活使用,并且每天全新启用的 Android设备超过一百万台。目前, Android系统为全球数以亿计的用户提供了超过80万个移动应用。 Android操作系统由于其开放性和可移植性,目前被应用于多种电子产品上,例如:智能手机、平板电脑、智能电视、智能相机、智能手表、导航仪等。

参考链接: