【多线程】进程(进程的概念+进程的管理+PCB(进程控制块)+进程的调度)

news2024/11/27 11:29:46

文章目录

  • 进程
    • 一、计算机的组成:
            • 1.指令(Instruction)
    • 二、浅谈操作系统
      • 1.日常的操作系统
          • 1.操作系统内核
            • 内核:
            • 进程的隔离性:
    • 三、进程(process)
      • 1.进程的概念
      • 2.进程的管理
        • 1.管理的两个角度:
            • 1.描述:
            • 2.组织:
        • 2.PCB(进程控制块):
          • 1.PCB的属性:
            • 1.pid:(进程标识符)
            • 2.内存指针(一组属性)
            • 3.文件描述符表
      • 3.进程的调度
        • **分时复用(并发执行)**
          • 1.并行:
          • 2.并发:
        • PCB的属性:
          • 1.进程的状态
            • 1.就绪状态:
            • 2.阻塞状态:
          • 2.进程的优先级
          • 3.进程的上下文
          • 4.进程的记账信息

进程

一、计算机的组成:

  • CPU

中央处理单元

主频、核心数

  • 存储器

内存:速度快、空间小、成本高、掉电后数据丢失

外存:速度慢、空间大、成本低、掉电后数据不丢失

  • 输入设备
  • 输出设备
1.指令(Instruction)
  • CPU上能够执行任务的最小单元
  • 这些单元都是由二进制来表示(机器语言)

二、浅谈操作系统

1.日常的操作系统

windows10/11

linux

mac os

android

ios

操作系统,本质上是进行管理的软件

对下,要管理所有的硬件设备(通过驱动)

对上,要给软件提供稳定的运行环境

  • 要防止硬件被失控的应用程序滥用
  • 向应用程序提供API来控制硬件设备
1.操作系统内核

一个操作系统=内核+配套的应用程序(例如系统自带的程序:文件资源管理器)

内核:
  • 硬件的驱动程序都是在系统内核中执行的。

内核需要给很多的应用程序提供支持(API)

不同系统的API是不同的,在Java中,系统的API会被JVM进行封装

  • 内核态
  • 用户态

一个程序在运行的过程中,可能是在用户态工作,也可能是在内核态工作。

进程的隔离性:

一个计算机可以同时运行多个程序,这些程序各自独立运行,不会相互干扰。

三、进程(process)

1.进程的概念

1.进程也叫任务:跑起来的一个程序

2.每个进行要想执行,都需要消耗一定的系统资源(硬件资源:cpu/内存/硬盘/网络/gpu)

3.每个进程,都是系统资源分配的基本单位

2.进程的管理

东西多,才会考虑管理

1.管理的两个角度:
1.描述:

使用类/结构体(PCB),把被管理的一个对象的各个属性表示出来

搞清楚被管理的东西,有哪些属性,表示出来

2.组织:

使用一定的数据结构(如双向链表),把这些表示出来的对象,串起来

为了后续的增删改查

2.PCB(进程控制块):

操作系统法内核是C和C++写的

  • 使用PCB来描述进程的属性
  • 一个进程可以用一个或多个PCB来表示

1.系统会使用类似双向链表的数据结构,来组织多个PCB

1.创建一个进程,就是创建PCB,并且把PCB插入到链表中

2.销毁进程,就是把PCB从链表中删除并释放

3.展示进程列表,相当于遍历链表的每个结点

1.PCB的属性:
  • PCB是一个非常庞大的结构体,包含很多属性

.在Linux中,pcb叫做 task_struct

1.pid:(进程标识符)
  • pid:进程的身份标识

每个进程都会有一个pid,不同进程之间的pid是不同的

2.内存指针(一组属性)
  • 描述了进程持有的内存资源

1.每个进程在运行的时候,都会分配一定的内存空间

需要一组指针来区分,这个进程内存空间的具体位置、分配的内存空间中有哪些部分、以及每个部分的作用

2.进程的内存空间,需要有专门的区域存储要执行的指令,以及指令依赖的数据。同时还要存储一些运行时产生的临时数据。

3.文件描述符表
  • 描述了进程持有的硬盘资源

  • 类似于顺序表的数据结构,要很多元素

  • 和文件(硬盘)有关

    进程涉及到因硬盘的操作时,就需要按照文件的方式来操作

进程关联了哪些文件、能操作哪些文件,就是通过文件描述符表进行表示的

3.进程的调度

  • 和进程持有的CPU资源相关

一个进程要执行,需要CPU来执行一系列指令

早期的电脑是单核cpu,一个cpu(舞台)在同一时刻,只能执行一个进程(演员)的指令(剧本)。

分时复用(并发执行)

剧本(指令)上有很多幕,很多演员(进程)轮流上舞台(cpu)表演,每个演员只演一会。

就腾出了地方,让其他演员共同演戏

只要演员们轮转的速度足够快,看起来就是连续的,相当于在同时表演

  • 只要进程在CPU上轮转的速度足够快,在宏观上就相当于一个CPU在“同时”执行多个进程。

现代CPU是多核心的,有多个舞台

1.并行:
  • 如果两个进程同时在两个CPU核心上,在微观上也是同时执行的。
2.并发:
  • 一个CPU核心上,通过快速轮转调度的方式,执行多个进程,在宏观上的同时执行,微观上有先后

并发和并行,在应用程序层面感知不到,由系统内部完成调度。

一般会用并发代指并行和并发

PCB的属性:
  • PCB中引入了一些属性,来支持操作系统实现进程调度的效果
1.进程的状态
1.就绪状态:

1.进程正在CPU上执行。

2.进程随时准备好,去CPU上执行

2.阻塞状态:

某个进程,某种执行条件不具备,导致这个进程暂时无法参与CPU的调度执行

比如进程等待用户输入

进程还有其他状态等待

2.进程的优先级
  • 操作系统在调度多个进程时,并非一视同仁
  • 有的进程会具备更高的优先级,优先调度,更好的调配系统资源
3.进程的上下文

进程从CPU离开之前,需要保存现场,把当前CPU中各种寄存器的状态,都记录到内存中(存档)

等到下次进程回到CPU上执行时,此时就可以把保存的这些寄存器的值,恢复回去。(读档)

进程就会沿着上次访问到的位置,继续向后执行。

  • CPU中,有些寄存器没有特定含义和作用,只是用来保存运算的中间结果。有些寄存器是有特定含义和作用的

1.保存当前执行到哪些指令的寄存器(程序计数器)(x86_32位cpu上叫eip)

1.是一个2/4/8字节的整数,存的是一个内存地址。这个地址对应的就是程序下一条要执行指令的位置

2.一个exe文件,就包含了指令和数据,运行exe,操作系统就会把指令和数据加载到内存中(内存地址),CPU先从内存中取指令,然后执行指令。初始情况下,程序计数器就指向进程指令的入口(类型main方法)。每次取完一条指令,程序计数器的值就会自动更新,默认指向下一条(顺序执行)。如果遇到跳转类指令(jmp、jcmp、call)就会被设置成跳转到的地址。

2.维护栈相关的寄存器

  • 通过一组寄存器来维护当前程序的“调用栈”。栈也是一块内存,这个内存保存了当前这个程序方法调用过程中,一系列的关系,也包含了局部变量和方法参数。

edp始终指向栈底,esp始终指向栈顶

修改esp的值,就可以实现入栈出栈(push指令)

这样才能知道,方法执行完毕后,要回到哪里执行

3.其他的通用寄存器

  • 保存计算的中间结果

一个CPU中的寄存器大概有几十到几百字节,数据不多,好保存,也好恢复。

4.进程的记账信息

通过优先级机制,对不同的进程分配了不同权重的资源。

可能会出现极端情况,所有资源都分配给一个进程,其他没有分配到资源

​ 记账信息会记录,当前进程持有CPU的情况(记录在CPU中执行了多久),可以作为操作系统调度进程的参考依据,从而对资源分配进行调整。

点击移步博客主页,欢迎光临~

偷cyk的图

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

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

相关文章

短视频有效粉丝不够怎么涨?有效粉丝不满足500怎么解决?不够500有效粉丝怎么挂橱窗?

在这个流量主导的短视频时代,想要在短视频平台上增加粉丝数量并非易事。然而随着短视频平台规则更新4月16日开始,不能满足五百有效粉丝,就不能挂橱窗了,对一些有效粉丝不够的用户来说,这个的确是有点麻烦,而…

Mysql底层原理二:Buffer Pool

1.数据区 就是描述信息缓存页这块,用来存放从磁盘加载的数据页(看上图 索引页和数据页是分开的) 2. free链表 用来标识数据区哪些数据页是可用的 3. flush链表 update的时候,如果数据在数据区可以找到,那就直接内…

基于Vue3 中后台管理系统框架

基于Vue3 中后台管理系统框架 文章目录 基于Vue3 中后台管理系统框架一、特点二、源码下载地址 一款开箱即用的 Vue 中后台管理系统框架,支持多款 UI 组件库,兼容PC、移动端。vue-admin, vue-element-admin, vue后台, 后台系统, 后台框架, 管理后台, 管理…

GPU部署ChatGLM3

首先,检查一下自己的电脑有没有CUDA环境,没有的话,去安装一个。我的电脑是4060显卡,买回来就自带这些环境了。没有显卡的话,也不要紧,这个懒人安装包支持CPU运行,会自动识别没有GPU,…

力扣刷题Days33-274. H 指数(js)

目录 1,题目 2,代码 2.1排序 2.2计数排序 3,学习与总结 3.1排序实现的学习总结 3.2计数排序的学习总结 1,题目 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返…

vs2017离线安装(配合QT5.9.2使用)

以vs2017_Professional版本为例: 一、下载安装包vs2017_Professional.exe(在线安装包即可) 二、创建在目录:C:\vs2017_Professional_Package,把vs2017_Professional.exe放在该目录下。 ID: Microsoft.Vis…

pytorch演示pipeline并行

pytorch演示pipeline并行 1.单卡内存不够时,可以将网络切分成几段(stage),每个GPU负责一个stage。比如GPU0计算完之后将数据发送给GPU1算后续的stage 2.以上的方式,会导致GPU的利用率不高,可以将输入的batch切分成多份更小的batch,陆续送给GPU0,这样GPU0处理完micro batch0之后…

计算机网络 实验指导 实验9

实验9 三层交换机综合实验 1.实验拓扑图 名称相连的接口IP地址网关PC1F0/3172.1.1.2/28172.1.1.1/28PC2F0/4172.1.1.18/28172.1.1.17/28PC3F0/5172.1.1.34/28172.1.1.33/28PC4F0/3172.1.1.3/28172.1.1.1/28PC5F0/4172.1.1.19/28172.1.1.17/28PC6F0/5172.1.1.35/28172.1.1.33/2…

基于单片机分舱式电开水炉位控制系统

**单片机设计介绍,基于单片机分舱式电开水炉位控制系统 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机分舱式电开水炉位控制系统概要主要涉及通过单片机对电开水炉的各个舱位进行精确控制,实现水位、温度…

mos管开关出现尖峰的原理? mos管开关的时候cs会出现尖峰,请问这是什么原因?

MOS管在开关过程中出现尖峰现象,通常是由于电路中的寄生参数和快速电压变化引起的。以下是一些导致尖峰出现的主要原因和原理: 寄生电容 在MOS管的源极(S)和漏极(D)之间存在寄生电容,这个电容在…

考研数据结构——栈和队列(最全!)

一、栈 1.1栈的定义和基本概念 要讨论一种数据结构,就要从三方面讨论:逻辑结构、数据的运算、存储结构(物理结构)。 1.1.1 定义 线性表:线性表是具有相同数据类型的n个数据元素的有限序列,其中n为表长&am…

JavaScript - 你是如何区分一个变量是对象还是数组的

难度级别:中高级及以上 提问概率:65% 我们日常如果想要获得一个变量的类型,大多会使用typeof的方法,但typeof却不是很准确,遇到null、数组或是对象这种数据类型的时候,他就失灵了,返回值是object,那么都有哪些方式可以区分一个变量的类…

【CHI】(十二)Memory Tagging

目录 1. Introduction 2. Message extensions 3. Tag coherency 4. Read transaction rules 4.1 TagOp values 4.2 Permitted initial MTE tag states 5. Write transactions 5.1 Permitted TagOp values 5.2 TagOp, TU, and tags relationship 6. Dataless transact…

机器学习笔记 - 深度学习遇到超大图像怎么办?使用 xT 对极大图像进行建模论文简读

作为计算机视觉研究人员,在处理大图像时,避免不了受到硬件的限制,毕竟大图像已经不再罕见,手机的相机和绕地球运行的卫星上的相机可以拍摄如此超大的照片,遇到超大图像的时候,我们当前最好的模型和硬件都会达到极限。 所以通常我们在处理大图像时会做出两个次优选择之一:…

并发编程三大特性之可见性

一、什么是可见性? 可见性问题是基于CPU位置出现的,cpu处里速度非常快,相对CPU来说去主内存 获取数据这个事情太慢了,CPU就提供了 L1,L2,L3的三季缓存,每次去主内存拿完 数据后,数据…

SIT1051AQ5V 供电,IO 口兼容 3.3V,±58V 总线耐压,CAN FD 静音模式总线收发器

SIT1051AQ 是一款应用于 CAN 协议控制器和物理总线之间的接口芯片,可应用于车载、工业 控制等领域,支持 5Mbps 灵活数据速率 CAN FD ,具有在总线与 CAN 协议控制器之间进行差分信 号传输的能力。 SIT1051AQ 为 SIT1051Q 芯片的…

python应用-计算两个日期的时间差

学习目录 1. 安装deteutil包 2. 导入relativedelta类 3. 计算两个日期的差值 4. 计算1个日期和时间差相加后得到新的日期 之前在工作中遇到一个使用场景:需要计算两个日期之前的差值,比如相差了几年几月几日,查找资料发现deteutil包的rel…

基于Leaflet.js的Marker闪烁特效的实现-模拟预警

目录 前言 一、闪烁组件 1、关于leaflet-icon-pulse 2、 使用leaflet-icon-pulse 3、方法及参数简介 二、闪烁实例开发 1、创建网页 2、Marker闪烁设置 3、实际效果 三、总结 前言 在一些地质灾害或者应急情况当中,或者热门预测当中。我们需要基于时空位置来…

行云防水堡-打造企业数据安全新防线

企业数据安全,顾名思义就是通过各种手段或者技术或者工具保障企业数据的安全性;保障数据信息的硬件、软件及数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,信息服务不中断。目…

[C++][算法基础]合并集合(并查集)

一共有 n 个数,编号是 1∼n,最开始每个数各自在一个集合中。 现在要进行 m 个操作,操作共有两种: M a b,将编号为 a 和 b 的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操…