第二章——进程与线程(上)

上船不思岸上人,下船不提船上事

文章目录

  • 2.1.1 进程的概念,组成,特征
    • 知识总览
    • 进程的概念
    • 进程的组成——PCB
    • 程序是如何运行的
    • 进程的组成
    • 进程的特征
    • 知识回顾
  • 2.1.2 进程的状态与转换,进程的组织
    • 知识总览
    • 创建态,就绪态
    • 运行态
    • 阻塞态
    • 终止态
    • 进程状态的转化
    • 进程的状态
    • 进程的组织方式——链接方式
    • 进程的组织——索引方式
    • 进程的组织
    • 知识回顾
  • 2.1.3 进程控制
    • 进程控制相关的原语
    • 程序是如何运行的
    • 知识回顾
  • 2.1.4进程通信
    • 什么是进程通信
    • 进程通信需要操作系统的支持
    • 共享存储
    • 消息传递
    • 直接通信方式
    • 间接通信方式
    • 管道通信
    • 知识回顾
    • 王道修正
  • 2.1.5 线程的概念
    • 知识总览
    • 线程的属性
  • 2.1.6 线程的实现方式和多线程模型
  • 知识总览
    • 线程的实现方式
      • 用户级线程
      • 内核级线程
    • 多线程模型
    • 知识回顾
  • 2.1.7 线程的状态与转换
    • 知识总览
    • 进程的状态与转换
    • 线程的组织与控制


2.1.1 进程的概念,组成,特征

知识总览

请添加图片描述

进程的概念

请添加图片描述
区别:
1)进程是动态的;程序是静态的。
(2)进程有独立性,能并发执行;程序不能并发执行。
(3)二者无一一对应关系。
(4)进程异步运行,会相互制约;程序不具备此特征。
但是,进程与程序又有密切的联系: 进程不能脱离具体程序而虚设, 程序规定了相应进程所要完成的动作。
(5)组成不同。进程包含PCB、程序段、数据段。程序包含数据和指令代码。
(6)程序是一个包含了所有指令和数据的静态实体。本身除占用磁盘的存储空间外,并不占用系统如CPU、内存等运行资源。
(7)进程由程序段、数据段和PCB构成,会占用系统如CPU、内存等运行资源。
(8)一个程序可以启动多个进程来共同完成。
联系:进程不能脱离具体程序而虚设, 程序规定了相应进程所要完成的动作。

进程的组成——PCB

PCB简介:
PCB中记录了操作系统所需的,用于描述进程的当前情况以及控制进程运行的全部信息。
PCB的作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。
或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。
例如,当OS要调度某进程执行时,要从该进程的PCB中查处其现行状态及优先级;在调度到某进程后,要根据其PCB中所保存的处理机状态信息,设置该进程恢复运行的现场,并根据其PCB中的程序和数据的内存始址,找到其程序和数据;
进程在执行过程中,当需要和与之合作的进程实现同步,通信或者访问文件时,也都需要访问PCB;
当进程由于某种原因而暂停执行时,又须将器断点的处理机环境保存在PCB中。
可见,在进程的整个生命期中,系统总是通过PCB对进程进行控制的,即系统是根据进程的PCB而不是任何别的什么而感知到该进程的存在的。
所以说,PCB是进程存在的唯一标志。

请添加图片描述
请添加图片描述
请添加图片描述

程序是如何运行的

请添加图片描述

进程的组成

请添加图片描述

进程的特征

请添加图片描述

知识回顾

请添加图片描述

2.1.2 进程的状态与转换,进程的组织

知识总览

请添加图片描述

创建态,就绪态

请添加图片描述

运行态

请添加图片描述

阻塞态

请添加图片描述
当操作系统将资源分配给进程2的时候,那么这个进程2等待的事件就已经发生了,此时就会从阻塞态变成就绪态

终止态

请添加图片描述

进程状态的转化

请添加图片描述

请添加图片描述

进程的状态

请添加图片描述

进程的组织方式——链接方式

请添加图片描述

进程的组织——索引方式

请添加图片描述

进程的组织

请添加图片描述

知识回顾

请添加图片描述

2.1.3 进程控制

简单来说进程控制就是进程状转换
原语的执行具有原子性,一气呵成 若是不具有原子性,可能导致操作系统中某些关键数据结构信息不统一的情况,这会影响操作系统进行别的管理工作
请添加图片描述
请添加图片描述

进程控制相关的原语

作业调度就是从外存中挑选一个程序放入内存让他运行,这里说明一下调度和切换的区别.调度是指决定资源分配给哪个进程的行为,是一种决策行为,切换是指实际分配的行为,是执行行为,一般来说现有资源调度,后有进程切换,

学习技巧:进程控制会导致进程状态的转换.无论哪个原语,要做的无非三类事情:

1.更新PCB中的信息(如修改进程状态标志、将运行环境保存到PCB、从PCB恢复运行环境)
a.所有的进程控制原语一定都会修改进程状态标志
b.剥夺当前运行进程的CPU使用权必然需要保存其运行环境
c.某进程开始运行前必然要恢复期运行环境
2.将PCB插入合适的队列
3.分配/回收资源

。接下来我们就具体学习一下关于进程控制的五种原语,进程的创建、终止、唤醒、阻塞、切换;

请添加图片描述
请添加图片描述
阻塞原语是由被阻塞进程自我调用实现的
唤醒原语是由一个被唤醒进程合作或被其他相关的进程调用实现的
请添加图片描述
请添加图片描述

下面来解释一下什么是运行环境信息以及进程所需的运行环境

程序是如何运行的

请添加图片描述

CPU的状态是内核态还是用户态就是保存在程序状态字寄存器PSW中的
,若是执行完指令3之后,另外一个进程开始上CPU运行,另外一个进程同样需要上一个进程同样的寄存器,所以也就可能发生数据的覆盖
请添加图片描述

知识回顾

请添加图片描述

2.1.4进程通信

什么是进程通信

请添加图片描述

进程通信需要操作系统的支持

请添加图片描述

共享存储

请添加图片描述
请添加图片描述

消息传递

请添加图片描述

直接通信方式

操作系统内核的区域中保存着各个进程的PCB,各个进程的PCB包含一个消息队列,当进程Q要使用直接通信方式的时候,进程P要在自己的地盘来完善这个消息,进程P会使用这个发送原语,这个原语会到进程Q的消息队列中,进程Q会使用接受原语从内核区域中的消息队列中找信息
请添加图片描述

间接通信方式

请添加图片描述

管道通信

就像水管一样,水只能从一端流向另外一端其实也就是一个循环队列,与直接通信的区别是读数据很自由,但是管道通信方式中是一个数据流的方式,要求数据的读写一定是先进先出的,
请添加图片描述

知识回顾

请添加图片描述

王道修正

请添加图片描述

2.1.5 线程的概念

知识总览

请添加图片描述
请添加图片描述
请添加图片描述

线程的属性

请添加图片描述

2.1.6 线程的实现方式和多线程模型

知识总览

请添加图片描述

线程的实现方式

用户级线程

请添加图片描述
请添加图片描述
就像上面举得while的例子,若是某一个线程被阻塞,则整个进程都会被阻塞
请添加图片描述

内核级线程

也就是操作系统也可以看到的线程
请添加图片描述
请添加图片描述

多线程模型

请添加图片描述
请添加图片描述
请添加图片描述

知识回顾

请添加图片描述

2.1.7 线程的状态与转换

知识总览

请添加图片描述

进程的状态与转换

请添加图片描述

线程的组织与控制

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/18553.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

yolov5 8系列 labelme数据标注 并生成训练数据集

yolov5 8系列 labelme数据标注 数据集生成终极教程 一.数据集准备二.转换为yolo 数据集 一.数据集准备 创建一个data 文件夹在data文件夹下创建一个images 文件夹将所有图片数据放入images文件夹下 使用labelme标注数据 python环境下使用 pip install labelme 安装labelme在c…

缓存击穿,穿透,雪崩

一、缓存击穿 单个热点key,在不停的扛着大并发,在这个key失效的瞬间,持续的大并发请求就会击破缓存,直接请求到数据库 解决方案 使用互斥锁(Mutex Key),只让一个线程构建缓存,其他…

Golang中的运算符

目录 运算符 算术运算符 代码案例: 关系运算符 代码案例: 逻辑运算符 代码案例: 位运算符 代码案例: 赋值运算符 代码案例: 其他运算符 运算符 算术运算符 Go语言中的算术运算符包括加、减、乘、除和取模…

4.2和4.3、MAC地址、IP地址、端口

计算机网络等相关知识可以去小林coding进行巩固(点击前往) 4.2和4.3、MAC地址、IP地址、端口 1.MAC地址的简介2.IP地址①IP地址简介②IP地址编址方式③A类IP地址④B类IP地址⑤C类IP地址⑥D类IP地址⑧子网掩码 3.端口①简介②端口类型 1.MAC地址的简介 …

Mac电脑配置李沐深度学习环境[pytorch版本]使用vscode

文章目录 第一步 M1芯片安装Pytorch环境安装Miniforge创建虚拟环境安装Pytorch 第二步 下载李沐Jupyter文件第三步 配置vscode参考 第一步 M1芯片安装Pytorch环境 安装Miniforge Mac打开终端(Mac电脑如何启动终端?打开启动台,搜索终端即可&…

Python 中 随机数 random库 学习与使用

python中的随机数应用大体包含,随机整数、随机浮点数 和 获取随机数序列三类。 一. 随机整数 1.1 随机整数,包含上下限(闭区间) randint(a, b):随机选取 [a, b] 之间的一个整数,随机整数包含a 和 b&#…

Windows编程资源,菜单资源,图标资源,光标资源,上下文菜单,字符串资源,加速键资源

Windows资源是一种二进制数据,由链接器链接进程序成为程序的一部分,通过资源的方式可以很方便的对应用程序进行扩展。在Windows中资源可以是系统自定义的,也可以是用户自定义的。在本篇文章中为大家讲解菜单资源,上下文菜单&#…

PMP证书“扫盲”时间2023年考证人快看过来

二,PMP报考指南 学历与工作经验要求: 本科及以上学历,三年或以上的项目管理工作经验; 专科及以上学历,五年或以上的项目管理工作经验。 项目管理培训:35小时以上的项目管理教育/培训。 备注&#xff1…

Unity Audio -- (3)创建3D音效

本节会添加场景中小瀑布的音效。小瀑布的音效会有一个作用范围,也会根据角色所处的位置不同,产生不同的效果。 添加小瀑布的声音 1. 在Hierarchy中,点击右键,选择Audio -> Create Audio Source,将这个新的Audio So…

NOA上车「清一色」自主品牌,哪些供应商正在突围前线

随着入门级L2进入普及周期,以NOA(高速、城区)为代表的L2/L2赛道,正在成为主机厂、硬件供应商、算法及软件方案商的下一波市场制高点的争夺阵地。 高工智能汽车研究院监测数据显示,2023年1-3月中国市场(不含…

MySQL基础(十一)数据处理之增删改

1. 插入数据 1.1 实际问题 解决方式:使用 INSERT 语句向表中插入数据。 1.2 方式1:VALUES的方式添加 使用这种语法一次只能向表中插入一条数据。 情况1:为表的所有字段按默认顺序插入数据 INSERT INTO 表名 VALUES (value1,value2,....)…

第十五届吉林省赛个人题解【中档题(不过可能对你来说是简单题)】(H、G、C)

文章目录 H. Visit the Park(STL)G. Matrix Repair(思维题)C.Random Number Generator(BSGS算法) H. Visit the Park(STL) 题意:给你一个无向图,每条边上都有一个数码,然后给你一个路径,每次你必须从Ai走到Ai1(直接走…

能否实现有价值观的--AI ?

人机融合所形成的新系统确实有可能产生新的科技革命。人机融合可以将人类的智慧和创造力与机器的计算能力和数据处理能力相结合,从而创造出更加智能化和高效化的新系统和产品。例如,人机融合可以推动智能制造、智能医疗、智能交通、智慧城市等各个领域的…

Go:值与指针

1. 计算机中的值 在百万年的演化历史中,人类对事物的属性进行了抽象,有了数量、精度、信息等概念的表示,对应的我们称之为整数、小数、文本文字等。计算机出现后,我们使用计算机对真实世界的问题进行建模,通过计算机的…

俩小伙一晚上写了个 AI 应用,月入两万??(文末附开发教程)

开发出一款能够与 AI 对话生成和编辑思维导图的工具,听起来似乎只能是一群专业的 AI 背景团队花费大量的时间和精力训练模型,打磨应用才能完成的事情。 但是,两名大学生却在一夜之间完成了,就像炼金术士将庸俗的材料转化成黄金一…

【c语言】字符串比较 | API仿真

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ …

Snipaste介绍、安装、使用技巧(截图贴图工具)

一、简介 Snipaste 是一个简单但强大的截图贴图工具&#xff0c;也可以让你将截图贴回到屏幕上&#xff01;下载并打开 Snipaste&#xff0c;按下 F1 来开始截图&#xff0c;再按 F3&#xff0c;截图就在桌面置顶显示了。就这么简单&#xff01; 你还可以将剪贴板里的文字…

学习分享|一文搞懂WiFi 6/7 以及选择路由器改造网络那些事

目录 什么是 WiFi 6 WiFi 6 功能特点 WIFI 6 与前几代对比 速度更快 延时更低 容量更大 更安全 更省电 WiFi 4~WiFi 6对比 WiFi 6 核心技术 WiFi 7 WiFi 世代列表 路由器常用技术扩展 2.5Ge 网口 WAN/LAN口复用/网口盲插 双WAN口 双LAN口端口聚合 mesh组网 聊…

思维导图手撕MyBatis源码

文章目录 前置准备通过类加载器读取配置文件流创建sqlSessionFactory建造者模式的使用 打开SqlSession获取Mapper接口对象执行Mapper接口方法 前置准备 既然要读MyBatis的源码&#xff0c;那么我们就要先弄清楚MyBatis的入口在哪。这里我们直接写一个标准的MyBatis使用程序&am…

6.1.1 图:基本概念

一&#xff0c;基本概念 1.基本定义 &#xff08;1&#xff09;图的定义 顶点集不可以是空集&#xff0c;但边集可以是空集。 &#xff08;2&#xff09; 有向图的表示&#xff1a; 圆括号 无向图的表示&#xff1a; 尖括号 简单图、多重图&#xff1a; 简单图&#xff1a;…