一 基本概念
计算机系统自下而上可以大致分为:硬件,操作系统,应用程序和用户
操作系统控制和协调各用户的应用程序对硬件的分配和使用
操作系统(OS)是指控制和管理整个计算机系统的硬件与软件资源,合理的组织,调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合,操作系统是计算机系统中最基本的系统软件
1 特征
(1)并发
是指两个或多个事件在同一时间间隔内发生,但不是并行
操作系统的并发是通过分时实现的,微观上程序仍是分时交替执行
(2)共享
资源共享,系统内的资源可供内存中多个并发执行的进程共同使用
互斥共享方式:虽然是共同使用,但为了不造成混淆,规定在一段时间内只允许一个进程访问该资源,这种资源称为临界资源
同时访问方式:允许一段时间内多个进程“同时”访问,这里的同时仍可能是宏观的,微观上这些进程可能是交替的对该资源进行访问即分时共享
(3)虚拟
是指把物理上的实体变为若干逻辑上的对应物,用于实现虚拟的技术称为虚拟技术,可以实现虚拟处理器,虚拟内存,虚拟外部设备等
(4)异步
多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性
2 操作系统的目标和功能
2.1 作为计算机系统资源的管理者
(1)处理机管理
多道程序环境下,处理机的分配和运行以进程或线程为基本单位,因而对处理机的管理可归结为对进程的管理
进程管理的主要功能:进程控制,进程同步,进程通信,死锁处理,处理机调度等
(2)存储器管理
给多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,包括:内存分配与回收,地址映射,内存保护与共享,内存扩充等
(3)文件管理
负责文件管理的部分称为文件系统,包括文件存储空间的管理,目录管理及文件读写管理和保护
(4)设备管理
完成用户的I/O请求,方便用户使用各种设备,包括:缓冲处理,设备分配,设备处理和虚拟设备等
2.2 作为用户与计算机硬件系统之间的接口
(1)命令接口
联机控制方式/联机命令接口/交互式命令接口:适用于分时或实时系统的接口,由一组键盘操作命令组成,用户发一句,系统执行一句
脱机命令接口/批处理命令接口:适用于批处理系统,由一组作业控制命令组成;用户不能直接干预作业的运行,应该事先写完一起交给系统
(2)程序接口
有一组系统调用(广义指令)组成,用户通过在程序中使用这些系统调用来请求操作系统为其提供服务;当前最流行的是图形用户界面GUI,即图形接口
裸机:没有任何软件支持的计算机
覆盖了软件的机器称为扩充机器或虚拟机
二 发展历程
1 手工操作阶段
所有工作人工干预,人机矛盾大(速度和资源利用)
缺点:用户独占全机;CPU利用不充分
2 批处理阶段
2.1 单道批处理系统
(1)自动性:磁带上的一批作业自动的逐个运行
(2)顺序性:磁带上的作业顺序进入内存
(3)单道性:内存中仅有一道程序运行,即监督程序每次从磁道上只调入一道程序进入内存运行,程序完成或异常才能更换
仅有一道作业,运行期间高速的CPU和低速的I/O产生CPU的空闲
2.2 多道批处理系统
允许多个程序同时进入内存并在因I/O请求暂停时交替运行
(1)多道:同时存放多个独立的程序
(2)宏观上并行
(3)微观上串行
需解决的问题:(1)如何分配处理器;(2)内存分配问题;(3)I/O设备的分配;(4)如何组织和存放大量的程序和数据,以方便用户使用并保证其安全性与一致性
优点:资源利用率高,系统吞吐量大
缺点:用户响应时间较长;不提供人机交互能力,用户不了解程序运行情况不能控制计算机
3 分时操作系统
分时技术:把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给个各联机作业使用
分时操作系统:指多个用户通过终端同时共享一台主机,终端连接在主机上,用户可以同时与主机进行交互而互不干扰
分时系统也支持多道程序设计的系统,但实现了人机交互
(1)同时性/多路性:多个终端用户同时使用一台计算机
(2)交互性:能与系统进行人机对话,直接控制程序运行,与同程序进行交互
(3)独立性:多个用户独立的进行操作,互不干扰
(4)及时性:用户请求能在很短时间内获得响应
4 实时操作系统
硬实时系统:某个动作必须在绝对的规定时刻发生,如飞行器的飞行自动控制系统
软实时系统:接受偶尔违反时间规定且不会引起任何永久性的损害
5 网络操作系统和分布式计算机系统
网络操作系统:把计算机网络中的各台计算机有机的结合起来,提供一种统一,经济而有效的使用各台计算机的方法,实现各台计算机之间数据的互相传送
分布式计算机系统:系统中的任意两台计算机通过通信方式交换信息,地位相同,每台计算机的资源所有用户共享,任意台计算机都可以构成一个子系统,并且重构;主要特点:分布性和并行性
6 个人计算机操作系统
还有嵌入式操作系统,服务器操作系统,智能手机操作系统等
三 操作系统运行环境
1 处理器运行模式
系统中,CPU会运行两种不同执行的程序:操作系统内核程序;用户自编程序
特权指令——内核程序:如I/O指令,置中断指令,存取同于内存保护的寄存器
非特权指令——应用程序:不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间
CPU运行模式:用户态(目态)——运行应用程序;核心态——运行内核程序
通过一个小开关,置0就是核心态,执行特权指令,切换到用户态的指令也是特权指令;置1就是用户态,只能执行非特权指令,应用程序使用访管指令,产生中断事件将操作系统转换为核心态
操作系统的内核主要包括4个方面:
1.1 时钟管理
计时;通过时钟中断的管理,实现进程的切换
1.2 中断机制
提高多道程序运行环境中CPU的利用率;键盘或鼠标信息的输入,进程管理和调度,系统功能的调用,设备驱动,文件访问等
中断机制只有一小部分属于内核,负责保护和恢复中断现场的信息,转移控制权到相关的处理程序
1.3 原语
(1)处于操作系统的最底层,最接近硬件的部分
(2)这些程序的运行具有原子性, 其操作只能一气呵成
(3)这些程序的运行时间都较短,而且调用频繁
把具有这些特点的程序称为原语,定义原语的直接方法是关闭中断,完成后再打开中断
1.4 系统控制的数据结构及处理
为了实现系统中数据结构的有效管理,需要一些基本操作:
(1)进程管理:进程状态管理,进程调度和分派,创建或撤销进程控制块
(2)存储器管理:存储器空间分配和回收,内存信息保护程序,代码对换程序
(3)设备管理:缓冲区管理,设备分配和回收
核心态指令实际上包括系统调用指令和一些针对时钟,中断和原语的操作指令
2 中断和异常的概念
任何切换核心态和用户态,就需要在核心态上建立一些“门”,这就需要通过中断或异常来实现
发生中断或异常时,运行用户态的CPU会立即进入核心态,这是硬件实现的
操作系统的发展过程中就是不断提高资源利用率,就需要在程序未使用资源时把它的占有权释放,这一行为就需要中断实现
3 系统调用
系统调用是指用户在程序中调用操作系统所提供的一些子功能,系统调用可视为特殊的公共子程序
系统调用按功能可大致分为:设备管理,文件管理,进程控制,进程通信,内存管理
一些功能对系统的影响较大,必定需要使用特权指令才能执行,所以需要内核程序来执行,运行在核心态,用户程序可以==陷入指令(访管指令)==来发起系统调用,用户程序不能直接执行对系统影响大的操作,必须通过调用请求操作系统代为执行,以保证系统的稳定性和安全性
用户态转向核心态的例子:
(1)用户程序要求操作系统的服务,即系统调用
(2)发生一次中断
(3)用户程序产生了一个错误状态
(4)用户程序中企图执行一条特区指令
(5)核心态转回用户态,也是特权指令实现,一般是中断返回指令
四 操作系统结构
提供合理的结构,降低操作系统的复杂度,提升操作系统安全与可靠性
1 分层法
将操作系统分为若干层,最底层为硬件,最高层为用户接口,每层只能调用紧邻它的低层的功能和服务
优点:便于系统的调试和验证,简化了系统的设计和实现;易扩充和易维护
缺点:合理定义各层比较困难;效率较差
2 模块化
将操作系统按功能划分为若干具有一定独立性的模块,每个模块具有某方面的管理功能,并规定好各模块间的接口,使得各模块之间能够通过接口进行通信
划分模块太小会使得模块之间的联系过多,系统混乱;模块太大,又会增加模块的内部复杂性;同时模块的独立性越高,各模块之间的交互越少,系统的结构越清晰
衡量模块的独立性主要有两个标准:
内聚性:模块内部各部分间联系的紧密程度,越高,独立性越高
耦合性:模块间相互联系影响的程度,越低,独立性越好
模块化的优点:提高了操作系统设计的正确性,可理解性和可维护性;增强了操作系统的可适应性;加速了操作系统的开发过程
缺点:模块间的接口规定很难满足对接口的实际需求;各模块设计者齐头并进,每个决定无法建立在上一个已验证的正确决定的基础上,无法找到一个可靠的决定顺序
3 宏内核
按内核架构来划分可以分为宏内核和微内核
宏内核(单内核,大内核):指将系统的主要功能模块都作为一个紧密联系的整体运行的核心态,从而为用户程序提供高性能的系统服务,各模块之间共享信息,有效利用相互之间的有效特性,具有无可比拟的性能优势
但是操作系统的服务也越来越复杂,设计规模急剧增长,所以出现微内核技术:将一些非核心的功能移到用户空间
目前主流是混合内核,由宏内核吸收了微内核的优点糅合而成
4 微内核
(1)基本概念
是指内核中最基本的功能保留在内核,而不需要在核心态执行的功能移到用户态执行,从而降低内核的设计复杂性
微内核将操作系统划分为两大部分:微内核和多个处理器
微内核是指精心设计的,能实现操作系统最基本核心功能的小型内核,通常包含:与硬件紧密相关的部分;一些较基本的功能;客户和服务器之间的通信
操作系统的绝大部分功能都放在微内核外的一组服务器中实现,如用于提供对进程线程进行管理的进程线程服务器
只有微内核运行在内核态,其余模块运行在用户态,一个模块的错误只会导致这个模块的崩溃,不会使整个系统崩溃
(2)微内核的基本功能
- 进程线程管理
- 低级存储器管理
- 中断和陷入处理
微内核操作系统将进程管理,存储器管理以及I/O管理这些功能一分为二,属于机制的很小的一部分放入微内核,绝大部分放入各种服务器中实现
(3)微内核的特点
- 扩展性和灵活性:从内核中分离出来后,要修改或增加时,只需在相应的服务器中修改或新增一个服务器,无须动内核
- 可靠性和安全性
- 可移植性
- 分布式计算:客户和服务器之间,服务器和服务器之间的通信采用信息传递机制,使得微内核系统能很好的支持分布式系统和网络系统
频繁的切换核心态和内核态和导致系统的执行开销偏大,为了改善,可以将那些频繁使用的系统服务移回内核
5 外核
在底层中,一种称为外核的程序在内核态中运行,它的任务是为虚拟机分配资源,并检查使用这些资源的企图,以确保没有机器会使用他人的资源
优点:减少映射层,将多道程序(在外核内)与用户操作系统代码加以分离,而且相应的负载并不重
五 操作系统引导
(1)激活CPU:读取ROM中的boot程序,并开始执行BIOS指令
(2)硬件自检
(3)加载带有操作系统的硬盘
(4)加载主引导记录MBR
(5)扫描硬盘分区表
(6)加载分区引导记录PBR
(7)加载启动管理器
(8)加载操作系统
六 虚拟机
基本概念:是一台逻辑计算机,利用特殊的虚拟化技术,通过隐藏特定计算平台的实际物理特性,为用户提供抽象的,统一的,模拟的计算环境
第一类虚拟机管理程序
就像一个操作系统,它是唯一一个运行在最高特权级的程序
虚拟操作系统执行特区指令时会模拟真实硬件面对用户态执行特权指令时的行为
第二类虚拟机管理程序
虚拟化在web主机领域很流行,服务商提供虚拟机时一台物理服务器就可以运行多个虚拟机,每个虚拟机看起来都是一台完整的服务器,客户在虚拟机上安装自己想用的操作胸,只需支付较低的费用,这就是市面上常见的云主机