OS2013UNIT1操作系统导论.ppt_第1页
OS2013UNIT1操作系统导论.ppt_第2页
OS2013UNIT1操作系统导论.ppt_第3页
OS2013UNIT1操作系统导论.ppt_第4页
OS2013UNIT1操作系统导论.ppt_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,操作系统原理,冯耀霖,E-mail: ,课程说明,理论教学内容 (讲义) Unit 1 操作系统导论 8 Unit 2 进程与线程 8 Unit 3 进程通信 6 Unit 4 进程同步 8 Unit 5 死锁 2 Unit 6 实存管理 4 Unit 7 虚存管理 8 Unit 8 文件管理 10 Unit 9 设备管理 6 附:操作系统实验准备知识(自学),实验内容 本课程的实验平台是Linux操作系统。 实验 1 熟悉Linux环境 实验 2 进程的创建与并发执行(一) 实验 3 进程的创建与并发执行(二) 实验 4 线程的创建与并发 实验 5 信号与管道通信 实验 6 线程同步(一) 实验 7 线程同步(二) 实验 8 分区内存管理 具体内容见OS2013_操作系统原理实验,CPU是计算机系统的心脏,操作系统是计算机系统的大脑。半个多世纪以来,操作系统吸引了世界上一群最热情、最有智慧的杰出人才、集中了人类现代创造性思维活动的精髓。操作系统是软件世界的万花筒、博览会,是软件王国中的一顶璀璨的皇冠。能够有机会走进操作系统这个神奇、复杂而又充满诱惑的大千世界,理解其中的基本概念、结构和奥妙的管理机制是十分幸运的。,Unit 1,操作系统导论,操作系统原理冯耀霖,内容,什么是操作系统 操作系统的形成与发展 操作系统的基本概念,1 什么是操作系统,操作系统定义 操作系统的资源管理功能 为什么要学习操作系统,1.1 操作系统的定义,操作系统Operating System(OS) 操作系统这个术语听上去很稀松平常,并不给人任何兴奋的感觉,甚至有点“土”,原因在于中文的“操作”这个词。提到操作员(工),通常让人想起操作机床、起重机等各种设备或工具的穿着油腻工作服的蓝领工人(计算机操作员充其量也就是蓝领中的白领),自然让人兴奋不起来。将 Operating 翻译为中文的“操作”,是因为最初的译者没有真正理解英文 Operating system 所蕴含的精髓。,Operating ?,图1-1 对Operating的误读,那么,英文中的 Operating system 实际意味着什么? 我们先看两个有关的英文术语。 Operating Surgeon:外科主刀大夫。在整个手术过程中,主刀大夫具有至高无上的权威:他说要打麻药,麻醉师就要赶紧打麻药;他说需要手术钳,助理大夫就赶忙递给他手术钳;他说需要止血,护士就得马上拿止血药棉来止血。整个手术最关键的部分:切开皮肤、拿掉器官、安装移植器官等均由主刀大夫完成。当然,主刀大夫有时也会将某些任务,如缝合创口交给助理大夫来做,但整个手术的过程皆由其主控。一句话,Operating Surgeon就是掌控整个手术过程、具有精湛技术和敏锐判断力的医师。 Operating Person:操刀手,操控者。是操控掌控事情的人。,从Operating Surgeon和Operating Person这两个术语的语义我们可理解Operating具有“掌控”的含义。因此,应该把Operating system理解为: Operating system掌控局势的一种系统 这个术语是专为计算机系统设计的(IBM),指的是计算机系统里的一切事情均由OS来掌控。 正如任何一种有效的组织或系统都会有一个核心机构存在,该核心管理着该组织或系统的可用资源,掌控着系统的正常运转。OS就是计算机系统中的核心机构,它是计算机软件精英们设计的一种大型和极其复杂的软件系统,用于代替人并以人的思维方式来自动管理计算机上的,所有软、硬资源,掌控在计算机系统上可能发生的一切事情。 那么, 操作系统到底是什么? 操作系统到底掌控什么事情?,操作系统是一种大型系统软件 计算机软件有应用软件与系统软件之分。 应用软件是计算机用户为了应用计算机解决某一特定问题而开发的软件。 系统软件则是与具体应用逻辑无关的软件,是应用软件的开发和运行平台。系统软件一般分为四类:操作系统;语言处理系统(编译程序、解释程序);软件开发实用工具 (编辑、调试、诊断检测、CASE等程序);数据库管理系统(DBMS)。其中,操作系统也称系统管理软件,其他则为系统应用软件。 操作系统是规模最大的系统软件,如Windows XP 4000万行源代码,而一些Linux系统的规模则更大,已达到上亿行源代码。,1. 操作系统到底是什么?,操作系统是系统软件中的核心 图1-2是一个简略的计算机系统视图。从中可清楚地看到计算机系统的层次结构。 硬件是操作系统存在的物质基础。硬件向软件提供的是物理机器界面(interface),即机器的指令系统。 操作系统是加在“裸机”(纯硬件)上的第一层软件(最底层软件),是直接建筑在硬件上的软件,它使用机器指令实现对硬件的管理和控制。操作系统常驻内存,它覆盖了所有的硬件特性和功能,通过各种抽象,构建了一个功能远强于裸机且易用的“操作系统虚拟机”(如Windows虚拟机、Linux虚拟机)。操作系统向上层提供了两种界面:用户操作界面(操作命令)和编程界面,硬 件,操作系统,系统应用软件,应用软件,用 户,物理机器界面,编程界面,用户操作界面,图1-2 计算机系统视图,计算机系统,(系统调用)。它们向上层掩盖了所有的硬件特性细节。 系统应用软件处于操作系统的上层,它们不是常驻内存的,而是存放在磁盘等外存设备上,仅当需要运行这些软件时,才把它们加载到内存,并在操作系统的支持下工作,通过系统调用获取操作系统提供的各种服务。系统应用软件有效地扩充了计算机系统的功能,它与操作系统一起组成系统软件整体,起到了简化程序设计、扩大计算机处理能力、提高计算机使用效率、充分发挥各种资源功能的作用。因此,可以把系统应用软件看作是操作系统的延伸,甚至可把它们看作是操作系统的一部分(如Linux发行版)。但是系统应用软件与操作系统的不同之处在于,其运行环境与普通应用软件一样,它们仍然需要通过操作,系统才能使用和控制系统资源。 计算机系统层次结构的最上层是应用软件。它们在系统软件的支持下运行,通过系统调用获取各种系统软件的服务。 用户在终端上通过输入各种操作命令(字符命令或图形命令)使用操作系统虚拟机。 可见,有了操作系统,用户和所有非操作系统程序不再直接面对物理机器界面,而是面对操作系统提供的掩盖了所有硬件特性细节的虚拟机界面,通过这种虚拟机界面方便地使用功能被大大强化了的操作系统虚拟机。 例如,如果用户在裸机上直接编程是很困难的,因为各种数据转移都需要用户自己来控制,对不同设备要用不,同命令来驱动,而这对一般人来说是很难胜任的。操作系统将这些工作从用户手中接过来,从而让用户感觉到编程是一件容易的事(相对来说,而对有些人来说编程永远是很难的)。 又如,操作系统通过进程抽象让计算机的每一个用户感觉到有一台自己独享的CPU;通过虚拟内存的抽象,让用户感觉到物理内存空间具有无限扩张性。 总之,通过操作系统对裸机的各种抽象,可魔幻般地实现:少变多、难变易、弱变强。 操作系统是最基本的系统软件 任何现代计算机都必须配置和安装操作系统。在一台,计算机上你可以不安装某些系统应用软件,如语言处理系统或DBMS,但操作系统是必须安装的,否则,计算机就根本无法开始工作。计算机加电启动时,除了必要的硬件检测,首先将操作系统加载到内存并启动,此后,计算机系统的一切工作都在操作系统的掌控下进行。 作为最基本的系统软件,操作系统为所有的其它软件(包括系统应用软件)提供了一个开发和运行的基础平台,即所有的其他软件都需要在操作系统这个平台上进行开发,并在操作系统的掌控下运行,通过操作系统获取所需的计算机资源。没有操作系统任何软件都无法运行。,什么是抽象? 所谓抽象(abstract),就是根本上存在但现实中不存在的东西。抽象来源于具体,但又超越具体。例如绘画史上有抽象派,抽象画所表现的就是现实中不存在的东西,但这些东西确实又来源于现实。,抽象画01,抽象画02:毕加索 格尔尼卡,2. 操作系统到底掌控什么事情?,当然是计算机上或计算机里发生的一切事情。 最原始的计算机并没有操作系统,而是直接由人来掌控事情。但是随着计算机复杂性的增长,人们已经不能直接掌控计算机了,于是人们编写出操作系统这个软件来掌控计算机,将人类从日益复杂的任务中解脱出来。这个“掌控”有着多层深远的意义。 首先,由于计算机的功能和复杂性不断发生变化(趋向更加复杂),操作系统所掌控的事情也就越来越多,越来越复杂。同时,操作系统本身能够使用的资源也不断增多(如内存容量)。,其次,既然操作系统是专门掌控计算机的,那么计算机上发生的所有事情自然需要操作系统的知晓和许可,未经操作系统同意的任何事情均视为非法,包括用户和应用程序中的误操作,以及病毒和入侵攻击试图运作的事情。操作系统设计人员当然要确保计算机不发生任何他们不知情或不同意的事情。虽然,操作系统是由Top级软件精英们设计的,但是人的能力毕竟是有限的,人的思维也是有缺陷的,只要是由人设计出的系统自然不会十全十美,缺陷是难免的,这就给了攻击者可乘之机。操作系统设计人员与攻击者之间的博弈是当前驱动操作系统不断改善的一个重要动力。 再次,掌控事情的水平有高低之分,有效率不同之分,,就像外科主刀大夫之间也有水平高低之分。为了更好地掌控事情,更好地满足人们永不满足的各种越来越苛刻的需求,操作系统自然需要不断改善,且将一直继续下去。 归结起来,操作系统掌控的事情主要有两大类:资源管理和安全性管理。 操作系统管理计算机中的所有资源,包括硬件资源(设备资源)和软件资源(信息资源)。硬件资源可大致分为四类:CPU、内存、外存及I/O设备。操作系统通过各种策略提高硬件资源的工作效率和利用率,改善和优化计算机的功能和性能。软件资源就是存储在计算机内的各种文件,操作系统要对文件实施有效的保护,提供快速的文件查找,通过共享提高文件资源的利用率。,安全性管理功能主要解决两个问题: (1) 确保操作系统自身的正常运转,即确保操作系统自己不能出现崩溃性故障,这是计算机系统能正常工作的基础; (2) 防止非法操作和非法入侵,主要是防止病毒和入侵攻击。 其中的第二个问题是是安全性管理需要解决的主要问题。随着计算机应用的越来越广泛和深入,操作系统需要管理的资源也越来越多且越来越复杂,故对操作系统的要求也越来越高。由于操作系统存在缺陷是难免的,这就给了攻击者可乘之机。针对对操作系统的攻击,操作系统设计人员在不断改进操作系统的安全性,这种操作系统设计,人员与攻击者之间的博弈,使得操作系统安全水平和攻击水平不断交替上升,永不会停止。如今安全性管理越来越受到操作系统设计人员的重视,其重要性越来越突出。 如果我们把整个计算机系统比拟成一个国家的话,操作系统就相当于是管理整个国家的政府,是国家最高的政务管理机构。,好了,至此我们可以给出操作系统的一个定义了: 操作系统是最关键的系统软件,它掌控计算机上的一切事情,包括:管理所有的计算机资源,维持计算机系统的安全及有序运转,并为用户使用计算机提供方便且有效的环境。,1.2 操作系统的资源管理功能,资源管理是操作系统的主要功能,它遵循着一切人类资源管理的基本目的,即如何有效地发掘资源、监控资源、分配资源和回收资源,而其中的核心是分配资源。 公平和有效,是操作系统资源管理的基本原则。 公平指的是每个用户进程(进展运行中的程序)都有享有系统资源的权利(就像“天赋人权”),系统要让各个用户进程感到某种平等,即系统不能“无限”延长对任一进程的资源请求的响应时间。当然真正的公平是没有的事,这很像人类生活的现实,不过追求公平乃是人类的本能,是PSJZ观。只有公平了,才能谈得上公正与和谐。在虚拟世界里尽可能公平一点还是非常应该的,至少应该是操作系统设计时的不懈追求。,有效就是指不能浪费系统资源,要使资源尽可能被充分地利用,发挥出每个资源的最大效能。有效也为公平提供了必要的支持。这同样也像人类生活的现实,一个社会国家如果存在着大量的资源浪费,而浪费必定和腐败联系在一起,一个腐败成风的社会能是一个公平、公正的社会吗? 总之,公平与效率是操作系统资源管理中永恒的主题。到底是效率重要?还是公平更重要?天平的不同倾斜将引出不同的管理模式。 操作系统的资源管理功能一般分为四个子系统:进程管理、内存管理、外存管理及设备管理。,1. 进程管理,进程(process)可简单地理解为“运行中的程序”,其实质是操作系统对CPU的抽象。进程管理的主要目的有三个:第一是公平分配,即每个进程都有机会使用到CPU;第二是非阻塞,即任何进程不能无休止地阻挠其他进程的正常推进,如果一个进程在执行过程中需要I/O或者因别的什么事情而发生阻塞,这个阻塞不能妨碍无关进程继续前进,就像人类世界,缺了谁地球都照样转;第三是优先级调度,在人类生活中人的地位不是完全一样的,地位高的就比地位低的具有更高的资源获取权及占有权,OS设计者把人类生活中的这种关系搬到操作系统里面,就有了优先级的概念,即赋予某些进程有较高的优先级,如果优先级高的进程需要执行,则优先级低的进程就要让出CPU。,2. 内存管理,内存管理一般是管理由主存和缓存所形成的内存架构。为了有力地支持多进程并发以及应用程序不断增大的需求,OS设计者发明了虚拟内存的概念,即通过软件技术将物理内存逻辑扩充到磁盘上,这样就极大地增大了物理内存空间。因此,现代操作系统管理的实际上是由主存、缓存及磁盘所形成的虚拟内存架构。 内存管理要解决的问题之一是如何给不同的用户进程分配内存空间;要解决的另一个问题是怎样让很多用户进程共用同一个物理内存,这就需要对物理内存进行分割和保护,每个进程占用一个受保护的内存空间,一个进程不能访问另一个进程所占用的内存空间,即进程不能越界。,3. 外存管理,外存管理也称文件系统管理或文件管理。文件系统是操作系统对外存介质(磁盘、磁带、光盘)的抽象。文件则是对外存空间单位的抽象。 外存管理要解决的的问题之一是如何分配外存空间给不同的进程。要解决的另一个问题是怎样将外存变成一个很容易使用的存储介质提供给用户使用,使得用户在访问外存时无需了解外存设备的物理属性或程序和数据在外存空间上的精确位置,例如磁盘上的磁道、磁柱、扇区等。 磁盘是最重要的外存介质,是外存管理的重点。,4. 设备管理,设备管理就是管理I/O设备,其主要目的有三个: 其一,解决如何给不同的进程分配I/O设备; 其二,屏蔽不同设备的差异性,即使得进程可以用同样的方式访问不同的设备,从而降低编程的难度; 其三,提供并发访问,即将那些看上去并不具备共享特性的设备(如打印机)变得可以共享。,1.3 为什么要学习操作系统,我们已明确了OS的重要性,但仅仅因为很重要就一定要学习它吗?世界上重要的事情多去了,难道我们都要学习吗?即使是计算机专业的学生,不学OS也照样可以编程写软件。那我们为什么要学呢?当然我们可以有一千个理由,在这里仅提出两个。 1) OS都是由软件界中的Top精英们开发的,它的优秀设计和经典思路是计算机科学知识的荟精集萃,会给我们以激浊扬清的思考,对OS的掌握程度,决定着计算机专业学习者的发展水平及方向。 举例说:, OS的功能在很多 IT 领域都使用。如果你做并发程序的开发Web Service、分布式系统和网络 ,你会发现,这些领域大量使用了OS的概念和技术。如果你学好了OS,你就可以对你要做的事情更加有信心。 OS的技巧也在很多领域使用,如抽象、缓存、并发等。如数据结构和程序设计就大量使用了抽象,记得抽象数据类型和抽象类吗?很多地方都用缓存,你做Web要不要用缓存呢?这些你都得做。如果学好了OS,你就掌握了这些内容,触类旁通,你学习别的东西时就会容易多了。,2) 更重要的是OS真的很有意思。对于一个计算机专业的人来说,难道你不想知道自己写的程序到底是如何在计算机上运行的吗? 很多人买车后第一件事是什么?打开前盖。打开前盖看到的是什么呢?马达、变速箱。为什么第一件事要打开前盖呢?因为好奇这辆车是怎么开动的。 那么,对于一个计算机特别是软件专业的人来说,有没有在看到一台计算机的时候,想过为什么计算机能进行计算?为什么计算机系统能有条不紊的运转?多数人恐怕没有打开过计算机外壳。不过,没有打开过也不用遗憾,因为即使你把计算机后盖打开,还是不能明白计算机是怎么运转的,此时只看到一堆硬件:主板、芯片、布线等,而这些硬件并不会告诉你太多有关计算机运转的信息。如果真的想知道计算机系统到底是怎么运转的,你就得学习OS。,虽然学习OS很有趣,但并不是所有人都有这样的感觉,因为OS的特点是概念多、抽象和涉及面广,而从整体实现上看,其思想和技术又往往令“我们”难于理解。历史证明,对很多人来说学习OS是一件很痛苦的事情。不过本人希望我们在一起学习这门课程对大家来说是一件乐事,难道窥探计算机系统的奥秘不是一件激动人心的事吗?,2 操作系统的形成与发展,操作系统的发展历史 操作系统的分类 操作系统的未来发展趋势,2.1 操作系统的发展历史,操作系统的形成与发展由两个基本因素驱动: 硬件成本的不断下降; 计算机的功能和复杂性不断提升。 硬件成本的不断降低,就以硬盘为例,IBM制造的第一张硬磁盘直径达2米,造价100多万美元,而容量只有1MB;而现在一个容量100GB的硬盘成本只有几十美元。当然,过去的硬盘和今天的硬盘的制造技术完全不同,早期硬盘的质量坚挺,可以当作咖啡桌来使用,而现在的硬盘片根本不能承受重物。 计算机硬件及其组成的发展速度从一开始就很惊人。最初,计算机的组件虽然巨大,但数量少,功能简单,现在,一台计算机里包括的元件数量实在是太多了。,硬件成本的下降和计算机复杂性的提高推动了操作系统的演变。成本降低意味着同样的价格可以买到更为先进的计算机。而计算机复杂性的提高自然需要操作系统的能力也得到提高。就是这些变化使得操作系统从最初的仅仅只有几百或几千行源代码发展到今天的多达几千万行到上亿行源代码。 操作系统之所以越来越复杂的基本因素是因为硬件质量和数量的不断提升使得操作系统管理的东西增多,而且人类永不满足的各种越来越苛刻的要求也使得操作系统的复杂性不断增加。 除了上述两个基本驱动因素,在操作系统的发展过程中, 效率和公平始终是操作系统设计人员追求的关键目,标,它们是导致操作系统越来越复杂的重要因素。 另外,还有一个附加因素影响着操作系统的发展,这就是操作系统和攻击者之间的博弈。这个世界上总有些人想利用计算机的缺陷来进行各种损人利己或损人又不利己的活动。操作系统在最初设计时就根本没有想到会有人从事破坏活动。大概因为早期的计算机工作者认为到达能够使用计算机的水平的人都是好人,是君子,是绅士,无需设计任何安全机制。这样,在后来发现有人试图利用计算机进行不良操作时,就迫不得已修改操作系统,使其具有安全上的防范功能。每当操作系统改进了安全性,攻击者也会改良他们的攻击手段,这样循环往复,就造成操作系统安全水平和攻击水平不断交替上升的历史。,第零代:SOSC操作系统(20世纪40年代),SOSC(Single Operator, Single Console 单操作员单控制台)控制方式是最原始的计算机控制方式,用于第一代电子计算机,如ENIAC。当时并没有操作系统的整体概念,人们能够想到的最直观的控制计算机的方式,就是提供一些标准的人机交互命令供用户(当时的用户既是编程者也是操作员)使用,这些标准命令的集合就构成了SOSC标准函数库。这可认为是操作系统的最原始形式。 SOSC的设计目的就是满足基本的功能,并提供人机交互。在SOSC下,任何时候只能做一件事。即不支持并发和多道程序运行。SOSC本身只是一组标准库函数而已,并不自我运行,而是等待响应用户输入的命令,然后加载相应的库函数来执行。用户想使用什么服务,就输入代表,该服务的库函数名即可。这种控制方式的资源利用率很低:用户输入一个命令就执行一个SOSC库函数,拨一下动一下;当用户在思考时或进行输入输出时,CPU则静静地等待。当然了,从人的角度来看,效率并不低,你输入什么,计算机就立即执行什么。但从机器的角度考虑,因为CPU时刻都等着人相对很慢的动作,效率就太低了。 由于这个时代的计算机很稀少,整个世界也只有几台,而人却不是,提高计算机的利用率就变得十分重要。,第一代:批处理操作系统(20世纪50年代),为了提高SOSC的效率,人们提出了“批处理”的概念。在仔细考察了SOSC后,人们发现,SOSC效率之所以低下,是因为计算机总是在等待人的下一步动作,而人的动作总是很慢。因此,人们觉得如果取消人的因素,让所有的用户先想好自己要运行的命令,列成一个清单(称作业说明书),再把要运行的程序、数据连同作业说明书一起制作(穿孔)在纸带卡片上,然后将制作好的纸带卡片交给计算机管理员来一批一批地处理,效率不就提高了吗?这就形成了批处理操作系统。 批处理针对的是第二代通用计算机,如IBM的1401和7094等,通过取消用户与计算机的直接人机交互达到CPU和输入输出设备利用率的改善。,批处理的过程是:用户将自己的作业(程序数据作业说明书)制作在穿孔卡片纸带上,交给计算机管理员;管理员在收到一定数量的用户作业后,将卡片纸带上的作业通过输入输出卫星机IBM1401读入,并写入到磁带(输入磁带)上,这样每盘输入磁带通常会含有多个用户作业;然后,计算机操作员将这盘磁带装入到作为主机的IBM7094上,由驻留在IBM7094上的批处理监控程序(batch monitor)顺序解释执行各用户作业,实现了作业之间的自动切换,作业运行的结果被写入另一个磁带(输出磁带)上;所有的用户作业运行结束后,将输出磁带取下来,装到卫星机IBM1401上进行结果打印;然后就可以将打印结果交给各个用户了。图1-3描述了批处理的过程。,图1-3 批处理系统示意图,批处理监控程序和原先就有的标准函数库就组成了批处理操作系统。(不过,那时还没有出现“操作系统”这个术语) 很显然,批处理操作系统的功能和复杂性较之SOSC均得到了提升。 批处理操作系统开始具备了初步的系统管理功能: 设备管理读卡机、磁带机、打印机等I/O设备的驱动; 文件管理首次引入了文件概念,每个用户作业被抽象成一个文件; 解释执行作业说明书; 实现各用户作业之间的自动切换。,批处理操作系统一般被认为是操作系统的雏形,后也被称之为单道批处理操作系统,一般把它称之为第一代操作系统。 其重要实例有IBM开发的FMS和IBSYS,密歇根大学开发的UMES,分别运行于IBM7090和IBM7094。 驱动这个阶段操作系统发展的动力是改善效率。因为机器的昂贵,使得CPU在操作员思考或I/O设备工作期间闲置起来是难以容忍的。,第二代:多道批处理操作系统(20世纪60年代),虽然批处理操作系统通过无需人机交互过程而在一定程度上提高了计算机的效率,但还是不那么令人满意。因为,它只支持一个用户作业进入内存运行,且CPU和I/O设备的运行是串行的,即在程序进行输入输出时,CPU只能等待,CPU需要不断地探询I/O是否完成,因而不能执行别的程序。由于昂贵的CPU的速度要远远高于I/O设备,故CPU常常处于闲置状态,其浪费是很大的。 为此,人们又设想,能否将CPU和I/O设备并行工作呢?即在一个程序进行输入输出时,让CPU去执行另一个程序,换言之,能否将CPU和I/O设备的运行重叠起来从而改善整个计算机系统的效率呢?答案是肯定的,不过需要付出代价,因为CPU和I/O重叠需要我们将多个程序同,时加载到计算机内存里,由此,引出了多道程序设计(multiprogramming)的思想。 多道程序设计是指允许多个程序同时进入计算机内存并发运行的方法。也就是说,计算机内存中可同时存放多道(两个或以上)相互独立的程序,它们均处于起点和终点之间,通过操作系统的调度使各道程序轮流交替地使用CPU。当现行程序启动I/O并需要等待I/O的完成时,操作系统可立即调度CPU去执行另一个驻留在内存中的程序,使得CPU与I/O设备并行工作,利用这种多部件的并行工作,使系统可同时运行多个不同的程序。从而可大大减少CPU的闲置时间,充分提高了CPU的利用率。,例如,假设一个程序用20%的时间使用CPU进行计算,另外80%的时间用来进行I/O。则在单道系统中,CPU的利用率只有20%;但如果同时运行两个这样的程序,则CPU的利用率将提高到36%(CPU只在两个程序同时进行I/O时才处于闲置状态,因此CPU的利用率为 10.80.8 = 36%),这里忽略了程序切换所需要的系统开销。同理,如果同时运行3个这样的程序,CPU利用率将提高到48.8%;4个程序的CPU利用率将为59%;5个程序的CPU利用率将为67.2%。这样,随着程序道数的增加,CPU利用率将逐步提升,直到某个临界点为止。这个临界点就是多道程序设计的上限,超过这个上限,多道程序设计的好处将逐步消失,甚至呈下降趋势。,图1-4 多道编程度数、I/O时间和CPU利用率的关系,将多道程序设计思想引入到批处理操作系统便形成了多道批处理操作系统。 显而易见,比起简单批处理多道批处理操作系统的功能要强得多,但也要复杂得多:既要管理多个作业,又要管理内存,还要管理CPU调度。但多道批处理操作系统构建了操作系统的基本架构,奠定了操作系统的基本理论,操作系统也因此而成就了一门独立学科。 驱动多道批处理操作系统的问世及发展的动力仍然是改善效率。因为当时的CPU非常昂贵,人们不能容忍CPU在I/O设备工作期间被闲置下来。同时,用户对计算机的需求也开始多了起来,从纯粹的科学计算发展到商业应用。因此,这个阶段还伴随着满足用户不断增长的需求。,蓝色巨人IBM对多道批处理操作系统的问世作出了巨大贡献。 在1961年年底,IBM开始实施“360系统电子计算机计划”,整个计划投资约50亿美元(而“曼哈顿工程”才花了20亿),超过了当时IBM一年的产值。在人力上,光软件工程师就投入了2000多名。 IBM在实施360计划时,首次正式提出了Operating System这个术语,并开发出了一个真正的多道批处理操作系统 OS/360,这是一个不仅从理念上也从技术上都是划时代的操作系统,是操作系统发展史上的一个里程碑。随着OS/360的问世,诞生了一批崭新的概念和术语,如:多道程序设计、任务(进程)、调度、并发、作业管理、,CPU管理、内存管理、设备管理、文件管理等,它们构成了操作系统理论的基础。同时,计算机应用从纯科学计算应用开始进入了商业应用。,图灵奖获得者(1999),Frederick Brooks,图1-5 OS/360总设计师,第三代之一:分时操作系统(20世纪70年代),多道批处理操作系统的出现使计算机的效率(主要是吞吐量)大大提高。但它的一大问题是用户是“脱机”(Off line)使用计算机的,用户无法即时获知其程序的运行结果。想想如果你编了一个程序,却需要别人去运行,并可能要等上若干天才能知道结果,这个滋味显然不好受。万一计算机管理员疏忽了,忘记运行你的作业,或者操作错误,导致程序丢失,情况就更糟。另外,脱机性也大大限制了计算机的商业性应用。 为此,人们又设想,能否让用户回到计算机前面来,由每个用户自己操作和控制自己的程序。 随着符号键盘、显示器等计算机终端设备的问世,人们的这种设想的实现成为了可能。,批处理系统是对SOSC的否定,而这种想法的提出是对SOSC的否定之否定。人的因素又引了回来,这看上去与原始的SOSC似乎一样,但有个关键的不同:多个用户同时与计算机联机(On-line),每个用户被看作只是一个I/O终端而已。即每个用户都拥有一个联机终端(显示器键盘),它们都通过RS232串行线缆与计算机主机连接,终端只能发送和接收有限的文本命令和信息。操作系统在所有的联机用户之间进行CPU分时,即一次分给一个用户进程有限的CPU时间时间片,只要时间片一完,就立即切换一个用户进程,给该进程分配一个CPU时间片。就是基于这种基本思想,引来了第三代操作系统分时操作系统。,在分时操作系统下,任意时间可以运行多个程序,且用户直接与计算机交互,现场调试程序,这就和SOSC不一样了。在SOSC下,一切等着人,计算机执行一条命令就等人。分时系统则是人等计算机。这个模式带来一个直接的结果就是计算机再不用等你,等你想问题时机器就切换到别的程序,等你想完了机器再切换回来,接受你的再次输入。就这样,计算机就在很多人之间来回切换,你输入个命令就响应,然后切换走。如果时间掌握的好,用户输入完一个命令计算机正好转回来,用户就没有等待的感觉。当然,如果一个用户打字足够快,可能会觉得计算机慢;如果打字较慢,就有可能觉得计算机很快。不同的人感觉有可能完全不同。,图1-6 分时系统示意图,显然,与前面几代的操作系统相比,分时操作系统要复杂得多。相比于多道批处理操作系统,最主要的变化是资源的公平管理。在多道批处理下,公平不公平没有人知道,大家递交了作业后只管回家等结果。至于自己的程序排在谁前面谁后面,或者占用了多少CPU时间是无关紧要的。现在,大家都坐在计算机终端前面,任何的不公平将立即感觉到。因此,公平地管理用户的CPU时间就变得非常重要。 驱动这个阶段操作系统发展的动力是响应时间和对越来越多资源的管理。因为机器昂贵,不能容忍CPU在I/O设备工作期间闲置下来。同时,因为人的时间宝贵,不能容忍用户坐在机器前进行漫长的等待。因此,人们,发明了分时操作系统来解决这两个问题。此外,分时操作系统还需要应对竞争、同步、互斥、通信、死锁、保护等一系列的新问题,使得分时操作系统变得空前复杂,进一步完善了操作系统的基本理论。对分时操作系统的研发成为了当时计算机界的最大热门,竞争十分激烈。 最为著名的分时操作系统是由AT&T的贝尔实验室、麻省理工学院(MIT)及数字设备公司(DEC)三家合作开发的Multics分时操作系统和贝尔实验室开发的Unix分时操作系统。 Unix后来演变成了两大系列:System(AT&T贝尔实验室)和BSD(加洲大学伯克利分校)。,成功分时操作系统的典范无疑当推UNIX,它是史上第一个用高级程序设计语言(C语言)编写的操作系统,并成功运行于PDP、VAX、CRAY等当时的主流机器上,其发明者因此而获得了图灵奖。UNIX的问世极大地推动了操作系统的发展,奠定了操作系统理论和技术的架构,是操作系统发展史上的一个伟大的里程碑,对操作系统的发展产生着巨大和深远的影响。发展到今天,UNIX仍久经不衰,表现出它的强大生命力,它已从一个分时操作系统发展成为“通用”操作系统,成为了跨越从微型机到巨型机范围的唯一操作系统,被誉为是操作系统的工业标准。(贵族),图灵奖(1983)获得者,肯 汤普逊 UNIX发明者,丹尼斯里奇 C语言发明者,图1-7 UNIX与C语言的发明者,第三代之二:实时操作系统,实时操作系统是专门为计算机实时应用系统(简称实时系统)而开发的。实时系统要求计算机对某些实时过程进行监视,并在需要的时刻及时采取动作。实时系统具备一个特点:计算机对相关实时过程必须在规定时间内作出响应,不然就有可能发生事故或灾难。 例如,在工业装配线上,当一个部件从流水线上的一个工作站流到下一个工作站时,这个工作站上的操作必须在规定时间内完成,否则就有可能造成流水线瘫痪。又例如,在导弹防卫系统中,对来袭导弹的轨迹计算必须在规定时间内完成,否则就有可能被来袭导弹击中而无法作出反应。其他如航空飞行控制系统、核反应堆状态监视系统、化学反应堆监视系统等。,这里必须清楚一个概念:实时系统并不一定是响应很快的系统,而是其响应具有时序可预测性的系统。当然了,在实际中实时系统通常是响应很快的系统,但这是实时系统的一个结果,而不是其定义。 显然,实时操作系统的最重要部分就是作业调度或进程调度,只有精确、合理和及时的进程调度才能保证响应时间。当然,对资源的管理也非常重要,没有精密复杂的资源管理,确保进程按时完成就成为一句空话。另外,基于其使用环境,实时操作系统对可靠性和可用性的要求也非常高。如果在这些方面出了问题,时序可预测性将无法达到。,第四代:现代操作系统(1980年至今),自20世纪80年代起,计算机工业获得了井喷式的发展,各种计算机和操作系统不断出现和发展,计算机和操作系统领域均进入到了一个百花齐放、百家争鸣的时代,尤其是工作站和PC机的出现,使计算机大为普及。这个时代的操作系统代表有:DOS、Windows、Linux、UNIX和各种主机操作系统,如VM、MVS等。 随着微电子技术的飞速发展,计算机硬件越来越便宜,个人电脑(PC)出现在人们的视野中。人们可以拥有自己的电脑,无需与他人分享。由于PC机由用户一个人独享,分时操作系统的许多功能就无需存在,因此,PC机操作系统又变回到了标准函数库系统。初期的PC操作系统是单用户单任务的,这类OS最有名的是DOS、,Windows 3x、MacOS(苹果机操作系统)等。 但在独享了一阵PC机后,人们发现,没有分时功能的操作系统使一些事情做不了,因为虽然只有一个人在用计算机,但他可能想同时运行几个程序,而没有分时功能这是不可能的。于是,人们觉得需要对PC机操作系统进行改善,将各种有关的分时功能又加了进去,形成了单用户多任务的PC操作系统,如windows 2000/xp、Xenix、Ulttrix、MacOS X。 推动PC电脑的迅猛发展的一个重要因素是操作系统图形用户界面(GUI)的出现。传统操作系统的用户操作界面都是字符文本用户界面。苹果公司率先开发出了实用的GUI,并应用在它的Mac OS操作系统上。微软大量,抄袭了Mac OS的GUI技术而形成了最为流行的GUIWindows。图形用户界面的出现对操作系统的发展产生了深远的影响。现在一般认为GUI的技术和标准是由苹果公司打下的基础。但正确地说,GUI技术实际上是由施乐帕罗奥托研究中心创始的。 这个时代的另外一个重要特征是网络的出现和兴起。网络触发了网络操作系统和分布式操作系统的出现。计算机网络有(普通)计算机网络和分布式系统之分,分布式系统是种特殊的计算机网络。网络操作系统是为计算机网络开发的,分布式操作系统则是为分布式系统开发的。分布式系统与计算机网络的主要区别不在于它们的物理结构上,而是在操作系统。,分布式系统与计算机网络的差别: 计算机网络一般采用客户/服务器(Client / Server) 模式;而分布式系统采用的是对等(Peer-to-Peer)模式,即网中的站点机没有主次之分,每一个站点既可作为客户机,又可作为服务器。 在计算机网络中,两台客户机之间的通信是通过服务器来实现的;分布式系统中的任意两台计算机之间可以直接通信。 对于计算机网络,有服务器操作系统和客户端操作系统之分,他们之间的功能差异很大;分布式系统使用的是统一的操作系统,即网中所有计算机运行的是同一个操作系统。,分布式系统中的资源为全网共享,每个站点上的资源都可为其他站点所共享,并且这种共享对用户是透明的;而在计算机网络中,只能客户机共享服务器上的资源,且对用户是不透明的。 分布式操作系统可将一个大型或复杂的任务分解成若干子任务,并将它们分布在若干个站点机上同时执行。换言之,分布式操作系统能使多个站点协同完成同一个任务,而且这对用户是透明的。 网络服务器操作系统最初是Unix独领风骚。后来形成了Unix与Windows分庭抗礼的局面,但在高端应用领域Unix的地位不可动摇,Windows则主要占据着低端领域。进入90年代后,一种类Unix的操作系统Linux异军,突起,掀起了一股Linux“自由”风暴,在短时期内就与Unix和Windows形成了三足鼎立的局面。Linux不仅在低端领域广受欢迎,而且成功地立足于高端领域。据2012年的统计数据表明,Linux在高端领域的装机数量已经超越了Unix。 分布式操作系统比网络操作系统更为复杂,是操作系统研发的难点,目前还无商业性的分布式操作系统面市。 现代操作系统的另一个重要分支是为计算机嵌入式(embeded)系统开发的嵌入式操作系统。计算机嵌入式应用就是把微型机嵌入到一个对象体系(如数码相机、手机、家用电器、医疗设备、交通灯、航空电子设备和工厂控制设备等 )中,以实现对该对象的智能化控制。显,而易见,嵌入式系统在一定程度上改变了通用计算机系统的形态与功能。 嵌入式操作系统(EOS)的主要特点: 微型化。由于嵌入式系统硬件平台的局限性(内存小、不配置外存、微处理器字长短且运算速度有限等),在保证应用功能的前提下,微型化是设计EOS主要出发点。 可定制(可剪裁)。EOS运行的平台多种多样,其宿主对象更是五花八门,因而表现出专业化的特点。从而要求EOS的各个功能模块都作为可选件,以供用户根据实际需要选择。 实时性。EOS广泛应用于过程控制、数据采集、传输通信多媒体信息处理及关键要害领域等要求迅速响应的,场合,实时响应要求严格,故实时性是其主要特点之一。 可靠性。系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用(如军事、航空航天、交通)还要提供容错和防故障措施,进一步改进可靠性。 易移植性。为了适应多种多样的硬件平台,EOS应该可以在不做大量修改的情况下稳定地运行在不同平台上。,2.2 操作系统的分类,操作系统种类繁多,很难用单一标准统一分类。从不同的角度有各种分类法,例如: 根据所支持的用户数目,可分为单用户操作系统(如MSDOS、OS/2Windows)、多用户操作系统(如UNIX、Linux、MVS); 根据源码开放程度,可分为开源操作系统(如Linux、FreeBSD)和闭源操作系统(如Mac OS X、Windows ); 根据硬件结构,可分为单机操作系统、网络操作系统(Netware、Windows NT、OS/2warp)、多媒体操作系统(Amiga)、和分布式操作系统等; 根据操作系统的使用环境和对作业处理方式来考虑,,可分为批处理操作系统(如MVX、DOS/VSE)、分时操作系统(如Linux、UNIX、XENIX、MacOS X)、实时操作系统(如iEMX、VRTX、RT WINDOWS等); 根据存储器寻址的宽度可以将操作系统分为8位、16位、32位、64位、128位的操作系统。早期的操作系统一般只支持8位和16位存储器寻址宽度,现代的操作系统如Linux和Windows 7都支持32位和64位。 根据应用领域划分则是当前最为流行的操作系统分类法,即操作系统可分为四种:桌面操作系统、服务器操作系统、主机操作系统和嵌入式操作系统。,桌面操作系统 桌面操作系统主要用于个人计算机上。主要分为两大类:Windows操作系统和类Unix操作系统。 Windows操作系统系列包括有:Windows XP、Windows Vista、Windows 7、Windows 8等。 类Unix操作系统的代表有:MacOS X(基于BSD)和各种Linux版本(如Red Hat、Debian、Ubuntu、CentOS、openSUSE等); 服务器操作系统 服务器操作系统是为网络服务器计算机配置的操作系统,比如Web服务器、应用服务器和数据库服务器等。当前,服务器操作系统主要分为三大系列:,(1) Unix系列:SUN Solaris、IBM-AIX、HP-UX、FreeBSD等; (2) Linux系列:Red Hat Enterprise Linux、CentOS、Debian、Ubuntu等; (3) Windows系列:Windows Server 2003、Windows Server 2008、Windows Server 2008 R2等。 在高端应用领域,UNIX和Linux占据着统治地位。 主机操作系统 这里的主机是指功能和性能超强的大型机和巨型机,主要用于高端超高端应用领域(如大型金融证卷交易所、卫星地面控制站等)。,主机操作系统结合了批处理和分时功能,功能全面,性能超强。目前,主机操作系统主要有VMS、VS、MVS、OS/390及Unix等。主机操作系统的开发商主要是IBM,IBM在主机操作系统领域可以说是一家独大。 嵌入式操作系统 这是一个十分庞杂、品种繁多、竞争激烈,但又是特具发展潜力的领域。目前,EOS可分为通用型EOS和专用 EOS。通用型EOS可用于多种应用环境,例如,常见的Windows CE、VxWorks、CLinux等。专用型EOS则用于一些特定领域,例如,应用于手持数字设备(PDA)的Plam OS ,应用于智能手机的iPhone OS(基于MacOS X)、Android(基于Linux)、BlackBerry OS等。,2009年的全球互联网用户操作系统评价(部分),2.3 操作系统的未来发展趋势,随着计算机的不断普及,操作系统的功能会变得越来越复杂。在这种趋势下,操作系统的发展面临两个方向的选择:一是向微内核方向发展,二是向大而全的全方位方向发展。微内核操作系统虽然有不少人在研究,但在工业界获得认可的并不多。这方面的代表有MACH系统(卡内基梅隆大学)。对工业界来说,操作系统是向着多功能、全方位方向发展。Windows XP现在有4000万行代码,而某些Linux发行版已达2亿行代码。鉴于大而全的操作系统管理起来比较复杂,现代操作系统采取的都是模块化的内核结构方式,即一个小的内核加上模块化的外围管理功能。,随着人们对信息安全重视程度的不断提升,如何构建可靠、可用和安全的操作系统将成为一个十分重要的课题。而对可靠、可用和安全的追求无疑将使操作系统更为复杂,操作系统的规模也将不断增大。从初期UNIX的1400行代码到Linux的上亿行代码,这完全是一种爆炸性增长。而爆炸性增长的后果就是,没有什么人能够完全理解一个完整的操作系统,而这种状况又将限制操作系统的可靠、可用和安全性。当然了,人们可以采用各种软件工程的方法和手段来改善这种状况,但无论如何,持续的爆炸性增长恐怕是难以为继的。让我们拭目以待吧。,3 操作系统的基本概念,存储器架构与内存结构 中断 核心态与用户态 并发 操作系统的架构 操作系统的服务界面,3.1 存储器架构与内存结构,1. 存储器架构 现代计算机的存储器系统一般由三个层次构成,从大到小(容量),从慢到快(存取速度)分别为:辅存、主存和高速缓存(cache)。,Cache,主存,辅存,最小,最快,最贵,最大,最慢,最廉,图1-8 计算机的存储器架构, 辅存(外存) 用来永久存放大量信息的存储器,但CPU不能直接寻址。 存储介质:磁盘、光盘、磁带 存储容量:GB TB级-海量 存取速度:ms 级 主存 是直接与计算机总线连接的存储器,存放正在运行的程序和数据,是CPU可直接寻址的存储器。 存储介质:DRAM和ROM 存储容量:MB GB 存取速度:s 级 (当前DRAM速度已可达到100 s), Cache(高速缓存) Cache是CPU与主存之间的缓冲存储器,CPU可直接寻址,它存放当前被频繁访问的代码和数据,用于缓解CPU与主存的速度不匹配矛盾,提高CPU执行程序的速度。 存储介质:SRAM 存储容

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论