目录
1 操作系统概念
1.1 为什么要有操作系统
因为计算机硬件( 裸机 )难于使用,用户几乎不可能使用裸机,计算机硬件只能识别 0
和 1
二进制机器码,机器码直观性差,容易出错,难于交流。因此,通常在计算机硬件之上会覆盖一层软件,以方便用户使用计算机硬件。
1.2 什么是操作系统
在计算机硬件中,CPU是计算机硬件的核心,是计算机系统的心脏,操作系统则是计算机软件的核心,是计算机系统的大脑。操作系统是整个计算机系统的控制中心,是计算机系统中首要的、最重要的、最复杂的系统软件,追其本质,操作系统是管理计算机硬件的程序,在计算机用户和计算机硬件之间起媒介作用的一种程序。
操作系统在整个计算机系统中所在的位置位于计算机硬件之上,应用程序之下,硬件之上的第一层软件,是对硬件的首次扩充,又是其他软件运行的基础,见下图中的 operating system 的位置:
1.3 计算机系统部件
- 硬件 (Hardware ):提供基本的运算资源,如CPU,内存,I/O设备等;
- 操作系统 (Operating system ):在各种应用程序和用户之间控制与协调对硬件的使用;
- 应用程序 (Applications programs ): 定义解决用户问题的资源使用方式(编译、数据库、视频游戏、事务程序等);
- 用户 (Users):如人、其他计算机等。
1.4 操作系统设计的目标
- 执行用户程序并使用户问题更易解决;
- 使计算机系统更易使用;
- 以一种有效率的方式使用硬件。
1.5 操作系统的其他定义
不同的地方对操作系统的定义有所差别,但都是从一些核心的角度去描绘操作系统,以下是常见的几个定义:
- 资源分配者 (Resource allocator ):管理和分配资源;
- 控制程序 (Control program ):控制用户程序的运行和 I/O 设备的操作;
- 内核 (Kernel):在全时运行的一个程序(其他的是应用),因为当计算机开机后,第一个运行的程序就是操作系统,当关闭计算机时,最后一个结束的也是操作系统。
2 操作系统的发展
并不是有了计算机就有了操作系统,操作系统从无到有、从简单到复杂、一步一步走向完善,操作系统随着计算机硬件技术的发展而发展,为满足不同的需求,出现了多种类型的操作系统,发展的核心动力便是需求:
- 资源利用角度:为了提高计算机资源利用率和系统性能,从单道到多道、集中到分布、从专用到泛在等;
- 用户角度:方便用户,人机交互;
- 技术角度:物理器件发展、CPU的位宽度(指令和数据)、快速外存、光器件等,以及计算机体系结构的不断发展:单处理机、多处理机、多核、计算机网络。
2.1 操作系统的历史
- 第一代(1946 年-1955 年): 真空管时代,无操作系统;
- 第二代(1955 年-1965 年): 晶体管时代,批处理系统;
- 第三代(1965 年-1980 年): 集成电路时代,多道程序设计;
- 第四代(1980 年-至今): 大规模和超大规模集成电路时代,分时系统,现代计算机正向着巨型、微型、并行、分布、网络化和智能化几个方向发展。
2.2 操作系统的类型
- 无操作系统(No operating system);
- 简单批处理系统(Simple Batch Systems);
- 多道程序批处理系统(Multiprogramming Batched Systems);
- 分时系统(Time-Sharing Systems);
- 实时系统(Real -Time Systems);
- 嵌入式系统(Embedded Systems);
- 并行系统(Parallel Systems);
- 分布式系统(Distributed Systems)。
2.3 单道批处理系统
世界上第一台计算机叫做ENIAC计算机,它的运算速度是 1000 1000 1000 次/每秒,数万个真空管,占地 100 100 100 平方米,在它诞生的时候没有程序设计语言(甚至没有汇编),更谈不上操作系统,程序员提前预约一段时间,然后到机房将他的插件板插到计算机里期盼着在接下来的时间中几万个真空管不会烧断,从而可以计算自己的题目。
这种工作方式称为人工操作方式,用户是计算机专业人员,这种方式的缺点是用户独占全机,独占系统的全部硬件资源,设备利用率很低,CPU等待用户手工装入/卸取纸带或卡片使CPU的利用率也非常低。
50 年代早期,出现了穿孔卡片,如下图,程序写在卡片上然后读入计算机,但计算过程则依然如旧,效率并没有得到本质的提升。
此时出现的主要矛盾是人工操作方式与机器利用率的矛盾和CPU与 I/O 之速度不匹配的矛盾,解决的方法有两种,即批处理和脱机I/O:
-
脱机I/O方式:I/O 工作在外围机的控制下完成,或者说是在脱离主机的情况下进行。使用磁带作为输入/输出的中介,这种具体的输入/输出不需要在主计算机上进行的方式称“脱机输入/输出”,如下图;
-
单道批处理系统:50年代末 ~ 60年代中(晶体管时代),把一批作业以脱机输入方式输入到磁带/磁鼓,利用磁带或磁盘把任务分类编成作业顺序执行,每批作业由专门监督程序(Monitor)自动依次处理,批处理系统解决了高速计算机的运算、处理能力与人工干预之间的速度矛盾,实现了作业自动过渡,也就是自动执行程序,执行完这个程序后自动执行下一个程序,单道的含义就是一次只处理一个程序,如下图所示,IBM1401 为外围设备,负责读入卡片和输出打印,IBM7094 为主机,负责主要的计算处理工作;
单道批处理系统具有顺序性,即磁带上的各道作业是顺序地进入内存,各作业的完成顺序与他们进入内存的顺序相同;具有单道性,即内存中仅有一道程序运行;具有自动性,即一个程序运行结束后会自动运行下一个程序。单道批处理系统的优点是减少了CPU的空闲时间,提高了主机CPU和 I/O 设备的使用效率,提高了吞吐量。它的缺点是CPU和 I/O 设备使用忙闲不均,因为在读入数据和输出打印时,CPU是等待状态,而外围机是忙碌状态,当CPU进行计算处理时处于忙碌状态,而外围机又处于等待状态,也正是因为忙闲不均问题导致了后面的多道批处理系统的出现。
2.4 多道批处理系统
多道程序设计60年代中 ~ 70年代中(集成电路时代),它的思想是在内存中同时存放几个作业,使之都处于执行的开始点和结束点之间,多个作业共享CPU、内存、外设等资源,目的是为了提高资源的利用率。
多道批处理系统的出现得益于60年代通道和中断技术的出现:
- 通道:是一种专用部件,负责外部设备与内存之间信息的传输;
- 中断:指主机接到外界的信号(来自CPU外部或内部)时,立即中止原来的工作,转去处理这一外来事件,处理完后,主机又回到原来工作点继续工作。
下图是单道程序和多道程序的运行情况,竖轴为设备,横轴为时间,可以发现在单道程序中,某个时间点只有一个设备在工作,而在多道程序中,某个时间点可能有多个设备在同时工作,这就大大提高了效率,有效改善了单道程序中各设备忙闲不均的问题。
多道程序批处理系统中在内存中同时有多个作业,CPU在其中切换,只要系统中总是存在可执行的作业,CPU就永远不会因无事可干而闲着,多道程序最大的优点就是通过组织作业使得CPU总在执行其中一个作业,从而提高了CPU的利用率。
多道程序批处理系统具有多道性,即内存中同时驻留多道程序并发执行,从而有效地提高了资源利用率和系统吞吐量;具有无序性,即作业的完成顺序与它进入内存的顺序之间无严格的对应关系,有可能某个程序是第一个进来的,但却是最后一个被执行的;具有调度性,即作业调度、进程调度,当系统中有多个程序要执行的时候,将通过调度策略来决定哪个程序先执行。
多道程序批处理系统的优点是提高了系统资源利用率,提高了系统吞吐量,它的缺点是无交互能力,用户响应时间长,且作业平均周转时间长。
2.5 多道程序对操作系统特点的要求
多道程序从概念上来说只是增加了并发,提高了资源设备利用率,但是实际上它是对单道程序的质的飞跃,在设计过程中,也对操作系统提出了更高的要求:
- 存储管理 (Memory management);
- CPU调度 (CPU scheduling);
- 资源竞争和共享 (Resource competition and sharing );
- 设备分配 (Allocation of devices);
- 系统提供 I/O 程序 ( I/O routine supplied by the system);
- 文件管理 (File management )。
2.6 分时系统
根据上面所述的多道批处理操作系统的缺点,即缺少用户交互,于是在多道的基础上有了用户的新需求,一是多任务处理(多用户),二是能支持人和机器的交互服务,这些需求也就是后来发明分时系统所实现的。
分时系统,70年代中期至今,分时是指多个用户分享使用同一台计算机,分时共享硬件和软件资源,分时系统的实现方式有两种,多个用户分时、前台和后台程序 (foreground & background) 分时:
- 多个用户分时:单个用户使用计算机的效率低,因而允许多个应用程序同时在内存中,分别服务于不同的用户。有用户输入时由CPU执行,处理完一次用户输入后程序暂停,等待下一次用户输入,表现的形式就是时走时停;
- 前台和后台程序 (foreground & background) 分时:前台程序一般指的是和人有交互的程序,后台程序通常是不与人交互的程序,后台程序不占用终端输入输出,不与用户交互,表现的形式是现在的图形用户界面(GUI),除当前交互的程序 (输入焦点) 之外,其他程序均作为后台。
分时的具体实现方式是按时间片 (time slice) 分配,各个程序在CPU上执行的轮换时间,主机连接多个终端,多个终端同时共享这个主机,那么此时要解决的问题是如何才能及时接收,如何才能及时处理。及时接收可能比较简单,可以设置一个输入缓存,把多个终端的输入放到缓存里,然后主机轮流处理即可。那么及时处理就比较复杂,这对系统提出了更高的要求,如果程序是在外存上显然不在运行状态,是不能做到及时处理的,原来的多道程序是由外存进入到内存中所以无法实现及时处理,那么分时系统则要求作业直接进入内存,只有这样系统才能及时的处理用户的输入和请求,另外通过时间片可以让每个作业一次只运行很短的时间,这样使得每个用户的输入都能被及时处理,给用户的感觉就是自己独占了这台计算机一样。
分时技术:把CPU的响应时间分成若干个大小相等(或不等)的时间单位,称为时间片(如100毫秒),每个终端用户获得CPU(获得一个时间片)后开始运行,当时间片到,该用户程序暂停运行,等待下一次运行。
分时具有如下特点:
- 多路性:众多联机用户可以同时使用同一台计算机;
- 独占性:各终端用户感觉到自己独占了计算机;
- 交互性:用户与计算机之间可进行“会话”;
- 及时性:用户的请求能在很短时间内获得响应。
在分时系统的基础上,操作系统的发展开始分化,如实时系统、通用(桌面)系统、网络系统、分布式系统等。