目录
一、基本概念
1.操作系统的概念
操作系统(Operating System,OS)是最基本的系统软件,是一组有效管理和控制计算机硬件和软件资源、合理地对各类作业进行调度以组织和控制系统工作流程,并方便用户使用计算机的程序的集合。其主要作用是管理好这些设备,提高它们的利用率和吞吐量,并为用户和应用程序提供一个简单的接口,便于用户使用。OS是现代计算机系统中最基本和最重要的系统软件。
2.操作系统设计目标
在计算机上配置操作系统的主要目标是:方便性、有效性、可扩充性、开放性。其中有效性包含两层含义:一是提高系统资源利用率;二是提高系统吞吐量。方便性和有效性是设计OS时最重要的两个目标。
3.操作系统功能及特征
操作系统的主要功能有:处理机管理功能、存储器管理功能、设备管理功能、文件管理功能。其中处理机管理功能包括进程控制、进程同步、进程通信、调度(包含作业调度和进程调度);存储器管理功能包括内存分配、内存保护、地址映射、内存扩充(虚拟存储技术);设备管理功能包括缓冲管理、设备分配、设备处理;文件管理功能包括文件存储空间的管理、目录管理、文件的读/写管理和保护。
现代操作系统的新功能还包括系统安全、网络的功能和服务、支持多媒体。其中系统安全包含认证技术、密码技术、访问控制技术、反病毒技术;网络功能和服务包含网络通信(在源主机和目标主机之间实现无差错的数据传输)、资源管理、应用互操作;支持多媒体包含接纳控制功能、实时调度、多媒体文件的传输。
操作系统的特征是:并发(concurrence)、共享(sharing)、虚拟(virtual)、异步(asynchronism)。
二、操作系统运行硬件基础
1.内存系统(Memory Systems)
主存(Main Memory):实际地址空间(real address space)或称作物理地址空间,按字节编址,包括RAM(随机存取存储器)和ROM(只读存储器),还有一部分保留用于设备或以后它用。
高速缓冲(Cache Memories):因内存寻址访问效率和局部性原理而引入;由硬件管理,对软件不可见。
2.用户指令集体系结构(User ISA)
寄存器架构,包括通用寄存器、特定类型寄存器和专用寄存器。
内存架构,逻辑/虚拟地址空间,包括线性编址和分段编制。
用户指令——运算型:内存存取指令;分支跳转指令;整数算术、逻辑及移位指令;浮点指令。
3.内存管理模型
内存管理模型包括实地址模型、平坦模型和分段模型。
4.特权级别与环结构
特权级别分为用户模式和特权/超级/系统模式,其环结构如下图所示:
5.系统指令集体系结构(System ISA)
系统寄存器架构,包括系统时钟寄存器、陷入与中断寄存器、陷入与中断屏蔽寄存器、页/段表指针寄存器。
处理器资源管理支持,包括系统调用/返回指令、中断定时器及设置机制。
内存资源管理支持,虚拟地址空间到物理地址空间的映射(页表&TLB)。
I/O资源管理支持,I/O设备寻址与I/O指令。
6.中断与陷入
中断(interrupt)是指CPU对I/O设备发来的中断信号的一种响应,与当前指令无关,是外中断;而陷入(trap)是由CPU内部事件所引起的,与当前指令有关,是内中断。
陷入流程:异常→设置陷入寄存器→查看陷入屏蔽寄存器裁决→终止“陷入”指令并置处理器准确状态→保存程序计数及各寄存器值→处理器置特权模式并交操作系统控制权→操作系统保存未被硬件保存的“陷入”进程的关键状态信息,经分析转特定异常陷入处理例程,待完成返回后恢复现场和转原“陷入”进程“异常”指令处继续执行。
陷入指令是唯一一个只能在用户态执行而不可以在核心态执行的指令。
访管指令是一种”系统调用“式陷入。
三、操作系统接口分类及组成
1.接口分类及组成
基于接口表现形式可划分为用户接口和程序接口。其中用户接口包括命令接口(包含联机命令接口和脱机命令接口)和图形用户接口(图形化操作界面);程序接口由一组系统调用组成,方便用户程序访问系统资源。
2.联机命令接口
联机命令接口由一组联机命令、键盘终端处理程序和命令解释程序构成。
基于接口使用者类型可划分为本地用户接口和远程用户接口(网络用户接口)。
3.图形用户接口
图形用户接口的特点是:基于图形元素来表示功能,方便用户操纵和触发对应功能;同屏多窗口与并发进程对应;支持即时交互,鼠标点击和键盘输入并举;操作直观,不必死记命令行参数,传递信息量大。
图形用户接口实现及运行机制包括面向对象程序设计方法;消息产生、传递及处理;事件驱动模式。
四、操作系统内核用典型数据结构
1.操作系统的设计原则
操作系统的设计原则包括可维护性(纠错性/适应性/完善性/预防性维护)、可靠性(正确性/健壮性)、可理解性和可用性。性能方面要考虑系统资源利用率和用户请求响应。
2.无结构操作系统
致力于功能实现和提高效率,缺乏首尾一致的设计思想。此时的OS是为数众多的一组过程的集合,且集合内各过程可相互调用,这就导致操作系统内部既混乱又复杂。这样的操作系统内部不存在任何结构,系统易出错、调试困难、维护麻烦。
3.模块化操作系统
模块化操作系统结构如下:
优点:提高了设计的正确性、可理解性和可维护性;增强了操作系统的可适应性;加速了操作系统的开发过程。
缺点:对各模块的接口规定很难满足对接口的实际需求;未能区别共享资源和独占资源;模块间依赖关系复杂。
4.分层式操作系统
结构及分层原则:被调用功能放在较低层次(作业调度→进程控制→内存管理);活跃功能放在低层(时钟管理、进程调度);资源分配策略放在高层(便于修改或适应不同环境);最低层是资源管理公共模块如队列、堆栈、信号量操作等;最高层是用户接口。
优点:易保证系统的正确性;易扩充和易维护性。
缺点:系统运行效率降低。
5.微内核操作系统
客户/服务器模型:
微内核的基本功能包括进程(线程)管理、低级存储器管理、以及中断和陷入处理。
足够小的内核;基于客户/服务器模式;应用”机制与策略分离“原理;采用面向对象技术。
优点:提高了系统的可扩展性;增强了系统的可靠性;可移植性强;提供了对分布式系统的支持;融入了面向对象技术。
缺点:系统运行效率降低。
五、系统调用实现机制
1.系统调用的概念
每一个系统调用都是一个能完成特定功能的子程序。每当应用程序要求OS提供某种服务(功能)时,便调用具有相应功能的系统调用(子程序)。
2.系统调用与普通调用的区别
系统调用与普通调用的区别是:运行在不同的系统状态(调用程序运行在用户态,被调用程序运行在系统态);通过软中断进入机制实现系统状态的转换;返回及重新调度问题;嵌套调用。
3.系统调用的类型
系统调用的类型包括进程控制类、文件操纵类、进程通信类、系统信息维护类。
4.系统调用的使用层次
系统调用使用层次如下:
5.系统调用的实现机制
系统调用实现机制如下:
6.系统调用的实现要领
系统调用的实现要领:
(1)设置系统调用号(指定寄存器/内存单元)和参数(直接【寄存器】和间接【参数表指针】)。
(2)系统调用命令的一般性处理:将处理机状态由用户态转为系统态;保护CPU现场,将PSW、PC、系统调用号、用户栈指针、通用寄存器等压入堆栈;用户定义参数送至指定位置。
(3)分析系统调用类型,转相应处理子程序(中断和陷入向量表)。
六、操作系统启动引导过程
1.系统启动过程(以Linux系统为例)
机器加电→BIOS加电自检→进行硬件检测→读入启动盘引导扇区512字节到内存→检查内存→执行引导记录程序。引导代码必须编译成plain binary file类型且为512B。
2.二次装载引导程序
二次装载含义:由BIOS将引导记录载入内存执行;由引导记录将操作系统内核载入内存。
软驱复位与读取:BIOS之INT 13H功能调用。
字符串显示:BIOS之INT 10H功能调用。