主要内容
引入线程的原因
进程是为了提高CPU的执行效率,减少因为程序等待带来的CPU空转,以及其他计算机软、硬件资源的浪费而提出来的,是为了完成用户任务所需要的程序的一次执行过程以及为其分配资源的一个基本单位。(可回顾“进程的基本属性”)
但是,创建、撤销和切换进程耗费较大的系统开销和占用较多的资源。开销越大,服务器能支持和处理的用户访问请求就越少。
为了减少创建、撤销进程以及进程上下文切换的开销,提高执行效率和节省资源,人们开始在操作系统中引入一个概念——线程。
线程的基本概念
线程是进程的一部分。因此线程有时会被称为轻量级进程(light weight process)。
线程的改变只代表了CPU执行过程的改变,除了CPU外,计算机内的软硬件资源的分配与线程无关,线程只能共享它所属的进程的资源。
每个线程都有自己的线程控制块(Thread Control Block,TCB),而TCB中保存的线程状态信息要比PCB少得多。
线程与进程的比较
1)调度
线程需要保存的信息远少于进程,所以在调度时切换的开销更小。
同一个进程中,线程的切换不引起进程的切换;若从一个进程的线程切换到另一个进程的线程,必然引起进程的切换。
2)并发性
在引入线程的OS中,不仅进程之间可以并发执行,线程之间也能并发执行,这使得OS具有更好的并发性,更能提高系统资源利用率和系统的吞吐量。
例如,
一个进程包括三个任务:从键盘读入数据、在后台进行拼写和语法检查、显示文字和图形。三个任务只能顺序执行。
引入线程后,一个进程包括三个线程:一个线程负责从键盘读入数据、一个线程负责在后台进行拼写和语法检查、一个线程负责显示文字和图形。三个线程可以并发执行。
上面这个例子很容易理解,正在写博客的我正体会着线程带来的福利。若没有线程,每当我键入一个拼音,就得等待后台拼写和语法检查,然后等它把可选汉字显示在屏幕上,最后我才能选择自己需要的汉字。(虽然也没有那么夸张啦,就举个栗子_(:з」∠)_)
3)资源
进程可以拥有资源,但线程本身并不拥有系统资源,而是仅有一点必不可少的、保证其独立运行的资源。
4)支持多处理机系统
在多处理机系统中,对于传统的单线程进程,不管有多少个处理机,该进程只能在一个处理机上运行。但对于多线程进程,就可以将多个线程分配到多个处理机上,使它们并行执行。
线程的适用范围
使用线程的最大好处是在有多个任务需要处理机处理时,减少处理机的切换时间;而且线程的创建和结束所需要的系统开销也比进程小得多。
尽管线程可以提高系统的执行效率,但并不是所有的计算机系统都适用线程。任务单一却设置线程反而会占用更多的系统资源。
由此可以推出多处理机系统、网络系统和分布式系统更适合适用线程。
应用线程的例子
一个用户主机通过网络对两台远程服务器进行远程调用(RPC)以获得相应结果的执行情况。
单线程:发送请求1后必须等待服务器1处理好并返回结果1后才能继续发送请求2;
多线程:发送请求1后即可继续发送请求2,不必等待结果1返回。
本文深入探讨了线程与进程的概念,分析了引入线程的原因,对比了线程与进程在调度、并发性、资源使用及多处理机系统支持方面的区别,并举例说明线程的应用场景。
656

被折叠的 条评论
为什么被折叠?



