先给出图,然后我将根据图来讲解二者的关系:

线程ID


在使用线程前,我们需要链接线程的pthread第三方库,在Linux中,第三方库被加载到PCB进程中的虚拟地址空间中的栈区与堆区之间的共享区。
我们所创建线程的控制块即维护线程的内容都存在pthread第三方库中,当我们创建线程时候大致的流程如下:
1.磁盘将pthread库加载到物理内存中
2.通过页表映射(不是拷贝!!!)到进程地址空间中的共享区,因为是映射,所以每个进程共用一份pthread库。
3.pthread库中存在很多线程的控制块struct pthread,每个块中都保存了维护这个线程内容,比如线程的私有栈(main函数即主进程用的栈不是这里的,而是地址空间中的主进程栈,就是我们平时说的栈区)
4.我们主进程创建了新线程,通过什么来找到我们唯一的线程呢?答:通过线程ID!!而线程ID存在哪里呢?答:存在pthread库中!!
我们用户所看到的线程ID号其实是物理内存中pthread库通过页表映射到地址空间当中的虚拟地址!!
总结,线程ID是一个被映射进当前进程地址空间的,pthread库当中的内部的一个地址数据,用它来充当线程ID。在用户层上这个线程内部包含了线程的私有栈,线程局部各种存储(包括描述线程的各种结构都在这里保存)因此,我们只要拿到了线程ID就可以拿到该线程的所有用户级数据!!

线程ID与内核LWP的关系


总结:在Linux中,每个线程与内核中的LWP是1:1对应关系,每个线程控制块中都存在一个与之相对应的存在于内核中的LWP!
就好比FILE文件中一定存了他的文件描述符

Linux线程ID与内核LWP的关系相关推荐

  1. Linux线程ID是32位的,对于linux中线程id的讨论

    在LINUX系统中,POSIX threads库提供了pthread_t来标识一个线程,通过pthread_self()可以得到,如下: #include #include using namespa ...

  2. linux 线程id 进程id,在Linux上显示正在运行的进程的线程ID

    在Linux上显示正在运行的进程的线程ID 在上Linux," ps -T"可以显示正在运行的进程的线程信息: # ps -T 2739 PID SPID TTY STAT TIM ...

  3. Linux下获得线程ID syscall(224)

    From: http://blog.163.com/onx0320@126/blog/static/164736436201252574720314/ 对于Linux线程,也许大家并不陌生,而我们通常 ...

  4. linux 线程创建 pthread_create函数 获取线程id

    函数原型: #include<pthread.h> int  pthread_create(pthread_t*thread,pthread_attr_t   *attr, void * ...

  5. 【Linux系统编程学习】Linux线程控制原语

    此为牛客Linux C++课程笔记. 0. 关于线程 注意:LWP号和线程id不同, LWP号是CPU分配时间片的依据,线程id是用于在进程内部区分线程的. 1. 线程与进程的区别 对于进程来说,相同 ...

  6. Linux_多线程(进程与线程的联系_pthread库_线程创建_线程等待_线程正常终止_线程取消_线程分离_pthread_t与LWP)

    文章目录 1.线程的定义,进程和线程的关系 2.Linux下的线程 Linux原生线程库(pthread库pthread.h) 线程的优点 线程的私有数据 3.线程控制 ①创建线程(pthread_c ...

  7. 【4万字Linux线程解析】从0开始学习Linux线程

    文章目录 一.线程基本概念 1. 并发和并行 2. 线程的引入 3. 什么是线程 4. Linux下的线程 5. 线程的优点和缺点 (1)计算密集型应用 (2)IO密集型应用 (3)计算密集型程序创建 ...

  8. Zephyr与Linux线程切换

    // 本文部分内容来自网络 Zephry线程切换 Zephyr线程列表: _kernel->current: 当前线程 _kernel->current->next_thread: ...

  9. Linux——一文彻底了解进程id和线程id的关系(什么是pid、tgid、lwp、pthread_t)

    目录 一.内核层面:pid & tgid 二.函数调用层面:getpid & gettid & pthread_self 三.用户层面:PID & LWP(TID) 四 ...

最新文章

  1. Spring-redis基础配置
  2. SAP RETAIL 特性树(Characteristic Tree)的定义
  3. 数学建模 概率空间与统计结构
  4. FFmpeg命令行map参数选择音视频流
  5. 自考计算机软件基础交作业,全国2009年7月自考计算机软件基础(二)试题及答案...
  6. C#LeetCode刷题,走进Google,走近人生
  7. mysql数据设置浮动_浮动float
  8. oracle 创建表同时添加注释
  9. windows 窗口帧率监控小工具
  10. 模型☀️Catia模型到Unity的转化过程
  11. 如何爬取B站视频的封面图片
  12. 租用GPU服务器跑深度学习模型心得
  13. 10 个免费的高清图库网站,强烈推荐
  14. 【分布式版本控制系统】GIT 托管网站 客户端
  15. 【css】 让文字换行的样式
  16. Bootstrap导航和导航条
  17. visual studio装哪些_全球有哪些院校的平面设计好?
  18. Ubuntu20中使用AirSim--亲测可用
  19. 邮件服务器安全性:潜在漏洞和保护方法
  20. 让别人不能关掉python程序_《让》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...

热门文章

  1. 蓝桥杯试题 算法训练 Have You Ever Heard About the Word?
  2. Recent Advances in Open Set Recognition A survey全文翻译精校
  3. STAF rc = 6
  4. python两张图片无缝合成一张,Python实现拼接多张图片的方法
  5. Android实现一键开启自由窗口、分屏、画中画模式——分屏模式
  6. python用scrapy爬取58同城的租房信息
  7. 养殖环控程序 三菱plc可以带物联网模块,7寸触摸屏程序
  8. 不用网页另存PDF,浏览器在线简单查找下载PDF文件分享
  9. 洛谷刷题C语言:数字反转、再分肥皂水、三角形面积、Apples Prologue/苹果和虫子、数的性质
  10. 【BZOJ2563】阿狸和桃子的游戏 贪心