目录
一:操作系统的基本概念
-
操作系统的概念
计算机系统的层次结构:(自下而上)硬件、操作系统、应用程序(软件)、用户。
操作系统的功能:负责管理协调硬件、软件等计算机资源的工作;为上层的应用程序、用户提供简单易用的服务;操作系统是系统软件,而不是硬件。
操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。
-
操作系统的特征
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
共享:资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。(互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,一个时间段内只允许一个进程访问该资源 同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”对它们进行访问)
虚拟:是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体是实际存在的,而逻辑上对应物是用户感受到的。
异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进。
并发和共享互为存在条件
没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征
-
操作系统的功能
作为系统资源的管理者:(功能)处理机管理、存储器管理、文件管理、设备管理。(目标)安全、高效。
作为用户和计算机硬件之间的接口:(功能)[联机、脱机]命令接口、程序接口、GUI/图形用户界面。
{用户接口:
命令接口:允许用户直接使用。联机命令接口:用户说一句,系统做一句。 脱机命令接口:用户说一堆,系统做一堆。
程序接口:允许用户通过程序间接使用。由一堆系统调用组成。 程序接口=系统调用=系统调用命令=广义指令。}
作为最接近硬件的层次:实现对硬件机器的拓展。
二:操作系统的发展与分类
- 手工操作阶段
- 批处理阶段—单道批处理系统
- 批处理阶段—多道批处理系统(资源利用率大幅度提升)
- 分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,多个用户可通过终端与计算机交互。主要优点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户服务一个时间片。
- 实时操作系统:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。(及时性和可靠性)[硬实时系统:必须在绝对严格的规定时间内完成处理][软实时系统:能接受偶尔违反时间规定]
- 其他几种操作系统:网络操作系统、分布式操作系统、个人计算机操作系统。
三:操作系统的运行环境
-
操作系统的运行机制
“指令”处理器(CPU)能识别、执行的最基本命令
——特权指令:不允许用户程序使用
——非特权指令
处理器状态:
——用户态(目态)只能执行非特权命令
——核心态(管态)
程序:
——内核程序:操作系统的内核程序是系统的管理者,既可以执行特权命令,也可以执行非特权指令,运行在核心态
——应用程序:为了保证系统安全运行,只能执行非特权指令,运行在用户态
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。
实现操作系统内核功能的那些程序就是内核程序。
原语:是一种特殊的程序;处于操作系统最底层,最接近硬件的部分;这种程序的运行具有原子性—只能一气呵成,不可中断;运行时间较短、调用频繁。
-
中断和异常
为了解决系统资源利用率低的问题,发明了操作系统引入中断机制,实现了多道程序并发执行。
本质:发生中断就意味着需要操作系统介入,开展管理工作。
中断过程:
当中断发生时,CPU立即进入核心态
当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
对于不同的中断信号,会进行不同的处理
用户态、核心态之间的切换是怎么实现的?
用-->核:只能通过中断
核-->用:执行一个特权指令,将程序状态字PSW标志位设置为“用户态”
中断:(王道)
内中断(异常、例外、陷入):自愿中断(指令中断);强迫中断:硬件故障、软件中断;
外中断:外设请求;人工干预。
中断:
内中断(内部异常):陷阱、陷入;故障;终止。
外中断:I/O中断请求;人工干预。
外中断的处理过程:
- 执行完每个指令之后,CPU都要检查当前是否有外部中断信号;
- 如果检测到外部中断信号,保护被中断进程的CPU环境(PSW、PC、各种通用寄存器);
- 根据中断信号类型转入相应的中断处理程序;
- 恢复原进程的CPU环境并退出中断,返回原进程继续往下执行。
-
系统调用
按功能分类:设备管理、文件管理、进程控制、进程通信、内存管理。
过程:传递系统调用参数à执行陷入指令[唯一一个只能在用户态执行的指令](用户态)à执行系统调用相应服务程序(核心态)à返回用户程序
四:操作系统的体系结构
- 大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态。 优点:高性能。 缺点:内核代码庞大,结构混乱,难以维护。
- 微内核:只把最基本的功能保留在内核。 优点:内核功能少,结构清晰,方便维护。 缺点:需要频繁的在核心态和用户态之间切换,性能低。