“进程与线程”学习提纲

本文详述了操作系统中进程和线程的概念,包括进程的动态性、并发性、独立性和异步性特征,以及进程控制块(PCB)的内容和组织方式。介绍了进程的创建、结束、阻塞和唤醒过程,以及各种状态。同时,讨论了线程控制块(TCB)、线程的实现方式和调度类型。此外,还涵盖了进程通信、调度算法、同步与互斥、死锁及其处理策略等核心知识点。
摘要由CSDN通过智能技术生成

前言

操作系统的知识抽象、晦涩、不易理解并记忆,在此对“进程与线程”一章中重点知识总结成提纲。


进程与线程

进程的特征

  • 动态性(基本特征)
  • 并发性
  • 独立性
  • 异步性
  • 结构性

进程/进程实体/进程映像的组成

  • 进程控制块(PCB)(核心)
  • 程序段
  • 数据段

或:

  • 数据栈段,存放临时变量
  • 数据堆段,存放动态分配存储区
  • 正文段,存放常量、赋值变量和二进制代码

进程控制块(PCB)的内容

进程描述信息:

  • 进程标识符(PID)
  • 用户标识符(UID)

进程控制和管理信息:

  • 进程当前状态
  • 进程优先级
  • 代码运行的入口地址
  • 程序的外存储器地址
  • 进入内/主存储器(MM)的时间
  • 处理机的占用时间
  • 信号量的使用情况

资源分配清单:

  • 堆栈段指针
  • 数据段指针
  • 代码段指针
  • 所打开文件的描述符列表
  • 所使用输入/输出(I/O)设备的信息

处理机相关信息/上下文:

  • 控制寄存器值
  • 地址寄存器值
  • 通用寄存器(GR)值
  • 标志寄存器值
  • 状态字寄存器值

进程/进程控制块(PCB)的组织方式

  • 链接方式(队列)
  • 索引方式(表)

进程的状态

  • 创建态
  • 就绪态
  • 运行态
  • 阻塞态
  • 结束态

挂起态:在进程调度中定义的特殊状态


进程/原语创建的过程

  1. 分配一个唯一的进程标识号(PID),申请空白的进程控制块(PCB)
  2. 分配运行所需资源
  3. 初始化进程控制块(PCB),填入用于控制和管理进程的信息
  4. 置为就绪态,插入就绪队列

引发进程结束的事件

  • 正常结束
  • 异常结束
  • 外界干预

进程/原语结束的过程

  1. 根据进程标识符(PID)检索进程控制块(PCB),读取状态信息
  2. 若处于运行态,结束运行,释放处理机资源
  3. 若有子孙进程,结束子孙进程
  4. 释放所有资源,归还给父进程或操作系统(OS)
  5. 从所在队列/表中删除进程控制块(PCB)

进程/原语阻塞的过程

  1. 根据进程标识符(PID)检索进程控制块(PCB),读取状态信息
  2. 若处于运行态,保护现场,暂停运行,释放处理机资源
  3. 置为阻塞态,插入阻塞队列

进程/原语唤醒的过程

  1. 根据进程标识符(PID)检索进程控制块(PCB),读取状态信息
  2. 置为就绪态,插入就绪队列

进程不能调度/切换的情况

  • 原子操作
  • 访问临界区
  • 中断处理过程

进程的通信方式

低级:

  • PV操作

高级:

  • 共享内存(低级:共享数据结构,高级:共享存储区)
  • 消息队列(直接通信,间接通信)(应用最广泛)
  • 管道(共享内存的发展,消息队列的特殊方式)
  • 命名管道(先进先出FIFO)
  • 信号
  • 信号量
  • 套接字(Socket)

线程控制块(TCB)的组成

  • 线程标识符
  • 寄存器:程序计数器(PC)、状态寄存器、通用寄存器(GR)
  • 线程状态
  • 线程优先级
  • 线程专有存储区
  • 堆栈指针

线程的实现方式

  • 内核级线程/内核支持的线程(KLT)
  • 用户级线程(ULT)
  • 组合方式

线程库的实现方式

  • 在用户空间提供一个没有内核支持的库
  • 提供一个由操作系统支持的内核级的库

多线程模型的类型/内核级线程和用户级线程的对应关系

  • 一对一
  • 一对多
  • 多对多(内核级线程数<=用户级线程数)

处理机调度

调度的层次

  • 高级调度/作业调度
  • 中级调度/内存调度
  • 低级调度/进程调度

调度算法性能的评价指标

  • 响应时间
  • 等待时间
  • 周转时间(平均周转时间、带权周转时间、平均带权周转时间)
  • 中央处理器(CPU)利用率
  • 系统吞吐量

调度程序/调度器的组成

  • 排队器
  • 分派器
  • 上下文切换器

进程不能调度/切换的情况

  • 原子操作
  • 访问临界区
  • 中断处理过程

进程可以调度/切换的情况

  • 调度条件产生,当前进程无法继续运行
  • 自陷或中断处理结束后,返回原进程的用户态程序执行现场前,调度条件产生

进程的调度方式

  • 可抢占/剥夺调度方式
  • 不可抢占/剥夺调度方式

线程的调度类型

  • 内核级线程调度
  • 用户级线程调度

典型的调度算法

  • 先来先服务(FCFS)调度算法
  • 短作业/进程/线程优先(SJF)调度算法
  • 优先级调度算法(适用于实时系统)

算法类型:可抢占/剥夺式,不可抢占/剥夺式
优先级类型:静态,动态
优先级原则:系统进程>用户进程,交互型进程>非交互型进程,输入/输出(I/O)型进程>计算型进程

  • 高响应比优先调度算法(适用于作业调度、分时系统)

响应比=(等待时间+要求服务时间)/要求服务时间

  • 时间片轮转调度算法(适用于分时系统)
  • 多级队列调度算法(适用于分时系统)
  • 多级反馈队列调度算法(适用于分时系统)

进程切换的过程

注意:进程/(处理器/中央处理器(CPU))上下文切换只能发生在内核态

  1. 挂起一个进程,保存(处理器/中央处理器(CPU))上下文:程序计数器(PC)和寄存器内容
  2. 更新进程控制块(PCB)内容
  3. 将进程控制块(PCB)插入相应队列:就绪、阻塞等队列
  4. 选择另一个进程执行,更新其进程控制块(PCB)内容
  5. 跳转到新进程进程控制块(PCB)中程序计数器(PC)内容指向的位置执行
  6. 新进程执行完毕,恢复旧进程的(处理器/中央处理器(CPU))上下文

同步与互斥

临界资源的访问过程

  1. 进入区
  2. 临界区/段
  3. 退出区
  4. 剩余区

同步访问临界资源遵循的准则

  • 空闲让进
  • 忙则等待
  • 有限等待
  • 让权等待

互斥访问临界资源的方法

硬件实现方法/低级方法/元方法:

  • 中断屏蔽法
  • 硬件指令法

软件实现方法:

  • 单标志法
  • 先检查双标志法
  • 后检查双标志法
  • Peterson’s算法

信号量的类型

  • 整型信号量
  • 记录型信号量

或:

  • 资源量
  • 互斥量

管程的组成

  • 名称
  • 局部共享数据结构——数据/资源描述
  • 设置局部共享数据结构初始值的语句
  • 条件变量
  • 操作共享数据结构的过程/函数——操作描述

经典同步互斥问题

  • 生产者-消费者问题
  • 读者-写者问题
  • 哲学家进餐问题
  • 吸烟者问题

死锁

死锁产生的原因

  • 系统资源的竞争——资源竞争
  • 进程的推进顺序非法——资源等待

死锁产生的必要条件

  • 互斥条件
  • 不可剥夺条件
  • 请求保持条件
  • 循环等待条件

注意:只要任意一个条件不成立,就不会产生死锁


死锁的处理策略

  • 死锁预防
  • 死锁避免
  • 死锁检测和解除

死锁预防的方法

  • 破坏互斥条件——不容易破坏
  • 破坏不可剥夺条件——可剥夺资源法
  • 破坏请求保持条件——预先静态分配法
  • 破坏循环等待条件——顺序资源分配法

死锁避免的方法

核心:系统处于安全状态

注意:若系统处于安全状态,则可避免死锁;若系统处于不安全状态,则可能产生死锁

  • 银行家算法(包括安全性算法)

死锁检测和解除的方法

死锁检测:

  • 简化资源分配图/判断死锁定理

死锁解除:

  • 资源剥夺法(被动释放资源)
  • 进程回退法(主动释放资源)
  • 撤销进程法(可依据进程优先级、撤销进程的代价)

总结

操作系统的知识抽象、晦涩、不易理解并记忆,在此对“进程与线程”一章中重点知识总结成提纲。


参考资料

  • 《2023年操作系统考研复习指导》组编:王道论坛

作者的话

  • 感谢参考资料的作者/博主
  • 作者:夜悊
  • 版权所有,转载请注明出处,谢谢~
  • 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
  • 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
  • 文章在认识上有错误的地方, 敬请批评指正
  • 望读者们都能有所收获

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值