linux(线程概念)

目录:

            1.概念

            2.linux线程与接口的关系

            3.代码验证(线程是进程模拟的)

-------------------------------------------------------------------------------------------------------------------------------

1.概念

一般教材:

线程:是在进程内部运行的一个执行分支(执行流),属于进程的一部分,粒度要比进程更加细和轻量化。

linux(线程概念)_第1张图片

linux(线程概念)_第2张图片

 CPU调度进程,拿着你进程PCB,把你PCB当中的上下文,放进CPU当中,恢复进程

如果我假设,我有一个能力把你的代码分上一部分,把你的数据分上一部分,把你乱七八糟的区域分上一小部分,然后我创建一个PCB,,不过我新的PCB不想创建新的进程,新的PCB不想指向新的地址空间,而是指向我们主进程的PCB地址空间同一个

linux(线程概念)_第3张图片

 linux(线程概念)_第4张图片

CPU此时看到的PCB  <= 之前进的PCB的

CPU只是认为一个PCB就是一个需要被调度的执行流!!!这样的每一个一个一个的PCB 在我们的linux当中称之为线程

linux中没有专门为线程设计 TCB,而是用进程的PCB来模拟线程(不用维护复杂的进程和线程关系,不用单独为所谓的线程设计任何算法,直接使用进程的一套相关方法,OS只需要聚焦在线程间的资源分配上,就可以了)

linux(线程概念)_第5张图片

上面叫做线程是属于进程的一部分呢??

linux(线程概念)_第6张图片

线程的公有和私有资源

所以的轻轻量级(可能是”线程“)都是在进程内部运行(地址空间:用来表示进程所能看到的大部分资源!!!)

进程,独立性(PCB是分开的),可以有部分共享资源(管道、ipc资源)
线程,大部分资源是共享的,可以有部分资源是”私有“的(线程的PCB,栈(线程在执行和运行 的时候产生的临时数据是可以被压栈的,线程和线程之间临时数据不会互相干扰,所以需要有独立的栈结构),上下文(一个线程是调度的基本单位,所以它一定会形成自己在CPU寄存器当中自己的临时数据))

-------------------------------------------------------------------------------------------------------------------------------

2.linux线程与接口的关系

linux(线程概念)_第7张图片

 3.代码验证(线程是进程模拟的)

linux(线程概念)_第8张图片

 linux(线程概念)_第9张图片

 linux(线程概念)_第10张图片

linux(线程概念)_第11张图片

你可能感兴趣的:(Linux模块学习,linux,运维,服务器)