多进程和多线程基础概念LINUX

news2025/1/11 2:14:52

进程和程序的区别

程序是静态的,它是保存在磁盘上的指令的有序集合,没有任何执行的概念进程是一个动态的概念,它是程序执行的过程,包括了动态创建、调度和销毁的整个过程

并行:在 cpu 多核的支持下,实现物理上的同时执行

并发:有限的 cpu 核芯的情况下 ,利用快速交替(时间片轮转)执行来达到宏观上的同时执行  

7094d965e38f4a4e8df3c761b2097e19.png

 

0a24a038de284c4a943240c28acd804f.png

每个任务执行的时间是由时间片来决定的

时间片:将一段时间分成多等份

eg:1s/1000=1微秒

 Linux 进程管理 :

  1. 在 Linux 系统中,管理进程使用树型管理方式。 
  2.  每个进程都需要与其它某一个进程建立父子关系,对应的进程叫做父进程。
  3. Linux 系统会为每个进程分配id ,这个id作为当前进程的唯一标识,当进程结束,则会被回收。
  4. 进程的id与父进程的id分别通过getpid()与getppid()来获取

进程空间的分配:

0e1cca853108480c9a4c44502f14fbc6.png

 用户空间的分配:

e478f1e472a84fd79a51b2da8c3b5645.png

 

  • stack : 存放非静态的局部变量
  • heap : 动态申请的内存.
  • bss : 未初始化过的全局变量(包括初始化为0的,未初始化过的静态变量(包括初始化为0).
  • data : 初始化过并且值不为0的全局变量,初始化过的不为0静态变量.
  • rodata : 只读变量(字符串之类).
  • text : 程序文本段(包括函数,符号常量)

内核态的转换: 

  1.  当用户进程需要通过内核获取资源时,会切换到内核态运行,此时当前进程会使用内核空间的资源
  2.  用户需要切换到内核态运行时,主要是通过系统调用(算法)

6fd8dd9ffce94dde8e298f8a4215777a.png

虚拟地址 : 虚拟地址并不代表真实的内存空间,而是一个用于寻址的编号

物理地址 : 是指内存设备中真实存在的存储空间的编号 

操作系统通过调用MMU式的虚拟地址与物理地址建立映射关系:

直接访问物理地址,会导致地址空间没有隔离,很容易导致数据被修改通过虚拟地址空间可以实现每个进程空间都是独立的,操作系统会映射到不用的物理地址区间,在访问时互不干扰.

1944ea96169c4794a090536b068c7297.png

进程的堆栈大小:

  1.  Linux下进程栈的默认大小是8M,可以通过 ulimit -s查看
  2.  堆的大小理论上大概等于进程虚拟空间大小-内核虚拟内存大小,Linux下,进程的高位1G留给内核,低位3G留给用户,所以进程堆大小小于3G。
  3.  最大进程数在Linux下,通过ulimit -u查看系统的最大进程数

e85c0ace78e14a12ac649b6ea60f4a4c.png

进程状态管理:

进程状态分为三个基本状态,即运行态,就绪态,阻塞态。在五态模型中,进程分为新建态、终止态,运行态,就绪态,阻塞态

三态模型:

  1.  运行(running)态:进程占有处理器正在运行。
  2.  就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行。
  3.  等待(wait)态:又称为阻塞(blocked)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成

e1cb837cec4e44ea84c335423fcfcc96.png

 

  •  运行态(TASK_RUNNING) : 此时进程或者正在运行,或者准备运行,就绪或者正在进行都属于运行态
  • 睡眠态(TASK_SLEEP): 此时进程在等待一个事件的发生或某种系统资源可中断的睡眠(TASK_INTERRUPT) : 可以被信号唤醒或者等待事件或者资源就绪不可中断的睡眠(TASK_UNTERRUPT) : 只能等待特定的事件或者资源就绪
  • 停止态(TASK_STOPPED) : 进程暂停接受某种处理。例如:gdb调试断点信息处理。
  • 僵尸态(TASK_ZOMBIE):进程已经结束但是还没有释放进程资源

2854b4e15c28476984f8998b1c75a007.png

 

 

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

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

相关文章

Git 的基本使用

1.创建 Git 本地仓库 仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来,例如下面代码创建了gitcode_linux的文件夹,之后再对其进行初始化。创建⼀个 Git 本地仓库对应的命令为 git init &#xff0c…

视频项目开发,EasyCVR视频融合平台为何成为关键驱动力

智慧类视频项目是基于多个系统融合,旨在实现更广泛联动功能,以满足智能化应用需求为基石的信息化项目。当前,智慧社区、智慧园区、智慧工厂乃至智慧城市等应用场景的需求日益增长。这些智慧项目的整合进程中,视频融合能力扮演着不…

ASP.NET Core 入门教程一 创建最小 API

构建最小 API,以创建具有最小依赖项的 HTTP API。 它们非常适合需要在 ASP.NET Core 中仅包括最少文件、功能和依赖项的微服务和应用。 本教程介绍使用 ASP.NET Core 生成最小 API 的基础知识。 启动 Visual Studio 2022 并选择“创建新项目”。 在“创建新项目”…

RabbitMQ 最新版 安装,配置,java接入使用(详细教程)

一 RabbitMQ下载 RabbitMQ 官网最新版下载: RabbitMQ: One broker to queue them all | RabbitMQ RabbitMQ依赖erlang-26.2.5.2-1.el7.x86_64.rpm下载: https://github.com/rabbitmq/erlang-rpm/releases/download/v26.2.5.2/erlang-26.2.5.2-1.el7.…

Information Processing Technician

信息处理技术员试题 🔥SeptemberZone 1.信息是一种() A.资源 B.物质 C.能量 D.载体 2.以下关于信息的表达中,不正确的选项是() A.一切数据都能产生信息 B.信息的产生、处理和传递依靠于物质和能量 C.同一信息在不同的时间可能具有不同的价值 D.信息的屡次使用不会使信息…

MD编辑器学习笔记

MD编辑器学习笔记 目录标题文本样式列表图片链接代码片数学公式表格部分总结 目录 目录是使用“[TOC](目录)”,记住别忘了加上()标题 使用#来确定标题,几个#就是几级标题。记住#后面要加上空格文本样式 tips: 在写正…

什么是制造业项目管理软件?适合制造企业的项目管理软件具备哪些特征

当前,我国的制造业呈现出稳步增长与风险并存的现象。经济构建以国内大循环为主体,国产替代的浪潮正在席卷国内制造业,越来越多的制造领域企业开始启动数字化变革来支撑企业的迅猛发展,进一步优化项目管理流程,促进研发…

Docker的概述及如何启动docker的镜像、远程管理宿主机的docker进程

一、概述: 1、Docker 是什么? Docker 是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采用“沙盒”机制,容器之间不会存在任何接口。 2、Docker 和虚拟机的区别: 1)启动速度:Dock…

使用 Visual Studio 编辑器作为 DailyNotes 的 markdown 编辑器

DailyNotes 是我使用过的最优秀的日常笔记管理工具,为它配置一个好的 markdown 编辑器,可以大幅提升效率。 除了使用 Typora 作为 markdown 编辑器,Visual Studio Code 也是一个非常不错的选择,令人惊喜的是,它也支持…

React学习笔记(二)——react基础

目录 1. 受控表单绑定 2. React中获取DOM 3. 案例:B站评论 — 发表评论 3.1 B站评论案例 —— 核心功能实现 3.2 B站评论案例 — id处理和时间处理 3.3 B站评论案例 — 清空内容并重新聚焦 4. 组件通信 4.1 理解组件通信 4.2 父传子-基础实现 4.3 父传子-…

基于Spark计算网络图中节点之间的Jaccard相似性

基于Spark计算网络图中节点之间的Jaccard相似性 Jaccard 相似度是一种较为常用的衡量两个集合相似性的指标,用于计算两个集合的交集与并集的比率。具体来说,它的计算公式为: 在网络图中同样经常使用Jaccard来计算节点之间的相似性&#xff…

【标准知识】航天产品设计文件编号

按照QJ 1714-2011《航天产品设计文件管理制度》,梳理一下设计文件的编号要求。 01 设计文件 按照QJ 1714的规定,设计文件是由设计部门编制的,用以规定产品的组成、型式、结构尺寸、技术要求、原理以及制造、调试、试验、验收、使用、维护、…

Robot Operating System——自定义订阅/发布的消息结构

大纲 初始化环境生成自定义消息的工程创建包自定义消息package.xml完整文件 CMakeLists.txt完整文件 编译注册 使用自定义消息的工程创建包代码CMakeLists.txt编译运行 工程地址参考资料 在之前的案例中我们订阅/发布之间传递的消息都是ROS2的标准类型。本文我们将讨论如何自定…

【IoTDB 线上小课 06】列式写入=时序数据写入性能“利器”?

【IoTDB 视频小课】更新来啦!今天已经是第六期了~ 关于 IoTDB,关于物联网,关于时序数据库,关于开源... 一个问题重点,3-5 分钟,我们讲给你听: 列式写入到底是? 上一期我们详细了解了…

【STM32】写Keil程序的注意事项

看正点原子的资料使用Keil写STM32程序的时候,总是在不断学习,不断探索。后续又学到啥再更新 目录 1 Keil设置 1.1 字体设置 1.2 快捷键设置 1.3 快速前往前一操作位置/后一操作位置 2 宏定义 2.1 宏定义函数时为什么使用do{…}w…

DockerHub解决镜像拉取之困

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

【数据结构篇】~栈和队列(附源码)

【数据结构篇】~栈和队列 前言一、栈的实现1.头文件2.源文件3.一个算法题——[有效的括号](https://leetcode.cn/problems/valid-parentheses/description/%E2%80%8B) 二、队列1.头文件2.源文件 前言 栈:一种特殊的线性表,其只允许在固定的一端进行插入…

极速文件预览!轻松部署 kkFileView 于 Docker 中!

大家好,这几天闲的难受,决定给自己找点事做。博主的项目中有个文件预览的小需求,原有方案是想将文件转换成 PDF 进行预览。本着能借鉴就绝对不自己写的原则。今天就让我们简单试用一下 kkFileView 文件预览服务,一起探索它的强大功…

先导桌面式教育数控 小型数控车床 C59

桌面式教育数控主要指的是在教育领域中使用桌面型数控机床进行教学和培训。这种设备结合了数控技术和小型化设计,使得数控技术的学习和应用变得更加便捷和经济。 桌面式教育数控的主要特点包括: 小型化:机床体积小,重量轻&#x…

Debezium2.7 数据同步 MySQL/Oracle -- AI生成

Debezium是Red Hat开源的一个工具,用于实时捕获多种数据源(包括MySQL、PostgreSQL、SQL Server、Oracle等)的变更数据,并将这些数据作为事件流输出到Kafka等消息中间件中。通过Debezium,可以实现数据的实时同步和变更数…