当前位置: 首页 > article >正文

Linux多线程(二)之进程vs线程

文章目录

    • Linux进程VS线程
      • 进程和线程
      • 进程的多个线程共享
      • 关于进程线程的问题
    • 重谈地址空间
    • Linux线程周边的概念

Linux进程VS线程

进程和线程

  1. 进程是资源分配的基本单位(进程是承担分配系统资源的基本实体)

    执行流也是资源!线程是进程内部的执行流资源!

  2. 线程是操作系统调度的基本单位

  3. 线程共享进程数据,但也拥有自己的一部分数据:

线程ID
一组寄存器(线程的上下文数据)!!!!!!
栈!!!!!!
errno
信号屏蔽字
调度优先级

进程的多个线程共享

同一地址空间,因此Text SegmentData Segment都是共享的,

如果定义一个函数,在各线程中都可以调用,

如果定义一个全局变量,在各线程中都可以访问到,

除此之外,各线程还共享以下进程资源和环境:

文件描述符表!!
每种信号的处理方式(SIG_ IGN、SIG_ DFL或者自定义的信号处理函数)
当前工作目录
用户id和组id

进程和线程的关系如下图:

image-20250425225536647

关于进程线程的问题

如何看待之前学习的单进程?

具有一个线程执行流的进程

重谈地址空间

如何理解资源分配给各线程?

线程分配资源的本质

就是分配地址空间的范围!

如果不做划分就是各线程共享的!

页表深究

Linux线程周边的概念

线程 vs 进程

线程比进程要更轻量化(why?)

a.创建和释放更加轻量化(生死问题)

​ 创建线程只要把PCB创建

​ 创建进程要创建PCB、地址空间、页表、申请物理内存、构建映射等

​ 线程释放PCB

​ 进程就要释放创建、申请的资源

b.切换更加轻量化(运行问题)

​ 运行的代码变少了(线程只需要运行进程的一部分代码)

​ 线程切换不需要切换页表、不需要切换地址空间等(局部切换)

​ 线程在执行就是进程在执行。CPU里有一个硬件级别的缓存(cache

image-20250427170729722

image-20250427171218887

​ 线程切换的时候,虽然上下文在切换,但是cache里的热数据基本不变或者更新少量。

​ 进程切换的时候,cache里的热数据就要丢弃,需要重新缓存新的数据。
(冷数据->热数据需要时间)

线程也会有时间片,线程的时间片来源于进程,

时间片也是资源,所以合理分配给线程,

线程不能在进程中重新申请时间片,只能在进程中获取。

相关文章:

Linux多线程(二)之进程vs线程

文章目录 Linux进程VS线程进程和线程进程的多个线程共享关于进程线程的问题 重谈地址空间Linux线程周边的概念 Linux进程VS线程 进程和线程 进程是资源分配的基本单位(进程是承担分配系统资源的基本实体) 执行流也是资源!线程是进程内部的执…...

【MogDB】测试 ubuntu server 22.04 LTS 安装mogdb 5.0.11

测试 ubuntu server 22.04 LTS 安装mogdb 5.0.11 使用的操作系统镜像是 https://releases.ubuntu.com/22.04/ubuntu-22.04.5-live-server-amd64.iso 装好操作系统后,把root登录打开了,方便后续操作。 测试过程 使用官方命令在线安装ptk rootubuntu22…...

AI时代新词-数字孪生(Digital Twin)

一、什么是数字孪生(Digital Twin)? 数字孪生(Digital Twin)是一种通过创建物理实体的虚拟副本,并利用数据和算法来模拟、分析和优化物理实体的性能和行为的技术。数字孪生结合了物联网(IoT&am…...

【HW系列】—web常规漏洞(文件上传漏洞)

文章目录 一、简介二、危害三、文件检测方式分类四、判断文件检测方式五、文件上传绕过技术六、漏洞防御措施 一、简介 文件上传漏洞是指Web应用程序在处理用户上传文件时,未对文件类型、内容、路径等进行严格校验和限制,导致攻击者可上传恶意文件&…...

如何实现 C/C++ 与 Python 的通信

C/C 与 Python 的通信可以通过多种方式实现,如使用 C API、Ctypes、Cython、SWIG、Python.h 或基于共享库的调用等。其中,使用 Ctypes 方式最为简便,适合快速调用已有的 C 函数库。例如,通过将 C 代码编译为动态链接库&#xff08…...

python炸鱼船

import pygame, random # 加载库 from pygame.locals import * pygame.init() pygame.display.set_caption("炸渔船") canvas pygame.display.set_mode((700, 500)) bgpygame.image.load("bg.png") bgpygame.transform.scale(bg,(700,500))class Hero(py…...

使用AutoKeras2.0的AutoModel进行结构化数据回归预测

1、First of All: Read The Fucking Source Code import autokeras as ak import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error# 生成数据集 np.random.seed(42) x np.random.rand(1000, 10) # 生成1…...

好用但不常用的Git配置

参考文章 文章目录 tag标签分支新仓库默认分支推送 代码合并冲突处理默认diff算法 tag标签 默认是以字母顺序排序,这会导致一些问题,比如0.5.101排在0.5.1000之后。为了解决这个问题,我们可以把默认排序改为数值排序 git config --global t…...

ULVAC VWR-400M/ERH 真空蒸发器 Compact Vacuum Evaporator DEPOX (VWR-400M/ERH)

ULVAC VWR-400M/ERH 真空蒸发器 Compact Vacuum Evaporator DEPOX (VWR-400M/ERH)...

P1068 [NOIP 2009 普及组] 分数线划定

题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的 150% 划定,即如果计划录取 m 名志愿者&#xf…...

PPT连同备注页(演讲者模式)一块转为PDF

首先,进入创建PDF/XPS: 然后进入选项: 发布选项-发布内容里选备注页: 导出的原始结果是这样的: 这个时候裁剪一下,范围为所有页面: 最终结果: 如果导出不选“备注页”而是只勾选“包…...

第三十二天打卡

作业:参考pdpbox官方文档中的其他类,绘制相应的图,任选即可 1. 安装并导入库 确保安装与文档版本一致的 pdpbox(此处以 0.3.0 为例): bash 复制 下载 pip install pdpbox0.3.0 导入所需库&#xff1a…...

项目三 - 任务8:实现词频统计功能

本项目旨在实现一个词频统计功能,通过读取文本文件并利用Java编程技巧处理和分析文本数据。首先,使用BufferedReader逐行读取文件内容,然后通过String.split(" ")方法将每行文本分割成单词数组。接下来,采用HashMap来存…...

MongoDB 快速整合 SpringBoot 示例

1.添加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spr…...

2025.05.22-得物春招机考真题解析-第二题

&#x1f4cc; 点击直达笔试专栏 &#x1f449;《大厂笔试突围》 &#x1f4bb; 春秋招笔试突围在线OJ &#x1f449; 笔试突围OJ 02. 魔法书页重排 问题描述 A先生是一位魔法师&#xff0c;他有一本古老的魔法书&#xff0c;书中有 n n n 页&#xff0c;每页都刻有一个魔…...

ollama list模型列表获取 接口代码

ollama list模型列表获取 接口代码 curl http://localhost:11434/v1/modelscoding package hcx.ollama;/*** ClassName DockerOllamaList* Description TODO* Author dell* Date 2025/5/26 11:31* Version 1.0**/import java.io.BufferedReader; import java.io.InputStreamR…...

OPC Client第5讲(wxwidgets):初始界面的事件处理;按照配置文件初始化界面的内容

接上一讲&#xff0c;即实现下述界面的事件处理代码&#xff1b;并且按照配置文件初始化界面的内容&#xff08;三、&#xff09; 事件处理的基础知识&#xff0c;见下述链接五、 OPC Client第3讲&#xff08;wxwidgets&#xff09;&#xff1a;wxFormBuilder&#xff1b;基础…...

什么是BFC,如何触发BFC,BFC有什么特性?

理解 BFC指的是块级格式化上下文,处于BFC内部的盒子与外界互不影响 触发条件 position:absolute/fixed都会产生bfcdisplay:inline-block,table,flex等float:left/right 浮动也会产生bfchtml根元素也是bfc bfc的特性 属于同一个BFC下的盒子会垂直排列属于同一个BFC下的两个…...

python做题日记(9)

第二十一题 第二十一题是合并两个有序链表&#xff0c;合并后的链表仍然需要保持有序&#xff0c;因为在合并之前已经是两个有序链表&#xff0c;因此在合并时只需要遍历比较两个链表中的下一结点数值&#xff0c;将其中较小的一个结点添加到新的列表中。如果有任何一个链表已经…...

Leetcode 3557. Find Maximum Number of Non Intersecting Substrings

Leetcode 3557. Find Maximum Number of Non Intersecting Substrings 1. 解题思路2. 代码实现 题目链接&#xff1a;3557. Find Maximum Number of Non Intersecting Substrings 1. 解题思路 这一题就是一个比较直接的动态规划的题目&#xff0c;我们只需要考察每一个位是否…...

【C++进阶篇】初识哈希

哈希表深度剖析&#xff1a;原理、冲突解决与C容器实战 一. 哈希1.1 哈希概念1.2 哈希思想1.3 常见的哈希函数1.3.1 直接定址法1.3.2 除留余数法1.3.3 乘法散列法&#xff08;了解&#xff09;1.3.4 平方取中法&#xff08;了解&#xff09; 1.4 哈希冲突1.4.1 冲突原因1.4.2 解…...

Spring Boot——自动配置

目录 1.bean加载方式 1.1XML方式声明bean 1.2 xml 注解方式声明bean 1.3通过Configuration和Bean 1.4使用Import注解 1.5使用上下文对象在容器初始化完毕后注入bean 1.6使用ImportSelector接口 1.7实现ImportBeanDefinitionRegistrar接口 1.8bean加载方式&#xff08;…...

免费轻量便携截图 录屏 OCR 翻译四合一!提升办公效率

各位软件小达人们&#xff0c;今天来给大伙唠唠VeryCapture这款软件&#xff01; 先说说它的核心功能。这软件有个超厉害的多模态屏幕捕捉系统&#xff0c;它就像个全能小能手&#xff0c;把截图、录屏、OCR文字识别、翻译这些功能全集成在一起啦&#xff01;截图有6种模式&a…...

使用 Vuex 实现用户注册与登录功能

引言 在构建具有用户认证功能的应用时&#xff0c;Vuex 可以用来管理用户的登录状态和相关信息。以下是如何使用 Vuex 来实现用户注册与登录功能的概述。 &#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端…...

进程通信(管道,共享内存实现)

01. 进程通信简介 进程通信工具分为数据传输工具和共享内存两类。这里我们讨论进程通信工具(IPC)里面的管道、system V和共享内存。在理解阶层通信之间&#xff0c;我们先了解用户空间缓冲区和内核空间缓冲区两个概念。 1.1 用户空间缓冲区 存在于用户态的进程用户空间&#…...

电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测

电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测 目录 电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测预测效果基本描述程序设计参考资料 预测效果 基本描述 电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测 运行环境Matlab2023b及以上&#xff0c;锂电池剩余寿…...

快速上手SHELL脚本常用命令

一、设置主机名称 1.修改文件方式 重启后生效 2.命令修改 重启shell后生效 二、网卡管理nmcli 1.查看网卡 2.设置网卡 详细配置&#xff1a;快速上手Linux联网管理-CSDN博客 三、简单处理字符 1.打印连续数字 2.设置字体颜色 \033[颜色代号m 3.反向打印文件内容 tac&a…...

【无标题】前端如何实现分页?

前端如何实现分页&#xff1f; 以下是对代码的逐条总结与解释&#xff0c;按 HTML、JavaScript、CSS 顺序分模块列出&#xff0c;每条代码单独说明&#xff1a; 一、HTML 代码解释 1. 表格容器 html <table class"table table-bordered table-hover">作用&…...

【自然语言处理与大模型】大模型Agent四大的组件

大模型Agent是基于大型语言模型构建的智能体&#xff0c;它们能够模拟独立思考过程&#xff0c;灵活调用各类工具&#xff0c;逐步达成预设目标。这类智能体的设计旨在通过感知、思考与行动三者的紧密结合来完成复杂任务。下面将从大模型大脑&#xff08;LLM&#xff09;、规划…...

小巧高效的目录索引生成软件

软件介绍 本文介绍的软件名为Snap2html&#xff0c;是一款树形目录索引生成工具。 软件大小与便捷性 Snap2html这款软件已完成汉化&#xff0c;其体积仅170kb&#xff0c;小巧无比&#xff0c;且无需安装&#xff0c;可直接投入使用。 软件使用方法 该软件操作简便&#xf…...