操作系统概论
OS 的定义
当前对于 OS 还没有一个统一的、适用的定义
定义 1:操作系统是一组控制和管理计算机软硬件资源、合理地对各类作业进行调度以及方便用户使用的程序集合
定义 2:操作系统是位于硬件层(HAL)之上,所有其它系统软件层之下的一个系统软件,使得管理系统中的各种软件和硬件资源得以充分利用,方便用户使用计算机系统
操作系统的目标和作用
目标
- 方便性:操作系统使计算机更易于使用。
- 有效性:操作系统允许以更有效的方式使用计算机系统资源。
- 提高系统资源利用率
- 提高系统的吞吐量
- 可扩展性:在操作系统中,允许有效地开发,测试和引进新的系统功能。
- 开放性:实现应用程序的可移植性和互操作性,要求具有统一的开放的环境。
作用
- OS 作为用户与计算机硬件系统之间的接口
- 计算机用户需要的用户命令 :由 OS 实现的所有用户命令所构成的集合常被称为 OS 的 Interface(用户接口);有时也称为命令接口。
命令的表示形式:- 字符形式:较灵活但因繁琐而难记;
- 菜单形式:试图在字符终端上提供友好的用户界面
- 图形形式:因直观而易记但不灵活。
- 应用软件需要的 System Call(系统调用):由 OS 实现的所有系统调用所构成的集合被人们称为程序接口或应用编程接口(Application Programming Interface,API)
操作系统应隐藏复杂的、困难的、丑陋的、特殊的硬件细节,呈现给程序(程序员)良好、清晰、优雅、一致的抽象
操作系统的任务就是创建好的抽象,并实现和管理它所创建的抽象
- OS 作为计算机系统资源的管理者(软硬件资源)
- 处理机管理, 用于分配和控制处理机;
- 存储器管理,主要负责内存的分配与回收;
- I/O 设备管理,负责 I/O 设备的分配与操纵;
- 文件管理,负责文件的存取、共享和保护。
- 对于多用户系统,需要管理共享资源,避免发生冲突。
操作系统的任务是在相互竞争的程序之间有序地控制对硬件设备的分配
资源管理包括用以下两种不同的方式实现多路复用(共享)资源
- 在时间上复用:当一种资源在时间上复用时,不同的程序“轮流”实用它;例如 CPU、打印机等
- 在空间上复用:每个客户都得到资源的一部分;例如内存、磁盘等
- OS 用作扩充机器
裸机:完全无软件的计算机系统。
操作系统用来扩充机器功能,使其便于使用;在裸机上覆盖管理软件,实现对设备的操作,并向上提供一组操作命令;隐藏对设备操作的具体细节,实现对硬件操作的多个层次的抽象。
通常把覆盖了软件的机器称为扩充机器或虚机器
操作系统的发展过程
无操作系统
采用人工操作方式: 一台计算机的所有资源由用户独占,降低了计算机资源利用率,人操作慢,出现了严重的人机矛盾。
缺点:用户独占全机,CPU 等待人工操作单道批处理操作系统 Single-programming System:系统对作业的处理都是成批进行的,且在内存中始终仅存一道作业运行,运行结束或出错,才自动调另一道作业运行,故称为单道批处理系统。
单道批处理系统主要特征:自动性、顺序性、单道性。
单道批处理系统主要优点:减少人工操作,解决了作业的自动接续。
单道批处理系统主要缺点:平均周转时间长,没有交互能力。多道批处理操作系统 Multi-programming System: 在内存中存放多道作业运行,运行结束或出错,自动调度内存中的另一道作业运行。
多道批处理系统主要特征:多道性、无序性、调度性(进程调度和作业调度)。
多道批处理的主要优点:提高了资源利用率和吞吐能力。
多道批处理的主要缺点:平均周转时间长,没有交互能力。
多道批处理系统需要解决的 5 个问题- 处理机管理:分配和控制 CPU。
- 存储器管理:内存分配与回收
- I/O 设备管理:I/O 设备的分配与操纵。
- 文件管理:文件的存取、共享和保护。
- 作业管理:如何组织作业运行。
Multi-programming System vs Single-programing System
单道系统是指一次只能运行一个程序的系统。在单道系统中,每个作业(Job)按顺序执行,直到完成后才能开始下一个作业。
多道系统允许同时运行多个程序。在多道系统中,多个作业可以同时进入内存并并发执行。操作系统通过任务调度算法决定哪个作业获得处理器时间,以实现作业间的切换和共享资源。这样可以提高系统资源利用率和吞吐量。
分时操作系统(time-sharing OS):时间共享操作系统是一种允许多个用户同时共享系统资源的操作系统。在这种操作系统中,CPU 时间被分割成微小的片段,并依次分配给每个用户,使得每个用户都感觉到他们独占了整个系统。这种操作系统的主要目标是最大化 CPU 的利用率和响应时间。
特点
- 多路性:一个主机与多个终端相连;
- 独立性:彼此独立操作,互不干扰;
- 及时性:系统能在很短的时间得到回答;
- 交互性:能实现人机对话(区别于批处理系统);
典型系统
- Multics (MIT)
- UNIX
实时操作系统(real time OS):是计算机及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致的运行
特点
- 多路性:能对多个对象进行控制
- 独立性:独立运行,不混淆,不破坏
- 交互性:仅限于访问系统中某些特定的专用服务程序
- 可靠性:高可靠性,应具有多级容错防护能力
- 及时性:控制对象必须在截止时间内完成
分类
- 任务执行是否为周期性来划分
周期性实时任务
非周期性实时任务 - 按截止时间来划分
硬实时任务
软实时任务
操作系统的基本特征
现代 OS 的四个基本特征:
- 并发性(最重要的特征)
- 共享性
- 虚拟性
- 异步性
并发是最重要的特征,其它特征都以并发为前提
并发 Concurrency
Key:
- 区分并发 Concurrency&并行 Parallelism
- 区分进程 Process&线程 Thread&程序 Program
共享 Sharing
共享:是指系统中的资源可供内存中多个并发执行的进程共同使用。
- 互斥共享(Exclusive Sharing):在这种方式下,一次只能有一个进程使用资源。当一个进程正在使用资源时,其他进程必须等待。这种方式通常用于那些不能同时被多个进程共享的资源,例如打印机、磁带驱动器等。
- 分时共享(Time-Sharing):在这种方式下,资源在多个进程之间进行切换,每个进程在一段时间内独占资源。通过快速切换,可以使得用户感觉到他们似乎在同时使用资源。这种方式通常用于那些可以被多个进程共享的资源,例如 CPU、内存等。
- 同时共享(Concurrent Sharing):在这种方式下,多个进程可以同时访问资源,而无需等待。这种方式通常用于那些可以被多个进程同时读取的资源,例如文件、数据库等。
- 虚拟共享(Virtual Sharing):在这种方式下,每个进程都有一个资源的虚拟副本,使得每个进程都感觉到他们独占了资源。这种方式通常用于那些可以被复制的资源,例如虚拟内存、虚拟机等。
虚拟性 Virtualization
虚拟:是指通过某种技术把一个物理实体变为(映射为)若干个逻辑上的对应物。
时分复用技术
虚拟处理机:分时实现
虚拟设备:SPOOLING 技术
空分复用技术
虚拟磁盘技术:逻辑分区
虚拟存储器:虚拟存储管理实现
异步性 Asynchrony
异步 多道程序环境下程序(进程)以异步的方式执行,每道程序在何时执行、各自执行的顺序、完成时间都是不确定的,也是不可预知的。
操作系统的主要功能
操作系统的主要任务是为多道程序的运行提供良好的运行环境,以保证多道程序能有条不紊地、高效地运行,并能最大程度地提高系统中各种资源的利用率和方便用户的使用。
操作系统应具有五方面的功能:
- 处理机管理(CPU)
- 存储器管理
- 设备管理
- 文件管理
- 方便用户使用的用户接口。
处理机管理功能
按照一定的算法把处理机分配给进程(线程),并对其进行有效的管理和控制
- 进程控制
主要功能:为作业创建进程、撤消(终止)已结束的进程,以及控制进程在运行过程中的状态转换。 - 进程同步和互斥
主要任务是为多个进程(含线程)的运行进行协调。
进程互斥方式:这是指诸进程在对临界资源进行访问时,应采用互斥方式。
进程同步方式:指在相互合作去完成共同任务的诸进程间,由同步机构对它们的执行次序加以协调。(信号量机制) - 进程通信
- 进程调度
存储器管理功能
为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及能从逻辑上扩充内存。
内存分配
内存分配的两种方式 :- 静态分配方式:每个作业的内存空间是在作业装入时确定。运行时不可再申请新的内存空间,也不允许作业在内存中“移动”。
- 动态分配方式:每个作业的内存空间是在作业装入时确定。但允许作业在运行过程中继续申请新的附加内存空间,以适应程序和数据的动态增长,也允许作业在内存中“移动”。
内存分配的主要任务是:
- 为每道程序分配内存空间,使它们“各得其所”。
- 提高存储器的利用率,尽量减少不可用的内存空间(碎片)。
- 允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。
内存保护
确保每道用户程序都只在自己的内存空间内运行,彼此互不干扰。
绝不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共享的其它用户程序中去执行。地址映射
为保证程序能正确运行,存储器管理必须提供地址映射功能,即能够将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。该功能应在硬件的支持下完成内存扩充
借助于虚拟存储技术,从逻辑上扩充内存容量
设备管理功能
完成用户进程提出的 I/O 请求;为用户进程分配其所需的 I/O 设备;提高 CPU 和 I/O 设备的利用率;提高 I/O 速度;方便用户使用 I/O 设备。
- 缓冲管理:有效地缓和 CPU 和 I/O 设备速度不匹配的矛盾 ,提高 CPU 的利用率。
- 设备分配:根据 I/O 请求,分配其所需的设备。
- 设备处理:设备处理程序又称为设备驱动程序。
文件管理功能
主要任务:对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。
- 文件存储空间的管理
- 目录管理
- 文件的读/写管理和保护
操作系统与用户之间的接口
用户接口,由 OS 实现的所有用户命令所构成的集合常被人们称为 OS 的 Interface(用户接口);有时也称为命令接口。该接口又进一步分为联机用户接口、脱机用户接口和图形用户接口三种。
程序接口,由 OS 实现的所有系统调用所构成的集合被人们称为程序接口或应用编程接口(Application Programming Interface,API)。程序接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的唯一途径。
操作系统的结构设计
操作系统是一个大型系统软件,其结构已经历了四代的变革:
- 第一代的 OS 是无结构的
- 第二代 OS 采用了模块式结构
- 第三代是层次式结构
- 现代 OS 结构是微内核结构
模块化结构(模块-接口法)
使用分块结构的系统包含若干 module;其中,每个模块实现一组基本概念以及与其相关的基本属性。
块与块之间的相互关系
- 所有各块的实现均可以任意引用其它各块所提供的概念及属性。
优点
提高了 OS 设计的正确性、可理解性和可维护性。
增强了 OS 的可适应性。
加速了 OS 的开发过程。
缺点
对模块的划分及对接口的规定要精确描述很困难。
从功能观点来划分模块时,未能将共享资源和独占资源加以区别。
层次结构
使用分层系统结构包含若干 layer(层);其中,每一层实现一组基本概念以及与其相关的基本属性。
层与层之间的相互关系
- 所有各层的实现不依赖其以上各层所提供的概念及其属性,只依赖其直接下层所提供的概念及属性;
- 每一层均对其上各层隐藏其下各层的存在。
层次的设置时应考虑的因素
- 程序嵌套 通常 OS 的每个功能的实现,并非是只用一个程序便能完成的,而是要经由若干个软件层才有可能完成,因此实现 OS 时,应考虑每个功能可能形成的程序嵌套。
- 运行频率 将那些经常活跃的模块放在最接近硬件的层
- 公用模块 把供多种资源管理程序调用的公用模块,设置在最低层,以便调用。
- 用户接口 命令接口、程序接口以及图形用户接口。这些接口应设置在 OS 的最高层,直接提供给用户使用。
微内核技术
所谓微内核技术,是指精心设计的、能实现现代 OS 核心功能的小型内核,它与一般的 OS(程序)不同, 它更小更精炼,它不仅运行在核心态,而且开机后常驻内存, 它不会因内存紧张而被换出内存。
当前比较流行的、能支持多处理机运行的 OS 几乎全部都采用了微内核结构,如 Mach OS,windows 2000
微内核所提供的功能,通常都是一些最基本的功能,如进程管理、低级存储器管理、中断和陷入处理、进程间通信、低级 I/O 功能
微内核特点
- 足够小的内核。
- 基于客户/服务器模式
- 应用“机制与策略分离”原理
- 采用面向对象技术