1、冯耀霖冯耀霖:5126课程说明课程说明 理论教学内容理论教学内容(讲义)(讲义)1操作系统导论操作系统导论8 2 进程与线程进程与线程8 3 进程通信进程通信6 4 进程同步进程同步8 5 死锁死锁2 6 实存管理实存管理4 7 虚存管理虚存管理8 8 文件管理文件管理10 9 设备管理设备管理6附:操作系统实验准备知识(自学)附:操作系统实验准备知识(自学)实验内容本课程的实验平台是操作系统。实验 1熟悉环境实验 2进程的创建与并发执行(一)实验 3进程的创建与并发执行(二)实验 4线程的创建与并发 实验 5信号与管道通信实验 6线程同步(一)实验 7线程同步(二)实验 8分区内存管理具体内
2、容见2013_操作系统原理实验是计算机系统的心脏,操作系统是计算机系是计算机系统的心脏,操作系统是计算机系统的大脑。半个多世纪以来,操作系统吸引了世统的大脑。半个多世纪以来,操作系统吸引了世界上一群最热情、最有智慧的杰出人才、集中了界上一群最热情、最有智慧的杰出人才、集中了人类现代创造性思维活动的精髓。操作系统是软人类现代创造性思维活动的精髓。操作系统是软件世界的万花筒、博览会,是软件王国中的一顶件世界的万花筒、博览会,是软件王国中的一顶璀璨的皇冠。能够有机会走进操作系统这个神奇、璀璨的皇冠。能够有机会走进操作系统这个神奇、复杂而又充满诱惑的大千世界,理解其中的基本复杂而又充满诱惑的大千世界,
3、理解其中的基本概念、结构和奥妙的管理机制是十分幸运的。概念、结构和奥妙的管理机制是十分幸运的。1 1操作系统导论操作系统导论操作系统原理操作系统原理冯耀霖冯耀霖内容内容什么是操作系统操作系统的形成与发展操作系统的基本概念1 什么是操作系统什么是操作系统操作系统定义操作系统定义操作系统的资源管理功能操作系统的资源管理功能为什么要学习操作系统为什么要学习操作系统1.1 操作系统的定义操作系统的定义操作系统操作系统()()操作系统这个术语听上去很稀松平常,并不给人任何操作系统这个术语听上去很稀松平常,并不给人任何兴奋的感觉,甚至有点兴奋的感觉,甚至有点“土土”,原因在于中文的,原因在于中文的“操作操
4、作”这个词。提到操作员(工),通常让人想起操作机床、起这个词。提到操作员(工),通常让人想起操作机床、起重机等各种设备或工具的穿着油腻工作服的蓝领工人(计重机等各种设备或工具的穿着油腻工作服的蓝领工人(计算机操作员充其量也就是蓝领中的白领),自然让人兴奋算机操作员充其量也就是蓝领中的白领),自然让人兴奋不起来。将不起来。将 翻译为中文的翻译为中文的“操作操作”,是因为最初的译者,是因为最初的译者没有真正理解英文没有真正理解英文 所蕴含的精髓。所蕴含的精髓。?图图1-1 对的误读对的误读那么,英文中的那么,英文中的 实际意味着什么?实际意味着什么?我们先看两个有关的英文术语。我们先看两个有关的英
5、文术语。:外科主刀大夫。在整个手术过程中,主刀大夫具:外科主刀大夫。在整个手术过程中,主刀大夫具有至高无上的权威:他说要打麻药,麻醉师就要赶紧打麻有至高无上的权威:他说要打麻药,麻醉师就要赶紧打麻药;他说需要手术钳,助理大夫就赶忙递给他手术钳;他药;他说需要手术钳,助理大夫就赶忙递给他手术钳;他说需要止血,护士就得马上拿止血药棉来止血。整个手术说需要止血,护士就得马上拿止血药棉来止血。整个手术最关键的部分:切开皮肤、拿掉器官、安装移植器官等均最关键的部分:切开皮肤、拿掉器官、安装移植器官等均由主刀大夫完成。当然,主刀大夫有时也会将某些任务,由主刀大夫完成。当然,主刀大夫有时也会将某些任务,如缝
6、合创口交给助理大夫来做,但整个手术的过程皆由其如缝合创口交给助理大夫来做,但整个手术的过程皆由其主控。一句话,主控。一句话,就是掌控整个手术过程、具有精湛技术就是掌控整个手术过程、具有精湛技术和敏锐判断力的医师。和敏锐判断力的医师。:操刀手,操控者。是操控掌控事情的人。:操刀手,操控者。是操控掌控事情的人。从从 和和 这两个术语的语义我们可理解具有这两个术语的语义我们可理解具有“掌控掌控”的的含义。因此,应该把含义。因此,应该把 理解为:理解为:掌控局势的一种系统掌控局势的一种系统这个术语是专为计算机系统设计的(),指的是计算机系这个术语是专为计算机系统设计的(),指的是计算机系统里的一切事情
7、均由来掌控。统里的一切事情均由来掌控。正如任何一种有效的组织或系统都会有一个核心机构正如任何一种有效的组织或系统都会有一个核心机构存在,该核心管理着该组织或系统的可用资源,掌控着系存在,该核心管理着该组织或系统的可用资源,掌控着系统的正常运转。就是计算机系统中的核心机构,它是计算统的正常运转。就是计算机系统中的核心机构,它是计算机软件精英们设计的一种大型和极其复杂的软件系统,用机软件精英们设计的一种大型和极其复杂的软件系统,用于代替人并以人的思维方式来自动管理计算机上的于代替人并以人的思维方式来自动管理计算机上的所有软、硬资源,掌控在计算机系统上可能发生的一切事所有软、硬资源,掌控在计算机系统
8、上可能发生的一切事情。情。那么,那么,操作系统到底是什么?操作系统到底是什么?操作系统到底掌控什么事情?操作系统到底掌控什么事情?操作系统是一种大型系统软件操作系统是一种大型系统软件计算机软件有应用软件与系统软件之分。计算机软件有应用软件与系统软件之分。应用软件是计算机用户为了应用计算机解决某一特定应用软件是计算机用户为了应用计算机解决某一特定问题而开发的软件。问题而开发的软件。系统软件则是与具体应用逻辑无关的软件,是应用软系统软件则是与具体应用逻辑无关的软件,是应用软件的开发和运行平台。系统软件一般分为四类:件的开发和运行平台。系统软件一般分为四类:操作系操作系统;统;语言处理系统(编译程序
9、、解释程序);语言处理系统(编译程序、解释程序);软件开软件开发实用工具发实用工具(编辑、调试、诊断检测、等程序);(编辑、调试、诊断检测、等程序);数数据库管理系统()。其中,操作系统也称系统管理软件,据库管理系统()。其中,操作系统也称系统管理软件,其他则为系统应用软件。其他则为系统应用软件。操作系统是规模最大的系统软件,如操作系统是规模最大的系统软件,如 4000万行源万行源代码,而一些系统的规模则更大,已达到上亿行源代码。代码,而一些系统的规模则更大,已达到上亿行源代码。1.操作系统到底是什操作系统到底是什么?么??操作系统是系统软件中的核心操作系统是系统软件中的核心图图1-2是一个简
10、略的计算机系统视图。从中可清楚地是一个简略的计算机系统视图。从中可清楚地看到计算机系统的层次结构。看到计算机系统的层次结构。硬件是操作系统存在的物质基础。硬件向软件提供的硬件是操作系统存在的物质基础。硬件向软件提供的是物理机器界面(),即机器的指令系统。是物理机器界面(),即机器的指令系统。操作系统是加在操作系统是加在“裸机裸机”(纯硬件)上的第一层软件(纯硬件)上的第一层软件(最底层软件),是直接建筑在硬件上的软件,它使用机(最底层软件),是直接建筑在硬件上的软件,它使用机器指令实现对硬件的管理和控制。操作系统常驻内存,它器指令实现对硬件的管理和控制。操作系统常驻内存,它覆盖了所有的硬件特性
11、和功能,通过各种抽象,构建了一覆盖了所有的硬件特性和功能,通过各种抽象,构建了一个功能远强于裸机且易用的个功能远强于裸机且易用的“操作系统虚拟机操作系统虚拟机”(如虚拟(如虚拟机、虚拟机)。操作系统向上层提供了两种界面:用户操机、虚拟机)。操作系统向上层提供了两种界面:用户操作界面(操作命令)和编程界面作界面(操作命令)和编程界面硬件硬件操作系统操作系统系统应用软件系统应用软件应用软件应用软件用户用户物理机器界面物理机器界面编程界面编程界面用户操作界面用户操作界面图图1-2 计算机系统视图计算机系统视图计算机系统计算机系统(系统调用)。它们向上层掩盖了所有的硬件特性细节。(系统调用)。它们向上
12、层掩盖了所有的硬件特性细节。系统应用软件处于操作系统的上层,它们不是常驻内系统应用软件处于操作系统的上层,它们不是常驻内存的,而是存放在磁盘等外存设备上,仅当需要运行这些存的,而是存放在磁盘等外存设备上,仅当需要运行这些软件时,才把它们加载到内存,并在操作系统的支持下工软件时,才把它们加载到内存,并在操作系统的支持下工作,通过系统调用获取操作系统提供的各种服务。系统应作,通过系统调用获取操作系统提供的各种服务。系统应用软件有效地扩充了计算机系统的功能,它与操作系统一用软件有效地扩充了计算机系统的功能,它与操作系统一起组成系统软件整体,起到了简化程序设计、扩大计算机起组成系统软件整体,起到了简化
13、程序设计、扩大计算机处理能力、提高计算机使用效率、充分发挥各种资源功能处理能力、提高计算机使用效率、充分发挥各种资源功能的作用。因此,可以把系统应用软件看作是操作系统的延的作用。因此,可以把系统应用软件看作是操作系统的延伸,甚至可把它们看作是操作系统的一部分(如发行版)。伸,甚至可把它们看作是操作系统的一部分(如发行版)。但是系统应用软件与操作系统的不同之处在于,其运行环但是系统应用软件与操作系统的不同之处在于,其运行环境与普通应用软件一样,它们仍然需要通过操作境与普通应用软件一样,它们仍然需要通过操作系统才能使用和控制系统资源。系统才能使用和控制系统资源。计算机系统层次结构的最上层是应用软件
14、。它们在系计算机系统层次结构的最上层是应用软件。它们在系统软件的支持下运行,通过系统调用获取各种系统软件的统软件的支持下运行,通过系统调用获取各种系统软件的服务。服务。用户在终端上通过输入各种操作命令(字符命令或图用户在终端上通过输入各种操作命令(字符命令或图形命令)使用操作系统虚拟机。形命令)使用操作系统虚拟机。可见,有了操作系统,用户和所有非操作系统程序不可见,有了操作系统,用户和所有非操作系统程序不再直接面对物理机器界面,而是面对操作系统提供的掩盖再直接面对物理机器界面,而是面对操作系统提供的掩盖了所有硬件特性细节的虚拟机界面,通过这种虚拟机界面了所有硬件特性细节的虚拟机界面,通过这种虚
15、拟机界面方便地使用功能被大大强化了的操作系统虚拟机。方便地使用功能被大大强化了的操作系统虚拟机。例如,如果用户在裸机上直接编程是很困难的,因为例如,如果用户在裸机上直接编程是很困难的,因为各种数据转移都需要用户自己来控制,对不同设备要用不各种数据转移都需要用户自己来控制,对不同设备要用不同命令来驱动,而这对一般人来说是很难胜任的。操作系同命令来驱动,而这对一般人来说是很难胜任的。操作系统将这些工作从用户手中接过来,从而让用户感觉到编程统将这些工作从用户手中接过来,从而让用户感觉到编程是一件容易的事(相对来说,而对有些人来说编程永远是是一件容易的事(相对来说,而对有些人来说编程永远是很难的)。很
16、难的)。又如,操作系统通过进程抽象让计算机的每一个用户又如,操作系统通过进程抽象让计算机的每一个用户感觉到有一台自己独享的;通过虚拟内存的抽象,让用户感觉到有一台自己独享的;通过虚拟内存的抽象,让用户感觉到物理内存空间具有无限扩张性。感觉到物理内存空间具有无限扩张性。总之,通过操作系统对裸机的各种抽象,可魔幻般地总之,通过操作系统对裸机的各种抽象,可魔幻般地实现:少变多、难变易、弱变强。实现:少变多、难变易、弱变强。操作系统是最基本的系统软件操作系统是最基本的系统软件 任何现代计算机都必须配置和安装操作系统。在一台任何现代计算机都必须配置和安装操作系统。在一台计算机上你可以不安装某些系统应用软
17、件,如语言处理系计算机上你可以不安装某些系统应用软件,如语言处理系统或,但操作系统是必须安装的,否则,计算机就根本无统或,但操作系统是必须安装的,否则,计算机就根本无法开始工作。计算机加电启动时,除了必要的硬件检测,法开始工作。计算机加电启动时,除了必要的硬件检测,首先将操作系统加载到内存并启动,此后,计算机系统的首先将操作系统加载到内存并启动,此后,计算机系统的一切工作都在操作系统的掌控下进行。一切工作都在操作系统的掌控下进行。作为最基本的系统软件,操作系统为所有的其它软件作为最基本的系统软件,操作系统为所有的其它软件(包括系统应用软件)提供了一个开发和运行的基础平台,(包括系统应用软件)提
18、供了一个开发和运行的基础平台,即所有的其他软件都需要在操作系统这个平台上进行开发,即所有的其他软件都需要在操作系统这个平台上进行开发,并在操作系统的掌控下运行,通过操作系统获取所需的计并在操作系统的掌控下运行,通过操作系统获取所需的计算机资源。没有操作系统任何软件都无法运行。算机资源。没有操作系统任何软件都无法运行。什么是抽象?所谓抽象(),就是根本上存在但现实中不存在的东西。抽象来源于具体,但又超越具体。例如绘画史上有抽象派,抽象画所表现的就是现实中不存在的东西,但这些东西确实又来源于现实。抽象画抽象画01抽象画抽象画02:毕加索:毕加索 格尔尼卡格尔尼卡 2.操作系统到底掌控什么事情?操作
19、系统到底掌控什么事情?当然是计算机上或计算机里发生的一切事情。当然是计算机上或计算机里发生的一切事情。最原始的计算机并没有操作系统,而是直接由人来掌最原始的计算机并没有操作系统,而是直接由人来掌控事情。但是随着计算机复杂性的增长,人们已经不能直控事情。但是随着计算机复杂性的增长,人们已经不能直接掌控计算机了,于是人们编写出操作系统这个软件来掌接掌控计算机了,于是人们编写出操作系统这个软件来掌控计算机,将人类从日益复杂的任务中解脱出来。这个控计算机,将人类从日益复杂的任务中解脱出来。这个“掌控掌控”有着多层深远的意义。有着多层深远的意义。首先,由于计算机的功能和复杂性不断发生变化(趋首先,由于计
20、算机的功能和复杂性不断发生变化(趋向更加复杂),操作系统所掌控的事情也就越来越多,越向更加复杂),操作系统所掌控的事情也就越来越多,越来越复杂。同时,操作系统本身能够使用的资源也不断增来越复杂。同时,操作系统本身能够使用的资源也不断增多(如内存容量)。多(如内存容量)。?其次,既然操作系统是专门掌控计算机的,那么计算其次,既然操作系统是专门掌控计算机的,那么计算机上发生的所有事情自然需要操作系统的知晓和许可,未机上发生的所有事情自然需要操作系统的知晓和许可,未经操作系统同意的任何事情均视为非法,包括用户和应用经操作系统同意的任何事情均视为非法,包括用户和应用程序中的误操作,以及病毒和入侵攻击试
21、图运作的事情。程序中的误操作,以及病毒和入侵攻击试图运作的事情。操作系统设计人员当然要确保计算机不发生任何他们不知操作系统设计人员当然要确保计算机不发生任何他们不知情或不同意的事情。虽然,操作系统是由级软件精英们设情或不同意的事情。虽然,操作系统是由级软件精英们设计的,但是人的能力毕竟是有限的,人的思维也是有缺陷计的,但是人的能力毕竟是有限的,人的思维也是有缺陷的,只要是由人设计出的系统自然不会十全十美,缺陷是的,只要是由人设计出的系统自然不会十全十美,缺陷是难免的,这就给了攻击者可乘之机。操作系统设计人员与难免的,这就给了攻击者可乘之机。操作系统设计人员与攻击者之间的博弈是当前驱动操作系统不
22、断改善的一个重攻击者之间的博弈是当前驱动操作系统不断改善的一个重要动力。要动力。再次,掌控事情的水平有高低之分,有效率不同之分再次,掌控事情的水平有高低之分,有效率不同之分,就像外科主刀大夫之间也有水平高低之分。为了更好地,就像外科主刀大夫之间也有水平高低之分。为了更好地掌控事情,更好地满足人们永不满足的各种越来越苛刻的掌控事情,更好地满足人们永不满足的各种越来越苛刻的需求,操作系统自然需要不断改善,且将一直继续下去。需求,操作系统自然需要不断改善,且将一直继续下去。归结起来,操作系统掌控的事情主要有两大类:资源归结起来,操作系统掌控的事情主要有两大类:资源管理和安全性管理。管理和安全性管理。
23、操作系统管理计算机中的所有资源,包括硬件资源操作系统管理计算机中的所有资源,包括硬件资源(设备资源)和软件资源(信息资源)。硬件资源可大致(设备资源)和软件资源(信息资源)。硬件资源可大致分为四类:、内存、外存及设备。操作系统通过各种策略分为四类:、内存、外存及设备。操作系统通过各种策略提高硬件资源的工作效率和利用率,改善和优化计算机的提高硬件资源的工作效率和利用率,改善和优化计算机的功能和性能。软件资源就是存储在计算机内的各种文件,功能和性能。软件资源就是存储在计算机内的各种文件,操作系统要对文件实施有效的保护,提供快速的文件查找,操作系统要对文件实施有效的保护,提供快速的文件查找,通过共享
24、提高文件资源的利用率。通过共享提高文件资源的利用率。安全性管理功能主要解决两个问题:安全性管理功能主要解决两个问题:(1)确保操作系统自身的正常运转,即确保操作系统确保操作系统自身的正常运转,即确保操作系统自己不能出现崩溃性故障,这是计算机系统能正常工作的自己不能出现崩溃性故障,这是计算机系统能正常工作的基础;基础;(2)防止非法操作和非法入侵,主要是防止病毒和入防止非法操作和非法入侵,主要是防止病毒和入侵攻击。侵攻击。其中的第二个问题是是安全性管理需要解决的主要问其中的第二个问题是是安全性管理需要解决的主要问题。随着计算机应用的越来越广泛和深入,操作系统需要题。随着计算机应用的越来越广泛和深
25、入,操作系统需要管理的资源也越来越多且越来越复杂,故对操作系统的要管理的资源也越来越多且越来越复杂,故对操作系统的要求也越来越高。由于操作系统存在缺陷是难免的,这就给求也越来越高。由于操作系统存在缺陷是难免的,这就给了攻击者可乘之机。针对对操作系统的攻击,操作系统设了攻击者可乘之机。针对对操作系统的攻击,操作系统设计人员在不断改进操作系统的安全性,这种操作系统设计计人员在不断改进操作系统的安全性,这种操作系统设计人员与攻击者之间的博弈,使得操作系统安全水平和攻击人员与攻击者之间的博弈,使得操作系统安全水平和攻击水平不断交替上升,永不会停止。如今安全性管理越来越水平不断交替上升,永不会停止。如今
26、安全性管理越来越受到操作系统设计人员的重视,其重要性越来越突出。受到操作系统设计人员的重视,其重要性越来越突出。如果我们把整个计算机系统比拟成一个国家的话,操如果我们把整个计算机系统比拟成一个国家的话,操作系统就相当于是管理整个国家的政府,是国家最高的政作系统就相当于是管理整个国家的政府,是国家最高的政务管理机构。务管理机构。好了,至此我们可以给出操作系统的一个定义了:好了,至此我们可以给出操作系统的一个定义了:操作系统是最关键的系统软件,它掌控计算机上的操作系统是最关键的系统软件,它掌控计算机上的一切事情,包括:管理所有的计算机资源,维持计算机系一切事情,包括:管理所有的计算机资源,维持计算
27、机系统的安全及有序运转,并为用户使用计算机提供方便且有统的安全及有序运转,并为用户使用计算机提供方便且有效的环境。效的环境。1.2 操作系统的资源管理功能操作系统的资源管理功能资源管理是操作系统的主要功能,它遵循着一切人类资源管理的基本目的,即如何有效地发掘资源、监控资源、分配资源和回收资源,而其中的核心是分配资源。公平和有效,是操作系统资源管理的基本原则。公平指的是每个用户进程(进展运行中的程序)都有享有系统资源的权利(就像“天赋人权”),系统要让各个用户进程感到某种平等,即系统不能“无限”延长对任一进程的资源请求的响应时间。当然真正的公平是没有的事,这很像人类生活的现实,不过追求公平乃是人
28、类的本能,是观。只有公平了,才能谈得上公正与和谐。在虚拟世界里尽可能公平一点还是非常应该的,至少应该是操作系统设计时的不懈追求。有效就是指不能浪费系统资源,要使资源尽可能被充有效就是指不能浪费系统资源,要使资源尽可能被充分地利用,发挥出每个资源的最大效能。有效也为公平提分地利用,发挥出每个资源的最大效能。有效也为公平提供了必要的支持。这同样也像人类生活的现实,一个社会供了必要的支持。这同样也像人类生活的现实,一个社会国家如果存在着大量的资源浪费,而浪费必定和腐败联国家如果存在着大量的资源浪费,而浪费必定和腐败联系在一起,一个腐败成风的社会能是一个公平、公正的社系在一起,一个腐败成风的社会能是一
29、个公平、公正的社会吗?会吗?总之,公平与效率是操作系统资源管理中永恒的主题。总之,公平与效率是操作系统资源管理中永恒的主题。到底是效率重要?还是公平更重要?天平的不同倾斜将引到底是效率重要?还是公平更重要?天平的不同倾斜将引出不同的管理模式。出不同的管理模式。操作系统的资源管理功能一般分为四个子系统:进程操作系统的资源管理功能一般分为四个子系统:进程管理、内存管理、外存管理及设备管理。管理、内存管理、外存管理及设备管理。1.进程管理进程管理进程()可简单地理解为进程()可简单地理解为“运行中的程序运行中的程序”,其实质是操作系统对的抽,其实质是操作系统对的抽象。进程管理的主要目的有三个:第一是
30、公平分配,即每个进程都有机会使用象。进程管理的主要目的有三个:第一是公平分配,即每个进程都有机会使用到;第二是非阻塞,即任何进程不能无休止地阻挠其他进程的正常推进,如果到;第二是非阻塞,即任何进程不能无休止地阻挠其他进程的正常推进,如果一个进程在执行过程中需要或者因别的什么事情而发生阻塞,这个阻塞不能妨一个进程在执行过程中需要或者因别的什么事情而发生阻塞,这个阻塞不能妨碍无关进程继续前进,就像人类世界,缺了谁地球都照样转;第三是优先级调碍无关进程继续前进,就像人类世界,缺了谁地球都照样转;第三是优先级调度,在人类生活中人的地位不是完全一样的,地位高的就比地位低的具有更高度,在人类生活中人的地位
31、不是完全一样的,地位高的就比地位低的具有更高的资源获取权及占有权,设计者把人类生活中的这种关系搬到操作系统里面,的资源获取权及占有权,设计者把人类生活中的这种关系搬到操作系统里面,就有了优先级的概念,即赋予某些进程有较高的优先级,如果优先级高的进程就有了优先级的概念,即赋予某些进程有较高的优先级,如果优先级高的进程需要执行,则优先级低的进程就要让出。需要执行,则优先级低的进程就要让出。2.内存管理内存管理内存管理一般是管理由主存和缓存所形成的内存架构。为了有力地支持多进程并发以及应用程序不断增大的需求,设计者发明了虚拟内存的概念,即通过软件技术将物理内存逻辑扩充到磁盘上,这样就极大地增大了物理
32、内存空间。因此,现代操作系统管理的实际上是由主存、缓存及磁盘所形成的虚拟内存架构。内存管理要解决的问题之一是如何给不同的用户进程分配内存空间;要解决的另一个问题是怎样让很多用户进程共用同一个物理内存,这就需要对物理内存进行分割和保护,每个进程占用一个受保护的内存空间,一个进程不能访问另一个进程所占用的内存空间,即进程不能越界。3.外存管理外存管理外存管理也称文件系统管理或文件管理。文件系统是操作系统对外存介质(磁盘、磁带、光盘)的抽象。文件则是对外存空间单位的抽象。外存管理要解决的的问题之一是如何分配外存空间给不同的进程。要解决的另一个问题是怎样将外存变成一个很容易使用的存储介质提供给用户使用
33、,使得用户在访问外存时无需了解外存设备的物理属性或程序和数据在外存空间上的精确位置,例如磁盘上的磁道、磁柱、扇区等。磁盘是最重要的外存介质,是外存管理的重点。4.设备管理设备管理设备管理就是管理设备,其主要目的有三个:设备管理就是管理设备,其主要目的有三个:其一,解决如何给不同的进程分配设备;其一,解决如何给不同的进程分配设备;其二,屏蔽不同设备的差异性,即使得进程可以用同其二,屏蔽不同设备的差异性,即使得进程可以用同样的方式访问不同的设备,从而降低编程的难度;样的方式访问不同的设备,从而降低编程的难度;其三,提供并发访问,即将那些看上去并不具备共享其三,提供并发访问,即将那些看上去并不具备共
34、享特性的设备(如打印机)变得可以共享。特性的设备(如打印机)变得可以共享。1.3 为什么要学习操作系统为什么要学习操作系统我们已明确了的重要性,但仅仅因为很重要就一定要我们已明确了的重要性,但仅仅因为很重要就一定要学习它吗?世界上重要的事情多去了,难道我们都要学习学习它吗?世界上重要的事情多去了,难道我们都要学习吗?即使是计算机专业的学生,不学也照样可以编程写软吗?即使是计算机专业的学生,不学也照样可以编程写软件。那我们为什么要学呢?当然我们可以有一千个理由,件。那我们为什么要学呢?当然我们可以有一千个理由,在这里仅提出两个。在这里仅提出两个。1)都是由软件界中的精英们开发的,它的优秀设计都是
35、由软件界中的精英们开发的,它的优秀设计和经典思路是计算机科学知识的荟精集萃,会给我们以激和经典思路是计算机科学知识的荟精集萃,会给我们以激浊扬清的思考,对的掌握程度,决定着计算机专业学习者浊扬清的思考,对的掌握程度,决定着计算机专业学习者的发展水平及方向。的发展水平及方向。举例说:举例说:的功能在很多的功能在很多 领域都使用。如果你做并发程序的领域都使用。如果你做并发程序的开发开发、分布式系统和网络、分布式系统和网络,你会发现,这些领域大,你会发现,这些领域大量使用了的概念和技术。如果你学好了,你就可以对你要量使用了的概念和技术。如果你学好了,你就可以对你要做的事情更加有信心。做的事情更加有信
36、心。的技巧也在很多领域使用,如抽象、缓存、并发的技巧也在很多领域使用,如抽象、缓存、并发等。如数据结构和程序设计就大量使用了抽象,记得抽象等。如数据结构和程序设计就大量使用了抽象,记得抽象数据类型和抽象类吗?很多地方都用缓存,你做要不要用数据类型和抽象类吗?很多地方都用缓存,你做要不要用缓存呢?这些你都得做。如果学好了,你就掌握了这些内缓存呢?这些你都得做。如果学好了,你就掌握了这些内容,触类旁通,你学习别的东西时就会容易多了。容,触类旁通,你学习别的东西时就会容易多了。2)更重要的是真的很有意思。对于一个计算机专业更重要的是真的很有意思。对于一个计算机专业的人来说,难道你不想知道自己写的程序
37、到底是如何在计的人来说,难道你不想知道自己写的程序到底是如何在计算机上运行的吗?算机上运行的吗?很多人买车后第一件事是什么?打开前盖。打开前盖很多人买车后第一件事是什么?打开前盖。打开前盖看到的是什么呢?马达、变速箱。为什么第一件事要打开看到的是什么呢?马达、变速箱。为什么第一件事要打开前盖呢?因为好奇这辆车是怎么开动的。前盖呢?因为好奇这辆车是怎么开动的。那么,对于一个计算机特别是软件专业的人来说,有那么,对于一个计算机特别是软件专业的人来说,有没有在看到一台计算机的时候,想过为什么计算机能进行没有在看到一台计算机的时候,想过为什么计算机能进行计算?为什么计算机系统能有条不紊的运转?多数人恐
38、怕计算?为什么计算机系统能有条不紊的运转?多数人恐怕没有打开过计算机外壳。不过,没有打开过也不用遗憾,没有打开过计算机外壳。不过,没有打开过也不用遗憾,因为即使你把计算机后盖打开,还是不能明白计算机是怎因为即使你把计算机后盖打开,还是不能明白计算机是怎么运转的,此时只看到一堆硬件:主板、芯片、布线等,么运转的,此时只看到一堆硬件:主板、芯片、布线等,而这些硬件并不会告诉你太多有关计算机运转的信息。如而这些硬件并不会告诉你太多有关计算机运转的信息。如果真的想知道计算机系统到底是怎么运转的,你就得学习。果真的想知道计算机系统到底是怎么运转的,你就得学习。虽然学习很有趣,但并不是所有人都有这样的感觉
39、,虽然学习很有趣,但并不是所有人都有这样的感觉,因为的特点是概念多、抽象和涉及面广,而从整体实现上因为的特点是概念多、抽象和涉及面广,而从整体实现上看,其思想和技术又往往令看,其思想和技术又往往令“我们我们”难于理解。历史证明,难于理解。历史证明,对很多人来说学习是一件很痛苦的事情。不过本人希望我对很多人来说学习是一件很痛苦的事情。不过本人希望我们在一起学习这门课程对大家来说是一件乐事,难道窥探们在一起学习这门课程对大家来说是一件乐事,难道窥探计算机系统的奥秘不是一件激动人心的事吗?计算机系统的奥秘不是一件激动人心的事吗?2 操作系统的形成与发展操作系统的形成与发展操作系统的发展历史操作系统的
40、发展历史 操作系统的分类操作系统的分类 操作系统的未来发展趋势操作系统的未来发展趋势2.1 操作系统的发展历史操作系统的发展历史 操作系统的形成与发展由两个基本因素驱动:操作系统的形成与发展由两个基本因素驱动:硬件成本的不断下降;硬件成本的不断下降;计算机的功能和复杂性不断提升。计算机的功能和复杂性不断提升。硬件成本的不断降低,就以硬盘为例,制造的第一张硬件成本的不断降低,就以硬盘为例,制造的第一张硬磁盘直径达硬磁盘直径达2米,造价米,造价100多万美元,而容量只有多万美元,而容量只有1;而现在一个容量而现在一个容量100的硬盘成本只有几十美元。当然,过的硬盘成本只有几十美元。当然,过去的硬盘
41、和今天的硬盘的制造技术完全不同,早期硬盘的去的硬盘和今天的硬盘的制造技术完全不同,早期硬盘的质量坚挺,可以当作咖啡桌来使用,而现在的硬盘片根本质量坚挺,可以当作咖啡桌来使用,而现在的硬盘片根本不能承受重物。不能承受重物。计算机硬件及其组成的发展速度从一开始就很惊人。计算机硬件及其组成的发展速度从一开始就很惊人。最初,计算机的组件虽然巨大,但数量少,功能简单,现最初,计算机的组件虽然巨大,但数量少,功能简单,现在,一台计算机里包括的元件数量实在是太多了。在,一台计算机里包括的元件数量实在是太多了。硬件成本的下降和计算机复杂性的提高推动了操作系硬件成本的下降和计算机复杂性的提高推动了操作系统的演变
42、。成本降低意味着同样的价格可以买到更为先进统的演变。成本降低意味着同样的价格可以买到更为先进的计算机。而计算机复杂性的提高自然需要操作系统的能的计算机。而计算机复杂性的提高自然需要操作系统的能力也得到提高。就是这些变化使得操作系统从最初的仅仅力也得到提高。就是这些变化使得操作系统从最初的仅仅只有几百或几千行源代码发展到今天的多达几千万行到上只有几百或几千行源代码发展到今天的多达几千万行到上亿行源代码。亿行源代码。操作系统之所以越来越复杂的基本因素是因为硬件质操作系统之所以越来越复杂的基本因素是因为硬件质量和数量的不断提升使得操作系统管理的东西增多,而且量和数量的不断提升使得操作系统管理的东西增
43、多,而且人类永不满足的各种越来越苛刻的要求也使得操作系统的人类永不满足的各种越来越苛刻的要求也使得操作系统的复杂性不断增加。复杂性不断增加。除了上述两个基本驱动因素,在操作系统的发展过程除了上述两个基本驱动因素,在操作系统的发展过程中,中,效率和公平始终是操作系统设计人员追求的关键目效率和公平始终是操作系统设计人员追求的关键目标,它们是导致操作系统越来越复杂的重要因素。标,它们是导致操作系统越来越复杂的重要因素。另外,还有一个附加因素影响着操作系统的发展,另外,还有一个附加因素影响着操作系统的发展,这就是操作系统和攻击者之间的博弈。这个世界上总有些这就是操作系统和攻击者之间的博弈。这个世界上总
44、有些人想利用计算机的缺陷来进行各种损人利己或损人又不利人想利用计算机的缺陷来进行各种损人利己或损人又不利己的活动。操作系统在最初设计时就根本没有想到会有人己的活动。操作系统在最初设计时就根本没有想到会有人从事破坏活动。大概因为早期的计算机工作者认为到达能从事破坏活动。大概因为早期的计算机工作者认为到达能够使用计算机的水平的人都是好人,是君子,是绅士,无够使用计算机的水平的人都是好人,是君子,是绅士,无需设计任何安全机制。这样,在后来发现有人试图利用计需设计任何安全机制。这样,在后来发现有人试图利用计算机进行不良操作时,就迫不得已修改操作系统,使其具算机进行不良操作时,就迫不得已修改操作系统,使
45、其具有安全上的防范功能。每当操作系统改进了安全性,攻击有安全上的防范功能。每当操作系统改进了安全性,攻击者也会改良他们的攻击手段,这样循环往复,就造成操作者也会改良他们的攻击手段,这样循环往复,就造成操作系统安全水平和攻击水平不断交替上升的历史。系统安全水平和攻击水平不断交替上升的历史。第零代:操作系统(第零代:操作系统(2020世纪世纪4040年代)年代)(,单操作员单控制台)控制方式是最原始的计算机单操作员单控制台)控制方式是最原始的计算机控制方式,用于第一代电子计算机,如。当时并没有操作控制方式,用于第一代电子计算机,如。当时并没有操作系统的整体概念,人们能够想到的最直观的控制计算机的系
46、统的整体概念,人们能够想到的最直观的控制计算机的方式,就是提供一些标准的人机交互命令供用户(当时的方式,就是提供一些标准的人机交互命令供用户(当时的用户既是编程者也是操作员)使用,这些标准命令的集合用户既是编程者也是操作员)使用,这些标准命令的集合就构成了标准函数库。这可认为是操作系统的最原始形式。就构成了标准函数库。这可认为是操作系统的最原始形式。的设计目的就是满足基本的功能,并提供人机交互。的设计目的就是满足基本的功能,并提供人机交互。在下,任何时候只能做一件事。即不支持并发和多道程序在下,任何时候只能做一件事。即不支持并发和多道程序运行。本身只是一组标准库函数而已,并不自我运行,而运行。
47、本身只是一组标准库函数而已,并不自我运行,而是等待响应用户输入的命令,然后加载相应的库函数来执是等待响应用户输入的命令,然后加载相应的库函数来执行。用户想使用什么服务,就输入代表行。用户想使用什么服务,就输入代表该服务的库函数名即可。这种控制方式的资源利用率很低:该服务的库函数名即可。这种控制方式的资源利用率很低:用户输入一个命令就执行一个库函数,拨一下动一下;当用户输入一个命令就执行一个库函数,拨一下动一下;当用户在思考时或进行输入输出时,则静静地等待。当然了,用户在思考时或进行输入输出时,则静静地等待。当然了,从人的角度来看,效率并不低,你输入什么,计算机就立从人的角度来看,效率并不低,你
48、输入什么,计算机就立即执行什么。但从机器的角度考虑,因为时刻都等着人相即执行什么。但从机器的角度考虑,因为时刻都等着人相对很慢的动作,效率就太低了。对很慢的动作,效率就太低了。由于这个时代的计算机很稀少,整个世界也只有几台,由于这个时代的计算机很稀少,整个世界也只有几台,而人却不是,提高计算机的利用率就变得十分重要。而人却不是,提高计算机的利用率就变得十分重要。第一代:批处理操作系统(第一代:批处理操作系统(2020世纪世纪5050年代)年代)为了提高的效率,人们提出了为了提高的效率,人们提出了“批处理批处理”的概念。在的概念。在仔细考察了后,人们发现,效率之所以低下,是因为计算仔细考察了后,
49、人们发现,效率之所以低下,是因为计算机总是在等待人的下一步动作,而人的动作总是很慢。因机总是在等待人的下一步动作,而人的动作总是很慢。因此,人们觉得如果取消人的因素,让所有的用户先想好自此,人们觉得如果取消人的因素,让所有的用户先想好自己要运行的命令,列成一个清单(称作业说明书),再把己要运行的命令,列成一个清单(称作业说明书),再把要运行的程序、数据连同作业说明书一起制作(穿孔)在要运行的程序、数据连同作业说明书一起制作(穿孔)在纸带卡片上,然后将制作好的纸带卡片交给计算机管纸带卡片上,然后将制作好的纸带卡片交给计算机管理员来一批一批地处理,效率不就提高了吗?这就形成了理员来一批一批地处理,
50、效率不就提高了吗?这就形成了批处理操作系统。批处理操作系统。批处理针对的是第二代通用计算机,如的批处理针对的是第二代通用计算机,如的1401和和7094等,通过取消用户与计算机的直接人机交互达到和等,通过取消用户与计算机的直接人机交互达到和输入输出设备利用率的改善。输入输出设备利用率的改善。批处理的过程是:用户将自己的作业(程序数据作业说明书)制作在穿孔卡片纸带上,交给计算机管理员;管理员在收到一定数量的用户作业后,将卡片纸带上的作业通过输入输出卫星机1401读入,并写入到磁带(输入磁带)上,这样每盘输入磁带通常会含有多个用户作业;然后,计算机操作员将这盘磁带装入到作为主机的7094上,由驻留