【多线程】进程process(进程的管理+进程的调度+分时复用(并发)+PCB)

文章目录

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

进程

一、计算机的组成:

  • 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.文件描述符表
  • 描述了进程持有的硬盘资源

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

  • 和文件(硬盘)有关

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

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

进程持有的CPU资源

3.进程的调度

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

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

分时复用(并发执行)

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

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

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

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

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

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

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

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

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

1.进程正在CPU上执行。

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

2.阻塞状态:

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

比如进程等待用户输入

进程还有其他状态等待

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

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

偷cyk的图

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

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

相关文章

NAT网络地址转换原理解析

NAT(Network Address Translation),即网络地址转换,是一种在1994年提出的地址转换技术。它的主要目的是在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址。NAT实际上是为解决IPv4地址短缺而开发的技术。NAT…

基于javassm实现的旅游景点线路网站

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.…

基于JAVA+SpringBoot+UniApp+Vue的前后端分离的手机移动端图书借阅平台

一、项目背景介绍: 随着社会信息化的快速发展,图书馆作为知识传播和学术研究的重要场所,扮演着不可替代的角色。然而,传统的图书馆借阅方式存在一些问题,如人工操作复杂、排队等待时间长、信息交流不便等。为了提高用户…

STL库 —— vector 的编写

一、成员变量 二、容量成员 2.1 size 函数 我们在定义私有成员时就会发现,其中 _finish 相当于 string 中的 size 的地址, _endofstorage 相当于 string 中的 capacity 的地址,所以 size 函数和 capacity 函数其实基本没有改变。 size_t s…

蓝桥杯备赛合集

蓝桥杯 - 穿越雷区 解题思路: dfs 方法一: import java.util.Scanner;public class Main {static char[][] a;static int[][] visited;static int[] dx { 0, 1, 0, -1 };static int[] dy { 1, 0, -1, 0 };static long min Long.MAX_VALUE;static …

DtDay1

1.导图 2.mywidget.cpp源码 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口大小this->resize(900,700);//设置窗口标题this->setWindowTitle("玄冥科技");this->setWindowIcon(QIcon("C:\\Users…

3D打印技术引领压铸模具制造新变革

随着工业4.0浪潮的席卷,3D打印技术以其独特优势,正逐渐成为新一轮工业革命中的璀璨明星。这一技术不仅为“中国制造”向“中国智造”的转型提供了强大动力,也为压铸模具这一铸造行业的重要分支带来了前所未有的变革。 压铸模具,作…

day02 51单片机

51单片机学习 1闪烁LED 1.1 需求描述 这个案例,我们要让P00引脚对应的LED按照1秒闪烁1次。 1.2 硬件设计 1.1 软件设计 1)LED闪烁的代码 想让LED闪烁,就需要P00的值不断在0和1之间循环变化。实现这一功能的代码也很简单: #include <STC89C5xRC.H> //包含STC89…

[lesson10]C++中的新成员

C中的新成员 动态内存分配 C中的动态内存分配 C中通过new关键字进行动态内存申请C中的动态内存申请是基于类型进行的delete关键字用于内存释放 new关键字与malloc函数的区别 new关键字是C的一部分malloc是由C库提供的函数new以具体类型位单位进行内存分配malloc以字节位单位…

Linux - mac 装 mutipass 获取 ubuntu

mutipass &#xff1a;https://multipass.run/docs/mac-tutorial mutipass list mutipass launch --name myname mutipass shell myname 获取 root权限&#xff1a; sudo su

Lesson1--数据结构前言

1. 什么是数据结构&#xff1f; 2. 什么是算法&#xff1f; 3. 数据结构和算法的重要性 4. 如何学好数据结构和算法 5. 数据结构和算法书籍及资料推荐 1. 什么是数据结构&#xff1f; 数据结构(Data Structure) 是计算机存储、组织数据的方式&#xff0c;指相互之间存在一…

UWB 雷达动目标检测

1. 静态载波滤除 1. 首先对所有接收脉冲求平均得出参考接收脉冲 [Cir数据为二维数组64*n&#xff0c; 其中n为慢时间域采样的数据帧数] 2. 接着利用每一束接收脉冲减去参考接收脉冲就可以得到目标回波信号&#xff0c;参考接收脉冲的表达式为 2. RD 谱 对雷达回波做静态载波滤…

局域网配置共享文件夹,开机自动共享

设置文件夹共享 选择文件夹&#xff1a;首先&#xff0c;确定你想要共享的文件夹。共享文件夹&#xff1a;右键点击文件夹&#xff0c;选择“属性”&#xff0c;然后切换到“共享”标签页。点击“高级共享”&#xff0c;勾选“共享此文件夹”&#xff0c;并设置共享名称。 配置…

基于yolov9来训练人脸检测

YOLOv9是一个在目标检测领域内具有突破性进展的深度学习模型&#xff0c;尤其以其在实时性与准确性上的优秀表现而受到广泛关注。针对人脸检测这一特定任务&#xff0c;YOLOv9通过其架构创新和算法优化提供了强大的支持。 YOLOv9在继承了YOLO系列&#xff08;如YOLOv7、YOLOv8&…

大模型系列——解读RAG

上篇大概说了几个优化方向&#xff0c;包括提示词&#xff0c;RAG等。那么RAG到底是什么呢&#xff1f;RAG 是2023年最流行的基于 LLM 的应用系统架构。有许多产品几乎完全建立在 RAG 之上&#xff0c;覆盖了结合网络搜索引擎和 LLM 的问答服务&#xff0c;到成千上万个数据聊天…

docker部署在线流程图

下载镜像 docker pull registry.cn-beijing.aliyuncs.com/wuxingge123/drawio:latestdocker-compose部署 vim docker-compose.yml version: 3 services:drawio:container_name: drawioimage: registry.cn-beijing.aliyuncs.com/wuxingge123/drawio:latestports:- 8083:8080v…

【NLP】关于BERT模型的一些认知

BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;模型是由Google在2018年提出的预训练Transformer模型&#xff0c;用于自然语言处理任务。 一. BERT模型的架构 1.1 输入表示 / Encoder模块 BERT中的Encoder模块是由三种Embedding&…

4.7Qt

自由发挥应用场景实现一个登录窗口界面。 mywidget.cpp #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口相关设置this->setWindowTitle("原神启动");this->setWindowIcon(QIcon("C:\\Users\\17212\\Pict…

查遍整个知网都没找到的创新点!基于多目标蜣螂算法的微网/综合能源优化调度程序代码!

前言 随着微电网和分布式新能源的发展&#xff0c;利用动物界觅食或繁殖行为进行寻优的方法受到了人们的关注。多目标蜣螂算法&#xff08;Multi-Objective Cockroach Algorithm&#xff0c;MOCA&#xff09;是一种基于自然界中蜣螂觅食行为的多目标优化算法。它模拟了蜣螂在寻…

一文了解重塑代币发行方式的创新平台 — ZAP

代币的发行方式对加密市场有着重要的影响&#xff0c;它直接影响着项目的社区建设、流动性、价格稳定性以及投资者的参与度&#xff0c;未来预期等&#xff01;合适的发行方式可以吸引更多的投资者和用户参与&#xff0c;提升项目的社区建设和价值实现。不当的发行方式和分配&a…