您的位置:首页 > 其它

操作系统 - 经典的线程模型

2015-08-23 09:37 106 查看

需要线程的原因分析

人们需要多线程的主要原因是,在许多应用中同时发生着多种活动,其中某些活动随着时间的推移会被阻塞。通过将这些应用程序分解成可以准并行运行的多个顺序线程,程序设计模型会变得更简单。

1、在有了多线程概念之后,我们才加入了一种新的元素:并行实体共享同一个地址空间和所有可用数据的能力。对于某些应用而言,这种能力是必须的,而这正式多进程模型(它们具有不同地址空间)所无法表达的。

2、由于线程比进程更轻量级,所以它们比进程更容易(即更快)创建,也更容易撤销。在许多系统中,创建一个进程较创建一个进程要快10~100倍,在有大量线程需要动态和快速修改时,具有这一特性是很有用的。

3、需要多线程的第三个原因设计性能方面的讨论。若多个线程都是CPU密集型的,那么那么并不能获得性能上的增强,但是如果存在着大量的计算和大量的I/O处理,拥有多个线程允许这些活动彼此重叠进行,从而会加快应用程序执行的速度。

4、最后,在多CPU系统中,多线程是有益的,在这样的系统中,真正的并行有了实现的可能。

经典的线程模型

进程模型基于两种独立的概念:资源分组处理与执行。有时,将这两种概念分开会更有益,这也引入了“线程”这一概念。

理解进程的一个角度是,用某种方法把相关的资源集中在一起。进程有存放程序正文和数据以及其他资源的地址空间。这些资源中包括打开的文件、子进程、即将发生的报警、信号处理程序、帐号信息等。把它们都放到进程中可以更容易管理。

另一个概念是,进程拥有一个执行的线程,通常简写为线程(thread)。在线程中有一个程序计数器,用来记录接着要执行哪一条指令。线程拥有寄存器,用来保存线程当前的工作变量。线程还拥有一个堆栈,用来记录执行历史,期中每一桢保存了一个已调用的但是还没有从中返回的过程。进程线程必须在某个进程中执行,但是线程和它的进程是不同的概念,并且还可以分别处理。进程用于把资源集中到一起,而线程则是在CPU上被调度执行的实体。

线程给进程模型增加了一项内容,即在同一个进程环境中,允许彼此之间有较大独立性的多个线程执行。在同一个进程中并行运行多个线程,是对在同一台计算机上并行运行多个进程的模拟,在前一种情形下,多个线程共享同一个地址空间和其他资源。而在后一种清醒中,多个进程共享物理内存、磁盘、打印机和其他资源。由于线程具有进程的某些性质,所以有时被成为轻量级进程(lightweight process)。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: