操作系统的定义
操作系统(Operating System,os)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。
总结:
- 负责管理协调硬件、软件等计算机资源的工作
- 为上层应用程序、用户提供简单易用的服务
- 操作系统是系统软件,而不是硬件
操作系统的功能和目标
- 作为系统资源的管理者(对软件、硬件、文件等),需要实现什么功能和目标:
- 功能
- 文件管理(外存管理)
- 存储器管理(内存管理)
- 处理机管理(cpu对各进程的调度)
- 设备管理(操作系统调用调用鼠标、键盘、摄像头等硬件)
- 目标
- 安全、高效
- 功能
- 作为用户与计算机硬件之间的接口(对其上层的用户、应用程序),需要实现什么功能和目标:
- 功能
- 命令接口(允许用户直接使用)
- 联机命令接口(用户说一句,系统做一句)(类似于直接使用cmd)
- 脱机命令接口(用户说一堆,系统做一堆,也叫批处理命令接口)(类似于python脚本)
- 程序接口(允许用户通过程序间接使用)(程序接口=系统调用=广义指令,用户调用程序接口,程序调用系统命令)(类似于用户调用dll,dll执行系统命令)
- GUI(图形用户界面)(不需要记忆复杂指令,点点点就完了)
- 命令接口(允许用户直接使用)
- 目标
- 方便用户使用
- 功能
- 作为最接近硬件的层次(对其下层的纯硬件),需要实现什么功能和目标:
- 功能
- 提供资源管理功能 和 方便用户的服务功能
- 目标
- 将裸机改造成功能更强、使用更方便的机器(通常把覆盖了软件的机器称为扩充机器或虚拟机)
- 功能
操作系统的特征
- 并发(指多个事件在同一时间间隔内发生,宏观上是同时发生的,微观上是交替发生的)
- 共享
- 互斥共享(同一时间段内仅允许一个进程访问该资源)
- 同时共享(同一时间段内允许多个进程同时访问该资源)(此处的同时指宏观上的同时访问,微观上依然是交替访问)
- 虚拟(指把一个物理上的实体变为若干个逻辑上的对应物,物理实体是实际存在的,逻辑对应物是用户感受到的)
- 空分复用技术(虚拟存储器技术,使内存看起来远大于实际内存,类似于内存动态加载)
- 时分复用技术(虚拟处理器技术,使cpu核数看起来远大于实际核数,类似于协程)
- ps:如果失去并发性,那么一段时间内系统仅运行一个任务,就无法使用虚拟技术拓展时空。因此,没有并发就没有虚拟
- 异步
- 异步处理不需要像同步处理那样,阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程
ps:
- 并发与并行的区别:并行是多个事件在同一时刻同时发生,并行是真的同时发生,而并发是交替发生
- 并发与共享的关系:互为存在条件,失去并发则系统仅有一个程序在运行,共享就没有意义,失去共享就不能同时访问资源,并发就没有意义
- 没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征
重点:
- 理解并发和并行的区别
- 并发和共享互为存在条件
- 没有并发和共享,就没有虚拟和异步,并发和共享是操作系统的两个最基本的特征
操作系统的发展与分类
绿框部分需要掌握,其余三个部分了解
ps:主要掌握绿框部分操作系统各阶段的优点及缺点(每个阶段的优点都是解决上一阶段的缺点)
-
手工操作阶段【纸带——计算机】
- 主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低
-
批处理阶段——单道批处理系统【纸带——磁带——计算机,通过磁带进行批处理】
- 主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升
- 主要缺点:内存中仅有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。
单道批处理系统用时示意如下
-
批处理阶段——多道批处理系统【纸带——磁带——计算机,通过磁带进行批处理,引入中断技术,并发执行任务,操作系统正式诞生】
- 主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源保持忙碌状态,系统吞吐量增大。
- 主要缺点:用户响应时间长,没有人机交互功能(用户提交自己作业之后就只能等待计算机处理完成,执行过程中不能操作自己的作业)
多道批处理系统用时示意
-
分时操作系统 【计算机以时间片为单位轮流为各个用户/作业服务,各个用户可以通过终端与计算机进行交互】
- 主要优点:用户请求可以被及时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在
- 主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户的作业服务一个时间片,不区分任务的紧急性
-
实时操作系统
- 主要优点:能够优先响应紧急任务,某些紧急任务不需要时间片排队。在实时操作系统的控制下,计算机计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的主要特征是及时性和可靠性
- 实时操作系统又分为两种:
- 硬实时操作系统:必须在严格规定的时间内完成处理【例如:导弹控制系统、自动驾驶系统】
- 软实时操作系统:能接受偶尔违反时间规定的情况【例如:12306火车订票系统】
-
网络操作系统【了解即可】
是伴随着计算机网络的发展而诞生的,能把网络中的各个计算机有机的结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。(如:Windows NT 就是一种典型的网络操作系统,可以作为网站服务器使用) -
分布式操作系统【了解即可】
主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务 -
个人计算机操作系统【了解即可】
如 windows XP、win10、MacOS ,方便个人使用
ps:知识点回顾
os的运行机制和体系结构
-
运行机制
- 两种指令(根据指令对系统的影响级别划分)
- 特权指令(例如内存清零指令)
- 非特权指令(例如加、减、乘、除指令)
- 两种处理器状态(根据程序可使用的指令权限来划分,用程序状态字寄存器psw中的某标志位来标识当前处理器处于什么状态,如0为用户态,1为和心态)
- 核心态(目态):此时cpu可以执行特权指令和非特权指令
- 用户态(管态):此时cpu只能执行非特权指令
- 两种程序(根据程序处于什么状态来划分)
- 内核程序(内核程序是系统的管理者,既可以执行特权指令也可以执行非特权指令,运行在核心态)
- 应用程序 (普通应用程序只能执行非特权指令,运行在用户态)
- 两种指令(根据指令对系统的影响级别划分)
-
内核
- 时钟管理(计时功能)
- 中断处理(实现中断机制)
- 原语
- 是一种特殊的程序
- 处于操作系统最底层,是最接近硬件的部分
- 程序运行一气呵成不可中断具有原子性
- 运行时间短调用频繁
- 对系统资源进行管理的功能(有的操作系统不把这部分功能归为内核功能,不同操作系统对内核的划分可能不一样)
- 进程管理
- 存储器管理
- 设备管理
- 体系结构
- 大内核
- 将操作系统的主要功能模块都作为系统内核,运行在核心态
- 优点:高性能
- 缺点:内核代码庞大,结构混乱、难以维护
- 微内核
- 只把最基本的功能保留在内核
- 优点:内核功能少、结构清晰、方便维护
- 缺点:需要频繁的在核心态与用户态之间切换,性能低
- 大内核
ps:
操作系统的体系结构问题与企业的管理问题很相似。内核就是企业的管理层,负责一些重要的工作。只有管理层才能执行特权指令,普通员工只能执行非特权指令。用户态、核心态之间的切换相当于普通员工和管理层之间的工作交接
大内核:企业初创时体量不大,管理层的人会负责大部分的事情。优点是效率高;缺点是组织结构混乱,难以维护。
微内核:随着企业体量越来越大,管理层只负责最核心的一些工作。优点是组织结构清晰,方便维护:缺点是效率低。
中断
-
概念
- 为了解决程序串联执行导致资源利用率低下的问题,人们发明了操作系统,引入了中断机制,实现了程序的并发执行。
- 中断发生时,cpu会切换为核心态并将权限交给操作系统,操作系统将对中断信号进行处理
-
作用特点:
- 当中断发生时,cpu会立即进入核心态
- 当中断发生后,当前进程会暂停运行,并由操作系统内核对中断进行处理
- 对于不同的中断信号,会进行不同的处理(比如程序1时间片到了切换程序2执行,程序1进入io状态了切换其他程序执行)
-
总结:
- 中断可以使cpu从用户态转为核心态
- 中断可以使操作系统获得计算机的控制权
- 中断是实现多道程序并发的基础
- cpu从用户态转为核心态的唯一途径是中断,而从核心态转为用户态的方式是通过执行一条特权指令将用户状态字(psw)的标志位设置为“用户态”来完成的
-
分类
- 内中断(也称为异常、例外、陷入):特点是信号来源于cpu 内部,与当前执行的指令有关
- 按中断方式分类(基本分类方式)
- 自愿中断(指令中断):如 系统调用时使用的访管指令,又叫陷入指令或trap指令
- 强迫中断
- 硬件故障:如 缺页
- 软件中断:如 整数除0
- 按中断原因分类(补充分类方式)
- 陷阱、陷入(trap):有意为之的异常,如 系统调用
- 故障(fault):由错误条件引起的结果,可能被故障处理程序修复,如 缺页
- 终止(abort):不可恢复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如 整数除0
- 按中断方式分类(基本分类方式)
- 外中断(也可以叫中断,是狭义上的中断):特点是信号来源于cpu 外部,与当前执行的指令无关
- 外设请求:如 io操作完成发出的中断信号
- 人工干预:如 用户强行终止一个进程
- 内中断(也称为异常、例外、陷入):特点是信号来源于cpu 内部,与当前执行的指令有关
-
外中断的处理过程
- 执行完每条指令后,cpu会检查当前是否有外部中断信号
- 如果检查到外部中断信号,则需要保护被中断进程的cpu环境(如程序状态字psw、程序计数器pc,各种通用寄存器)
- 根据中断信号类型转入相应的中断处理程序(中断处理系统就是操作系统内核,运行在核心态)
- 恢复原进程的cpu环境并退出中断,返回原进程继续往下执行
系统调用
- 概念
系统中的各种共享资源都由操作系统统一管理,在用户程序中凡与 资源有关 的操作(如存储分配、io操作、文件管理等),都必须向操作系统提出请求,并由 操作系统代为完成,这就是系统调用 - 作用
保证系统的稳定性和安全性,防止用户程序非法操作 - 系统调用和库函数的区别
- 库函数是由高级编程语言(java、c、python等)提供的,可以间接的使用系统调用
- 有的库函数不涉及系统调用,只在用户态下执行即可(如,变量加减乘除运算),有的则会间接的使用系统调用,需要在核心态下执行(如,创建文件)
- 系统调用背后的过程
- 用户程序传递系统调用参数
- (用户态下)执行陷入指令(或作 trap指令、访管指令)
- (核心态下)执行系统调用
- 返回用户程序
ps:
- 系统调用需要执行一些特权指令,因此系统调用需要在 核心态 下进行
- 系统调用按功能可以分为如下几类
- 设备管理:设备请求/释放/启动
- 文件管理:文件读写/创建/删除
- 进程控制:进程创建/阻塞/唤醒/杀死
- 进程通信:进程消息传递/信号传递
- 内存管理:内存分配/回收
- 陷入指令 是在 用户态 下执行的,执行陷入指令后立即引发一个 内中断,从而使cpu进入核心态
- 发出系统调用的 请求 是在 用户态 下执行,而对系统调用的 处理 是在 核心态 下执行
- 一般核心态可以执行任意指令,包括用户态的指令,但 陷入指令是唯一一个只能在用户态下执行不能在核心态下执行的指令
进程
-
概念
进程就是正在执行的程序,程序执行前需要将该程序放到内存中,才能被cpu处理 -
组成
进程(进程实体)由 程序段、数据段、PCB 三部分组成- 程序段:(存代码)程序代码存放在此
- 数据段:(存数据)程序运行时使用、产生的运算数据,如全局变量、局部变量、常量等就存放在此
- PCB(进程控制块):(除了代码和数据的其他信息)包含操作系统对此进程进行管理所需的各种信息(操作系统通过PCB来管理进程,PCB是进程存在的唯一标志!)
PCB中的存储信息具体包括如下内容:
-
组织方式
- 链接方式:将PCB分为多个队列,操作系统持有的指针指向各队列
- 索引方式:将PCB分为多个索引表,操作系统持有的指针指向各索引表,各索引表中的指针指向PCB
-
特征
- 动态性:进程是 程序的一次执行过程,动态的产生、变化、消亡
- 并发性:内存中有多个进程实体,各进程可并发执行
- 独立性:进程是 独立运行、独立获得资源、独立接收调度 的 基本单位
- 异步性:各进程按照各自独立的、不可预知的速度向前推进,操作系统提供 “进程同步机制” 来解决异步问题
- 结构性:每个进程都会配置一个PCB。从结构上看,进程由 程序段、数据段、PCB 组成
进程的状态与状态转换
- 五种状态
- 创建状态:进程正在创建,操作系统为进程分配资源、创建PCB
- 终止状态:进程正在销毁,操作系统回收进程的资源、撤销PCB
- 运行状态:cpu正在执行进程,此时该进程 拥有cpu和其他所需资源
- 就绪状态:等待cpu调度,此时该进程 仅拥有其他所需资源
- 阻塞状态:等待其他资源响应,此时该进程 两样都没有
- 状态转换的触发条件
- 就绪状态 → 运行状态:进程被cpu调度
- 运行状态 → 就绪状态:时间片到了 或者 cpu被其他高优先级的进程抢占
- 运行状态 → 阻塞状态:等待系统资源分配 或者 等待某事发生(主动行为,进程主动进入阻塞状态)
- 阻塞状态 → 就绪状态:资源分配到位了 或者 等待的事件发生了(被动行为,进程不可控制其他事件进度,被动等待事件发生后才能转换为就绪状态)
- 创建状态 → 就绪状态:系统完成创建进程的相关工作
- 运行状态 → 终止状态:进程运行结束 或者 运行过程中遇到不可修复的错误
ps:
- 进程 不能 由 阻塞状态 直接转换为 运行状态
- 进程 不能 由 就绪状态 直接转换为 阻塞状态
- 其中 运行状态、就绪状态、阻塞状态 这三种状态为 考察重点