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

Linux中线程的基本概念与线程控制

Linux操作系统中线程

1、进程指的是加载进内存的程序,进程 = 内核数据结构 + 进程代码和数据

2、进程在执行ABCD四个函数时是一个单执行流,而如果想让AB函数和CD函数并发执行,我们通常会创建一个子进程,但这意味着需要创建新的进程控制块、进程地址空间、页表,极大的浪费了虚拟地址(地址空间)

3、Linux为了解决上述的资源浪费问题,规定在创建子进程时只复制其父进程的PCB,并与其它子进程一起共享父进程的进程地址空间以及页表等内容,同时将代码区中的代码进行分块,保证每个子进程的PCB只能看见为其分配好的代码块,这就是Linux操作系统中多线程的实现方式,因为这种独特的实现方式,所以Linux操作系统中的线程也叫做轻量级进程

4、因为一个进程在执行其代码块中的内容时被看作是一个执行流,所以一个线程(轻量级进程)也可以被视为一个执行流(完整的执行流需要PCB、进程地址空间、页表、代码和数据,这些内容线程都有只不过可能是借用了进程的部分内容,并且还对代码块做了限制让每个线程看到的函数都不一样,每个线程都会去执行被分配好的代码块中的内容)因此一个进程中会有至少一个执行流,综上所述:线程 <= 执行流 <= 进程

5、在Linux的中讨论多线程就是讨论一个进程中到底有几个执行流,即在Linux中线程就是进程中的执行流(而不是Windows或者理论中的那样,完完全全是不同的两个内容)

6、Linux中的多线程与理论上的多线程的实现方式不同(Windows中的线程设计是符合理论的),是因为Linux的设计者认为设计线程就要设计线程控制块(新的数据结构TCB)以及与线程相关的调度算法,但进程和线程实际上具有很高的相似性(上图所示),没必要单独设计数据结构和调度算法

结论:在Linux操作系统中,CPU在调度PCB时不关心该PCB是进程的还是线程的只负责调度,因为在CPU看来它们都是不同执行流中的PCB,故可以说进程是系统分配资源的基本单位,而线程是进程内部的一个执行分支,是CPU调度的基本单位

线程的创建

多执行流代码划分

基本概念:大部分操作系统每次都是以4KB大小为基本单位(或4*n大小)对内存进行管理的,磁盘中的数据加载到内存时也是以4KB大小为基本单位,我们叫

线程的理解

页表与页框

线程控制

~over~


http://www.mrgr.cn/news/70661.html

相关文章:

  • 桥田动态|桥田智能与柯马正式签订战略合作协议
  • sql专题 之 where和join on
  • 关于指针p有关的3个值
  • Chrome使用IE内核
  • 计算机毕业设计Python+大模型斗鱼直播可视化 直播预测 直播爬虫 直播数据分析 直播大数据 大数据毕业设计 机器学习 深度学习
  • rust模式和匹配
  • 深⼊理解指针(5)[回调函数、qsort相关知识(qsort可用于各种类型变量的排序)】
  • YOLOv11融合CVPR[2020]自校准卷积SCConv模块及相关改进思路|YOLO改进最简教程
  • 前端知识点---字符串的8种拼接方法(Javascript)
  • 边缘检测的100种方法
  • PCL 点云拟合 Ransac拟合空间球体
  • 基于图的去中心化社会推荐过滤器
  • 麒麟服务器工作站SP1 arm环境qt5.6.3源码编译
  • 【大咖云集 | IEEE计算智能学会广州分会支持】第四届信息技术与当代体育国际学术会议(TCS 2024,12月13-15日)
  • 数据库基础(14) . MySQL存储过程
  • 嵌入式学习-C嘎嘎-Day01
  • 基于stm32的智能晾衣杆(开源)
  • uniapp中webview全屏不显示导航栏解决方案
  • 20个Python自动化脚本,提升编程能力
  • 图形几何之美系列:仿射变换矩阵之先转后偏
  • 元岭村停车场的收费情况探寻
  • C#-objetc中的方法
  • mysql数据库(四)单表查询
  • 20241111_室内定位
  • 把握鸿蒙生态崛起的机遇:开发者视角的探讨
  • 应用系统开发(4)CMOS 模拟开关芯片HCF4053BE