中断
类似于行走在道路上的车的停止,内中断是车子出问题不能走了,外部中断是亮了红灯
中断的分类{内中断(信号来源CPU内){陷阱(如:系统调用),故障(可能被系统修复)终止(如:整数除0)外中断(信号来源CPU外){I/O中断请求人工干预
\begin{array}{l}\mathrm{中断的分类}\left\{\begin{array}{l}\mathrm{内中断}(\mathrm{信号来源}CPU内)\left\{\begin{array}{l}\mathrm{陷阱}(如:\mathrm{系统调用}),\mathrm{故障}(\mathrm{可能被系统修复})\\\mathrm{终止}(如:\mathrm{整数除}0)\end{array}\right.\\\mathrm{外中断}(\mathrm{信号来源}CPU外)\left\{\begin{array}{l}I/O\mathrm{中断请求}\\\mathrm{人工干预}\end{array}\right.\end{array}\right.\\\end{array}
中断的分类⎩⎪⎪⎨⎪⎪⎧内中断(信号来源CPU内){陷阱(如:系统调用),故障(可能被系统修复)终止(如:整数除0)外中断(信号来源CPU外){I/O中断请求人工干预
系统调用
用系统实现网介质访问控制,应用程序通过系统调用一些功能(比如打印机的打印),系统协调应用程序的调用
进程
为实现一个“功能”而产生的程序,包含数据段,程序段,PCB(Process Control Block)
进程的状态{运行就绪阻塞(比如等待IO操作)创建终止
\begin{array}{l}\mathrm{进程的状态}\left\{\begin{array}{l}\mathrm{运行}\\\mathrm{就绪}\\阻塞(比如等待IO操作)\\创建\\终止\end{array}\right.\\\end{array}\\
进程的状态⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧运行就绪阻塞(比如等待IO操作)创建终止
状态之间的转换:
进程的控制用原语进行编写(原语:原子操作的语句,在运行的过程中不能中断)
线程和多线程
进程:一个应用程序
线程:一个执行单元
一个进程可以启用多个线程
没有线程,无法实现程序的并行实现,引入线程后,线程成为CPU执行程序的最小单位
进程 | 达到时间 | 运行时间 |
---|---|---|
A | 0 | 6 |
B | 1 | 1 |
C | 3 | 9 |
线程的调度算法 | 规则 | 是否抢占 | 饥饿 |
---|---|---|---|
先来先服务( FCFS,First Come First Serve) | 按照进程到达先后顺序进行服务 | N | N |
短作业优先( SJF, Short Job First ) | 服务时间最短的先服务 | N | Y |
最短剩余优先( SRTN, Shotest Remaining Time Next ) | 新就绪的剩余时间与当前的比较 | Y | Y |
高响应比优先( HRRN, Highest Response Ratio Next ) | 每次调度时计算响应比比较 | N | N |
响应比=等待时间+要求服务时间要求服务时间饥饿:某个进程长时间得不到服务抢占式:现行进程在运行过程中,如果有重要或紧迫的进程到达(其状态必须为就绪),则现运行进程将被迫放弃处理器,系统将处理器立刻分配给新到达的进程。 响应比=\frac{等待时间+要求服务时间}{要求服务时间}\\ 饥饿:某个进程长时间得不到服务\\ 抢占式:现行进程在运行过程中,如果有重要或紧迫的进程到达(其状态必须为就绪),则现运行进程将被迫放弃处理器,系统将处理器立刻分配给新到达的进程。 响应比=要求服务时间等待时间+要求服务时间饥饿:某个进程长时间得不到服务抢占式:现行进程在运行过程中,如果有重要或紧迫的进程到达(其状态必须为就绪),则现运行进程将被迫放弃处理器,系统将处理器立刻分配给新到达的进程。
线程的调度算法 | 规则 | 是否抢占 | 饥饿 |
---|---|---|---|
时间片轮转调度算法( RR,Round-Robin) | 按照就绪顺序每个执行一个时间片 | Y | N |
优先级调度算法 | 选择优先级 | N&Y | Y |
多级反馈队列调度算法 | 复杂,但是算法时间比较平衡 | Y | Y |
进程的同步与互斥
进程的同步
进程具有异步性(各并发执行的进程以各自独立的,不可预知的速度向前推进,两个进程之间的执行完成顺序不可预测),进程同步就是将异步的程序安排好,依次完成
进程互斥
进程的“并发”需要“共享”的支持,各个并发执行的进程不可避免的需要共享一些系统资源
共享方式 | - | - |
---|---|---|
互斥共享 | 一个时间段只允许一个进程访问该资源 -打印机,摄像头 | 称为临界资源 |
同时共享 | 允许一个时间段内多个进程“同时”访问-扬声器 |
信号量方法:实现进程互斥,同步的办法
死锁:对不可剥夺的资源的不合理分配,并发环境下的互相等待(比如两个进程分别占用资源A和B、且必须申请到B和A才能继续执行)
区分 | 区别 |
---|---|
死锁 | 至少需要两个或两个以上的进程同时发生死锁 |
饥饿 | 可能只有一个进程发生饥饿 |
死循环 | 死循环:while(1) |
死锁的处理策略 | - |
---|---|
预防死锁 | 破坏四个必要条件 |
避免死锁 | 避免系统进入不安全状态(银行家算法:给出一个安全的分配序列) |
死锁的检测和解除 | 允许死锁发生,系统负责监测出死锁并解除 |