1.1操作系统的概念、功能和目标:
作为用户或软件和计算机硬件之间的接口,是一种系统软件。
操作系统的功能
- 命令接口(联机命令接口、脱机命令接口)
- 程序接口(用户通过程序间接调用)
- GUI(用户图形界面)
目标
方便用户使用
1.2.1操作系统的特征:
并发、共享、虚拟、异步
- 并发
指两个或多个事件在同一时间间隔内发生,这些事件宏观上时同时发生的,但在微观上是交替发生的。
易混概念“并行”:指两个或多个事件在同一时刻发生。
-
共享
即资源共享,是指系统中的资源可供内存中多个并发执行的进程中同时使用。
两种资源共享方式
(1)互斥共享方式::一个时间段内只允许一个进程访问资源
(2)同时共享方式:允许一个时间段内由多个进程 同时 对它们进行访问 -
虚拟
指一个物理上的实体变为若干个逻辑上的对应物
(1)空分复用技术
(2)时分复用技术 -
异步
再多道程序环境下,允许多个程序并发的执行,但由于资源有限,进程的执行不是一管到底的,而是走走停停已不可预知的速度向前推进,这就是进程的异步性!
并发和共享互为存在条件
没有并发和共享,就谈不上虚拟和异步
1.2.2操作系统的发展与分类:
-
手工操作阶段
纸带机(用户独占全机、人机速度矛盾) -
批处理阶段
单道批处理系统
多道批处理系统 -
分时操作系统
轮流处理作业
不能处理紧急任务 -
实时操作系统
-
网络操作系统
-
分布式操作系统
-
个人计算机操作系统
1.3.1操作系统的运行机制:
-
两种指令
特权指令
非特权指令 -
两种处理器状态
内核态(root)
用户态 -
操作系统内核
时钟管理(实现计时功能)
中断处理
原语(程序运行具有原子性,不可中断) -
对系统资源进行管理的功能
进程管理
存储器管理
设备管理
1.3.2中断和异常:
-
中断的作用
操作系统介入,开展管理工作
“用户态—>核心态”是通过中断实现的。并且中断是让操作系统内核夺回CPU使用权的唯一途径 -
中断的类型
(2)内中断(异常):
陷阱(trap)
故障(fault)
中止
(2)外中断 (CPU外部):
时钟中断
I/O中断请求
1.3.3系统调用:
概念:应用程序通过系统调用请求操作系统的服务。保证系统的稳定性和安全性。
- 系统调用和库函数的区别
系统调用是操作系统向上层提供的接口
有的库函数是对系统调用的进一步封装
当今编写的应用程序大多是通过高级语言提供的库函数间接地进行系统调用
2.1.1进程的概念、组成、组织方式、特征:
-
概念
进程是动态的,是程序的一次执行过程。(同一个程序多次执行会产生多个进程)
补充:程序是存放在磁盘里的可执行文件,是一组有序的指令集和,是静态的 -
组成
PCB(进程存在唯一的标志),程序段,数据段
这三部分组成进程实体,一个进程被调度,就是指操作系统决定让这个进程上CPU运行 -
组织方式
链接方式,指针指向不同的队列;索引方式,索引表 -
特征
动态性、并发性、独立性、异步性、结构性
2.1.2进程的状态与转换:
-
状态
创建状态:创建PCB,程序段,数据段
就绪状态:已经具备运行条件,但是没有空闲的CPU,暂时不能运行(CPUX,其它资源√)
运行状态:占有CPU,并在CPU上运行,单核只能一个进程(双核两个)
阻塞状态:等在某个事件的发生,暂时不能运行(CPUX,其它资源X)
终止状态:回收内存,程序段,数据段,撤销PCB -
进程状态间的转换
创建态->就绪态
就绪态->运行态
运行态->就绪态
运行态->中止态(比如数组越界)
运行态->阻塞态(主动)
阻塞态->就绪态(被动)
2.1.3进程控制:
简化理解:实现各种进程状态转换。
进程控制是用用“原语”来实现的。
-
无论哪个进程控制原语都会做的事情:
1、更新PCD中的信息
2、将PCD插入合适的队列
3、分配/回收资源 -
进程控制相关的原语:
1、进程的创建:
创建原语:申请空白PCB、为新进程分配所需资源、初始化PCB、将PCB插入就绪队列
引起进程创建的事件:用户登录、作业调度、提供服务、应用请求
2、进程的终止:
撤销原语
引起进程中止的事件:正常结束、异常结束、外界干预
3、进程的阻塞:
阻塞原语:运行态->阻塞态
引起进程阻塞的事件:需要等待系统分配某种资源、需要等待相互合作的其他进程完成工作
4、进程的唤醒:
唤醒原语:阻塞态->就绪态
引起进程唤醒的事件:等待的事件发生
5、进程的切换
切换原语
引起进程切换的事件:当前进程事件片到、有更高优先级的进程到达、当前进程主动阻塞、当前进程终止
2.1.4进程通信:
-
共享存储(分配共享空间,且互斥)
基于数据结构的共享:固定分配(低级),速度慢
基于存储区的共享:划分存储区(高级),速度快 -
消息传递
消息:消息头、消息体
直接通信方式(直接挂载消息)
间接通信方式(间接利用信箱发送消息) -
管道通信
只能半双工通信
互斥(写满,进程阻塞,读空同理)
2.1.5线程概念、实现方式和多线程模型:
线程是一个基本的CPU执行单元,也是程序执行流的最小单位,进一步提高了系统的并发度。
- 资源分配、调度
引入线程机制后,进程只作为除CPU外资源分配的基本单位,线程是调度的基本单位
-
并发性
各线程间也能并发,提升了并发度 -
系统开销
可以只在进程中切换,减小了CPU切换环境的系统开销 -
线程有哪些重要的属性
1、线程是处理机调度的基本单位
2、多CPU计算机中,各个线程可占用不同的CPU
3、每个线程都有一个线程ID、线程控制块(TCB)
4、线程也有就绪、阻塞、运行三种基本状态
5、线程几乎不拥有系统资源
6、同一进程的不同线程间共享进程的资源
7、由于共享内存地址空间,统一进程中的线程间通信甚至无需系统干预
8、同一进程中的线程切换,不会引起进程切换
9、不同进程中的线程切换,会引起进程切换
10、切换同进程内的线程,系统开销很小
10、切换进程,系统开销较大 -
线程的实现方式
1、用户级线程(ULT):
由应用程序管理,从用户的视角看能看到的线程
2、内核级线程(KLT):
由操作系统管理,从操作系统内核视角看能看到的线程
n个ULT可以映射到m个KLT上
内核级线程才是处理机分配的单位 -
多线程模型
1、多对一模型:
n个ULT映射到1个KLT
优点:开销小,效率高
缺点:容易阻塞,并发度不高
2、一对一模型:
n个ULT映射到n个KLT
优点:并发能力很强
缺点:占用成本高,开销大
3、多对多模型
n个ULT映射到m个KLT上(n>=m)
中和以上两种优缺点
2.2.1调度的概念、层次:
- 基本概念
通常进程数量大于处理机数量,所以要按照一定的算法选择一个进程,并将处理机分配给它运行,以实现进程的并发执行
三个层次和对比
-
高级调度(作业调度)
辅助外存与内存之间的调度,作业调入时会建立相应的PCB,作业调出时才撤销PCB,调入可由操作系统决定,调出由作业运行结束才调出
对比:外存 → 内存(面向作业),频率最低 -
中级调度(内存调度)
将暂时不用的进程放到外存(PCB不外放),提高内存利用率和系统吞吐量,进程状态为挂起状态,形成挂起队列
对比:外存 → 内存(面向进程),频率中等 -
低级调度(进程调度)
最基本,用算法为进程分配处理机资源,几十ms一次
对比:内存 → CPU,频率最高
进程的“挂起态”
五状态在前面,挂起分为就绪挂起、阻塞挂起
2.2.2进程调度的时机、切换与过程调度方式:
时机
-
什么时候需要进程调度?
主动放弃(进程正常终止、运行过程中发生异常而终止、进程主动请求阻塞)
被动放弃(分给进程的时间片用完、有更紧急的事需要处理、有更高优先级的进程进入就绪队列) -
什么时候不能进行进程调度?
在处理中断的过程中
在操作系统内核程序临界区中
在原子操作过程中(原语)
切换与过程
-
“狭义的调度”与“进程切换”的区别
狭义:选择一个进程
广义:狭义+进程切换 -
进程切换的过程需要做什么?
对原来运行进程各种数据的保存
对新的进程各种数据的恢复
方式
-
非剥夺调度方式(非抢占式)
只允许进程主动放弃处理机 -
剥夺调度方式(抢占式)
进程被动放弃,可以优先处理紧急任务,适合分时操作系统、实时操作系统
2.2.3 调度算法的评价指标:
-
CPU利用率
CPU利用率=CPU忙碌的时间/总时间 -
系统吞吐量
系统吞吐量=总共完成了多少道作业/总共画了多少时间 -
周转时间
周转时间(提交作业到完成作业花费的时间)、平均周转时间(各作业周转时间之和/作业数)
带权周转时间(作业周转时间/作业实际运行的时间)、平均带权周转时间(各作业带权周转时间/作业数) -
等待时间
进程或作业等待处理机状态时间的和
进程:等待被服务的时间之和
作业:建立后的等待时间+作业在外存后备队列中等待的时间 -
响应时间
从用户提交请求到首次产生响应所用的时间