进程以及线程

news2024/11/18 18:44:15

目录

🐼今日良言:希望是生命的源泉,失去它生命就会枯萎。

🐯一、进程

🐕1.概念

🐕2.PCB

🐕3.进程调度

🐭二、线程

🐑1.概念

🐇三、进程和线程的联系和区别

🐝1.联系

🐝2.区别


🐼今日良言:希望是生命的源泉,失去它生命就会枯萎。

🐯一、进程

🐕1.概念

首先,先来认识一下,什么是进程(process)

进程(process)又叫任务(task),打开任务管理器来观察一下当前正在运行的进程

 可以观察到,当前有很多进程正在运行.

需要注意的是:一个程序运行起来才是进程,不运行不叫进程,只是一个程序.

观察上面任务处理器,可以看到,每个进程都对应一些资源

 结合上述情况,可以说:进程是操作系统资源分配的基本单位.

进程是一个重要的'软件资源',是由操作系统内核负责管理的.

操作系统内核管理进程主要是通过:描述+组织

描述:操作系统使用结构体来描述进程的属性,用来描述进程的这个结构体叫做PCB(进程控制块)

组织:操作系统通过双向链表,来把多个PCB给串到一起(这里的双向链表并不是一个简单的双向链表)

创建一个进程,本质上就是创建一个PCB节点(结构体),然后插入到链表中

销毁一个进程,本质上就是从链表中删除一个PCB节点

上面任务管理器中看到的进程列表,本质上就是遍历这个链表

🐕2.PCB

接下来,介绍一下PCB中哪些描述进程的特征

1).pid

    进程的身份标识符(每个进程对应一个pid,唯一的数字)

   将人比作进程,那么pid就是这个人的身份证号

 

2).内存指针

    内存指针指出了当前进程要用的内存是哪些

3).文件描述符表

   硬盘上的文件等其他资源

  2) 、3)描述了进程持有哪些资源

🐕3.进程调度

现在CPU一般都是多核CPU,在设备管理器中查看当前是几核CPU

 如上图,是8核CPU,而进程有上百个,所以,该如何让这么多的进程'同时运行'呢?

这里的'同时运行'并非真正的同时运行,而是'分时复用'.这里引入两个概念:并行和并发

并行:微观上同一时刻,多个cpu上的进程,同时执行.

并发:微观上同一时刻,一个核心上只能运行一个进程,但是它能对进程进行快速切换.

快速切换指的是,在当前CPU上,先运行QQ,再运行QQ音乐,在运行微信,只要切换的速度足够快,宏观上让人感知不到

并行和并发都是由操作系统内核负责处理的,应用程序(程序猿)是感知不到的,所以说,在应用程序这个角度,是无法区分并行和并发,因此,往往也把并行和并发统称为并发,除非显式声明,否则,谈到的并发就是并行+并发.

为了给这些进程分配CPU资源,解决办法是:进程调度. 操作系统里面有一个重要的模块---调度器,就负责让有限的CPU来调度执行这么多的进程,如何实现这样的调度器就需要PCB的进一步支持.接下来介绍一下PCB中的其它一些属性,通过这些属性来完成进程调度.

进程调度的相关属性:

1).进程的状态

就绪状态:进程已经准备好到CPU上去执行.

运行状态:正在CPU上执行的进程.

阻塞状态:短时间无法到CPU上执行的进程.

以五人制足球比赛来举例,在五人制足球比赛中,是可以无限次换人的.

在场边穿好球鞋球衣等各种准备工作都做好的轮换球员,准备上场踢球,此时这个状态就是就绪状态.

而场上正在比赛的球员就是运行状态.

被替补球员换下场的球员需要休息调整,暂时无法上场比赛,此时就是阻塞状态.

2).优先级

进程是有优先级的,操作系统在进行调度的时候,会优先调度执行优先级高的进程

还是以一场足球比赛为例,水平越高的踢首发,次之的替补,而这里的水平就类似于优先级

3).上下文

操作系统在进行进程切换的时候,需要把进程执行的'中间状态'记录下来,保存好

等到下次这个进程再次在CPU上执行的时候,就可以恢复上次的状态继续往下执行.

这个操作类似于: 读档和存档  如下小游戏的读档和存档

 上下文本质上就是存档的内容

进程的上下文,就是CPU各个寄存器的值

(寄存器是CPU内置的存储数据的模块,保存的就是程序运行过程中的中间结果)

保存上下文:就是把这些CPU寄存器的值,保存到内存中(PCB中)

恢复上下文:就是把内存中的这些寄存器的值恢复回去.

4).记账信息

根据字面理解:就是记录账本信息

记账信息是:操作系统需要统计每个进程在CPU上执行的时间和执行的指令条目,根据这个来决定下一阶段如何调度.

🐭二、线程

🐑1.概念

在介绍线程之前,补充一点小知识.

计算机引入'进程'最主要的目的是解决'并发编程'这样的问题.

这是因为CPU进入了多核心的时代,CPU已经做的很小了,再往小做就很困难了,要想进一步提高程序的执行速度,就需要充分的利用CPU的多核资源.

多进程编程,已经可以解决'并发编程'的问题了,已经可以利用CPU多核资源了.

但是由于进程消耗资源多而且速度慢,创建/销毁/调度一个进程的开销都比较大,所以说为了解决进程消耗资源多且速度慢这个问题,线程应用而生.

一个线程就是一个 "执行流". 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 "同时" 执行着多份代码.

线程也叫做'轻量级'进程

在解决'并发编程'的前提下,让创建/销毁/调度 的速度更快一些.

线程为什么叫做'轻量级'进程呢?它轻在哪里?

这是因为,线程节省了申请资源/释放资源的操作.

🐇三、进程和线程的联系和区别

🐝1.联系

1).进程中包含线程,一个进程中可能包含一个或者多个线程,但是不能一个也不包含.

2).同一个进程里的多个线程之间,共用了这个进程分配到的所有资源(主要是指内存和文件描        述符表)

 这就意味着,线程1  new 的对象,在线程2,3中都能直接使用.线程1打开的文件,在线程2,3中都    能直接使用.

🐝2.区别

1).线程是操作系统调度执行的基本单位.

    如果一个进程中有多个线程,这多个线程都是独立在CPU上执行的

2).进程是操作系统资源分配的基本单位.

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

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

相关文章

Qt实现抽奖程序

一、简介 该程序命名为Lucky,实现的功能如下: 1. 加载抽奖人员名单,并保存加载路径; 2. 单击左键或者点击ctrls开始抽奖,并滚动显示人员名单,显示的人员名单格式为 部门-姓名。 3. 单击左键或者点击ctrls…

了解并应用数字隔离器的安全限值

介绍 电流隔离在工业和汽车系统中很常见,作为防止高电压或抵消接地电位差的一种手段。设计人员传统上使用光耦合器进行隔离,但在过去几年中,使用电容和磁隔离的数字隔离器变得越来越流行。对于任何此类隔离器,了解其安全限值的重…

关于如何找环形链表的入环点

目录一、判断一个链表是否有环二、找到链表入环的第一个节点一、判断一个链表是否有环 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的…

菇多糖-聚乙二醇-大环配体NOTA,大环配体NOTA-PEG-香菇多糖

菇多糖-聚乙二醇-大环配体NOTA,大环配体NOTA-PEG-香菇多糖 中文名称:香菇多糖-大环配体NOTA 英文名称:Lentinan-NOTA 别称:NOTA修饰香菇多糖,NOTA-香菇多糖 PEG接枝修饰香菇多糖 Lentinan-PEG-NOTA 香菇多糖-聚乙…

设置Excel表格“只读模式”的两种方法

Excel表格的“只读模式”可以帮助我们防止意外更改表格,根据不同需求,表格可以设置“有密码”和“无密码”的两种“只读模式”,下面来说说具体设置方法。 一、无密码“只读模式” 如果主要是想防止自己意外修改了表格,可以设置没…

Jenkins拉分支代码 + tortoiseGit删除分支

日常部署测试代码都使用Jenkins代码手工上传代码,主要减减减减工作量,提高工作效率; 一、安装Git、git-parameter插件及配置方法,安装方法忽略一万字,解决不了绕道度娘问问 二、创建项目,设置参数 This pr…

[操作系统笔记]基本分页存储管理

内容系听课复习所做笔记,图例多来自课程截图 基本分页存储管理 两次访存,第一次查页表,第二次访问目标内存单元 将内存空间分为一个个大小相等的分区(比如每个分区4KB),每个分区就是一个“页框”&#xff0…

[附源码]计算机毕业设计springboot物业管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

澜沧古茶在港交所上市申请失效:收入不及八马茶业,股东提前套现

12月1日,贝多财经从港交所披露易了解到,普洱澜沧古茶股份有限公司(下称“澜沧古茶”)的上市申请材料失效,目前已无法正常查看或下载。据贝多财经了解,“失效”并不意味着上市失败。 事实上,招股…

selnium操作输入框无法输入内容

问题描述 分析问题 1、开始以为等待时间问题没有找到元素(没解决) 2、使用js操作元素(没解决) 3、定位到光标元素 4、种cookie直接走接口调用 问题描述 selenium.common.exceptions.ElementNotInteractableException: Mess…

企业数据图表- FineReport函数计算组成和语法概述

1. 概述 1.1 版本 1.2 功能简介 在设计模板时用户需要频繁的使用公式函数,例如:求和、求个数、做判断等等。 本文介绍函数的计算组成和语法。 2. 计算语法 2.1 概览 组成部分 语法 示例 函数 SUM(合同金额)、SUM(A1) 数据列 可输入有数据列的…

基于Vue+nodejs+Element-ui的聊天框项目

目录一、项目简介二、环境介绍三、系统展示四、视频功能展示五、前端核心代码展示六、MySQL 数据库创建功能展示七、node.js 核心代码八、总结一、项目简介 本项目基于纯前端(移动端)技术开发一个聊天系统,界面美观大方,采用Node…

PowerShell禁止运行脚本

运行脚本报错(pnpm -v) pnpm : 无法加载文件 D:\win11\program\NVM\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.mi crosoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1pnpm -v…

洛谷千题详解 | P1019 [NOIP2000 提高组] 单词接龙【C++、Java语言】

博主主页:Yu仙笙 专栏地址:洛谷千题详解 目录 题目描述 输入格式 输出格式 输入输出样例 解析: C源码: Java源码: -----------------------------------------------------------------------------------------------…

java+mysql基于SSM共享型汽车租赁系统-计算机毕业设计

项目介绍 共享汽车租赁公司的共享汽车租赁流程复杂、数据庞大,往往一个疏忽就会给公司造成极大的损失,于是越来越多的共享汽车租赁公司需要一个对各项信息的管理平台来避免这样的损失。为了满足这个需求,我们开发一个针对共享汽车租赁信息的…

MR直播实例(混合现实直播)高品质企业直播

阿酷TONY / 2022-12-2 / 长沙 / 超多组图 绿幕抠像 虚拟场景(三维场景)实时渲染,降低直播成本,带来线下活动所没有的沉浸式视听体验。 虚拟舞台场景介绍参见: 企业年会直播来个虚拟舞台场景如何?_阿…

负载均衡与高可用

目录 负载均衡 理论部分 应用层负载均衡 环境搭建 代理服务器配置 web服务器配置 验证 网络层负载均衡 环境搭建 代理服务器配置 mysql服务器配置 验证 高可用 理论部分 环境搭建 负载均衡高可用 lb1主要服务器配置 lb2备份服务器配置 web配置 验证 nginx故障问题 →→→→ 大虾…

【MySQL】-增删查改

作者:学Java的冬瓜 博客主页:☀学Java的冬瓜🌙 专栏:MySQL 分享:至若春和景明,波澜不惊,上下天光,一碧万顷。沙鸥翔集,锦鳞游泳,岸芷汀兰,郁郁青青…

傻妞旧版合集新版订阅

目录一、前言二、下载三、新版傻妞订阅合集一、前言 傻妞旧版本(合集),包含amd和arm版本收集于TG 我的是amd架构 [rootecs-mike_note ~]# cat /proc/version Linux version 4.11.8-1.el7.elrepo.x86_64 (mockbuildBuild64F25) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11…

Vue中的计算属性

计算属性&#xff1a;实际上是把vm中的属性进行计算加工&#xff0c;最后能够返回给页面一个结果 细想一下&#xff0c;其实methods方法也能实现1中描述的现象&#xff0c;但是计算属性最大的优势是缓存&#xff01;&#xff01;&#xff01; 举个例子 <div id"root&q…