进程和线程的区别和联系

229 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

区别: 进程是对运行时程序的封装,是系统进行资源分配和调度的基本单元,而线程是进程的 子任务,是CPU分配和调度的基本单元。

一个进程可以有多个线程,但是一个线程只能属于一个进程。

进程的创建和回收需要系统分配内存和CPU,文件句柄等资源,销毁时也要进行相应的 回收,所以进程的管理开销很大;但是线程的管理开销则很小。

进程之间不会相互影响;而一个线程的崩溃则会导致进程的崩溃,从而影响同个进程里 面的其他线程。

联系:

进程与线程之间的关系:线程是存在进程的内部,一个进程可以有多个线程,一 个线程只能存在一个进程中。

线程共享的资源包括:

(1) 进程代码段

(2) 进程的公有数据(利用这些数据,线程很容易实现相互之间的通讯)

(3) 进程的所拥有资源。

线程独立的资源包括:

(1)线程ID:每个线程都有自己唯一的ID,用于区分不同的线程。

(2)寄存器组的值:当线程切换时,必须将原有的线程的寄存器集合的状态保存,以便重新切换时得以恢复。

(3)线程的堆栈:堆栈是保证线程独立运行所必须的。

(4)错误返回码:由于同一个进程中有很多个线程同时运行,可能某个线程进行系统调用后设置了error值,而在该线程还没有处理这个错误,另外一个线程就在此时被调度器投入运行,这样错误值就有可能被修改。所以,不同的线程应该拥有自己的错误返回码变量。

(5)线程优先级:线程调度的次序(并不是优先级大的一定会先执行,优先级大只是最先执行的机会大)。