导图社区 第3章 进程线程模型
计算机四级考试《操作系统原理(2017年版)》第3章思维导图,新旧版本没有什么差别,请放心使用
编辑于2020-02-12 15:02:06第3章 进程线程模型
3.1 多道程序设计模型
目的:提高CPU利用率,充分发挥CPU和外围设备及外围设备之间的并行工作能力
3.1.1 程序的顺序执行
一个具有独立功能的程序独占CPU直到得到最终结果的过程
顺序性:每一个动作的执行都以前一个动作的结束为前提
封闭性:程序执行得到的最终结果由给定的初始条件决定,不受外界因素影响
程序执行结果的确定性:程序执行的结果与其执行速度无关
程序执行结果的可再现性
3.1.2 多道程序设计环境的特点
独立性:逻辑独立,执行速度与其他程序无关,执行的起止时间独立
随机性:程序和数据的输入和执行开始时间随机
资源共享性:多道环境下执行程序的道数>CPU个数 →同时执行的各个程序只能共享系统中已有的CPU
3.1.3 程序的并发执行
两个或两个以上程序在计算机系统中同时处于已开始执行且尚未结束的状态
并发程序在执行期间具有相互制约关系
程序与计算不再一一对应
并发程序执行结果不可再现
k=5 A: k=k-1 B: print k; k=k+3 k=4; k=4; k=7 k=5; k=4; k=7 k=5; k=8; k=7
3.2 进程模型
3.2.1 进程的概念
进程:正在进行的程序 可分为系统进程和用户进程 优先级:系统进程>用户进程
进程与线程的联系和区别
联系
程序是进程的组成部分之一
进程:程序、数据、进程控制块(PCB)
区别
程序是静态的,进程是动态的
程序永久存在,进程暂时存在
进程的特性
并发性
动态性
独立性
交往性
异步性
3.2.2 进程的状态及其状态转换
状态进程模型
就绪状态:具备运行条件,只差CPU
运行状态:已获得CPU,并在CPU上运行
等待状态(阻塞):等待某事件发生而暂不运行
三状态

创建状态:正在创建过程中,还不能运行
结束状态:已结束运行,还未撤销
五状态

阻塞挂起状态:在外存等待某事件发生
就绪挂起状态:在外存,只要进入内存即可运行
七状态
状态转换
挂起:内存→外存
激活:外存→内存
3.2.3 进程控制块
PCB:描述进程基本情况和进程的运行变化过程 PCB是进程存在的唯一标志
PCB内容
调度信息:进程当前所处状况
现场信息:进程的运行情况
进程的组成
PCB:灵魂
程序、数据:躯体
PCB组织
线性方式:不分状态组织在一个PCB表
优点:简单,不需额外开销,适用于进程数目不多的系统
缺点:需要扫描整个PCB表
索引方式:具有相同状态的进程分别设置各自的PCB索引表
链接方式:具有相同状态的进程通过PCB中的链接字构成队列→就绪队列、等待队列
进程的队列
就绪队列
等待队列
运行队列
3.2.4 进程控制
作用:通过原语控制进程状态转换 原语:原子性语句,不可分割、中断
进程控制原语
创建原语
撤销原语
阻塞原语
唤醒原语
UNIX的fork( )函数及使用
创建子进程
特点:只被调用一次,却会返回两次
fork( )返回值
父进程:子进程的PID
子进程:0
3.4 进程(线程)调度
调度分类
高级调度(作业调度)
将磁盘中处于后备状态的作业进行选择并创建为进程
中级调度
将处于磁盘对换区中,且具备运行条件的就绪进程调入内存 或将处于内存就绪状态或内存阻塞状态的进程交换到对换区
低级调度(进程调度)
决定就绪队列中哪个进程将获得CPU,并实际将CPU分配给该进程
计算机系统中使用最频繁、算法最复杂
作用:一台物理CPU→多台虚拟CPU
3.4.1 概述
进程(线程)调度的主要功能
记录系统中所有进程的执行状况
从就绪队列中选一个进程准备分配CPU
把CPU分配给进程
进程(线程)调度的时机
正在执行的进程运行完毕
正在执行的进程调用阻塞原语将自己阻塞起来进入等待状态
正在执行的进程调用唤醒原语操作激活了等待资源的进程
时间片用完
不可抢占方式
就绪队列中某个进程的优先级高于当前运行进程的优先级
可抢占方式
3.4.2 调度算法设计原则
面向用户原则:周转时间短
面向系统原则:系统吞吐量高
进程行为
计算密集型
I/O密集型
随着CPU变得越来越快,更多的进程倾向为I/O密集型
系统工作状态指标
批处理系统:吞吐量、周转时间、CPU利用率
交互式系统:最小响应时间(最重要)
3.4.3 进程(线程)调度算法
先来先服务FCFS First-Come-First-Served
非抢占式,进程按照它们请求CPU的顺序请求CPU
有利于长进程,不利于短进程
最短作业优先SJF Shortest Job First
非抢占式,降低平均等待时间,提高吞吐量
有利于短进程,不利于长进程
最短剩余时间优先SRTN Shortest Remaining Time Next
SJF的抢占式版本
优先权函数=-剩余运行时间
轮转法RR Round-Robin
适用于交互进程的分时系统
原理:将CPU运行时间分为一个个时间片,就绪队列中各进程轮流运行一个时间片 时间片结束→强迫运行进程让出CPU,进入就绪队列等待下一次调度
时间片长度直接影响系统开销和响应时间
最高优先级算法HPF Highest Priority First
将CPU分配给具有最高优先级的就绪进程
进程的优先级由用户或系统赋予,优先数的设置可以是静态或动态的
可抢占式/不可抢占式
多级反馈队列算法MLF
实际计算机系统中使用,综合FCFS、RR、HPF
最短进程优先
实时系统中的调度算法
速率单调调度算法
最早最终时限优先调度
3.3 线程模型
3.3.1 线程的引入
进程的基本属性
分配和拥有资源的独立单位
独立调度和分派的基本单位
3.3.2 线程的基本概念
线程的属性
线程是进程的一个实体,是CPU调度和分派的基本单位
线程所拥有资源很少(程序计数器、寄存器、栈)
可与同属一个进程的其他线程共享进程所拥有的全部资源
线程与进程的比较
调度
并发性:进程间、一个进程的多个线程间
拥有资源:无系统资源,但可访问所属进程的资源
系统开销:创建或撤销进程,系统要为之分配或回收资源
3.3.3 线程实现机制
用户级线程
用户态,与内核无关
典型OS:Linux
内核级线程
用户进程/系统进程中的线程都依赖于内核
典型OS:Windows
混合实现方式
同时实现用户级线程和内核级线程
典型OS:Solaris
3.3.4 Pthread线程包
针对用户级线程