Linux操作系统的进程和线程的详解.docx

上传人:安*** 文档编号:17706107 上传时间:2022-05-26 格式:DOCX 页数:7 大小:16.83KB
返回 下载 相关 举报
Linux操作系统的进程和线程的详解.docx_第1页
第1页 / 共7页
Linux操作系统的进程和线程的详解.docx_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《Linux操作系统的进程和线程的详解.docx》由会员分享,可在线阅读,更多相关《Linux操作系统的进程和线程的详解.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Linux操作系统的进程和线程的详解Linux操作系统的进程和线程的详解Linux操作系统中进程和线程是一对经常搞混概念的名词术语,下面由学习啦我为大家整理了Linux操作系统的进程和线程详解的相关知识,希望对大家有帮助!Linux操作系统的进程和线程的详解一、进程和线程的定义首先我们先要弄清楚二者的定义,究竟什么是进程,什么又是线程?根据wikipediaprocess中的定义,进程是一个计算机程序的实例,由一个或者多个线程组成.同样在wikipediathread中对线程的定义是:线程的执行是由计算机的fork操作来将一个程序生成一个或者多个并发的运行任务.在单核的计算机中,线程并非真正并

2、行的,而是分时的并发。也就是讲多个线程无需等待另一个线程的完成,而只需要等待CPU的时间片.在多核的计算机中,多个线程能够真正的并行,也就是同时执行,同时获得CPU时间片.同样,在当代计算机中,通常都是分时操作系统(timesharing),也就是不同的进程通过时间片来获得CPU的控制权,来执行本人的代码.同样,单核的系统进程也只能是并发的,而多核的系统能够到达并行.Linux操作系统的进程和线程的详解二、进程和线程的联络二者的关系能够简单的一句话概括为,通常,一个进程能够包括多个线程,一个线程只能属于一个进程.一个进程能够生成多个线程,而这些线程之前分享地址空间和相应的资源,在线程切换时,并

3、没有过多的开销.进程和线程在分享地址空间和资源的区别.那么,对于同样一个应用,我们能够选择进程来实现,可以以选择线程来实现,那么二者有什么区别呢?我们应该怎样选择呢?Linux操作系统的进程和线程的详解三、进程和线程的区别从本质上讲,二者只是在能否分享地址空间,及分享多少地址空间上是有差异的,而至于其它的区别也都是由于这个本质区别来引起的.下面逐一地进行简单的讲明.关于分享地址空间传统意义上,进程之间是不分享地址空间的,而线程是分享着进程的地址空间.但是在Linux中,会有不同,请参考下面特定操作系统的进程和线程部分的具体讲明.安全性由于进程之前是不分享资源和地址空间的,所以不会存在过多的安全

4、问题(相比于线程).而由于多个线程分享着一样的地址空间和资源,所以会存在线程之间有可能会恶意修改或者获取非受权数据的可能.这也就是为什么最近,chrome和IE8相继开场使用多进程来替代之前的多线程(不同的tab之间).强健性由于多个线程分享同一个进程的地址空间和相关的资源,所以当一个线程出现crash,那么可能会导致相应的地址空间和资源会出现问题,进而导致其它的线程也crash.这个也很好理解,一个简单的大家可能都经历过的就是IE7吧,当一个tab忽然崩溃时,所有的tab都会崩溃,这时通常IE要重启(重启进程,重新生成线程).而多进程则不存在这个问题,由于不同的地址空间和资源,当一个进程崩溃

5、时,并不会影响到其它进程.同样,假如你用过chrome,假如一个tab崩溃了(chrome那搞笑的提示信息),我们只需要关掉这个tab即可,并不会影响到其它的tab.性能进程的安全性,强健性是建立在独立的地址空间和独立的资源的条件下的,所以进程的启动,关闭,切换相比于线程会有更多的开销.而这种开销的差异在Windows下愈加显著,请参考下面特定操作系统的进程和线程部分的具体讲明.Linux操作系统的进程和线程的详解四、特定操作系统的进程和线程进程和线程是依靠于特定的操作系统的,譬如Windows和Linux在实现进程和线程就有很大的差异,这一部分主要讲明Windows和Linux下进程和线程的

6、一些特定的特征.Windows通常做过Windows多任务系统开发的程序员肯定会知道,Windows中的进程比线程有很大的开销,要一定坚持使用线程,那么为什么呢?这里有个讨论可供参考:WhyiscreatinganewprocessmoreexpensiveonWindowsthanLinux?简单总结下,原因:这是Windows的设计的理念所致(多用户和并行的要求不高的特性)在创立进程时,会有相当的系统调用Linux让我们回到本文的摘要部分的引入,我的室友提出的对于我而言闻所未闻的新观点.那么,在Linux下进程和线程真的没有本质区别吗?首先大家能够参考这个帖子,ThreadsvsProce

7、ssesinLinux.下面内容摘自ThreadsvsProcessesinLinux.Linuxusesa1-1threadingmodel,with(tothekernel)nodistinctionbetweenprocessesandthreads-everythingissimplyarunnabletask.*OnLinux,thesystemcallcloneclonesatask,withaconfigurablelevelofsharing,amongwhichare:CLONE_FILES:sharethesamefiledescriptortable(insteadofc

8、reatingacopy)CLONE_PARENT:dontsetupaparent-childrelationshipbetweenthenewtaskandtheold(otherwise,childsgetppid()=parentsgetpid()CLONE_VM:sharethesamememoryspace(insteadofcreatingaCOWcopy)fork()callsclone(leastsharing)andpthread_create()callsclone(mostsharing).*forkingcostsatinybitmorethanpthread_cre

9、ateingbecauseofcopyingtablesandcreatingCOWmappingsformemory,buttheLinuxkerneldevelopershavetried(andsucceeded)atminimizingthosecosts.Switchingbetweentasks,iftheysharethesamememoryspaceandvarioustables,willbeatinybitcheaperthaniftheyarentshared,becausethedatamayalreadybeloadedincache.However,switchin

10、gtasksisstillveryfastevenifnothingisshared-thisissomethingelsethatLinuxkerneldeveloperstrytoensure(andsucceedatensuring).Infact,ifyouareonamulti-processorsystem,notsharingmayactuallybeaperformanceboon:ifeachtaskisrunningonadifferentprocessor,synchronizingsharedmemoryisexpensive.上面其实已经讲得很清楚了,对于内核而言,进程和线程是没有区别的在用户的角度而言,区别在于怎样创立(clone),假如使用是leastshared,那么就类似于进程的创立(最少分享)假如使用的是mostsharing那么就类似于线程的创立(最多分享)由于Linux内核开发人员的努力和优化,创立,切换,关闭进程和线程之前的开销差异已经特别的小了Linux操作系统的进程和线程的详解Linux操作系统中进程和线程是一对经常搞混概念的名词术语,下面由学习啦我为大家整理了Linux操作系统的进程和线程详解的相关知识,希望对大家有帮助!Linux操作系统的进程和线程的详解一、进程和线程的定义首先我们先要弄清楚二者的推荐度:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁