操作系统笔记一——操作系统概述"/>
408操作系统笔记一——操作系统概述
【考查目标】
- 1. 掌握操作系统的基本概念、基本原理和基本功能,理解操作系统的整体运行过程。
- 2. 掌握操作系统进程、内存、文件和I/O管理的策略、算法、机制以及相互关系。
- 3. 能够运用所学的操作系统原理、方法与技术分析问题和解决问题,并能利用C语言描述相关算法。
第一章、操作系统概述
(一) 操作系统的基本概念
(二) 操作系统的发展
(三) 程序运行环境
1. CPU运行模式内核模式,用户模式
2. 中断和异常的处理
3. 系统调用
4. 程序的链接与装入
5. 程序运行时内存映像与地址空间
(四) 操作系统结构
分层,模块化,宏内核,微内核,外核。
(五) 操作系统引导
(六) 虚拟机
一、操作系统的基本概念:
1、计算机系统自下而上可大致分为四个部分:硬件、操作系统(OS)、应用程序、用户。(与计组不同)
2、特征:并发、共享、虚拟、异步。
3、目标和功能:
- 处理机(CPU)管理:多道程序环境下的进程管理。主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度等。
- 存储器管理:方便用户、提高内存利用率。主要包括内存分配与回收、地址映射、内存保护与共享、内存扩充等。
- 设备管理:完成用户的I/O请求,方便用户,提高设备利用率。主要包括缓冲管理、设备分配、设备处理、虚拟设备等。
- 文件管理:文件系统管理文件。包括文件存储空间的管理、目录管理、文件读写管理和保护等。
4、OS为用户与计算机硬件之间提供的接口(用户接口):
- 命令接口:
允许用户直接使用。
联机命令接口(交互式命令接口):适用于分时管理系统或实时管理系统。"说一件做一 件。"
脱机命令接口(批处理命令接口):适用于批处理管理系统。"写清单慢慢做。"
- 程序接口(系统调用、系统调用命令、广义指令):
允许用户间接使用。
用户通过这些系统调用来请求OS为其提供服务。
当前最为流行的是图形用户界面(GUI)即图形接口。
5、没有任何软件支持的计算机称为裸机。覆盖了软件的机器称为扩充机器或虚拟机。
二、操作系统的发展:
(各阶段的主要优点就是解决了上一个阶段的主要缺点。)
- 手工操作阶段(此阶段无操作系统):人机速度矛盾,用户独占全机。如:打印机加纸袋。
- 批处理阶段:脱机输入/输出技术。如:磁带。
- 单道批处理系统:自动性、顺序性、单道性(监督程序每次从磁带上只调入一道程序进入内存,该监督程序即操作系统的雏形)。
- 多道批处理系统:
- 为了进一步提高资源利用率和系统吞吐量而引入。
- 并发(引入中断技术)和共享。
- 多道、宏观上并行、微观上串行。
- 用户响应时间长,无人机交互功能。
- 分时操作系统:
- 以时间片为单位使CPU轮流为各个用户/作业服务。
- 同时性、交互性、独立性、及时性。
- 不能优先处理一些紧急任务。
- 实时操作系统:
- 硬实时系统:必须在规定时间内完成。
- 软实时系统:允许一定误差。
- 及时性、可靠性。
- 网络操作系统和分布式计算机系统:
- 两者本质不同是:分布式操作系统中的若干计算机相互协同完成同一任务。
- 个人计算机操作系统:如Windows、Linux、Macintosh等。
三、程序运行环境:
- CPU运行模式:内核模式、用户模式
- 代码、指令:一条高级语言代码翻译过来可能对应多条指令。
- 指令:
- 特权指令(不允许用户程序使用):如内存清零、置时钟、分配系统资源、修改虚存的段表或页表、修改用户的访问权限等。
- 非特权指令:如普通的运算指令。
- 两种处理器状态:
- 用户态(目态):只执行非特权指令。
- 核心态(管态):特权/非特权指令均可执行。
- 两种程序:
- 内核程序:核心态才可执行。
- 应用程序
- 内核是计算机上配置的底层软件,在核心态工作的指令有如:时钟管理、中断处理、设备驱动、进程管理、存储器管理、设备管理等。
- 操作系统内核包括四方面内容:
- 时钟管理:
- 时钟是计算机各部件中最关键的设备。第一功能是计时。
- 中断机制:
- 引入初衷是提高多道程序运行环境中CPU利用率且主要针对外部设备,如今发展多种类型。
- 现代操作系统是靠中断驱动的软件。
- 其中只有小部分属于内核,负责保护和恢复中断现场的信息,转移控制权到相关处理程序。
- 原语:
- 处于OS最底层,是最接近硬件的部分。
- 运行具有原子性,其操作只能一气呵成。
- 运行时间较短且调用频繁。
- 定义原语的直接方法:关中断使其所有动作不可分割地完成后再开中断。
- 如:设备驱动、CPU切换、进程通信等。
- 系统控制的数据结构及处理:
- 数据结构如:作业控制块、进程控制块(PCB)、设备控制块、链表、消息队列、缓冲区、空闲区登记表、内存分配表等。
- 管理操作有:
- 进程管理
- 存储器管理
- 设备管理
- 时钟管理:
- 核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令。
- 中断和异常的处理:
- 发生中断就意味着需要OS的介入,开展管理工作。
- 中断和异常的本质区别:信号来源于CPU外/内部。
- 中断(广义中断)
- 内中断(异常、例外、陷入):
- 自愿中断——指令中断(如:访管指令,又叫陷入指令、trap指令)
- 强迫中断
- 硬件故障(如:缺页)
- 软件中断(如:整数除0)
- 外中断(强迫中断、狭义中断):
- 外役请求(如:I/O操作完成发出的中断信号)
- 人的干预
- 内中断(异常、例外、陷入):
- 另一种分类方式:
- 内中断(异常):
- 陷阱、陷入(trap):有意为之的异常。(如:系统调用)
- 故障(fault):有错误条件引起,可修复。(如:缺页)
- 终止(abort):不可恢复的致命错误所引起。
- 外中断:
- I/O中断请求
- 人工干预
- 内中断(异常):
- 中断处理的过程:
- 关中断
- 保存断点
- 中断服务程序寻址
- 保存现场和屏蔽字
- 开中断
- 执行中断服务程序
- 关中断
- 恢复现场和屏蔽字
- 开中断、中断返回
- 系统调用时切换核心态、中断信号使用CPU时从用户态切换为核心态。
- 用户态->核心态:通过中断或异常实现,且为唯一途径。
- 核心态->用户态:通过执行一个特权指令,将程序状态字(PSW)的标志位设置为"用户态"。
- 系统调用:
- 按功能分类:设备管理、文件管理、进程控制、进程通信、内存管理
- 核心态运行。
- 凡是与资源相关的操作、会直接影响到其他进程的操作,一定需要OS介入,即需要通过系统调用实现。
- 库函数:
- 涉及系统调用:如创建一个新文件
- 不涉及系统调用:如取绝对值
- 若程序的运行由用户态转到核心态,则会用到访管指令(陷入指令),它是在用户态使用的,所以也不是特权指令。
- 执行陷入指令后立即引发一个内中断,从而使CPU进入核心态。
- 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行。
- 陷入指令是唯一一个只能在用户态执行而不可在核心态执行的指令。
- 程序的链接与装入
- 链接:
- 静态链接:在程序运行前,将所有目标模块链接在一起。
- 装入时动态链接:在装入内存时,边装入边链接。
- 运行时动态装入:在程序执行过程中,发现某个被调用模块未被装入内存时,立即装入内存,并将其链接到调用模块上。
- 装入:
- 绝对装入:只适合单道程序设计。用户知道程序将调如内存的什么位置,无需进行地址的映射。
- 可重定位装入:适合多道程序设计。会有地址的映射过程,是在程序执行前一次性装入的。
- 动态运行时装入:适合程序在运行时会发生位置变化。作业转入内存后并不立即发生地址映射,到程序执行时才进行地址映射。需重定位寄存器(存放程序或数据在内存中的起始地址)的帮助。这种方式为动态可重定位分区分配提供了支持。
- 链接:
- 程序运行时内存映像与地址空间:
- 静态区域:
- 代码段——由程序中执行的机器代码组成。
- 只读数据段:
- 程序使用的一些不会被更改的数据。
- 类似查表式的操作。
- 已初始化读写数据段:
- 在程序中声明。
- (程序运行时读写)具有初值的变量:
- 占用存储器的空间
- 需要位于可读写的内存区域内
- 未初始化数据段:
- 在程序中声明
- 没有初始化变量
- 在程序运行之前无需占据存储器的空间
- 动态区域:
- 栈:
- 只在程序运行时出现
- 由编译器运行
- 自动分配
- 自动释放
- 栈空间的使用:
- 函数内部使用的变量
- 函数的参数
- 函数的返回值
- 堆:
- 只在程序运行时出现
- 程序员:分配者与释放者
- 栈:
- 静态区域:
四、操作系统结构
- 分层操作系统:有序分层法。易扩充易维护,易保证系统正确性。系统效率低。
- 模块化操作系统:
- "分解"、"模块化"原则来控制软件复杂度。即模块-接口法、无序模块法。
- 模块的独立性
- 内聚性:模块内部各部分紧密联系的程度。
- 耦合性:模块间相互联系和相互影响的程度。
- 宏内核操作系统:(运行在核心态)
- 高性能。
- 内核代码庞大、结构混乱、难以维护。
- 作为一个紧密联系的整体运行在核心态。
- 中断处理、时钟管理、原语操作、进程管理、存储器管理、设备管理。
- 微内核操作系统:(内核中最基本的功能保存于此。)
- 内核功能少、结构清晰、方便维护。
- 需频繁在核心态与用户态间切换,性能低。
- 基于客户/服务器(C/S)模式,应用"机制与策略分离"原理。
- 进程(线程)管理、低级存储器管理、中断和陷入处理。
- 提高了系统可扩展性、增强系统可靠性、可移植性强、提供了对分布式系统的支持、融入了面向对象技术。
- 微内核中的服务器可理解为独立于微内核之外提供服务的软硬件模块。
- 引入外核的操作系统:
- 内核:负责实现进程调度、进程通信等功能。
- 外核:负责为用户分配与保护未经抽象的硬件资源。
- 使单用户更灵活使用硬件资源,减少了对资源的虚拟共享,提高了效率。
- 降低了系统的一致性,使系统管理更加复杂。
五、操作系统引导:
- CPU从一个特定主存地址开始,取指令,执行ROM中的引导块。(自举程序)
- 从磁盘的第一块--主引导记录读入内存,执行磁盘引导程序,检查分区表。
- 从主分区(安装了操作系统的分区)读入分区引导块,执行引导块的程序。
- 从根目录下找到完整的操作系统初始化程序并执行(完成"开机"的一系列动作)
六、虚拟机:
- 第一类VMM:
- 直接运行在硬件上,被直接控制和分配物理资源。
- 安装OS时要在原本硬盘上自行分配存储空间,类似于"外核"的分配方式,分配未经抽象的物理设备。
- 相同的硬件资源可以支持更多的虚拟机,但可迁移性差。
- 运行在最高特权级(Ring 0),可以执行最高特权的命令。
- 第二类VMM:
- 运行在Host OS上,依赖于它为自身分配物理资源。
- 拥有自己的虚拟磁盘,实际上是Host OS文件系统中的一个大文件,分配到的内存是虚拟内存。
- 性能更差,需要HostOS作为中介。
- 可支持虚拟机更少,因为HostOS本身及其上进程需要物理资源。
- 可迁移性更好。
- 部分运行在用户态、部分运行在核心态,发出的系统调用会转化为HostOS发出的系统调用。
更多推荐
408操作系统笔记一——操作系统概述
发布评论