这是本人根据王道考研操作系统课程整理的笔记,希望对您有帮助。
第1章 计算机系统概述
1.1 操作系统的基本概念
1.1.1 操作系统的概念、功能和目标
操作系统 是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的 系统软件
操作系统提供的功能
- 作为系统资源的管理者
- 提供的功能
- 处理机(CPU)管理
- 存储器管理
- 文件管理
- 设备管理
- 目标:安全、高效
- 提供的功能
- 作为用户和计算机硬件之间的接口
- 提供的功能
- 命令接口:运行用户直接调用
- 联机命令接口(交互式命令接口):用户说一句,系统做一句(如:
cmd
命令行) - 脱机命令接口(批处理命令接口):用户说一堆,系统做一堆(如:
.bat
文件)
- 联机命令接口(交互式命令接口):用户说一句,系统做一句(如:
- 程序接口:运行用户通过程序间接使用(如:
.dll
文件) - GUI:现代操作系统中最流行的图形用户接口
- 命令接口:运行用户直接调用
- 目标:方便用户使用
- 提供的功能
- 作为最接近硬件的层次
- 提供的功能:实现对硬件机器的拓展
- 裸机:没有任何软件支持的计算机
- 扩充机器:覆盖了软件的机器
- 提供的功能:实现对硬件机器的拓展
1.1.2 操作系统的特征
并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
易混淆概念:
并行:指两个或多个事件在同一时刻同时发生
操作系统的并发性:指计算机系统中同时存在着多个运行着的程序
一个单核处理机(CPU)同一时刻只能执行一个程序,因此操作系统会负责协调多个程序交替执行(这些程序微观上是交替执行的,但宏观上看起来就像在同时执行)
共享:即资源共享,是指系统中的资源可共内存中多个并发执行的进程共同使用。
两种资源共享方式
- 互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。
- 同时共享方式:系统中的某些资源,允许一个时间段内由多个进程“同时”(宏观上同时,微观上交替)对他们进行访问
互斥共享方式:使用QQ和微信视频。同一时间段内摄像头只能分配给其中一个进程。
同时共享方式:使用QQ发送文件A同时使用微信发送文件B。宏观上看,两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是交替着访问硬盘的。
并发性:指计算机系统中同时存在着多个运行着的程序
共享性:指系统中的资源可供内存中多个并发执行的进程共同使用
虚拟:是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
虚拟技术
-
空分复用技术(如虚拟存储器技术)
-
时分复用技术(如虚拟处理器)
异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
结论
- 并发性和共享性互为存在条件
- 没有并发性和共享性,就谈不上虚拟性和异步性
- 并发和共享是操作系统的两个最基本的特征
1.1.3 操作系统的运行机制和体系结构
运行机制
- 两种指令
- 特权指令:如内存清零指令
- 非特权指令:如普通的运算指令
- 两种处理器状态:用程序状态字寄存器(PSW)中的某标志位来标识当前处理器处于什么状态
- 核心态:此时CPU只能执行非特权指令
- 用户态:特权指令、非特权指令都可执行
- 两种程序
- 内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态
- 应用程序:为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态
操作系统内核
- 时钟管理:实现计时功能
- 中断处理:负责实现中断机制
- 原语
- 是一种特殊的程序
- 处于操作系统最底层,是最接近硬件的部分
- 这种程序的运行具有原子性——其运行只能一气呵成,不可中断
- 运行时间较短、调用频繁
- 对系统资源进行管理的功能
- 进程管理
- 存储器管理
- 设备管理
操作系统的体系结构
- 大内核
- 优点:高性能
- 缺点:内核代码庞大,结构混乱,难以维护
- 微内核
- 优点:内核功能少,结构清晰,方便维护
- 缺点:需要频繁地在核心态和用户态之间切换,性能低
1.1.4 中断和异常
中断的概念和作用
- 当中断发生后,CPU立即进入核心态
- 当中断发生后,当前运行的进程暂停执行,并由操作系统内核对中断进行处理
- 对于不同的中断信号,会进行不同的处理
发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要使用特权指令,因此CPU要从用户态转为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行。
用户态→核心态:通过中断实现,且中断是唯一途径。
核心态→用户态:通过执行一个特权指令,将程序状态字(PSW)的标志位设置为”用户态“
中断的分类
- 内中断(也称异常、例外、陷入)——信号的来源:CPU内部,与当前执行的指令有关
- 自愿中断——指令中断
- 强迫中断
- 硬件故障:如 缺页
- 软件故障:如 整数除0
- 外中断(狭义的中断)——信号的来源:CPU外部,与当前执行的指令无关
- 外设请求:如 I/O操作完成发出的中断信号
- 人工干预:如 用户强行终止一个进程
另一种分类方式:
外中断的处理过程
- 执行完每个指令之后,CPU都要检查当前是否有外部中断信号
- 如果检测到外部中断信号,则需要保护被中断进程的CPU环境(如程序状态字PSW、程序计数器PC、各种通用寄存器)
- 根据中断信号类型转入相应的中断处理程序
- 恢复原进程的CPU环境并退出中断,返回原进程继续往下执行
1.1.6 系统调用
系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。
应用程序通过系统调用请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、/O操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
系统调用的分类
- 设备管理
- 文件管理
- 进程控制
- 进程通信
- 内存管理
系统调用和库函数的区别
- 系统调用是操作系统向上层提供的接口
- 有的库函数是对系统调用的进一步封装
- 当今编写的应用程序大多是通过高级语言提供的库函数间接地进行系统调用
系统调用背后的过程
传递系统调用参数→执行陷入指令(用户态)→执行系统调用相应服务程序(核心态)→返回用户程序
注意:
- 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态
- 发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行
- 陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令