当前位置:首页 > 操作系统 线程与进程
线程与进程比较分析
一、
人们为什么要发明线程?
(1) 许多应用中同时发生着多种活动,其中某些活动会随着时间的推移被阻塞,通过将这些应用程序额分解成可以准并行运行的多个顺序线程,程序设计模型会变得更加简单。
(2) 线程是拥有可以并行共享同一个地址空间和所有可用数据的能力,进程具有不同的地址空间,所以不能实现这种功能。
(3) 线程是比进程更轻的中靓丽,相对进程来说,线程可以更加迅速的建立和撤销。
(4) 对于拥有大量I/O处理和计算的活动,拥有多个线程可以允许这些活动彼此重叠进行,从而可以大大加快应用程序的执行速度。
(5) 在拥有多线程的操作系统中,真正的并行有了实现的可能。
二、请描述进程与线程区别?
进程是资源分配的基本单位,而线程是调度的基本单位。进程拥有比线程更高的重量级,一个进程可以创建多个线程。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源,即线程可以共享公共内存,同时访问正在编辑的文件。而进程是相对线程是很独立的,拥有独立的地址空间,即使是需要重复的同一类操作,靠近程完成的话会创建多个进程,这些进程可以通过进程号来区分,造成了很多系统资源的浪费。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。而进程是一个独立的单位,可以单独运行。
三、研究多线程与单线程各有什么优缺点?
单线程是进程只有一个线程,多线程是进程有多个线程。每个程序执行时都会产生一个进程,而每一个进程至少要有一个主线程。单线程时,由于进程只有一个线程,当程序运行之后,必须等当前的线程执行结束后才能开始新的任务。优点则是线程不涉及到同一进程之间的线程切换,不需要对高速缓存进行刷新,线程间调度非常快捷。多线程时,除主线程外,进程还创建其它线程,当程序运行后,可以挂起或运行这些线程,因为这些线程是并发运行
的(其实在同一时间还是只能执行一个线程,只是给每个线程分配一个时间片,在某个时间片内,只能一个线程执行,然后按照某种策略换其他线程执行。由于时间片很短,这样给人的感觉是同时有好多线程在执行),从而使一个应用程序有了多任务的功能。当一个线程遇到阻塞或挂起后,执行其它的线程,不会对整个进程造成很大的影响,例如:现在我们用的下载软件,迅雷,快车等,都是应用的多线程机制,可以实现几个线程的同时下载,一个线程阻塞时,不会对下载造成很大的影响,当只剩下一个线程可以执行时,仍然可以进行下载,多线程大大加快了下载的速度,使程序的并行有了可能。多线程的缺点就是线程之间的调度问题,多个线程并行执行,每个线程就有了自己的私有的变量,对线程进行管理要求额外的CPU开销。线程的使用会给系统带来上下文切换的额外负担。
共分享92篇相关文档