基础_2022_进程、线程

进程与线程

进程与线程的区别

1. 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;

2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线

3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信

号等),某进程内的线程在其他进程不可见;

4. 调度和切换:线程上下文切换比进程上下文切换要快得多

 

线程运行的本质其实就是函数的执行。函数的执行总会有一个源头,这个源头就是所谓的入口函数,CPU 从入口函数开始执行从而形成一个执行流,只不过我们人为的给执行流起一个名字,这个名字就叫线程。

由于线程运行的本质就是函数运行,函数运行时信息是保存在栈帧中的,因此每个线程都有自己独立的、私有的栈区。

CPU 执行指令的信息保存在一个叫做程序计数器的寄存器中,通过这个寄存器我们就知道接下来要执行哪一条指令。由于操作系统随时可以暂停线程的运行,因此我们保存以及恢复程序计数器中的值就能知道线程是从哪里暂停的以及该从哪里继续运行了。

线程共享进程资源

所属线程的栈区、程序计数器、栈指针以及函数运行使用的寄存器是线程私有的。以上这些信息有一个统一的名字,就是线程上下文,thread context。除此之外,剩下的都是线程间共享资源。进程地址空间的样子 (代码区、数据区、堆区)

如果一个程序是动态链接生成的,那么其地址空间中有一部分包含的就是动态链接库,否则程序就运行不起来了,这一部分(动态链接库)的地址空间也是被所有线程所共享的。

如果程序在运行过程中打开了一些文件,那么进程地址空间中还保存有打开的文件信息,进程打开的文件也可以被所有的线程使用,这也属于线程间的共享资源。

 
 
 

 

 
 
posted @ 2022-05-16 20:14  素染年华  阅读(34)  评论(0编辑  收藏  举报