进程调度功能
- 记录系统中进程有关的情况和状态转移特性
- 选择获得处理器资源的进程
- 处理器分配
引起进程调度的原因
- 当前运行状态进程结束
- 当前运行状态进程进入阻塞
- 执行完系统调用等系统程序后返回用户进程
- 抢占式系统中更高优先级进程获取处理器资源
- 分时系统中分配给该进程的时间片用完
不能进行调度的情况
- 处理中断过程中操作系统内核程序临界区中
- 完全屏蔽中断的原子操作
进程调度方式
- 抢占式--更高优先级进程优先获得处理器资源
- 非抢占式--进程优先级不影响进程调度,具体调度方式根据所采用的调度算法正常进行
进程调度算法
- 先来先服务(作业调度,进程调度)
- 短作业优先调度(作业调度,进程调度)
- 优先级调度(作业调度,进程调度)
- 时间片轮转调度(进程调度)
- 高响应比优先调度(作业调度)
- 多级队列调度(进程调度)
- 多级反馈队列调度(进程调度)
同步与互斥
- 互斥--间接相互制约关系。多个同种进程需要访问不能在同时被对各进程访问的资源,出现进程--资源--进程形式的相互间制约。
- 同步--直接相互制约多个进程间在执行过程某一特殊点存在相互间消息转换的,相互交流的情形。
临界资源临界区
- 临界资源--同时仅能被一个线程访问的资源
- 临界区--进程中访问临界资源的代码,又称临界段。
临界资源的访问可分为以下过程:1.进入区:检查进程是否可以进入临界区,如果可以进入则设置“正在访问临界区标志”,以阻止其他进程进入临界区
2.临界区:进程中访问临界资源的代码,3.退出区:临界区后将“正在访问临界区标志”清零的部分,4.剩余区:进程中除以上三部分以外的区域
死锁
多个进程访问资源,某个进程占有某个资源(其他进程想获取的资源)并希望获取被其他进程获取的资源,这两进程将会无限期等待,这种现象称为死锁。同样在多线程并发中也可能会出现死锁现象。
(资源的分类:可剥夺资源,不可剥夺资源)
死锁的必要条件
- 互斥
- 不可剥夺
- 请求与保持
- 环路等待
死锁处理的方法
- 鸵鸟算法(视而不见)
- 预防死锁--通过设置去破坏死锁四个必要条件
- 死锁避免--在资源动态分配过程中防止系统进入不安全状态,(死锁状态)
- 死锁检测及消除--通过检测及时发现死锁的发生并进行相应的人为操作消除死锁
饿死,饥死
- 饥死--在使用非公平策略进行资源分配时进程对资源的请求等待很长时间才获得响应并对进程推进产生了明显的映像的现象
- 饿死--在使用非公平策略进行资源分配时进程对资源的请求等待很长时间才获得响应但响应已经没有实际意义了,或者得不到相应的现象。
活锁--在忙时等待下产生的饥饿现象。