操作系统之线程

一、线程的概念

      线程可以理解为小型、轻型的进程,它是包含在进程中的,线程和进程的具体区别如下:

调度:一个进程可以有多个线程。线程作为CPU调度和分派的基本单位,进程则作为资源分配的基本单位。同一进程中的线程切换不会引起进程切换,从而避免昂贵的系统调用,但是从一个进程的线程切换到另一个进程的线程时,依然会引起进程切换。

切换时的系统开销:由于在创建或者撤销进程时,系统都要为之分配或回收资源,因此,操作系统所付出的开销将显著地大于创建或者撤消线程的开销。在进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置,而线程切换只需要保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。同时,由于同一个进程中的多个线程具有相同的地址空间,致使它们之间的同步和通信的实现也变得比较容易。

占用的资源:进程是拥有系统资源的一个独立的单位,它可以拥有自己的资源。线程自己一般不拥有资源(有一点必不可少的资源,包括程序计数器,一组寄存器和栈等),但它可以访问其隶属进程的资源,如进程代码段,数据段以及系统资源(已打开的文件,I/O设备等)。

单线程进程与多线程进程区别如下:

多线程的优点

  1. 响应度高(Responsiveness):即使其部分阻塞或执行较冗长操作,该程序仍能继续执行,从而增加了对用户的相应程度。

  2. 资源共享(Resource Sharing):线程默认共享它们所属进程的内存和资源。代码和数据共享的优点是它允许一个应用程序在同一地址空间有多个不同的活动线程。

  3. 经济(Economy):进程创建所需要的内存和资源的分配比较昂贵。由于线程能共享它们所属进程的资源,所以创建和切换线程会更为经济。

  4. 可拓展性(Scalability):多线程的优点之一是能充分使用多处理器体系结构。以便每个进程能并行运行在不同的处理器上。不管有多少CPU,单线程进程只能运行在一个CPU上,在多CPU上使用多线程加强了并发功能。

二、多线程模型

     有两种不同的方法来提供线程支持:用户层的用户线程(User Threads)和内核层的内核线程。用户线程受内核支持,而无需内核管理;而内核线程由操作系统支持和管理。事实上所有当代操作系统都支持内核线程。

用户线程与内核线程具有的关系如下:

1.多对一模型:多对一模型将许多用户级线程映射到一个内核线程。线程管理由线程库在用户空间进行的,因而效率比较高。但是如果一个线程执行了阻塞系统调用,那么整个线程会阻塞。因为任意时刻只能有一个线程能够访问内核,多个线程不能并行运行在多处理器上。

2.一对一模型:一对一模型每个用户线程映射到一个内核线程。该模型在一个线程执行阻塞系统调用时,能允许另一个线程继续执行。它也允许多个线程能并行运行在多处理器系统上,这种模型的唯一缺点是每创建一个用户线程就会创建一个相应的内核线程。由于创建内核线程的开销会影响应用程序的性能,所以这种模型的绝大多数实现限制了操作系统所支持的线程数量。

3.多对多模型:多对多模型多路复用了许多用户线程到同样数量或更小数量的内核线程上。多对多模型没有这两者的缺点:开发人员可创建任意多的用户线程,并且相应内核线程能在多处理器系统上并发执行。而且当一个线程执行阻塞系统调用时,内核能调度另一个线程来执行。

参考博客:http://blog.csdn.net/u013007900/article/details/49964515

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值