1、操作系统概述
1.1操作系统与计算机系统
现代计算机系统由硬件和软件两部分组成,是硬件和软件相互交织形成的集合体,构成一个解决计算问题的工具。硬件是软件运行的物质基础。软件能够充分发挥硬件潜能并扩充功能,完成各种应用任务,两者相辅相成,缺一不可。
操作系统在计算机系统中的地位:
问:操作系统如何管理资源?
1.2 操作系统资源管理技术
- OS 的主要任务之一是对资源进行管理,有序控制硬软件资源的分配、使用和回收,是资源能够共享。
- 为达到资源共享的目的。OS主要使用三种资源管理技术:
- 资源复用
- 资源虚拟
- 资源抽象
1.2.1 资源复用
多道程序设计是现代操作系统所采用的基本技术。系统中相应地有多个进程竞争使用资源,由于计算机系统的物理资源是宝贵和稀有的,操作系统让众多进程共享物理资源,这种共享资源成为资源复用。物理资源的复用共享有两大基本方法:空分复用共享和时分复用共享。
- 空分复用共享(space - multiplexed sharing)表明资源可以从“空间”上分割成更小的单位供进程使用。在计算机系统中,进程能够空分复用那些满足以下属性的物理资源,即能够将资源的不同单位同时分配给不同的进程。内存和外存(磁盘)资源是空分复用共享的例子,多个进程可同时进入内存,在内存中存放若干进程的运行效率比仅存放一个进程的运行效率高;类似地,对磁盘空间可以进行空分复用,让它同时为多个进程保存信息。至于资源如何被空分复用,资源不够分配或进程要求动态申请更多资源时该如何应对,则都是操作系统所要完成的管理任务。
- 时分复用共享(time - multiplexed sharing)表明资源可以从“时间”上分割更小的单位供进程使用。也即是说可以轮流来使用资源,每个进程获得这里资源后会占用一段时间,多个进程则分时的共享这类资源。例如,处理器,进程可在一个时间段内独占使用整个处理器。
进程空分复用内存资源,其映像装入不同内存区域,各有自己的地址空间且通过硬盘存储保护机制隔离;进程时分复用共享使得物理处理器可执行已装入到不同物理地址区域中的程序代码,操作系统跟踪当前是哪个进程在执行、应该执行多长时间,这种共享硬件的技术十分重要,被称为多道程序设计。
1.2.2 资源虚拟
虚拟又称虚拟性,是指操作系统中实现对计算机软硬件资源进行有效的管理的技术和手段,能进一步提高操作系统为用户服务的能力和水平。虚拟的本质是对资源进行转化、模拟或整合,把一个物理资源转变成多个逻辑上的对应物(例如虚拟打印机),或把多个物理资源变成单个逻辑上的对应物(如虚拟内存=内存+外存),即创建无需共享的多个独占资源的假象,或创建多个物理资源变成单个逻辑上的虚拟资源假象,以达到多用户共享一套计算机物理资源的目的。复用和虚拟两者相比较,“复用”所分割的是实际存在的物理资源,而“虚拟”则实现假想的虚拟同类资源。采用虚拟技术不但可以解决某类物理资源数量不足的问题,而且能够为应用程序提供易于使用的虚拟资源并创建更好的运行环境。
- 虚拟技术可用于外部设备
- 虚拟技术可用于存储资源,用来实现虚拟内存
- 虚拟技术可用于文件系统,这就是虚拟文件系统(Virtual File System,VFS),使操作系统在VFS控制下可以同时支持多种具体文件系统,这也是多个物理资源(具体文件系统)变成单个逻辑上的对应物(VFS)的例子。
虚拟技术的应用范围很广,如通过窗口技术可以把一个物理屏幕虚拟成逻辑上的多个虚拟屏幕;通过信道多路复用技术可以把一条物理信道改造成多条虚拟信道,由于虚拟资源可以有喝多母语是便可同时分配给不同进程同时使用。
1.2.3 资源抽象
- 复用和虚拟的主要目标是解决物理资源不足的问题,抽象则用于处理系统复杂性,实现资源易用性。
- 资源抽象:通过软件来屏蔽硬件资源的实现细节,简化对硬件的操作、控制和使用。
抽象技术也可用于定义和构造多层软件抽象,每层软件都隐蔽下一层的实现细节,从而形成多级资源抽象。以磁盘为例,把信息块从内存写入磁盘需要执行下列机器指令:
load(block,lenth,device); /* 把指定长度的信息块复制到磁盘缓冲存储区 */ seek(device,track); /* 移动磁头至指定的磁道 */ out(device,sector); /* 将数据写入指定的扇区 */
对上述指令做一个简单抽象,可以通过系统调用 write() 来打包上述指令:
void write(char *block, int length, int device, int track, int sector){ load(block,lenth,device); seek(device,track); out(device,sector); }
为方便对物理资源进行管理和控制。操作系统中形成了三种最基础的抽象:
进程抽象:是对进入内存的执行程序在处理器上操作的一种状态集的一个抽象。
虚存抽象:即虚拟存储器,是通过结合对内存和外存的管理来实现的。
文件抽象:是设备的一种抽象,通过将文件中的字节映射到存储设备的物理块中来实现。
1.3 操作系统虚拟机
- 虚拟机是在裸机的基础上配置操作系统。虚拟机的每种资源都是物理资源通过复用、虚拟或抽象而得到的产物。
- 物理CPU采用时分共享复用;
- 物理内存采用虚拟存储技术;
- 独占型I/O设备采用SPOOLing技术;
- 用文件来抽象磁盘设备。
1.4 操作系统的定义和作用
1.4.1 操作系统概述
操作系统(Operating System,简称OS)的出现、应用和发展是近半个世纪以来计算机软件取得的一个重大进展,它经历了从无到有、从小到大、从简单到复杂、从原始到先进的发展历程,并随之产生许多相关的基本概念、重要理论和核心技术。尽管尚无严格定义,但一般可把操作系统定义为:是管理系统资源、控制程序运行、改善人机界面、提供各种服务,并合理组织计算机工作流程和为用户使用计算机提供良好接口的系统软件。
操作系统是最靠近硬件的一层软件,它把硬件逻辑改造成为完善的虚拟机,使得机器功能得到扩展,运行环境得到改善,系统效率得到提高,安全性能得到保证。它隔离其他上层软件,并为它们提供接口和服务,使得上层软件可以获得远较硬件所能提供的更多更强的功能上的支持。操作系统是软件系统的核心,它与硬件一起构成了各种软件的基础运行平台。
操作系统是复杂、庞大的系统软件,可以从不同的观点来观察它和研究它,常用的4中观点是:
- 服务用户观点——操作系统作为用户接口和公共服务程序
- 从内部来看OS提供系调用来扩展机器指令集,这些新功能可被任何应用程序调用,是一种特殊的公共服务程序。
- 从外部来看OS为用户与计算机硬件系统之间的接口,处于用户与计算机硬件系统之间,在操作系统的支持下,用户能够方便、安全、可靠地运行程序。
- 进程交互观点——操作系统作为进程执行的控制者和协调者
- 操作系统引入进程概念,它是支持程序执行的一种执行机制,进程是执行中的程序,系统以进程方式组织程序在计算机上运行。操作系统可以看作由多个独立运行的进程(用户进程和系统进程)及一个对诸进程控制和协调的内核所组成。
- 不同的进程完成不同功能,同时运行的进程会发生交互,内核控制和协调进程正常运行,解决进程之间的同步、通信和死锁问题。所以,操作系统是进程执行的控制者和协调者。这是一种动态观察操作系统的方法、把进程在系统中执行的本质过程、内在联系和状态变化揭示出来。
- OS作为进程执行的控制者,能合理进行作业与进程的管理,以充分利用计算机资源,提高系统运行效率。
- 系统实现观点——操作系统作为扩展机或虚拟机
- 由于裸机提供的是机器语言,难记难懂又难用,人们在多年以前就认识到必须找到某种方法将硬件的复杂性和用户隔离出来。经过不断的探索和研究,采用的方法是在计算机裸机上加上操作系统来组成一天新的计算机系统。
- 其实现过程大致如下:把操作系统分成若干层或模块,从裸机开始,按照某种结构条件层次和模块,每添加一次便形成新的抽象,系统功能就能增加一点,运行环境更加友好一点,使用更加方便。
- 一台没有安装操作系统的裸机,其功能再强,也是难于使用的。而操作系统的使用扩展了系统的功能,使用更加方便。
- 资源管理观点——操作系统作为资源的管理者和控制者
- OS是资源管理者和控制者,通过CPU管理、存储管理、设备管理和文件管理,对各种资源进行合理的分配。
- 概括来说,操作系统既是“管理员”,又是“服务员”;对内作为“管理员”,做好计算机系统软硬件资源的管理、控制与调度,在裸机基础上形成虚拟机供应应用程序使用并对程序执行进行控制和协调,提高系统效率和资源利用率;对外作为“服务员”,是用户与硬件的接口和人机界面,在管理好资源的基础上,为用户提供友善的运行环境和各种公共服务,所以,资源来管理是操作系统的一项重要任务。
1.4.2 操作系统的功能和特性
1.4.2.1 操作系统功能
从资源管理的观点来看,操作系统具有5项主要功能:
- 处理器管理
- 处理器是计算机系统中最为西游和宝贵的资源,应该最大限度地提高其利用率。常常采用多道程序设计技术组织多个作业同时进行,解决处理器的调度、分配和回收问题。随着多处理器系统的出现,处理器管理更加复杂。为了做好处理器管理工作,描述多道程序的并发运行,操作系统引入进程概念,处理器的分配、调度和执行都以进程为基本单位。随着并行处理技术的发展,并发执行单位的粒度变细,并发执行的代价降低,在进程基础上又引入线程概念。对处理器的管理和调度最终归结为对进程和线程的管理和调度,包括进程控制和管理、线程控制和管理,确定处理器调度策略、设计处理器调度算法、做好处理器分配和回收等。
- 对处理机(CPU)执行“时间”的管理,实现CPU的分配和回收。在传统的OS中,CPU的分配调度是以进程为单位,因此处理机管理最终归为对进程管理。
- 存储管理
- 存储管理的主要任务是管理内存资源,为多道程序运行提供有力支撑,提高存储空间效率,具体来说有内存分配和回收、地址转换与存储保护、内存共享与存储扩充等。
- 总的来说就是实现内存分配与回收、存储保护、地址映射、内存扩充,提高内存利用率。
- 设备管理
- 设备管理的主要任务是管理外部设备,完成用户提出的I/O请求分配其所需的I/O设备;加快数据传输速度,发挥设备的并行性,提高CPU和I/O设备利用率;提供设备驱动程序和中断处理程序,为用户隐蔽硬件操作细节,提供简单的设备使用方法,方便用户使用I/O设备。为此设备管理应该具备以下功能:提供设备中断处理,提供缓冲区管理,提供设备独立性,实现逻辑设备到物理设备之间的映射和设备的分配和回收,提供各种设备驱动程序,实现共享型设备的驱动调度,实现虚拟设备等。
- 简单地说就是:完成用户提出的I/O请求,分配其所需的I/O设备;提高CPU和I/O设备利用率;方便用户使用I/O设备。包括:缓冲管理、设备管理、设备处理和虚拟设备功能
- 文件管理
- 处理器管理、存储管理和设备管理是针对计算机硬件资源的管理,文件管理则是针对信息资源的管理。在现代计算机系统中,通常把程序和数据以文件形式存储在外存上,以供用户使用,这样外存上保存着大量的文件,如果对这些文件不能采取合理的管理方式,就会导致混乱或使系统遭受破坏造成严重后果。为此操作系统中配置文件系统,主要任务是对用户文件和系统文件进行有效管理,实现安名存取;实现文件共享、保护和保密;保证文件的安全性;向用户提供一整套能够方便地使用文件的操作和命令。具体来说,文件管理的而主要任务有提供文件逻辑组织方法,提供文件物理组织方法,提供文件存取和使用方法,是吸纳文件目录管理,实现文件共享和安全性控制,实现文件存储空间管理等。
- 总的来说就是:实现软件资源的存取、共享和保护。包括: 文件管理,存储空间管理,目录管理,文件读写管理与存取控制。
- 用户接口
- 提供系统调用、一组控制操作命令。
1.4.2.2 操作系统特性
操作系统是一个并发系统,其主要特性如下:
- 并发性(concurrency)
- 多道程序设计环境下,系统中装入多个程序并运行。并发是指在一段时间内,宏观上系统中有多个程序在“同时”运行。并行--指两个或两个以上的事件或活动在同一时刻发生(如正在打印的同时,也在输入数据)。
- 并发性虽然能有效地改善系统资源利用率,但却会引发一系列问题,是操作系统的设计和实现变得复杂化。例如怎样实现不同程序之间的切换,以何种策略选择程序运行,怎样让多个运行程序互通消息及协作完成任务,怎样协调多个运行程序对资源的竞争,等等。为了更好地解决上述问题,系统引入“进程”概念并提供策略和机制进行协调,是各个进程顺利推行并获得正确的运行结果。
- 共享性(sharing)
- 资源不再由一个程序独占,共享指资源可被多个并发执行的进程所使用 。例如,内存中存储多个程序。
- 共享性(sharing)是操作系统的另一个重要特性,指计算机系统中的资源可以被多个并发执行的程序共同使用,而不是被某个程序独占。现实的方法是让系统程序和应用程序公用一套计算机系统资源,因而并发性必然会产生资源共享的需要。资源共享的方式有以下两种:
- 透明资源共享
- 操作系统采用复用、虚拟和抽象技术创建虚拟机,每个应用程序在各自的虚拟机上运行,虚拟机是物理计算机的仿真,系统通过共享硬件方式来实现这种抽象。
- 独占资源共享
- 采用复用和虚拟技术能够扩充某些资源的数量,应用程序不可能再因为竞争这些资源而造成阻塞,但系统中还有其他资源,如磁带机,扫描仪等,由于这些物理特性所决定,在同一时间内只允许一个应用程序访问,即要求排它地使用这类资源。
- 共享性和并发性是操作系统的两个基本特性,他们互为依存,一方面,资源共享是由程序并发执行而引起的,若系统不允许程序并发执行,也就不存在资源共享问题;另一方面,资源共享是支持并发性的基础,若系统不能对资源共享实施有效管理,必然会影响程序的并发执行,甚至导致程序无法并发执行,整个系统就会丧失并发性,从而使得系统效率低下。
- 异步性(asynchronism)
- 也称不确定性,随机性。由于程序并发执行,其执行过程以不可预知的速度向前推进。进程何时执行?何时暂停?以怎样的速度向前推进?都是异步(随机)的。
- 在多道程序环境中允许多个程序并发执行,并发活动会导致随机事件的发生,由于资源有限而程序众多,每个程序的执行并非连贯,而是“走走停停”。
- 随机性并不意味着操作系统无法控制资源的使用和程序的执行,系统内部产生的事件序列有许多可能性,操作系统的一项重要任务是确保捕捉任何随机事件,正确地处理可能发生的随机事件及其序列,否则会导致严重后果。
- 虚拟性
- 虚拟系统、虚拟处理机、虚拟内存、虚拟设备、虚拟文件系统。
1.5 操作系统的发展和分类
1.5.1 操作系统的发展
1.5.1.1 人工阶段
- 用户上机独占全机资源,造成资源利用率不高,系统效率低下。
- 浪费CPU时间,也极易发生差错。
- 数据的输入,程序的执行、结果的输出均联机进行,占用机器时间非常长。
- 主要矛盾
- “人机矛盾”:人工操作方式与机器利用率的矛盾;
- CPU与I/O之间速度不匹配的矛盾。
1.5.1.2 监控程序阶段
- 由监控程序将作业输入到磁带上,当一批作业输入完成后,监控程序自动把的第一个作业装入主存,并把控制权交给作业。当该作业执行完成后,把控制权交回管理程序,监控程序再调入第二个作业到主存执行。
- 单道程序设计: 任一时刻只允许一个程序在系统中执行。一个程序执行结束后才能执行下一个程序。
1.5.1.3 多道程序设计与操作系统形成
- 多道程序设计:任何时刻都允许多道程序在系统中同时执行。
- 特性:
- 从宏观上看并行;
- 从微观上看串行,各程序轮流占用CPU交替地执行。
- 目的:提高CPU的利用率,充分发挥计算机硬件的并行性。
多道程序设计举例:
多道程序的优缺点:
- 优点
- 提高了CPU利用率;
- 提高了主存和I/O设备利用率;
- 改进了系统吞吐率;
- 充分发挥了系统并行性。
- 缺点
- 作业周转时间延长;资源管理复杂。
实现多道程序必须妥善解决三个问题:
- 存储保护和程序浮动
- 处理器管理和分配
- 资源管理和调度
1.5.2 操作系统的分类
主要分类有:
- 批处理操作系统
- 分时操作系统
- 实时操作系统
- 个人操作系统
- 网络操作系统
- 分布式操作系统
- 嵌入式操作系统
1.5.2.1 批处理操作系统
批处理操作系统服务于一系列成为批(batch)的作业。
批处理操作系统是最先采用多道程序设计技术的系统,他根据预先设定的调度策略选择若干作业并发地执行,系统资源利用率高,作业吞吐量打。
批处理操作系统的缺点是作业周期延长,不具备交互式计算能力,不利于程序的开发和调试。
运行于 IBM 43xx 系列机上的 IBM DOS/VS 是典型的早期批处理操作系统。
- 批处理系统的主要特征:
- 作业脱机工作
- 批量集中处理作业
- 多道程序运行
- 作业周转时间长
1.5.2.2 分时操作系统
分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。
1961年,美国麻省理工学院(Massachusetts Institude of Technology,MIT)开发了第一个兼容分时系统(Compatible Time - Sharing System,CTSS),成功地运行在IBM 7094 等计算机上,支持32个交互式用户同时工作。
分时操作系统的特点:
- 同时性:多个程序并发执行
- 独立性:使用户感觉上独占CPU
- 交互性:利用系统界面(图形、命令)实现人机“会话”
批处理操作系统和分时操作系统虽然具有共性,都基于多道程序设计技术,但它们存在以下不同点:
- 追求目标不同
- 前者以提高系统资源利用率和作业吞吐率为目标;后者强调公平性,对联机用户的立即型命令要快速反应。
- 适应作业不同
- 前者适应已调试好的大型作业;而后者适应正在调试的小型作业。
- 资源利用率不同
- 前者可以合理安排不同负载的作业,是资源利用率达到最佳;后者让多个终端作业使用相同类型的编译系统、运行系统时,系统调度开销小,能够公平地调用 CPU 和内存资源。
1.5.2.3 实时操作系统
实时操作系统(real - time operating system)是指外部时间或数据产生时,能够对其予接受并以足够快的速度进行处理,所得结果能够在规定时间内控制生产过程或对控制对象作出快速响应,并控制所有实时任务协调运行的操作系统。
主要特点:
- 响应及时和可靠性高。
- 设计目标是能对特定的输入作出及时响应,并在规定的时间内完成对该事件的处理。
三种典型的实时操作系统
- 过程控制系统(生产过程控制)
- 信息查询系统(情报检索)
- 民航票务系统等
1.6 用户接口
1.6.1 程序接口与系统调用
- 程序接口又称为API,用户程序只能使用这个接口调用操作系统的服务和功能。
- 它由一组系统调用组成,每一个系统调用都是一个完成特定功能的子程序。
- 每当应用程序要求OS提供某种服务(功能)时,便调用具有相应功能的系统调用,而不必了解系统内部结构和硬件细节。
系统调用是一种中介角色,把用户与硬件隔离开来,应用程序通过系统调用才能请求系统服务和使用系统资源。
作用有:
- 是内核可基于权限和规则对资源访问进行裁决,保证系统的安全性;
- 是系统调用封装资源抽象,提供一致性接口,避免用户使用资源时可能发生的错误,且使编程方便效率高。
系统调用分类:
- 进程管理
- 包括创建和撤销进程、终止或异常终止进程、阻塞和唤醒进程、挂起和激活进程、监视和追踪进程、获取和设置进程属性
- 文件管理
- 包括建立文件、删除文件、打开文件、关闭文件、读写文件、链接文件、控制文件、显示文件和目录内容、显示和设置文件属性。
- 设备管理
- 包括申请设备、释放设备、设备 I/O 操作和重定向、获得和设置设备属性、控制和检查设备状态。
- 存储管理
- 包括申请和释放内存
- 进程通信
- 包括建立和断开通信连接、发送和接收消息、来链接和断开共享内存、套接字操作、传送状态信息。
- 信息维护
- 包括获取和设置日期及时间、获取和设置系统数据、生成诊断和统计数据。
系统调用和函数调用之间的区别:
- 调用形式和实现方式的不同
- 被调用代码的位置不同
- 提供方式不同
1.6.2 操作接口与操作命令
命令行方式:以命令为单位完成预定的工作任务。
批命令方式:预先将一系列命令组织在.bat文件中,一次建立,多次执行。
图形化方式:通过选择窗口、菜单、对话框和滚动条来完成对作业和文件的控制和操作。
1.7 操作系统结构
1.7.1 操作系统结构分类
1.7.1.1 单体式结构
操作系统单体式结构采用模块组合法,是基于结构化程序设计的一种软件结构设计方法。模块按照功能需求*组合。
主要设计思想和步骤:
把模块作为操作系统的基本单位,按照功能需要而不是根据程序和数据的特性,首先把整个系统分为若干模块,每个模块具有一定的独立功能,若干个关联模块协作完成某个功能,明确各个模块之间的接口关系,各个模块间可以不加控制*调用,所以又叫无序调用法;数据多数作为全程量使用;模块之间需要传递参数或返回结果时,其个数和方式也可以根据需要随意约定;然后分别设计、编码、调试各个模块;最后吧所有模块连接成一个完成的单体系统。
优点:
- 结构紧密、组合方便
- 灵活性大
- 系统效率高
缺点:
- 模块独立性差,模块之间牵连甚多;造成系统结构不清晰,正确性难保证,可靠性降低,系统功能增、删、改困难。
1.7.1.2 层次式结构
将OS划分为若干模块,这些模块按照调用次序排成若干层次。
1.7.1.3 虚拟机结构
物理计算机资源通过多重化和共享技术可改造成多个虚拟机。这种技术的基本做法是:通过一类物理设备来模拟另一类物理设备,或通过实体是实际存在的,而逻辑上的对应物是虚幻的、感觉上的。
1.7.1.4 微内核结构(micro-kernel)
- 只给内核分配一些最基本的功能,运行在内核模式。如:内存管理、进程间通信、基本调度等。
- 其他OS服务都是由运行在用户模式下进程完成,可作为独立应用进程,称为服务进程。
- 微内核提供客户程序和运行在用户空间的各种服务之间的通信能力。
1.8 小结
- 什么是操作系统?
答:操作系统是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),使用户和计算机之间的接口。
- OS种基本类型、性质、五个功能?
答:基本类型:
- 批处理操作系统
- 分时操作系统
- 实时操作系统
- 个人操作系统
- 网络操作系统
- 分布式操作系统
- 嵌入式操作系统
性质:
- 并发性
- 共享性
- 异步性
- 虚拟性。
五个功能:
- 处理器管理
- 存储管理
- 设备管理
- 文件管理
- 用户接口
- 什么是多道程序设计?
答:多道程序设计技术就是在系统(内存)中同时存放并运行多道相互独立的程序(作业),主机以交替的方式同时处理多道程序。他是一种宏观上并行,微观上串行的运行方式。
- 什么是并发,为什么要并发?
答:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。
并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时候做(时机)分开。这样做可以明显改进应用程序的吞吐量(获得更多的CPU调度时间)和结构(程序有多个部分在协同工作)。