zoukankan      html  css  js  c++  java
  • 线程与进程详解

    线程与进程的比较:
      线程具有许多传统进程具有的特征,所以,又称为轻型进程(Light-Weight Process)或进程元,相应地把传统进程称为重型进程(Heavy-Weight Process),传统进程相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都拥有若干个线程,至少也有一个线程。下面我们从调度性、并发性、系统开销和拥有资源等方面对线程和进程进行比较。
      1)【调度】
      在传统的操作系统中,作为拥有资源的基本单位和独立调度、分派的基本单位都是进程。【【而在引入线程的操作系统中,则把线程作为调度和分派的基本单位,而进程作为资源拥有的基本单位】】,------>>>把传统进程的两个属性分开,使线程基本上不拥有资源,这样线程便能轻装前进,从而可显著地提高系统的并发程度。<<<------在同一进程中,线程的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线程时,将会引起进程的切换。
      2)【并发性】
      在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可以并发执行,使得操作系统具有更好的并发性,从而能更加有效地提高系统资源的利用率和系统的吞吐量。例如,在一个未引入线程的单CPU操作系统中,若仅设置一个文件服务进程,当该进程由于某种原因而被阻塞时,便没有其它的文件服务进程来提供服务。在引入线程的操作系统中,则可以在一个文件服务进程中设置多个服务线程。当第一个线程等待时,文件服务进程中的第二个线程可以继续运行,以提供文件服务;当第二个线程阻塞时,则可由第三个继续执行,提供服务。显然,这样的方法可以显著地提高文件服务的质量和吞吐量。
      3)【拥有资源】
      不论是传统的操作系统,还是引入了线程的操作系统,进程都可以拥有资源,是系统中拥有资源的一个基本单位。一般而言,线程自己不拥有系统资源(也有一点必不可少的资源),但它可以访问其隶属进程的资源,即一个进程的代码段、数据段及所拥有的系统资源,如已打开的文件、I/O设备等,可以提供该进程中的所有线程所共享。
      4)【系统开销】
      在创建或撤销进程时,系统都要为之创建和回收进程控制块,分配或回收资源,如内存空间和I/O设备等,操作系统所付出的开销明显大于线程创建或撤销时的开销。类似地,在进程切换时,涉及到当前进程CPU环境的保存及新被调度运行进程CPU环境的设置,而线程的切换则仅需要保存和设置少量寄存器内容,不涉及存储器管理方面的操作,所以就切换代价而言,进程也是远高于线程的。此外,由于一个进程中的多个线程具有相同的地址空间,在同步和通信的实现方面线程也比进程容易。在一些操作系统中,线程的切换、同步和通信都无须操作系统内核的干预。

     

    -----------进程的【互斥】、【同步】

    【互斥】:互斥是并发执行的多个进程由于竞争同一资源而产生的相互排斥的关系。

    【同步】:同步是进程间共同完成一项任务时直接发生相互作用的关系。


     【总结:】

    ----------------在引入线程的操作系统中:
       进程的属性:1.进程是一个【资源拥有的基本单位】。
       线程的属性:1.线程是【能独立运行的基本单位】,因而也是  独立调度和分派  的基本单位
       
       线程比进程先进很多。现在流行多线程。***********   Over

    ------------《计算机操作系统(第三版)》,西安电子科技大学出版社---P73页

    Stay Hungry, Stay Foolish, Walking in Life
  • 相关阅读:
    sql学习笔记
    正则表达式30分钟入门教程(转) 收藏
    学习Javascript闭包(Closure)
    Bug等级规范
    下载1G的东西用1M网速理论上要用多长时间?
    C#多线程学习(四) 多线程的自动管理(线程池)
    JS调用WebServers
    北京软件公司排名
    Js调用WebServices
    C#多线程学习(三) 生产者和消费者
  • 原文地址:https://www.cnblogs.com/ywx-vashon/p/4895783.html
Copyright © 2011-2022 走看看