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

news2024/9/22 15:39:54

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

文章目录

  • 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 线程的状态与转换

知识总览

请添加图片描述

进程的状态与转换

请添加图片描述

线程的组织与控制

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《花雕学AI》用Edge和chrome浏览器体验GPT-4智能聊天的神奇免费插件,Sider – 聊天机器人的新选择

你有没有想过和人工智能聊天?你有没有想过用浏览器就能和GPT-4这样的先进的聊天机器人对话?如果你有这样的想法,那么你一定要试试Sider这个神奇的免费插件。 Sider(Sider – AI Sidebar)是一款基于ChatGPT的智能侧边栏…

零基础小白学5G网络优化技术,最常陷入的怪圈有哪些?

“赛道”这个词是自媒体最喜欢谈的,因为生活里面处处是赛道。从上小学选择哪个中学,高考选择哪个专业,大学毕业选择哪个行业...... 一开始就选对赛道的人,少之又少,都是需要经历和试错才可以。面对行业和工作这个赛道&…

豪取BAT!超详细暑期实习算法面经(非科班无论文)

面试锦囊之面经分享系列,持续更新中 赶紧后台回复"面试"加入讨论组交流吧 写在前面 本人基本情况:211本硕,本科电子信息工程,硕士通信与信息系统,典型的非科班,无论文,两段实习经历…

UNIX系统调用和库函数(详细讲解)

什么是系统调用? 所有的操作系统都提供多种服务的入口点,由此程序向内核请求服务。各种版本的 UNIX 实现都提供良好定义、数量有限、直接进入内核的入口点,这些入口点被称为系统调用(system call,见图1-1) Research UNX 系统第7版提供了约5…

复古视觉大闸蟹创意海报设计

一、新建画布1500*2300像素,分辨率72 二、把文案要求拖入新建的画布中,更改文字颜色,然后打组命名为文案 三、拖入一个大闸蟹到画面当中,点击视图,新建一个居中的参考线,750居中 四、给画面添加一个背景&am…

关于WPA3-H2E的技术讲解

序言 H2E是Hash-To-Element的缩写。 问:虽然使用WPA3 SAE解决了offline dictionary破解密钥的问题,但是原先用于生成PMK的算法在计算时间上和密钥有关联性(这也行?),仍然存在所谓被side-channel方式破解。 解:新的算法,使用hash计算一次即可,堵死这个理论缺口[4]。…

盖雅工场发布数字化转型人效实践案例集

近日,盖雅工场重磅发布《聚集人效,重塑组织:典范企业管理实践案例集》(以下简称案例集)。 过去一年,盖雅工场携旗下盖雅学苑访谈了来自制造业、服务业、连锁零售业、汽车产业的几十家企业后,并…

【喜报】通付盾获评苏州市知识产权优势型企业!

近日,苏州市第二批知识产权强企培育工程成长型、优势型、引领型企业名单公示,江苏通付盾科技有限公司获评“苏州市知识产权强企培育工程-优势型企业”。 *名单发布来源:苏州市工业和信息化局 苏州市知识产权优势型企业 获评优势型企业的主要…

【观察】更懂业务的数智平台,才能应对数智化转型的“千变万化”

毫无疑问,随着数智化转型的加速,越来越多的企业正在把数智化战略提升到一个全新的高度,转型的进程也正从“浅层次”的数智化走向“深层次”数智化的阶段。 这也让企业的数智化转型进入到了一个全新的阶段,其面临的挑战也越来越大&…

intel I2C的速率配置

目录 寄存器篇 修改寄存器 intel I2C 驱动结构 lpss-pci文件 lpss文件 驱动结构 Synopsys DesignWare I2C BIOS配置修改 ACPI表的查看 I2C速率 寄存器篇 修改速率很简单,看到手册里面的寄存器说明,然后将其改掉即可。 寄存器偏移量为0&#x…

1、Flutter使用总结(RichText、Container)

1、创建Flutter项目 flutter create DemoName 2、运行项目 flutter run -d ‘iPhone 14 Pro Max’ 注: 当运用Android Studio时、选择安卓模拟器运行项目、如果项目路径有中文名称: 那么运行报错、如果直接在项目路径下,采用终端运行安卓模拟器、可执行如下命令 flutter ru…

博客系统后端设计(二) - 封装数据库操作

文章目录 封装数据库操作1. 创建一个 db.sql 文件2. 封装数据库的连接操作3. 创建实体类4. 封装数据库的增删改查操作4.1 创建 BlogDao 类中的方法4.2 创建 UserDao 类中的方法 封装数据库操作 这个步骤主要是把一些基本的数据库操作封装好,以后备用。 1. 创建一个…

微信小程序——wxs脚本

WXS目录 一、WXS的概述1、什么是wxs2、应用场景:3. wxs 与JavaScript(1)wxs 支持的数据类型:(2)wxs 不支持类似于 ES6 及以上的语法形式(3)wxs 遵循 CommonJS 规范 二 、WXS基础语法1、 内嵌 wxs 脚本2、外联的 wxs 脚本 三、WXS的特点1. 与 JavaScript 不同2. 不能…

【计算机图形学基础教程】MFC基本绘图函数2

MFC基本绘图函数 绘图工具类 CGdiObject类:GDI绘图工具的基类CBitmap类:封装了GDI画刷,可以选作设备上下文的当前画刷,用于填充图形的内部CFont类:封装了GDI字体,可以选作设备上下文的当前字体CPalette类…

一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, 资料整理笔记(大全) 摘要模块图类关系图模块全展开【aiohttp】统计常量模块1 aiohttp.hd…

Redis超详细入门手册教程!还不快来看看?

地址: RedisRedis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures …https://redis.io/ 1:NoSQL简介 1.1:数据库应用的演变历程 单…

【Matlab】基于改进的 Hausdorf 距离的DBSCAN船舶航迹聚类

【Matlab】基于改进的 Hausdorff 距离的DBSCAN船舶航迹聚类 一、模型简介1.1问题背景1.2具体内容AIS数据的预处理船舶轨迹分割船舶轨迹相似度度量船舶轨迹表达方式船舶轨迹相似度量方法改进的 Hausdorff 距离船舶轨迹聚类及轨迹提取基于改进DBSCAN算法轨迹聚类船舶典型轨迹的提…

PHP+vue基于web的小区物业管理管理系统1995a

小区物业管理系统主要是对小区物业以及居民信息进行管理,方便用户使用该资源的一种有效手段。能有效地对物业以及用户信息进行管理并为广大用户服务是该管理系统的基本要求,同时用户也可以及时了解最新的物业信息,方便地查询相关物业情况。基…

Django配置WebSocket:django3配置websocket步骤

一、websocket概述 简单可以认为是在web上实现socket功能,在服务器上与浏览器保持socket长连接。 实现websocket是通过magic string 二、环境概述 解释器:python3.9 django3.2 channels3.0.4 #有些时候是channels版本有问题,导致配置不…

linux和window下svn版本控制可视化工具

之前一直用命令行来拉取代码建立分支,推送代码等等 也不是不行,但是用久了,感觉很麻烦,后面就用了svn的版本可视化工具 linux和window下svn版本控制可视化工具 Linux环境下使用图形化界面的SVN客户端软件,那么RabbitVC…