【多线程】进程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的图

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RTX RTOS操作实例分析之---邮箱(mailbox)

0 Preface/Foreword 1 邮箱(mailbox) 1.1 mailbox ID定义 static osMailQId app_mailbox NULL; 1.2 定义mailbox结构体变量 #define osMailQDef(name, queue_sz, type) \ static void *os_mail_p_##name[2]; \ const char mail_##name[] #name; \ con…

iOS 17.5系统或可识别并禁用未知跟踪器,苹果Find My技术应用越来越合理

苹果公司去年与谷歌合作,宣布将制定新的行业标准来解决人们日益关注的跟踪器隐私问题。苹果计划在即将发布的 iOS 17.5 系统中加入这项提升用户隐私保护的新功能。 科技网站 9to5Mac 在苹果发布的 iOS 17.5 开发者测试版内部代码中发现了这项反跟踪功能的蛛丝马迹…

15-1-Flex布局

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 Flex布局1 Flex容器和Flex项目2 Flex 容器属性2.1 主轴的方向2.2 主轴对齐方式…

Linux(CentOS7)安装 Docker 以及 Docker 基本使用教程

目录 安装 基础依赖 安装 docker 开机自启 启动 docker 配置国内镜像源 使用教程 帮助命令 镜像命令 容器命令 容器终端 构建镜像 安装 基础依赖 如果直接安装 docker 时报错,提示缺少依赖,则根据提示将前置依赖安装即可,这里直…

工业4g路由器联网后迅速掉线是什么原因?

工业4G路由器连接上网后迅速掉线可能是由多种因素造成的。以下是一些建议的检查和解决步骤: 1、信号问题: 信号强度:检查工业路由器信号强度指示灯,如果信号弱,尝试移动路由器位置或添加外部天线来增强信号。 网络拥…

FIN和RST的区别,几种TCP连接出现RST的情况

一、RST跟FIN的区别: 正常关闭连接的时候发的包是FIN,但是如果是异常关闭连接,则发送RST包 两者的区别在于: 1.RST不必等缓冲区的包都发出去,直接就丢弃缓存区的包发送RST包。而FIN需要先处理完缓存区的包才能发送F…

C++ | Leetcode C++题解之第15题三数之和

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {int n nums.size();sort(nums.begin(), nums.end());vector<vector<int>> ans;// 枚举 afor (int first 0; first < n…

二. CUDA编程入门-双线性插值计算

目录 前言0. 简述1. 执行一下我们的第十个CUDA程序2. Bilinear interpolation3. 代码分析总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 Note&#xff1a;关于 CUDA 加速双线程插值的内容博主…

elementPlus el-table动态列扩展及二维表格

1、循环列数据源&#xff0c;动态生成列 <template><div><el-table ref"table" :data"pageData.tableData" stripe style"width: 100%"><el-table-column v-for"column in pageData.columns" :key"column.p…

LDR6328助力Type-C普及,便捷充电,绿色生活更精彩

随着科技的进步和全球统一接口的需求&#xff0c;Type-C接口正日益受到青睐。越来越多的设备正选择采纳这一先进的接口设计&#xff0c;它的普及无疑在改善着我们的日常生活。 在过往&#xff0c;许多小功率设备如小风扇、蓝牙音箱、桌面台灯以及家用加湿器等&#xff0c;都普遍…

单片机IGBT驱动电路一例

概述&#xff1a; 驱动的作用有三个&#xff1a; 1.是作为放大器获得所需要的驱动电压。 2.是提高输出电流能力。 3.是进行功率回路和控制回路的隔离 信号从MCU到IGBT驱动芯片 首先驱动电流需要放大 MCU的输出电流是mA级别&#xff0c;而IGBT需要的驱动电流可能达到几安培…

npm版本切换工具nvm

有了nvm&#xff0c;可以在一台机器上同时安装多个版本的nodejs&#xff0c;然后指定使用某个版本。 前端开发的时候&#xff0c;安装依赖一直是个令我头痛的问题。总是报错&#xff0c;或者不是少了这样就是少了那样&#xff0c;鸡飞狗走。以往&#xff0c;一般要装个enpm&am…