进程-线程的特点和关系

(一)简介
在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。

(二)进程的优缺点
优点:
(1)每个进程都有独立的地址空间,自己独立的PCB进程控制块;
(2)每个进程的内存空间是由内核分配并且相互隔离好的,相互独立,安全性非常好;
(3)每个进程都参与内核调度,互不影响;
(4)linux操作系统内核为每个进程创建 task_struct任务结构体。

缺点:
(1)由于进程间相互独立,造成进程间通信比较麻烦。
(2)进程实现并发程序消耗的资源比较多,比较繁重。
(3)进程在切换时,系统开销大。

(三)进程的特征
(1)动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
(2)并发性:任何进程都可以同其他进程一起并发执行。
(3)独立性进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位
(4)异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。

进程的结构特征:进程由程序、数据和进程控制块三部分组成。

(四)线程的特点
1)轻型实体
线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。
线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB描述。
线程私有的资源(线程相当于一段可独立运行的函数):
线程ID(TID)
PC(程序计数器)和相关寄存器
堆栈:拥有自己的堆栈
错误号errno
优先级
TCB:自己的执行状态和属性

2)独立调度和分派的基本单位
在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故同一进程中,线程的切换非常迅速且开销小。能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统资源的利用率和吞吐量。

3)可并发执行
在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;
同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。

4)共享进程资源
在同一进程中的各个线程,都可以共享该进程所拥有的资源。
由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。
这首先表现在:同一进程中的所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚拟地址;此外,还可以访问进程所拥有的已打开文件、定时器、信号量等。
共享进程的资源:
可执行的指令
静态数据(全局变量)
进程中打开的文件描述符fd
当前工目录
用户ID
用户组ID

(五)线程与进程的区别
(1)地址空间和其它资源(如打开文件):各进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
(2)通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
(3)调度和切换:线程上下文切换比进程上下文切换要快得多。
(4)在多线程OS中,进程不是一个可执行的实体。

发布了13 篇原创文章 · 获赞 0 · 访问量 127

猜你喜欢

转载自blog.csdn.net/m0_46170433/article/details/104919885
今日推荐