进程、线程的优缺点
进程概念
进程是表⽰资源分配的基本单位,⼜是调度运⾏的基本单位。例如,⽤户运⾏⾃⼰的程序,系统就创建⼀个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放⼈进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运⾏。所以,进程是系统中的并发执⾏的单位。
在Mac、Windows NT等采⽤微内核结构的操作系统中,进程的功能发⽣了变化:它只是资源分配的单位,⽽不再是调度运⾏的单位。在微内核系统中,真正调度运⾏的基本单位是线程。因此,实现并发功能的单位是线程。
线程概念
线程是进程中执⾏运算的最⼩单位,亦即执⾏处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表⽰完成该任务的许多可能的⼦任务之⼀。例如,假设⽤户启动了⼀个窗⼝中的数据库应⽤程序,操作系统就将对数据库的调⽤表⽰为⼀个进程。假设⽤户要从数据库中产⽣⼀份⼯资单报表,并传到⼀个⽂件中,这是⼀个⼦任务;在产⽣⼯资单报表的过程中,⽤户⼜可以输⼈数
据库查询请求,这⼜是⼀个⼦任务。这样,操作系统则把每⼀个请求――⼯资单报表和新输⼈的数据查询表⽰为数据库进程中的独⽴的线程。线程可以在处理器上独⽴调度执⾏,这样,在多处理器环境下就允许⼏个线程各⾃在单独处理器上进⾏。操作系统提供线程就是为了⽅便⽽有效地实现这种并发性
引⼊线程的好处
(1)易于调度。
(2)提⾼并发性。通过线程可⽅便有效地实现并发性。进程可创建多个线程来执⾏同⼀程序的不同部分。
(3)开销少。创建线程⽐创建进程要快,所需开销很少。。
一个线程可以包含多个进程(4)利于充分发挥多处理器的功能。通过创建多线程进程(即⼀个进程可具有两个或更多个线程),每个线程在⼀个处理器上运⾏,从⽽实现应⽤程序的并发性,使每个处理器都得到充分运⾏。
进程和线程的关系
(1)⼀个线程只能属于⼀个进程,⽽⼀个进程可以有多个线程,但⾄少有⼀个线程。
(2)资源分配给进程,同⼀进程的所有线程共享该进程的所有资源。
(3)处理机分给线程,即真正在处理机上运⾏的是线程。
(4)线程在执⾏过程中,需要协作同步。不同进程的线程间要利⽤消息通信的办法实现同步。
=============================================================================
多线程的优点:
⽆需跨进程边界;
程序逻辑和控制⽅式简单;
所有线程可以直接共享内存和变量等;
线程⽅式消耗的总资源⽐进程⽅式好;
多线程缺点:
每个线程与主程序共⽤地址空间,受限于2GB地址空间;
线程之间的同步和加锁控制⽐较⿇烦;
⼀个线程的崩溃可能影响到整个程序的稳定性;
到达⼀定的线程数程度后,即使再增加CPU也⽆法提⾼性能,例如Windows Server 2003,⼤约是1500个左右的线程数就快到极限了(线程堆栈设定为1M),如果设定线程堆栈为2M,还达不到1500个线程总数;
线程能够提⾼的总性能有限,⽽且线程多了之后,线程本⾝的调度也是⼀个⿇烦事⼉,需要消耗较多的CPU
多进程优点:
每个进程互相独⽴,不影响主程序的稳定性,⼦进程崩溃没关系;
通过增加CPU,就可以容易扩充性能;
可以尽量减少线程加锁/解锁的影响,极⼤提⾼性能,就算是线程运⾏的模块算法效率低也没关系;
每个⼦进程都有2GB地址空间和相关资源,总体能够达到的性能上限⾮常⼤
多线程缺点:
逻辑控制复杂,需要和主程序交互;
需要跨进程边界,如果有⼤数据量传送,就不太好,适合⼩数据量传送、密集运算
多进程调度开销⽐较⼤;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论