2-1进程管理-进程与线程

news2024/10/4 9:23:03

文章目录

  • 1.进程
  • 2.进程控制块(PCB)
  • 3.进程的状态与转换
  • 4.进程通信
  • 8.线程
  • 9.线程和进程的比较
  • 10.线程的实现方式
  • 11.多线程模型
  • 20.线程的状态与转换

1.进程

(1)进程是程序的一次执行过程
(2)进程是进程实体的运行过程
(3)进程是一个程序及其数据在处理机上顺序执行时所发生的活动
(4)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

特征
(1)动态性:进程是程序的一次执行过程,是动态地产生、变化和消亡的。动态性是进程最基本的特性
(2)并发性:内存中有多个进程实体,各进程可并发执行
(3)独立性:进程实体是一个能独立运行、独立获得资源、独立接受调度的基本单位
(4)异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题
(5)结构性:每个进程都会配置一个PCB。结构上看,进程实体由程序段、数据段、PCB组成

2.进程控制块(PCB)

PCB是操作系统核心中一种数据结构,主要表示进程状态。包括进程描述信息、进程控制和管理信息、资源分配清单、处理机相关信息。

  • 作用:使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位或与其它进程并发执行的进程。系统利用PCB来描述进程的基本情况和运行状态,进而控制和管理进程。操作系统对进程进行管理工作所需的信息都存在PCB中,PCB是进程存在的唯一标志。
  • 什么时候用到PCB?
    (1)当操作系统欲调度某进程运行时,要从该进程的PCB中查出其现行状态及优先级
    (2)在调度到某进程后,要根据其PCB中所保存的处理机状态信息,设置该进程恢复运行的现场,并根据其PCB中的程序和数据的内存始址,找到其程序和数据
    (3)进程在运行过程中,当需要和与之合作的进程实现同步、通信或访问文件时,也需要访问PCB
    (4)当进程处于某种原因而暂停运行时,又需要将其断点的处理机环境保存在PCB中

3.进程的状态与转换

(1)运行态、就绪态、阻塞态、创建态(新建)、结束态(终止)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)进程的组织方式
在这里插入图片描述

进程的组织——链接方式

在这里插入图片描述
进程的组织——索引方式
在这里插入图片描述
(3)进程控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
无论哪个进程控制原语,要做的无非三类事情:
(1)更新PCB中的信息:修改进程状态、保存/恢复运行环境
(2)将PCB插入合适的队列
(3)分配/回收资源(进程创建、终止)

4.进程通信

(1)共享存储
操作系统只负责为通信进程提供可共享使用的存储空间和同步互斥工具,而数据交换则由用户自己安排读/写指令完成
即:双方通过共享空间进行信息交换

①低级方式:基于数据结构的共享。比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢、限制多,是一种低级通信方式。
在这里插入图片描述
②高级方式:基于存储区的共享。操作系统在内存中划出一块共享存储区,数据的形式、存放位置都由通信进程控制,而不是操作系统。这种共享方式速度很快,是一种高级通信方式。

在这里插入图片描述

(2)消息传递
①直接通信方式:发送进程直接把消息发送给接收进程,并将它挂在接收进程的消息缓冲队列上,接收进程从消息缓冲队列上取得消息
P:send(Q,msg)
Q:receive(P,&msg)
在这里插入图片描述

②间接通信方式:发送进程把消息发送到某个中间实体,接收进程从中间实体取得消息。
这种中间实体一般称为信箱,如信箱A
P:send(A,msg)
Q:receive(A,&msg)

在这里插入图片描述

(3)管道通信
①管道只能采用半双工通信,如果要实现双向同时通信需要设置两个管道。
②各进程要互斥地访问管道(由操作系统实现)
③管道满,写进程阻塞,直到读进程将数据取走,才能唤醒;
管道空,读进程阻塞,直到写进程写入数据,才能唤醒。
④没满可写,没空可读。
⑤通常:一个管道允许多个写进程,但只允许一个读进程。在一些情况下,也可能允许多个读进程

5.进程和程序之间可以形成一对一、一对多、多对一、多对多的关系,请分别举例说明在什么情况下会形成这样的关系
(1)一对一:执行一条命令或运行一个应用程序时
(2)一对多:进程在执行过程中可以加载执行不同的应用程序
(3)多对一:以不同的参数或数据多次执行同一个应用程序时
(4)多对多:并发地执行不同的应用程序

6.父进程创建子进程和主程序调用子程序有何不同?
父进程创建子进程后,父进程与子进程同时执行(并发)。主程序调用子程序后,主程序暂停在调用点,子程序开始执行,直到子程序返回,主程序才开始执行。

7.为什么进程之间的通信必须借助于操作系统内核功能?简单说明进程通信的几种主要方式。

每个进程都有自己独立的地址空间。在操作系统和硬件的地址保护机制下,进程无法访问其他进程的地址空间,所以必须借助于操作系统的系统调用函数实现进程之间的通信。进程通信的主要方式有:
(1)共享内存区。通过系统调用创建共享内存区。多个进程可以(通过系统调用)连接同一共享内存区,通过访问共享内存区实现进程之间的数据交换。使用共享内存区时需要利用信号量解决同步互斥问题。
(2)消息传递。通过发送/接收消息,系统调用实现进程之间的通信。当进程发送消息时,系统将消息从用户缓冲区复制到内核中的消息缓冲区,然后将消息缓冲区挂入消息队列。进程发送的消息保持在消息队列中,直到被另一进程接收。当进程接收消息时,系统从消息队列中解挂消息缓冲区,将消息从内核的消息缓冲区中复制到用户缓冲区,然后释放消息缓冲区。
(3)管道系统。管道是先进先出的信息流,允许多个进程向管道写入数据,允许多个进程从管道读出数据。在读/写过程中,操作系统保证数据的写入顺序和读出顺序是一致的。进程通过读/写管道文件或管道设备实现彼此之间的通信。
(4)共享文件。利用操作系统提供的文件共享功能实现进程之间的通信。这时,也需要信号量来解决文件共享操作中的同步和互斥问题。

8.线程

线程是一个基本的CPU单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务

9.线程和进程的比较

(1)调度。引入线程后,进程是资源分配的基本单位,而线程是调度的基本单位
(2)拥有资源。进程是拥有资源的基本单位,而线程不拥有系统资源
(3)并发性。进程和多线程之间都可以并发执行,引入线程的操作系统具有更好的并发性,提高了系统的吞吐量
(4)系统开销。进程切换开销大,线程切换开销小
(5)地址空间和其他资源。进程的地址空间之间相互独立,同一进程的各线程间共享进程的资源,某进程内的线程对于其他进程不可见
(6)通信方面。进程间通信需要进程同步和互斥手段的辅助,以保证数据的一致性。而线程可以直接读/写进程数据段来进行通信

10.线程的实现方式

(1)用户级线程:有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在。应用程序可以通过使用线程库设计成多线程程序。

优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程管理的系统开销小,效率高
缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。多个线程不可在多核处理机上并行运行。

在这里插入图片描述

(2)内核级线程:线程管理的所有工作由内核完成,应用程序没有进行线程管理的代码,只有一个到内核级线程的编程接口。内核级线程是处理机分配的单位。

优点:当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可在多核处理机上并行执行。
缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,因此线程管理的成本高,开销大。
在这里插入图片描述

(3)组合方式:上述两种方式的结合

11.多线程模型

(1)多对一模型
将多个用户级线程映射到一个内核级线程,线程管理在用户空间完成。

  • 优点:效率高,开销小
  • 缺点:一个线程在使用内核服务时被阻塞,整个进程都会被阻塞;多个线程不能并行地运行在多处理机上
    在这里插入图片描述

(2)一对一模型
将每个用户级线程映射到一个内核级线程

  • 优点:当一个进程被阻塞后,允许另一个线程继续执行,并发能力强
  • 缺点:每创建一个用户级线程都需要创建一个内核级线程与之对应,开销大
    在这里插入图片描述

(3)多对多模型
将n个用户级线程映射到m个内核级线程上,m≤n
特点:克服了多对一模型并发度不高的缺点,也克服了一对一模型开销太大的缺点,还拥有二者的优点

在这里插入图片描述
12.为什么要引入进程?
在多道程序同时运行的背景下,进程之间需要共享系统资源,因此会导致各程序在执行过程中出现相互制约的关系,程序的执行会表现出间断性的特征。这些特征都是在程序的执行过程中发生的,是动态的过程,而传统的程序本身是一组指令的集合,是一个静态的概念,无法描述程序在内存中的执行情况,即我们无法从程序的字面上看出它何时执行、何时停顿,也无法看出它与其他执行程序的关系,因此程序这个静态概念已不能如实反应程序并发执行过程的特征。为了深刻描述程序动态执行过程的性质,乃至更好的支持和管理多道程序的并发执行,人们引入了进程的概念

13.什么是进程?进程由什么组成?
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序代码本身,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。

一个进程实体由程序段、相关数据段和PCB三部分构成,其中PCB是标志一个进程存在的唯一表示,程序段是进程运行的程序的代码,数据段则存储程序运行过程中相关的一些数据。

14.进程是如何解决问题的?
进程把能够识别程序运行态的一些变量存放在PCB中,通过这些变量系统能够更好的了解进程的情况,并在适当时进行进程的切换,以避免一些资源的浪费,甚至划分为更小的调度单位——线程来提高系统的并发度

15.什么是多线程?多线程与多任务有什么区别?
多线程是指一个程序中可以定义多个线程并同时运行他们,每个线程可以执行不同的任务

区别:多任务是针对操作系统而言的,代表操作系统可以同时执行的程序个数;多线程是针对一个程序而言的,代表一个程序可以同时执行的线程个数,而每个线程可以完成不同的任务

16.若系统中没有运行进程,是否一定没有就绪进程?
是。若系统中未运行进程,则系统很快会选择一个就绪进程运行。只有就绪队列中无进程时,CPU才可能处于空闲状态。

17.若系统中既没有运行进程,又没有就绪进程,系统中是否就没有进程?
不一定。因为系统中的所有进程可能都处于等待态,可能处于死锁状态,也有可能因为等待的事件未发生而进入循环等待态。

18.在采用优先级进程调度时,运行的进程是否一定是系统中优先级最高的进程?
不一定。因为高优先级的进程有可能正处在等待队列中,进程调度会从就绪队列中选择一个进程占用CPU,这个被选中的进程可能优先级较低。

19.现代操作系统一般都提供多线程(多任务)运行环境

(1)为支持多进程的并发执行,系统必须建立哪些关于进程的数据结构?
为支持多线程的并发执行,系统为每个进程建立了一个数据结构:进程控制块(PCB),用于进程的管理和控制。PCB中记录了有关进程的一些描述信息和控制信息,包括进程标识符、进程当前的状态、优先级、进程放弃CPU的现场信息,以及指示组成进程的程序和数据在存储器中存放位置的信息、资源使用信息、进程各种队列的连接指针和反应进程之间的隶属关系的信息等。

(2)为支持多进程状态的变迁,系统至少应提供哪些进程控制原语?
在进程的整个生命周期中,会经历多种状态。进程控制的主要职能是对系统中所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程的状态转换等功能。在操作系统内核中,有一组程序专门用于完成对进程的控制。这些原语至少包括创建新进程原语、阻塞进程原语、唤醒进程原语,终止进程原语等操作。系统服务对用户开放,即用户可以通过相应的接口来使用它们

(3)执行每个进程控制原语时,进程状态发生什么变化?相应的数据结构发生什么变化?

  • 进程创建原语:从PCB集合中申请一个空白PCB,将调用者参数添入该PCB,设置记账数据,置新进程为“就绪”态。
  • 终止进程原语:用于终止完成的进程,回收其所占资源。包括消去其资源描述块,消去进程的PCB
  • 阻塞原语:将进程从运行态变为阻塞态。进程被插入等待事件的队列,同时修改PCB中相应的表项,如进程状态和等待队列指针等。
  • 唤醒原语:将进程从阻塞态变为就绪态。进程从阻塞态队列中移出,插入就绪队列,等待调度,同时修改PCB中相应的表项,如进程状态等

20.线程的状态与转换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

JavaScript篇.day09-数据类型,表达式,运算符,作用域,语句,严格模式

目录1.数据类型(1)原始数据类型(2)隐式转换(3)逻辑语句中的类型转换(4)数据类型检测2.表达式3.运算符(1)分类(2)其他4.作用域5.语句6.严格模式1.数据类型(1)原始数据类型number, string, boolean, null, undefined, object object对象包含: Array, Function, Date...function f…

【微服务笔记03】微服务组件之Eureka注册中心高可用集群环境搭建

这篇文章,主要介绍微服务组件之Eureka注册中心高可用集群环境搭建。 目录 一、Eureka集群环境 二、搭建Eureka高可用集群环境 2.1、前提准备 (1)修改hosts配置文件 (2)创建父工程项目 2.2、搭建Eureka注册中心 …

数据可视化大屏Echarts高级开发散点图实战案例分析(地图扩展插件bmap.min.js、散点图、百度地图控件、柱图、涟漪动图、条件判断颜色)

系列文章目录 燃,拿来即用!Echarts动态排名柱状图(自适应电脑和手机端)漏刻有时数据可视化Echarts组件开发(27):盒须图(箱线图)前后端php交互的实战案例漏刻有时数据可视化Echarts组件开发(26):全国地图三级热力图下钻和对接api自动调用数据…

高压功率放大器在高校实验室的实际应用领域介绍

功率放大器的应用领域是很多电子工程师都关心的问题,那么功率放大器的使用场景又有哪些呢,下面来介绍一下安泰高压功率放大器在各个高校的实际应用情况。 图:激光切割 一、ATA-1000系列宽带功率放大器 应用领域:激光切割 适用高校…

Power BI 可视化修改配色

示例数据: 一、Power BI 按列排序 当把文本字段放在坐标轴,显示的顺序都乱了,完全不是自己想要的,就像下图所示: 默认按照Y轴的数值降序排序,如果选择按照month 以升序排序,就会如下所示&am…

【CDP】CDP集群如何通过Cloudera Manager配置使用SNMP方式转发告警

前言 这篇文章参考了大神的文章,如何在CDH平台上集成SNMP服务,然后实现了CDP集群集成SNMP服务,这里描述下,如何集成步骤,在CDP集群中告警是一个很重要的信息,最直观的衡量一个集群的健康状况,那…

[深度学习] 基于切片辅助超推理库SAHI优化小目标识别

对象检测是迄今为止计算机视觉中最重要的应用领域。然而,小物体的检测和大图像的推理仍然是实际使用中的主要问题,这是因为小目标物体有效特征少,覆盖范围少。小目标物体的定义通常有两种方式。一种是绝对尺度定义,即以物体的像素…

【小程序】自定义组件

文章目录组件的创建与引用自定义组件的样式自定义组件的数据、方法和属性data数据methods 方法properties 属性数据监听器纯数据字段组件的生命周期组件所在页面的生命周期插槽单个插槽多个插槽父子组件之间的通信behaviors组件的创建与引用 创建一个组件的步骤: …

发票额度报销最优排列组合问题

1、问题描述 因为我的公司每个月给员工会有一定的交通费额度,需要拿发票去报销才能获得的。要求的是发票总金额不能大于报销的额度。因此在实际报销的时候,你要一张张发票去排列组合经可能的把报销金额往报销额度那里去凑。比如你有1000元额度&#xff0…

Unity 3D JavaScript 脚本基础||Unity 3D C# 脚本基础

变量 数值变量。var a1000;var b3.1415926;字符串变量。 是由单引号或双引号括起来的 Unicode 字符序列。 布尔值。 只有 true 和 false 。用来描述某个事物为真或为假。 数组 是数据的集合,数组中的每一个元素都有自己独有的下标,下标从0开始计数。 表…

《收获,不止Oracle》读书笔记之第三章逻辑体系世界

1.数据库有序的逻辑体系 2.逻辑体系从老余养殖细细说起 推出的逻辑结构是:表空间(tablespace)、段(segment)、区(extent)、块(block)。Oracle server正是有条理地通过表空…

基础数学(七)——线性方程组的数值解法

文章目录考试要求基础知识一般求解思路消元法高斯消元法小主元导致的计算失误高斯列主元素消去法(期末考试要求之一)高斯消元法例题(期末必考)高斯消元法的优缺点减少fill-in现象(了解)矩阵分解Doolittle分…

【ROS】——常用命令(五)

文章目录前言1. rosnode1.1 rosnode list 列出活动节点1.2 rosnode ping 测试到节点的连接状态1.3 rosnode info 打印节点信息1.4 rosnode machine 列出指定设备上节点1.5 rosnode kill 杀死某个节点1.6 rosnode cleanup 清除不可连接的节点2. rostopic2.1 rostopic list(-v)2.…

【学习】深度强化学习

李宏毅深度学习一、深度强化学习Deep Reinforcement Learning (RL)什么是RL?(三步骤)计算loss计算A版本0版本1版本2版本32、梯度方法收集训练数据:探索3、actor criticMCTD版本3.5一、深度强化学习Deep Reinforcement Learning (RL) 什么是R…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的图像语义分割模型

给我推荐20个比较流行的图像语义分割模型 在这里列出20个比较流行的图像语义分割模型:U-Net Mask R-CNN Fully Convolutional Network (FCN) SegNet DeepLab v3 PSPNet ENet ICNet RefineNet DenseASPP DenseNet LinkNet FPN BiSeNet ENAS Deeplab v3 GCN CRF-RNN …

Linux环境变量

文章目录什么是环境变量?什么是本地变量?如何获取环境变量?在shell中在程序中如何添加/删除环境变量&&本地变量?在shell中在程序中为什么环境变量能够被子进程继承?什么是环境变量? 环境变量是进程…

Vue初识系列【1】

文章目录一 前端体系1.1 前端三要素1.2 JavaScript 框架1.3 JavaScript 构建工具1.4 前端所需后端技术1.5 UI框架二 前后端分离史2.1 后端为主的 MVC 时代(web1.0)2.2 基于 AJAX 带来的 SPA 时代(web2.0)2.3 前端为主的 MV* 时代2.4 NodeJS 带来的全栈时…

OBS 进阶 音频面板优化

因为,面板高度就那么大,如果声音源很多的话,就有点乱。 优化目的:静音的,自动放在底部,这样,音频面板上面的都是没有静音的,也是我们最关注的部分。 目录 一、音频面板优化 1、不想要音频面板的title,将其去掉

【LeetCode每日一题】【2023/1/3】2042. 检查句子中的数字是否递增

文章目录2042. 检查句子中的数字是否递增方法1:直接遍历写法2:按本题特有条件方法2:栈方法3:std::stringstream写法22042. 检查句子中的数字是否递增 LeetCode: 2042. 检查句子中的数字是否递增 简单\color{#00AF9B}{简单}简单 句…

202301-第一周资讯

大家好,欢迎来到本周资讯,在过去的一周内呢,我们在示例DEMO、文档、教学视频上都有了较多的产出并且帮助大家解决了不少问题,赶紧看看上周成果吧! 目录 DEMO 动态TopN报表 导出图文报告的脚本示例 Superpage pc端…