第5章操作系统 5.1操作系统概述 5.1.1操作系统的概念 操作系统(Operating System,OS)是一种管理计算机硬件与软件资源的程序,同时也是计算机系统的内核与基石。 操作系统管理计算机系统的全部硬件资源、软件资源及数据资源,控制程序运行,改善人机界面,为其他应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便、有效、友善的服务界面。 操作系统通常是最靠近硬件的一层系统软件,它把硬件裸机改造成为功能完善的一台虚拟机,使得计算机系统的使用和管理更加方便,计算机资源的利用效率更高,使上层的应用程序可以获得比硬件提供的功能更多的支持。 5.1.2操作系统的历史 1. 20世纪80年代前 第一部计算机并没有操作系统。这是由于早期计算机的建立方式(如同建造机械算盘)与效能不足以执行这样的程序。但在1947年发明的晶体管,以及莫里斯·威尔克斯(Maurice V. Wilkes)发明的微程序方法,使得计算机不再是机械设备,而是电子产品。系统管理工具以及简化硬件操作流程的程序很快就出现了,且成为操作系统的起源。到了20世纪60年代早期,商用计算机制造商制造了批次处理系统,此系统可将工作的建置、调度以及执行序列化。此时,厂商为每一台不同型号的计算机创造不同的操作系统,因此为某计算机而写的程序无法移植到其他计算机上执行,即使是同型号的计算机也不行。到了1964年,IBM System/360推出了一系列用途与价位都不同的大型计算机,OS/360是适用于整个系列产品的操作系统。1963年,奇异公司与贝尔实验室合作以PL/I语言建立的Multics为UNIX系统奠定了良好的基础。 2. 20世纪80年代 早期最著名的磁盘启动型操作系统是CP/M。1980年微软公司与IBM签约,并且收购了一家公司出产的操作系统,修改后改名为MSDOS。在解决了兼容性问题后,MSDOS变成了IBM PC上最常用的操作系统。 20世纪80年代另一个崛起的操作系统是Mac OS,此操作系统紧紧与苹果计算机捆绑在一起。苹果计算机的Mac OS采用的是图形用户界面,用户可以用下拉式菜单、桌面图标、拖曳式操作与双击等操作计算机。 3. 20世纪90年代 20世纪90年代出现了许多对未来个人计算机市场产生深远影响的操作系统。由于图形化用户界面日趋繁复,操作系统也越来越复杂,其功能变得更为强大,因此强韧且具有弹性的操作系统就成了迫切的需求。苹果于1997年推出的新操作系统Mac OS X取得了巨大的成功。 1990年,开源操作系统Linux问世。Linux内核是一个标准POSIX内核,其血缘可算是UNIX家族的一支。Linux与BSD家族都搭配GNU计划所发展的应用程序,但是由于使用的许可证以及历史因素的原因,Linux取得了相当可观的开源操作系统市场占有率。 4. 21世纪初 最近一些年,大型主机有许多开始支持Java及Linux以便共享其他平台的资源,而嵌入式系统呈现百家争鸣的状态,从给Sensor Networks用的Berkeley Tiny OS到可以操作Microsoft Office的Windows CE,应有尽有。 5.1.3操作系统的功能 操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能: 进程与处理器管理、作业管理、存储管理、设备管理、文件管理。大致包括以下几方面内容。 进程与处理器管理根据一定的策略将处理器交替地分配给系统内等待运行的程序。 作业管理功能是为用户提供一个使用系统的良好环境,使用户能有效地组织自己的工作流程,并使整个系统高效地运行。 存储管理功能是管理内存资源,主要实现内存的分配与回收,存储保护以及内存扩充。 设备管理负责分配和回收外部设备,以及控制外部设备按用户程序的要求进行操作。 文件管理向用户提供创建文件、撤销文件、读写文件、打开和关闭文件等功能。 计算机资源可分为两大类: 硬件资源和软件资源。硬件资源指组成计算机的硬件设备,如中央处理机、主存储器、磁带存储器、打印机、显示器、键盘输入设备等; 软件资源主要指存储于计算机中的各种数据和程序。系统的硬件资源和软件资源都由操作系统根据用户需求按一定的策略分配和调度。 5.1.4操作系统的分类 1. 批处理操作系统 批处理(Batch Processing)操作系统的工作方式是: 用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业,之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,然后启动操作系统,系统自动、依次执行每个作业,最后由操作员将作业结果交给用户。 2. 分时操作系统 分时(Time Sharing)操作系统的工作方式是: 一台主机连接了若干个终端,每个终端有一个用户在使用。用户交互式地向系统提出命令请求,系统接受每个用户的命令,采用时间片轮转的方式处理服务请求,并通过交互方式在终端上向用户显示结果。用户根据上步结果发出下道命令。分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。每个用户轮流使用一个时间片而使各个用户感觉不到有别的用户存在。分时系统具有多路性、交互性、独占性和及时性的特征。 3. 实时操作系统 实时操作系统(Real Time Operating System,RTOS)是指使计算机能及时响应外部事件的请求,在规定的严格时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致地工作的操作系统。实时操作系统要追求的目标是: 对外部请求在严格时间范围内做出反应,具有高可靠性和完整性。其主要特点是资源的分配和调度首先要考虑实时性,然后才是效率。此外,实时操作系统应有较强的容错能力。 4. 网络操作系统 网络操作系统是基于计算机网络的,是在各种计算机操作系统上按网络体系结构协议标准开发的软件,包括网络管理、通信、安全、资源共享和各种网络应用。其目标是相互通信及资源共享。在其支持下,网络中的各台计算机能互相通信和共享资源。其主要特点是与网络的硬件相结合来完成网络的通信任务。 5. 分布式操作系统 它是为分布计算机系统配置的操作系统。大量的计算机通过网络被连接在一起,可以获得极高的运算能力及广泛的数据共享。这种系统被称作分布式系统(Distributed System)。它在资源管理、通信控制和操作系统的结构等方面都与其他操作系统有较大的区别。由于分布计算机系统的资源分布于系统的不同计算机上,操作系统对用户的资源需求不能采用像一般的操作系统那样等待有资源时直接分配的简单做法而是要在系统的各台计算机上搜索,找到所需资源后才可进行分配。对于有些资源,如具有多个副本的文件,还必须考虑一致性的问题。分布式操作系统的通信功能类似于网络操作系统。由于分布计算机系统不像网络那样分布得很广,同时分布式操作系统还要支持并行处理,因此它提供的通信机制和网络操作系统提供的有所不同,它要求通信速度高。分布式操作系统的结构也不同于其他操作系统,它分布于系统的各台计算机上,能并行地处理用户的各种需求,有较强的容错能力。 5.2主要的操作系统 5.2.1Windows操作系统 Windows操作系统是一款由美国微软公司开发的窗口化操作系统。采用了GUI图形化操作模式,比起从前的指令操作系统(如DOS)更为人性化。Windows操作系统是目前世界上使用最广泛的操作系统。最新的版本是Windows 10。 微软公司从1983年开始研制Windows系统,最初的研制目标是在MSDOS的基础上提供一个多任务的图形用户界面。Windows 1.0于1985年问世,它是一个具有图形用户界面的系统软件。1987年推出了Windows 2.0版,最明显的变化是采用了相互叠盖的多窗口界面形式。但这一切都没有引起人们的关注。直到1990年推出的Windows 3.0是一个重要的里程碑,它以压倒性的商业成功确定了Windows系统在PC领域的垄断地位。现今流行的 Windows 窗口界面的基本形式也是从Windows 3.0开始基本确定的。1992年主要针对Windows 3.0的缺点进行改进,推出了Windows 3.1,为程序开发提供了功能强大的窗口控制能力,使Windows和在其环境下运行的应用程序具有了风格统一、操作灵活、使用简便的用户界面。Windows 3.1 在内存管理上也取得了突破性进展。它使应用程序可以超过常规内存空间限制,不仅支持16MB内存寻址,而且在80386及以上的硬件配置上通过虚拟存储方式可以支持几倍于实际物理存储器大小的地址空间。Windows 3.1还提供了一定程度的网络支持、多媒体管理、超文本形式的联机帮助设施等,对应用程序的开发产生了很大影响。 在Windows 5之后,Windows XP是非常经典的版本,具有较大的用户群,即使在Windows 7和Windows 8发布后,依然有很多人继续使用Windows XP。Windows 10是目前比较流行的版本,2015年7月29日发布。2020年5月29日已经更新到最新版。 5.2.2UNIX操作系统 1. 概述 UNIX是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统。 2. 起源 UNIX操作系统,是美国AT&T公司于1971年在PDP11上运行的操作系统,具有多用户、多任务的特点,支持多种处理器架构,最早由肯·汤普逊(Kenneth Lane Thompson)、丹尼斯·里奇(Dennis MacAlistair Ritchie)和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。目前它的商标权由国际开放标准组织(The Open Group)所拥有。 3. 结构 一个典型的计算机系统包括硬件、系统软件和应用软件这三部分。操作系统则是控制和协调计算机行为的系统软件。当然UNIX操作系统也是一个程序的集合,其中包括文本编辑器、编译器和其他系统程序。下面就来认识一下这个分层结构。 (1) 内核: 在UNIX中,也被称为基本操作系统,负责管理所有与硬件相关的功能。这些功能由UNIX内核中的各个模块实现。其中包括直接控制硬件的各模块,这也是系统中最重要的部分,用户当然也不能直接访问内核。 (2) 常驻模块层: 常驻模块层提供了执行用户请示的服务例程。它提供的服务包括输入/输出控制服务、文件/磁盘访问服务以及进程创建和中止服务。用户的程序通过系统调用来访问常驻模块层。 (3) 工具层: 是UNIX的用户接口,就是常用的Shell。它和其他UNIX命令和工具一样都有单独的程序,是UNIX系统软件的组成部分,但不是内核的组成部分。 (4) 虚拟计算机: 是向系统中的每个用户指定一个执行环境。这个环境包括一个与用户进行交流的终端和共享的其他计算机资源,如最重要的CPU。如果是多用户的操作系统,UNIX可被视为是一个虚拟计算机的集合。而对每一个用户都有一个自己的专用虚拟计算机。但是由于CPU和其他硬件是共享的,虚拟计算机比真实的计算机速度要慢一些。 (5) 进程: UNIX通过进程向用户和程序分配资源。每个进程都有一个作为进程标识的整数和一组相关的资源。当然它也可以在虚拟计算机环境中执行。 5.2.3Linux操作系统 1. 概述 Linux是一类UNIX计算机操作系统的统称。Linux操作系统的内核的名字也是Linux。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。 2. 诞生 Linux 操作系统是UNIX 操作系统的一种克隆系统。它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet,并经过全世界各地计算机爱好者的共同努力,现已成为世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。Linux 操作系统的诞生、发展和成长过程始终依赖着以下5个重要支柱: UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet。 Linux 的创始人Linus Toravlds,开始只是对计算机感兴趣,自学计算机知识,然后开始酝酿编制一个自己的操作系统,1991年10月5日公布Linux 内核0.01版。 3. 特性 (1) 完全免费。Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变。这让Linux吸收了无数程序员的精华,不断壮大。 (2) 完全兼容POSIX 1.0标准。这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,Linux的这一特点就消除了他们的疑虑。 (3) 多用户、多任务。Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在计算机最主要的一个特点,Linux可以使多个程序同时独立地运行。 (4) 良好的界面。Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的XWindow系统,用户可以使用鼠标对其进行操作。在XWindow环境中与在Windows中相似,可以说是一个Linux版的Windows。 (5) 丰富的网络功能。互联网是在UNIX的基础上繁荣起来的,Linux的网络功能当然不会逊色。它的网络功能和其内核紧密相连,在这方面Linux要优于其他操作系统。在Linux中,用户可以轻松实现网页浏览、文件传输、远程登录等网络工作。并且可以作为服务器提供WWW、FTP、Email等服务。 (6) 可靠的安全、稳定性能。Linux采取了许多安全技术措施,其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。Linux由于需要应用到网络服务器,这对稳定性也有比较高的要求,实际上Linux在这方面也十分出色。 (7) 支持多种平台。Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外,Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。 5.2.4其他操作系统 1. Mac OS(“麦塔金”操作系统) Mac OS是苹果公司为Macintosh系列产品开发的专属操作系统,1985年由史蒂夫·乔布斯(Steve Jobs)组织开发,是一款基于UNIX内核的图形界面的操作系统。它在普通PC上无法安装。Mac OS有四个特点: ①全屏模式是新版操作系统中最为重要的功能,应用程序均可以在全屏模式下运行,这表明在未来有可能实现完全的网格计算。②任务控制整合了Dock和控制面板,并可以窗口和全屏模式查看各种应用。③快速启动面板的工作方式与iPad完全相同; 它以类似于iPad的用户界面显示计算机中安装的一切应用,并通过App Store进行管理; 用户可滑动鼠标,在多个应用图标界面间切换; 与网格计算一样,它的计算体验以任务本身为中心。④Mac App Store的工作方式与iOS系统的App Store完全相同,它们具有相同的导航栏和管理方式,这意味着,无须对应用进行管理。当用户从该商店购买一个应用后,Mac计算机会自动将它安装到快速启动面板中。 2. Android(安卓操作系统) Android是一种基于Linux的开放源码操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。Android的系统架构和其操作系统一样,采用了分层的架构。Android分为四层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。 2005年8月Android由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后,Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。后来,Android逐渐扩展到平板电脑及其他领域上,如智能电视、数码相机、游戏机、智能手表等。2011年第一季度,Android系统在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年第四季度,Android平台手机的全球市场份额已经达到781%。2013年在全世界有10亿台设备安装了Android操作系统。2019年9月,已更新到第10版。 3. iOS iOS是由苹果公司开发的移动操作系统,2007年1月9日发布,最初是设计给iPhone使用的,后来陆续用到iPod touch、iPad及Apple TV等产品上。iOS与苹果的Mac OS X操作系统一样,属于类UNIX的商业操作系统。原本这个系统名为iPhone OS,因为iPad、iPhone、iPod touch都使用iPhone OS,在2010WWDC大会上改名为iOS。 2016年1月,9.2.1版本发布,修复了黑客可以创建自主的虚假强制门户的漏洞。2018年9月22日,苹果公司在最新的操作系统中秘密加入了基于iPhone用户和该公司其他设备使用者的“信任评级”功能。 4. 银河麒麟(Kylin) Kylin是国防科技大学研制的开源服务器操作系统,是863计划重大攻关科研项目,目标是打破国外操作系统的垄断,研发一套中国自主知识产权的服务器操作系统。银河麒麟2.0包括实时版、安全版、服务器版。 5. YunOS YunOS是阿里巴巴集团旗下智能操作系统,融合了阿里巴巴在云数据存储、云计算服务及智能设备操作系统等多领域的技术成果,可搭载于智能手机、智能穿戴、互联网汽车、智能家居等多种智能终端设备。据统计,2016年7月搭载YunOS的物联网终端已经突破1亿。 5.3操作系统的新发展 为了适应新时代的要求,操作系统正在经历一系列重大变化,这些变化将给软件带来前所未有的发展空间,各大软件公司纷纷根据自己的特长提出了相应的对策。 1. 操作系统内核将呈现出多平台统一的趋势 传统的操作系统内核主要采用模块化设计技术,只能应用于固定的平台。随着组件化、模块化技术的不断成熟,操作系统内核将呈现出多平台统一的发展趋势,如Windows XP采用了组件技术可以灵活地进行扩展和变化,既有支持桌面系统的Windows XP Professional版本,也有支持嵌入式系统的Windows XP Embedded,有效实现了Windows操作系统内核技术的统一。Linux最新的2.6内核版本也加强了对多平台统一的支持,2.6内核不需要用户进行复杂的内核修改和裁剪就可以灵活地实现嵌入式Linux,同时该内核也可以支持Data Center Linux。 2. 功能将不断增加,逐渐形成平台环境 操作系统功能的不断增加有两个方面原因,一个原因是为了不断满足用户的需求,另一个原因是新技术的不断出现。Mac OS X 10.2比第1版Mac OS X增加了150余项功能。不断增加的功能并不是每个用户都能用得到的,然而操作系统作为一个标准的套装软件必须满足尽可能多用户的需要,于是系统不断膨胀,功能不断增加,并逐渐形成从开发工具到系统工具再到应用软件的一个平台环境。 3. 中间件的发展趋势 (1) 技术发展趋势: 与软件构件技术紧密结合,支持现代软件开发方式,实现软件的工业化生产。已有的构件技术包括J2EE、CORBA、.NET等。中间件的开发将越来越多地采用一些开源技术,例如Apache、OpenSSL、Linux、Eclipse、JBoss、Tomcat等。提供对移动计算等多种设备的支持,提出新的基于协调技术的软件协同模式。原先的消息中间件、交易中间件已经成为标准的应用服务器中不可分割的一部分,并逐步向操作系统内核延伸。应用服务器、门户、数据集成、Web服务、EAI的厂商不断将中间件的功能扩充到它们的产品中。.NET和GXA(Global XML Architecture)将不断占领非Java的中间件空间。 (2) 应用发展趋势: 越来越多的垂直应用领域将采用中间件技术来进行系统的开发和设计,包括消息、交易、安全等,以缩短开发周期,降低开发成本。面向应用领域解决名字服务、安全控制、并发控制、负载均衡、可靠性保障、效率保证等方面的问题,以适应企业级的应用环境,简化应用开发。不断提供基于不同平台的丰富开发接口,支持面向领域开发环境和领域应用标准。 4. 嵌入式系统及软件技术的发展趋势 嵌入式系统是以应用为中心的系统,它吸取了PC的成功经验,形成不同行业的标准。统一的行业标准具有设计技术共享、构件兼容、维护方便和合作生产等特点,是增强行业性产品竞争能力的有效手段。走开放系统道路、建立行业性的嵌入式软件开发平台是加快嵌入式软件技术发展的有效途径之一。 嵌入式开发工具将向高度集成,编译优化,具有系统设计,可视化建模、仿真和验证功能方向发展。嵌入式软件开发工具是嵌入式支撑软件的核心,它的集成度和可用性将直接关系到嵌入式系统的开发效率。随着市场需求的增长,越来越多具有多窗口图形化用户界面、支持面向对象程序设计方法和C/S体系结构的嵌入式软件开发工具将推上市场。 嵌入式系统及应用软件要针对不同的设备,造成了各种设备之间异构现象严重。而各种嵌入式设备联网又是大势所趋,所以未来嵌入式中间件必将飞速发展。 5. 网格操作系统 网格技术正在成为影响信息技术下一个高潮的最重要的核心技术。它正在产生下一代操作系统和用户界面,从而推动新一代计算机应用。 微软正在全力抢占下一代操作系统与用户界面市场。微软近几年大力增加研究开发经费,试图推出网格操作系统与网格用户界面。IBM(以及众多其他厂商和科研界)似乎是想把网格操作系统(如WebSphere)构造在本地操作系统(如AIX、Linux)之上,而微软则似乎在走OS/2的路,构造一个无缝的操作系统,既是网格操作系统,也是本地操作系统。微软的这种技术路线可能更为先进。国际科研界有以下三种共识。 第一,当前网格的研究开发工作事实上正在创造下一代的操作系统和用户界面。例如,IBM已经把WebSphere变成了公司的一个品牌,甚至直截了当地说WebSphere就是Internet Operating System。Globus的目标是成为“分布式计算的Linux”。Globus就是开放源码的网格操作系统核心。 第二,这种网格操作系统的基本结构继承了以前操作系统的做法,即一个核心(内核)加上一个框架,就像GNU/Linux一样。这里的Linux指在其核心中加上GNU环境(也称框架)。 第三,不论是学术界还是工业界(包括微软),都强烈希望只有一套开放的网格(Web Grid)技术标准。 思考题 1. 什么是操作系统? 2. 简述操作系统的历史。 3. 简述操作系统的功能。 4. 简述操作系统的分类。 5. 介绍几种主要的操作系统。 6. 简述操作系统的新发展。