进程与线程

本文详细介绍了进程和线程的概念,强调了在Linux环境下,进程是资源分配的基本单位,线程是CPU调度的基本单位。分析了两者各自的优缺点,并对比了多进程和多线程在实际应用中的特点,有助于读者深入理解这两个核心概念。
摘要由CSDN通过智能技术生成

在学习Linux时,遇到了进程和线程的概念,总是分不清楚,经过学习研究后,将自己的总结写出啦

在学习进程时,认为进程是pcb,pcb是操作系统对程序运行动态的描述,通过pcb实现对程序运行的调度管理;
在学习线程时,认为pcb是一个轻量级进程,是一个运行中程序的一条执行流。
我们在Linux中使用pcb实现了进程中的执行流,一个进程可以有多个pcb,也就是可以有多个执行流,创建线程就是在内核中创建一个pcb作为一条执行流,来实现程序的运行调度管理。

所以:
进程的概念进程是操作系统对程序运行动态的描述,在Linux下这个描述称为pcb
线程的概念线程是进程中的一条执行流,Linux下的线程是一个轻量级进程

明确两个概念:线程是CPU调度的基本单位。进程是资源分配的基本单位。

接下来分别讲解一下优缺点:

一、进程和线程
进程的优点
1.顺序程序的特点:具有封闭性和可再现性;
2.程序的并发执行和资源共享。多道程序设计出现后,实现了程序的并发执行和资源共享,提高了系统的效率和系统的资源利用率。

进程的缺点
1.操作系统调度切换多个线程要比切换调度进程在速度上快的多。而且进程间内存无法共享,通讯也比较麻烦。
2.线程之间由于共享进程内存空间,所以交换数据非常方便;在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

线程的优点
1.线程的创建与销毁成本更低
2.易于调度,与进程之间的切换相比,线程之间的切换操作系统要做的工作很少
3.能充分利用多处理器的可并行数量
4.在计算密集型应用时,为了能在多处理器上运行,将计算分解到多个线程中
5.I/O密集型应用,为了提高性能,将I/O操作重叠,线程可以同时等待不同的I/O操作
6.线程占用的资源要比进程少

线程的缺点
1.性能损失:增加了额外的同步和调度开销,而可用的资源不变
2.健壮性降低:线程之间是缺乏保护的
3.缺乏访问控制
4.编写难度提高

二、多进程和多线程
多进程优点
1.每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;
2.通过增加CPU,就可以容易扩充性能;
3.可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;
4.每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大

多进程缺点
1.逻辑控制复杂,需要和主程序交互;
2.需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算
3.多进程调度开销比较大;

多线程的优点
1.无需跨进程边界;
2.程序逻辑和控制方式简单;
3.所有线程可以直接共享内存和变量等;
4.线程方式消耗的总资源比进程方式好;

多线程缺点
1.每个线程与主程序共用地址空间,受限于2GB地址空间;
2.线程之间的同步和加锁控制比较麻烦;
3.一个线程的崩溃可能影响到整个程序的稳定性;
4.到达一定的线程数程度后,即使再增加CPU也无法提高性能,例如Windows Server 2003,大约是1500个左右的线程数就快到极限了(线程堆栈设定为1M),如果设定线程堆栈为2M,还达不到1500个线程总数;
5.线程能够提高的总性能有限,而且线程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值