难馁
进程与线程
进程
概念
为使每个参与并发执行的程序(含数据)都能独立运行,必须配备PCB用于描述进程基本情况和运行状态。
进程实体由程序段,相关数据段,PCB组成。创建和撤销进程实体(映像)实质上都是创建和撤销PCB
- 进程使程序的一次执行过程
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
- 进程是具有独立功能的程序在一个数据集合上运行的过程,它是操作系统进行资源分配和调度的一个独立单位
这里的资源是指设备服务于某个进程的时间片
特征
- 动态性
- 并发性
- 独立性
- 异步性
状态与转换
- 运行态
- 就绪态
- 阻塞态,等待态
- 创建态
- 结束态
组织
- PCB
- 程序段,程序可以被多个进程共享
- 数据段
控制
进程控制用的控制段用原语
- 创建
- 终止
- 阻塞和唤醒,主动阻塞,唤醒插入就绪队列
通信
信息交换,PV操作低级通信方式
高级通信方式(较高速率传输大量数据)
- 共享存储,操作系统提供空间,用户自己实现互斥
- 消息传递,直接,间接(信箱)
- 管道通信,链接读写进程的文件
线程
概念
为提高资源利用率和系统吞吐量引入。目的减小程序在并发执行时所付出的时空开销,提高并发性能。
线程时进程中的一个实体,被系统独立调度和分派的基本单位,不拥有系统资源,只有一点必不可少的资源。
比较
- 调度
- 并发性
- 拥有资源
- 独立性
- 系统开销
- 支持多处理机系统
属性
状态与转换
- 执行状态
- 就绪状态
- 阻塞状态
组织与控制
- 线程控制块
- 创建
- 终止
实现方式
用户级线程User-Level Thread,内核级线程Kernel-Level Thread
- ULT
有关线程管理的应用工作都由用户空间完成,内核意识不到线程的存在
优点:线程切换不用转到内核态,减小开销;专用的调度算法;与平台无关;
缺点:系统调用阻塞所有线程;不能发挥多处理机优势
- KLT
每个用户级线程对应一个内核级线程
优点:发挥多处理机又是;线程被阻塞可以调度其他线程;线程切换快;内核自己也可以多线程;
缺点:同一进程线程切换也要从用户态转到内核态,由于线程调度在内核实现
- 组合方法
内核支持多个内核级先从建立、调度、管理同时允许用户程序建立、调度和管理用户级线程;
线程库实现方法:
- 用户空间提供没有内核支持的库
- 操作系统直接支持的内核级的库
多线程模型
- 多对一,多个用户级线程映射到一个内核级线程
- 一对一,每个用户级线程映射到一个内核级线程
- 多对对,n个用户级线程映射到m个内核级线程,
处理机调度
概念
对处理机进行分配,从就绪队列中按照一定算法(公平、高效)选择一个进程
层次
- 高级调度(作业调度),内存与外存
- 中级调度(内存调度),存储器管理的对换功能
- 低级调度(进程调度),分配处理机
联系
- 作业调度为进程活动做准备,进程调度使进程正常活动起来
- 中级调度挂起暂时不能运行的进程
- 高少,中略多,低最多
- 进程调度最为重要,不可获取
目标
- CPU利用率
- 系统吞吐量
- 周转时间、平均周转时间、带权周转时间
- 等待时间
- 响应时间
实现
调度程序
调度和分派CPU的程序
- 排队器
- 分派其
- 上下文切换器
实际、切换与过程
- 请求调度
- 运行调度程序
- 进程切换
以下一定不能调度与切换
- 中断过程中
- 进程在操作系统内核临界区
- 需要完全屏蔽中断的原子操作
何时
- 发生调度条件且当前进程无法继续进行下去
- 中断处理结束后或自陷处理结束后
调度方式
- 非抢占式
- 抢占式
闲逛idle进程
没有就绪就运行idle
线程调度
- 用户级
- 内核级
调度算法
- FCFS
- SJF
- 优先级
- 高相应比优先
- 时间片轮转
- 多级队列
- 多级反馈队列
进程切换
同步与互斥
基本概念
- 临界资源
- 同步
- 互斥
实现临界区互斥的方法
软件方法实现
- 单标志法
- 双标志先检查法
- 双标志后检查法
- Peterson's Algorithm
硬件实现方法
- 中断屏蔽方法
- 硬件指令方法
互斥锁
信号量
- 整型信号量
- 记录型信号量
- 利用信号量实现同步
- 利用信号量实现互斥
- 利用信号量实现前驱关系
管程
- 定义,代表共享资源的数据结构,以及对该共享数据结构实施操作的一组过程组成的资源管理程序。
- 条件变量
经典同步问题
- 生产者-消费者问题
- 读者-写者问题
- 哲学家进餐问题
- 吸烟者问题
死锁
必要条件
- 互斥条件
- 不可剥夺条件
- 请求并保持条件
- 循环等待条件
处理策略
- 死锁预防
- 死锁避免
- 死锁的检测及解除
死锁预防
破坏必要条件
死锁避免
- 系统安全状态
- 银行家算法
死锁的检测和解除
- 资源分配图
- 死锁定理,简化资源分配图
- 死锁解除