第二章进程管理(1)

第二章进程管理(1)

2.1 进程

2.1.1 进程的定义、组成、组织、特征

1. 进程的定义
  1. 程序的定义:程序就是一个指令序列
    • 一个程序在内存中包括:程序段、数据段(可能不对)
  2. 引入进程的目的
    • 为了方便操作系统管理多个程序,实现并发执行,引入了进程、进程实体
  3. 进程的定义
    • 一个进程实体(进程映像)由【PCB、程序段、数据段】组成。
    • PCB记录操作系统所需数据,而程序段和数据段记录程序本身运行所需数据
    • 【PCB(进程控制块)是进程存在的唯一标准】
    • 在这里插入图片描述
2. 进程的组成
  1. 进程的三部分(PCB、程序段、数据段)
    在这里插入图片描述

  2. PCB(程序控制块)通常包含的内容
    在这里插入图片描述

  3. 整体
    在这里插入图片描述

3. 进程的组织
  • 注:进程的组成讨论的是一个进程内部由哪些部分构成的问题;而进程的组织讨论的是多个进程之间的组织方式问题

  • 进程组织的两种方式【注意:两种方式都是将相同状态的PCB放在一起,不是整个进程】
    在这里插入图片描述

    1. 链接方式(队列)
      在这里插入图片描述

    2. 索引方式(索引表)
      在这里插入图片描述

4. 进程的特征

在这里插入图片描述

5. 本节整体结构

在这里插入图片描述


2.1.2 进程的状态与转换

1. 进程的状态

​ (1)三种基本状态(运行态、就绪态、阻塞态)
在这里插入图片描述

​ (2)另外两种状态(创建态、终止态)
在这里插入图片描述

  • 创建态图示说明
    在这里插入图片描述

  • 终止态图示说明
    在这里插入图片描述

2. 进程的状态转换

在这里插入图片描述

3. 本节整体结构

在这里插入图片描述


2.1.3 进程的控制

1. 进程控制的概念

在这里插入图片描述

2. 进程的状态转换具体图解
  • (对2.1.2–2的补充,结合链接/队列组织方式)
  • 结合上面的图便于理解状态的转换
    在这里插入图片描述
3. 原语实现进程控制(状态转换)
  • 原语 = 关中断指令 + 若干原语代码 + 开中断指令【原语在体系结构那一节提及过】
  • 关中断指令和开中断指令期间,不会响应外部中断(即不会被打断,不允许中断),从而实现一气呵成
  • 原语运行在核心态
    在这里插入图片描述
4. 原语的功能(三大功能)

在这里插入图片描述

5. 五种原语(进程的状态切换相关)

(1)进程的创建原语
在这里插入图片描述

(2)进程的终止原语
在这里插入图片描述

(3、4)进程的阻塞和唤醒原语

  • 阻塞原语和唤醒原语必须成对使用
  • 进程自身调用阻塞原语【运行态 → 阻塞态是进程自身做出的主动行为】(2.1.2–2提及过)
  • 由其他进程调用唤醒原语【阻塞态 → 运行态是被动行为】
    在这里插入图片描述

(5)进程的切换原语
在这里插入图片描述

6. 本节整体结构

在这里插入图片描述


2.1.4 进程的通信

1. 进程通信的概念

在这里插入图片描述

2. 进程通信的三种方式

在这里插入图片描述

3. 共享存储
  • 进程对共享空间的访问是【互斥】的
  • 共享存储的分类
    • 基于数据结构的共享(低级)
    • 基于存储区的共享(高级,由进程控制)
      在这里插入图片描述
4. 管道通信
  • 管道:内存中大小固定的缓冲区
    在这里插入图片描述
5. 消息传递
  • 信息的发送通过【发送原语和接受原语】实现
  • 消息传递的分类
    • 直接通信方式:发送到接受进程的消息缓冲队列
    • 间接通信方式:发送到信箱
      在这里插入图片描述
6. 本节整体结构

在这里插入图片描述


2.1.5 线程概念与多线程模型

1. 为什么引入线程
  • 为了更进一步地提高并发性,是进程内并发
  • QQ程序是一个进程,QQ进程里可以有多个线程(任务管理器中的折叠展开部分)
    在这里插入图片描述
2. 线程的概念
  • 引入线程后,线程是处理机调度的单位,进程是资源分配的单位
    在这里插入图片描述
3. 引入线程带来的变化
  • 进程、线程地位的变化
  • 并发程度的变化
  • 切换运行环境的开销变化
    在这里插入图片描述
4. 线程的属性
  • 地位、组成、状态
  • 资源使用
  • 线程切换
    在这里插入图片描述
5. 线程的实现方式

​ 根据线程的管理工作归谁管(可以单看线程切换),分为两类

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

(1)用户级线程(线程库)

  • 线程的管理工作归应用程序负责
  • 线程切换在用户态执行(因为上一条)
  • 计算机里的透明看不见!!!(容易搞错)
    在这里插入图片描述

(2)内核级线程

  • 线程的管理工作归内核负责
  • 线程切换在核心态执行(因为上一条)
    在这里插入图片描述

(3)二者组合

  • 内核级线程才是处理机分配的单位
  • 在多核处理机上,操作系统只会根据进程的内核级线程个数,分类几个核
    在这里插入图片描述
6. 多线程模型

(1)多对一模型
在这里插入图片描述

(2)一对一模型
在这里插入图片描述

(3)多对多模型
在这里插入图片描述

7.本节整体结构

在这里插入图片描述
参考:

  • https://www.bilibili.com/video/av70156862
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值