第一章——操作系统概论
- 1.1 操作系统的定义
- 1.2 操作系统的形成与发展
- 1.3 操作系统功能、服务和特性
- 1.4 操作系统的进一步发展
- 1.5 用户与操作系统接口
- 1.6 操作系统的运行方式
- 1.7 操作系统的设计规范和结构设计
1.1 操作系统的定义
计算机系统的组成
- 计算机系统从下到上划分为四个层次。
- 单向调用关系:外层的软件必须以事先约定的方式调用内层软件或硬件提供的服务。称这种约定为接口。
应用程序 ⊃ \supset ⊃系统应用 ⊃ \supset ⊃操作系统 ⊃ \supset ⊃硬件
用户态——用户进程、系统进程、Windows子系统进程Csrss.exe
核心态——操作系统内核(Ntoskrnl.exe)、执行体、内核、Win32K.sys、NTFS.sys
操作系统的定义
- 从操作系统设计者的角度——OS是由一系列程序模块组成的一个大程序。依据各种管理和调度策略,对计算机的软、硬件资源进行统一的管理和调度,合理地组织计算机的工作流程,以提高资源的利用率。
- 从用户角度看——是为了建立用户与计算机之间的接口而为裸机配置的一种系统软件,为用户提供了良好的使用环境
- 操作系统只包含操作系统内核。如Windows系统的Ntoskrnl.exe。http://www.kernel.org 下载Linux内核
操作系统的设计目标
- 方便性:方便用户使用计算机。用户通过操作系统来使用计算机。
- 有效性:使计算机系统能高效可靠地运转,提高系统资源的利用率。
- 还要便于操作系统的设计、实现和维护。
1.2 操作系统的形成与发展
- 1.2.1 顺序处理(手工操作阶段)
- 1.2.2 简单的批处理系统
- 1.2.3 多道成批处理系统
- 1.2.4 分时系统
- 1.2.5 实时系统
- 1.2.6 嵌入式系统
1.2.1 顺序处理(手工操作)
- 20世纪40年代~50年代中期
- 计算机:CPU、主存、卡片输入机、打印机、带有显示灯和开关的操作控制台。
- 没有操作系统。程序员直接操作计算机硬件,调度作业运行。
- 程序:二进制程序;通过打孔的纸带或卡片
- 人工负责计算机的调度——用户使用计算机时,首先向机房负责人说明,由机房负责人为他安排上机时间,并预先登记在一张纸上。其中包括各用户几点上机、大约使用计算机多长时间等。
- 人工负责作业编排顺序——用户自己安排上机所需的各种程序、数据以及上机的步骤
- 缺点
- 一个用户独占全机资源;
- CPU等待人工操作,浪费大量的人力和机器的时间,系统利用率很低。
1.2.2 简单的批处理系统
- 20世纪50年代后期~60年代中期
- 有一个监控程序软件常驻内存(主存)
- 操作员将多个作业按序成批地放在一个输入设备上。
- 监控程序自动控制输入设备一次装入一道作业,并启动运行。(单道批处理)
- 早期联机批处理、脱机批处理:联机指作业的输入计算和输出都在CPU直接控制,脱机指用卫星机专门出理外部设备输入输出、
- 特点
- 批量:作业队列
- 自动:识别作业,装入,撤出
- 单道:依次,串行
1.2.3 多道成批处理系统
-
单道批处理不能让CPU忙碌起来,多道批处理能提高CPU的利用率。
-
随着硬件通道、中断、缓冲技术等的出现,使得计算机在组织结构上发生了重大变革。使原先以CPU为中心的体系结构,转变为以主存为中心。 使多道程序设计技术成为可能。
-
多道程序设计:是指在主存同时存放多个作业,同时处于运行状态,共享系统中的各种资源。
-
[通道]:独立于CPU,专门用来控制输入/输出设备的I/O处理机,比CPU便宜。连接着主存和外设。使CPU和外设并行操作。当需要输入/输出时,CPU向通道发命令,通道控制外设在主存和外设之间传输信息,传输完成后,通过中断机构通知CPU。
-
在单CPU系统中。宏观上,各个作业都已开始运行,但都未运行完;微观上,各个作业是串行执行的,在任何特定时刻,只有一个作业在处理机上运行。(宏观上并行,微观上串行。)
-
[中断]:当I/O设备完成传输后,通过中断机构向CPU报告完成情况。
-
[缓冲技术]:在主存设置缓冲区,来缓存用户的输入和输出,改善I/O设备和CPU之间速度不匹配的问题。
-
引入多道程序设计技术的根本目的是提高CPU的利用率。
衡量批处理系统的性能指标
- 资源利用率:指在给定时间内,系统中某一资源(如CPU、存储器、外部设备等)实际使用时间所占比率。
- 吞吐量(Throughout):指单位时间内系统所处理的信息量。通常以每小时或每天所处理的作业个数来度量。
- 周转时间:指从作业进入系统到作业退出系统所用的时间。
批处理系统特点
-
多道:内存同时存放多道程序
-
并行:宏观上
-
串行:微观上
-
优点: 系统吞吐量大,资源利用率高。适合计算量大、自动化程度高的成熟作业。
-
缺点: 用户与作业无法交互,作业平均周转时间较长。
1.2.4 分时系统
- 工作方式:一台主机连接有若干个终端。用户交互式地向系统提出命令请求,系统接受命令,采用时间片轮转方式处理请求,并在终端上显示结果。如在大型数据库上的查询。
- 分时:多用户分时使用CPU。将CPU的单位时间(如1秒钟)划分成若干个时间片。
分时系统的特点
- 同时性:若干用户同时使用一台计算机。
- 独立性:每个用户占有一台终端,独立操作,感觉不到别的用户存在。
- 交互性:用户可通过终端与系统进行人机对话。
- 及时性:用户的请求能在较短时间内得到响应。(响应时间:从用户发出请求到系统开始响应所需的时间)。
1.2.5 实时系统
- 是指计算机能对随机发生的外部事件做出及时的响应和处理。是一个专用系统。
- 不以作业为处理对象,只有几个由外部事件触发的任务。
- 实时过程控制:工业生产中的自动控制,飞机导航、导弹发射等。
- 实时信息处理:民航机票的预订、查询,银行系统的借贷,情报信息检索等系统。
实时系统特点
- 实时性。其响应时间由被控制对象所能承受的延迟来确定。
- 可靠性。要具有容错能力,可采用双工机制:一台主机;一台后备机。
- 确定性。是指系统按照固定的、预先确定的时间执行指定的操作。
1.2.6 嵌入式系统
- 以实际应用为中心、以计算机技术为基础、软硬件可裁剪的专用计算机系统。
- 软件要求固化存储。
- 通常是一个多任务可抢占式的实时操作系统,只有满足实际需要的有限功能,如任务调度、同步与通信、主存管理、时钟管理等。
- 嵌入式Linux,Windows CE。
1.3 功能、服务和特性
- 三种基本类型:批处理系统;分时系统;实时系统。
- 通用操作系统:兼有批处理、分时和实时三者或其中两者的功能。
- [如]分时和批处理相结合,将分时任务作为前台任务,将批处理作业作为后台任务,便是分时批处理系统。
操作系统的功能
-
处理机管理:进程管理。处理机如何调度的问题:FCFS、优先级、时间片轮转?
-
存储器管理:主存管理。存储分配、存储保护、主存扩充。(寄存器,高速缓存,内存,外存)
-
设备管理:涉及对系统中各种输入、输出设备的管理和控制。分配设备,控制设备传输数据。
-
文件管理:将程序、数据、操作系统软件等组织成文件,存放在磁盘或磁带上,方便用户访问。
-
为了管理系统资源,操作系统必须掌握系统资源的当前状态信息。
- 进程----进程表
- 存储器----存储表
- I/O设备----I/O设备表
- 文件----文件表
操作系统的特性
-
并发性:是为了提高计算机的处理能力而采用的一种时间上重叠操作的技术。是指系统中存在着若干个逻辑上相互独立的程序,都已被启动执行,都还没有执行完,竞争系统资源。
-
共享性:是指系统中的资源可供系统中多个并发执行的进程共同使用。如打印机、磁带机、磁盘等。支持系统并发性的物质基础是资源共享
-
虚拟性:把共享资源的一个物理实体变为若干个逻辑上的对应物。如,CPU的分时共享;虚拟存储器技术。
-
异步性(随机性):有限的资源共享使并发进程之间产生相互制约关系。各个进程何时执行、何时暂停、以怎样的速度向前推进、什么时候完成等都是不可预知的。
并发、共享、虚拟、异步
操作系统提供的服务
- 用户接口:用户通过OS来使用计算机
- 程序执行:装入内存执行,结束执行
- I/O操作:可能涉及到文件或I/O设备
- 文件系统操作:向用户提供按名存取文件
- 通信服务:进程之间(共享内存/消息传递)
- 错误检测和处理:能检测和处理错误
- 资源分配:多进程并发,资源共享
- 记帐:统计用户对系统资源的使用情况
- 保护:控制用户有限制地存取系统资源
用户接口
1.4 操作系统的进一步发展
-
个人计算机操作系统
-
多处理机操作系统
-
网络操作系统
-
分布式操作系统
-
虚拟化与云计算
-
智能手机操作系统
-
物联网操作系统
个人计算机操作系统
- 单用户单任务OS:只允许一个用户上机、只允许用户程序作为一个任务运行。如 MS-DOS。
- 单用户多任务OS:只允许一个用户上机,但允许用户有多个任务,并发执行。如Windows
- 多用户多任务OS:允许多个用户通过各自的终端,使用同一台主机,共享系统资源,每个用户又可有多个任务,并发执行。如UNIX、Linux。
单用户单任务——MS-DOS(单单)
单用多任务——Windows(单多)
多用户多任务——Unix、Linux(多多)
多处理机操作系统
- 多处理机采用紧耦合方式进行连接,共享主存
- 非对称多处理(ASMP):主处理机运行操作系统,其他处理机运行用户作业,主处理机为其他处理机分配和调度任务,主从模式。
- 对称多处理(SMP):操作系统和用户程序可安排在任何一个处理机上运行,各处理机共享主存和各种I/O设备。
网络操作系统
-
网络中的各台计算机都配有各自独立的操作系统,网络操作系统把它们联系起来,并为它们提供通信和网络资源共享。
-
Windows的自上而下的网络栈:网络应用程序、网络API、网络API驱动程序netbios.sys、协议驱动程序tcpip.sys等。与I/O系统和标准API紧密地集成在一起。
-
网络操作系统的模式:
- 客户/服务器(Client/Server)模式。服务器是一个瓶颈。
- 对等模式(Peer-to-peer):系统内的节点机(nodes)是对等的,既可作为客户机,又可作为服务器。在网络中既无服务处理中心,也无控制中心。
从Clent/Server模式可以想到网络操作系统
分布式操作系统
- 分布式系统:是由多个分散的计算机通过网络连接而成的一个统一的计算机系统。可以获得极高的运算能力和广泛的数据共享。
- 要求连网的多机有一个统一的操作系统
- 没有标准协议。
- 完全分布式系统仍在研究中。
机群(cluster)是一种分布式系统。机群节点私有OS。有一层软件运行在机群节点之上。
智能卡操作系统
- 智能卡中隐藏着一个微型操作系统。
- 智能卡中的集成电路包括:中央处理机、存储部件、对外联络的通信接口。
- 智能卡实际上是一台单片机系统。有非常严格的运行能耗和存储空间的限制(从几KB到几百KB)。
虚拟化与云计算
- 虚拟化主要是指将一台物理计算机变成多台虚拟计算机,每台虚拟机可以运行独立的操作系统和应用程序。
1.5 用户与操作系统接口
- 操作接口:命令语言或窗口界面是用户使用计算机系统的主要接口。
- 编程接口:系统调用是用户与操作系统之间的编程接口。
命令语言、窗口界面——cmd
系统调用——C/C++、Java
命令语言
- 操作系统提供一个命令解释程序来支持命令语言的解释执行。执行用户当前输入的命令。用户态。
- Linux的1号进程为每个终端用户建立一个运行shell命令解释程序的终端进程,该进程不断地处理用户发来的命令。
窗口界面
- 系统初始化时,Windows为终端用户生成了一个运行Explorer.exe程序的进程,它是一个具有窗口界面的解释程序,打开一个桌面窗口。
- 当点击桌面内的某个实用程序时,解释程序就会产生一个新进程。
系统调用
- 操作系统内核向用户提供了一组系统调用接口。用户通过系统调用接口,运行系统内核里的一些子程序。
- Windows系统提供的Win32 API函数集合,是一些库函数,由库函数去调用系统调用。文档化,易使用。
常用的系统调用
- 进程控制
- Linux: fork()/wait()/exec()
- Windows: create_thread()
- 文件管理
- 设备管理
- 其他服务
注意什么时候切换到核心态,什么时候切换回用户态
系统调用——切换为核心态执行内核子程序
核心态/用户态
- 在计算机中存在两类性质不同的程序:操作系统内核程序;用户程序。
- 前者是后者的管理者和控制者,所以前者应享有某些特权。为此将CPU的运行状态分为核心态(管态)和用户态(目态)。
- 处理机状态字(PSW)中有2个执行方式位。00为核心态,11为用户态。
- 在核心态下, 允许执行处理机的全部指令集,访问所有的寄存器和存储区;
- 在用户态下,只允许执行处理机的非特权指令,访问指定的寄存器和存储区。
- 用户态到核心态的转换由硬件完成;核心态到用户态的转换由内核程序执行后完成。
- 操作系统的大部分功能模块运行在核心态,有些功能模块通过创建用户级进程运行在用户态,例如, Windows子系统进程Csrss.exe,为用户提供窗口界面。
- 操作系统运行在核心态下, 允许执行处理机的全部指令集(包括: 特权指令和非特权指令),访问所有的寄存器和存储区;
- 普通程序运行在用户态下,只允许执行处理机的非特权指令,访问指定的寄存器和存储区。
- 特权指令:关系系统全局的指令,如存取和操作CPU状态、启动各种外部设备、设置时钟时间、关中断、清主存、修改存储器管理寄存器、改变用户方式到核心方式和停机指令等。只能操作系统调用,不允许用户使用。
硬件——用户态 → \rightarrow →核心态
内核程序——核心态 → \rightarrow →用户态
用户态只允许执行非特权指令,可以访问寄存器和存储区,但不是全部的寄存器和存储区
注意什么时候是特权指令,什么时候是非特权指令
系统调用的一般步骤
- 通过陷入Trap(或异常Exception)使系统切换到核心态;
- 将程序计数器(PC)和处理机的当前状态存入任务的堆栈中;
- 将系统调用号存入核心堆栈中;
- 执行汇编代码来保存通用寄存器中的内容;
- 调用相应的操作系统例程来完成系统调用;
- 返回用户程序继续执行。
系统调用的特点
- 一般涉及核心资源或者硬件的操作
- 如进程创建/结束、内存空间分配、外设的分配使用等
- 运行在核心态
- 每个系统调用具有唯一的编号
- 调用过程会产生中断(自愿的中断)
1.6 操作系统的运行方式
- 用户态到内核态的切换:中断、异常
- 中断(硬):异步事件。硬件发信号中断CPU,CPU转去执行中断处理程序。认为是正常的功能。
- 如I/O中断、时钟中断
- 异常(软):同步事件。是程序自己产生的特殊事件。不能被屏蔽,一旦出现应立即处理。
- 由于程序错误:如程序的非法操作码、地址越界、除数为0、存储器管理中的页面失效等
- 由于系统调用
区分什么是中断、什么是异常
中断——I/O中断、时钟中断
异常——非法操作码、地址越界(频率高)、除数为0(频率高)、页面失效(频率高)
中断响应过程
- 识别中断源
- 依据中断号,查中断向量表,查找对应的中断服务例程
- 保护断点和现场
- 装入中断服务程序的入口地址(CS:IP)
- 进入中断服务程序
- 恢复现场和断点
- 中断返回
中断响应的实质
- 交换指令执行的地址
- 交换了CPU的执行态
- 涉及的工作:
- 现场保护和恢复
- 参数传递(通信)
1.7 操作系统的设计规范和结构设计
- 系统效率:体现系统效率的指标有资源利用率、吞吐量、周转时间、响应时间等。
- 系统可靠性:系统发现、诊断和恢复故障的能力。
- 可移植性:指从一种硬件环境移植到另一种硬件环境,系统仍能正常工作。
- 可伸缩性:系统对添加软、硬件资源的适应能力。
- 兼容性:系统执行为其他OS或为同一系统早期版本所编写的软件的能力。
- 安全性:系统应具有一定的安全保护措施。
这6个感觉要背背
操作系统结构设计
- 单块结构
- 分层结构
- 微内核结构