- 1、本文档共55页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统进程与线程进程与线程的概念进程:一个进程就是一个正在执行程序的实例,包括程序计数器、寄存器和变量的当前值。一个进程是某种类型的一个活动,它有程序、输入、输出以及状态。单个处理器可被若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。线程:线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。进程和线程的区别进程有独立的地址空间,线程没有单独的地址空间;进程之间的资源不共享,同一进程下的线程资源共享;(共享哪些资源?堆内存、全局变量、静态变量、进程当前目录以及文件等资源)创建、撤销和切换进程系统所付出的开销远大于线程,进程使用的系统资源比线程多得多,原因是它需要更多的地址空间。为进程创建一个虚拟地址空间需要许多系统资源。系统中要保留大量的记录,这要占用大量的内存;进程是资源分配的最小单位,线程是程序执行的最小单位,是CPU调度和分派的基本单位。Windows中,进程不执行任何东西,它只是线程的容器。1.调度在传统的操作系统中,拥有资源的基本单位和独立调度、分派的基本单位都是进程。而在引入线程的操作系统中,则把线程作为调度和分派的基本单位。而把进程作为资源拥有的基本单位,使传统进程的两个属性分开,线程便能轻装运行,从而可显著地提高系统的并发程度。在同一进程中,线程的切换不会引起进程的切换,在由一个进程中的线程切换到另一个进程中的线程时,将会引起进程的切换。2.并发性在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间,亦可并发执行,因而使操作系统具有更好的并发性,从而能更有效地使用系统资源和提高系统吞吐量。例如,在一个未引入线程的单CPU操作系统中,若仅设置一个文件服务进程,当它由于某种原因而被阻塞时,便没有其它的文件服务进程来提供服务。在引入了线程的操作系统中,可以在一个文件服务进程中,设置多个服务线程,当第一个线程等待时,文件服务进程中的第二个线程可以继续运行;当第二个线程阻塞时,第三个线程可以继续执行,从而显著地提高了文件服务的质量以及系统吞吐量。3.拥有资源不论是传统的操作系统,还是设有线程的操作系统,进程都是拥有资源的一个独立单位,它可以拥有自己的资源。一般地说,线程自己不拥有系统资源(也有一点必不可少的资源),但它可以访问其隶属进程的资源。亦即,一个进程的代码段、数据段以及系统资源,如已打开的文件、I/O设备等,可供问一进程的其它所有线程共享。4.系统开销由于在创建或撤消进程时,系统都要为之分配或回收资源,如内存空间、I/O设备等。因此,操作系统所付出的开销将显著地大于在创建或撤消线程时的开销。类似地,在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销。此外,由于同一进程中的多个线程具有相同的地址空间,致使它们之间的同步和通信的实现,也变得比较容易。如何选择多进程与多线程进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。多线程的优缺点多进程之间共享资源很麻烦,多线程之间的资源是共享的;将相互独立的任务分为多个线程,可以使它们交叉进行,从而增大程序的吞吐量,这样在一个线程进行I/O时,CPU不必闲置,可以处理其他线程;交互程序可以通过多线程的方式加速响应,多线程可以将程序中处理用户输入/输出的部分与其他部分分开。多线程缺点(何时不应使用多线程):对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。由于资源的竞争可能会造成死锁。需要复杂的机制来避免死锁。如果没有做好线程同步,可能会对对公有变量的同时读或写,从而产生错误。需要复杂的机制进行线程同步。死锁的四个条件资源互斥、占有时可请求、不可抢占、已发生死锁的多个线程中存在环形等待。(资源)死锁的四个必要条件:互斥条件。每个资源要么分配给一个进程,要么就是可用的。也就是说一旦被分配给一个进程,那么它就不可用。占有和等待条件。已经得到了某个资源的进程可以再请求新的资源。不可抢占条件。已分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进
文档评论(0)