操作系统——进程与线程知识点总结

本文详细介绍了操作系统中的进程和线程概念。进程包括定义、组成、组织方式、特征、状态及其转换,强调了进程控制的原语和进程通信方式如共享存储、管道通信和消息传递。线程部分讲解了其作为轻量级进程的原因、引入线程带来的变化、线程的属性、实现方式及多线程模型等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程

进程的定义

  • 程序就是一个指令序列,早期计算机只支持单道程序
  • 引入多道程序技术后,为了方便操作系统管理,完成程序的并发执行,引入了进程,进程实体的概念
  • 传统定义:进程是程序的一次执行过程(动态)
  • 新定义:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

进程的组成

  • 程序段,数据段,PCB(进程控制块)三部分组成了进程实体(简称进程,也叫进程映像),其中,PCB是进程存在的唯一标准!
  • 程序段:存放要执行的代码
  • 数据段:运算时使用产生的运算数据
  • PCB:操作系统通过PCB管理进程。进程描述信息;进程控制和管理信息;资源分配清单;处理机相关状态。

进程的组织方式

  • 链接方式:执行指针,就绪队列指针,阻塞队列指针
  • 索引方式:按照进程状态建立几张索引表,各表指向一个PCB

进程的特征

  • 进程!=程序
  • 动态性(最基本特征),并发性,独立性(进程是系统进行资源分配,调用的基本单位),异步性,结构性

进程的状态

  • 运行状态:占有CPU,并在CPU上运行。单核处理机环境,只能有一个进程处于运行状态

  • 就绪状态:已具备运行条件,但没有空闲的CPU。万事具备,只欠CPU

  • 阻塞状态:因等待某一事件而暂时不能运行

  • 创建态:进程正在被创建,操作系统正在为进程分配资源,初始化PCB

  • 终止态:进程被撤销,操作系统回收资源,撤销PCB

进程状态间的转换

  • 就绪态到运行态:进程被调用
  • 运行态到就绪态:时间片到或处理机被强占
  • 运行态到阻塞态:进程用“系统调用”的方式请求某种系统资源,或者请求等待某个事件发生
  • 阻塞态到就绪态:申请的资源被分配或请求的事件发生
  • 就绪态:无处理机 其他都有;运行态:都有;阻塞态:都没有
  • 运行态到阻塞态:是进程自身做出的主动行为
  • 阻塞态到就绪态:不是进程本身能控制的,是一种被动行为
  • 不能阻塞态进运行态,也不能就绪态进入阻塞态

什么是进程控制

  • 进程控制就是要实现进程状态转换

进程控制的原语

  • 用原语实现进程控制,执行期间不允许中断。这种不可被夹断的操作叫原子操作
  • 用 关中断指令,开中断指令 来实现。特权指令,只能在核心态下执行
  • 原语功能:1. 更新PCB中的信息 2. 将PCB插入合适的队列 3. 分配/回收资源
  • 相关原语:进程的创建,进程的终止,进程的阻塞,进程的唤醒,进程的切换(阻塞和唤醒成队出现)

进程通信

  • 进程之间的信息交换
  • 进程拥有的内存地址空间相互独立

进程通信–共享存储

  • 格外分配一个共享空间,访问必须互斥
  • 基于数据结构的共享(低级通信),基于存储区的共享(高级通信)

进程通信–管道通信

  • 一个管道只能采用半双工通信(好比于对讲机)
  • 互斥的访问管道
  • 数据以字符流的形式写入管道
  • 如果没有写满,就不容许读。没读空,就不允许写。写满了就不允许写
  • 读出后数据会被抛弃,这意味着读进程只能有一个

进程通信–消息传递

  • 通过发送/接收原语来实现

  • 直接通信方式:消息直接到接收方的队列里

  • 间接通信方式:消息先发到中间体(信箱)

线程

什么是线程

  • 在很久之前,系统只能串行执行
  • 传统 CPU处理进程,进程是程序执行流的最小单位
  • 当下CPU处理线程,线程成为了程序执行流的最小单位(一个进程有多个线程)
  • 线程是“轻量级进程”

为什么引入线程

  • 引入线程,进程间可以并发,进程内的各线程也可以并发

引入线程后,有什么变化

  • 资源分配(进程),调度(由进程变为线程)
  • 并发性:间并发 变成了 既能进程间并发,又能进程内并发
  • 系统开销:变小了(线程切换不需要切换进程)

线程属性

  • 线程是处理机调度的单位
  • 多CPU计算机中,各个线程可占用不同的CPU
  • 每个线程用有一个线程ID,线程控制决(TCB)
  • 线程也有就绪,阻塞,运行的三种基本状态
  • 线程几乎不拥有系统资源
  • 同一进程的不同线程共享进程的资源
  • 由于共享内存地址空间,同一进程中的线程通信无需系统干预
  • 同一进程的线程切换,不会引起进程切换
  • 不同进程的线程切换,会引起进程的切换
  • 切换进程,系统开销大

线程的实现方式

  • 用户级线程:从用户视角看到的线程
  • 内核级线程:操作系统只能看的到内核级线程,因此只有内核线程才是处理机分配的单位。
  • 组合方式:两种方式的结合

多线程模型

  • 多对一模型,多个用户级线程映射到一个内核级线程。优点:进程管理开销小效率高,缺点:并发度低

  • 一对一模型,并发能力强,开销大

  • 多对多模型,集二者之优

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值