操作系统 --- > 线程与进程的比较

如果说,在操作系统中引入进程的目的是为了使多个程序能并发执行,以提高资源利用率和系统吞吐量,那么在操作系统中再引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS(操作系统)具有更好的并发性…

我们再回顾一下进程的两个基本属性:
1.进程是一个可拥拥有资源的独立单位,一个进程要能独立运行,它必须拥有一定的资源(用于存放程序、数据的磁盘和内存地址空间,以及它在运行时所需要的I/O设备、已打开的文件、信号量等);
2.进程同时是一个可独立调度和分配的基本单位,一个进程要能独立运行,它还必须是一个可独立调用和分派的基本单位。每个进程在系统中由唯一的PCB(Process Control Blck,进程控制块),系统可根据其PCB感知进程的存在,也可以根据其PCB中的信息,对进程进行调度,还可以将断点信息保存在其PCB中.反之,再利用进程PCB中的信息来恢复进程运行的现场。

程序并发执行所需付出的时空开销
为使程序能并发执行,系统必须进行以下的一系列操作:
1.创建进程,系统在创建一个进程时,必须为它分配其所必需的、除处理机以外的所有资源,如内存空间、I/O设备,以及建立相应的PCB;
2.撤消进程,系统在撤销进程时,又必须先对其所占有的资源执行回收操作,然后在撤销PCB;
3.进程切换,对进程进行上下文切换时,需要保留当前进程的CPU环境,设置新选中进程的CPU环境,因而须花费不少的处理机时间.

由上可知:由于进程是一个资源的拥有者,因而在创建、撤消和切换中,系统必须为之付出较大的时空开销.这就限制了系统中所设置进程的数目,而且进程切换也不宜过于频繁,从而限制了并发程度的进一步提高.

线程------作为调度和分派的基本单位
线程的概念:设法将进程的两个基本属性(独立资源和PCB)分开,由OS分开处理:不把作为调度和分派的基本单位也同时作为拥有资源的单位;对于拥有资源的基本单位,不频繁的切换.

线程与进程的比较
1.调度的基本单位:
在传统的OS中,进程是作为独立调度和分派的基本单位,因而进程是能独立运行的基本单位.在每次被调度时,都需要进行上下文切换,开销很大。而在引入线程的OS中,已把线程作为调度和分派的基本单位,因而线程是独立运行的基本单位.当线程切换时,仅需保存和设置少量寄存器内容,切换代价远低于进程.在同一进程中,线程的切换不会引起进程的切换,但从一个进程的线程切换到另一个进程中的线程时,必然会引起进程的切换.

2.并发行
在引入线程的OS中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行,甚至还允许在一个进程中的所有线程都能并发执行.同样,不同的线程也能并发执行.这使得OS具有更好的并发性,从而能更加有效地提高系统资源地利用率和系统地吞吐量.
例如:一个网络服务器经常会接到许多客户地请求,如果仍采用传统的单线程的进程来执行该任务,则每次只能为一个客户服务.但如果在一个进程中可以设置多个线程,将其中的一个专用于监听客户的请求,则每当有一个客户请求时,便立即创建一个线程来处理该客户的请求.

3.拥有资源
进程可以拥有资源,并作为系统中拥有资源的一个基本单位.然而,线程本身并不拥有系统资源,而仅有一点必不可少的、能够保证独立运行的资源.
例如:在每个线程中都应具有一个用于控制线程运行的线程控制块(TCB,Thread Control Block)、用于指是被执行指令序列的程序计数器、保留局部变量、少数状态参数和返回地址等的一组寄存器和堆栈.

4.独立性
在同一进程中的不同线程之间的独立性要比不同进程之间的独立性要低得多.这是因为,为防止进程之间彼此干扰和破坏,每个进程都拥有一个独立的地址空间和其他资源,除了共享全局变量外,不允许其他进程的访问.但同一进程中的不同线程往往是为了提高并发性以及进行相互之间的合作而创建的,它们共享进程的内存地址空间和资源,如每个线程都可以访问它们所属进程地址空间中的所有地址
例如:一个线程的堆栈可以其他线程读、写,甚至完全清除.有一个线程打开的文件可以供其他线程读、写.

5.系统开销
在创建或撤消进程时,系统都要为之分配和回收进程控制块、分配或回收其他资源,如内存空间和I/O设备等.OS为此付出的开销,明显大于线程创建或撤消时所付出的开销
例如:在Solaris 2 OS中,线程的创建要比进程的创建快30倍,而线程上下文切换要比进程上下文切换快5倍.

6.支持多处理机系统
在多处理机系统中,对于传统的进程,即单线程的进程,不管有多少处理机,该进程只能运行在一个处理机上.但对于多线程进程,就可以将一个进程的多个线程分配到多个处理机上,使它们并发执行,这无疑将加速进程的完成

参考《计算机操作系统》(第4版) P82~P84

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值