1.調(diào)度的基本單位
在傳統(tǒng)的操作系統(tǒng)中,進程是作為獨立調(diào)度和分派的基本單位,每次調(diào)度是需要進行上下文的切換,由于進程有自己的程序段、相關(guān)數(shù)據(jù)段以及進程控制快,所以切換開銷比較大,引入線程的操作系統(tǒng)中,線程是作為單獨調(diào)度和分派的基本單位,線程切換上下文需要切換到內(nèi)核,所以開銷比協(xié)程大點,但是他沒有自己的數(shù)據(jù)段所以比進程開銷小,協(xié)程是屬于用戶級別的線程,它依附于進程或者線程執(zhí)行,所以他不是獨立調(diào)度和分派的基本單位,需要用戶開發(fā)調(diào)度算法,他的切換在用戶態(tài)就能完成
2.并發(fā)性
在引入線程的操作系統(tǒng)中,不僅進程之間可以并發(fā),同一進程的線程也能并發(fā),而協(xié)程是用戶完成調(diào)度的,所以協(xié)程之間只能有一個在運行,其他協(xié)程在等待運行的協(xié)程讓出CPU
3.擁有資源
進程是系統(tǒng)分配資源的基本單位,而線程和協(xié)程并不擁有系統(tǒng)資源,僅有一點必不可少、能保證獨立運行的資源。
4.獨立性
進程擁有自己的內(nèi)存空間,進程和進程之間內(nèi)存空間是獨立的隔離狀態(tài),而進程中線程和協(xié)程除了私有的運行資源外,其他是共享進程的系統(tǒng)資源
5.系統(tǒng)開銷
創(chuàng)建和銷毀進程時,系統(tǒng)都要為之分配和回收進程控制塊、分配或回收其他資源,比如內(nèi)存空間和IO等,開銷大。創(chuàng)建和銷毀線程或協(xié)程時,系統(tǒng)只需要分配或回收線程控制塊,開銷小。在進程切換時需要上下文的切換,而進程所需要的上下文比線程和協(xié)程大很多,切換線程需要切換到內(nèi)核而協(xié)程不需要,所以從切換開銷來看,進程比線程大,線程比協(xié)程大
6.使用場景
當單個進程的內(nèi)存不能滿足應用開銷時可以考慮多進程,在使用多進程時要注意進程之間的通信問題,在需要大量CPU和系統(tǒng)調(diào)用時,在多核系統(tǒng)上可以考慮使用多線程,這樣可以充分利用多核處理任務,在有大量IO操作的應用中可以考慮協(xié)程,因為大部分時間處于等待狀態(tài)為了避免不必要的從用戶切換到內(nèi)核代理的開銷,而且協(xié)程的調(diào)度算法可以用戶自己實現(xiàn),可以更加自己的場景優(yōu)化調(diào)度算法
7.系統(tǒng)相關(guān)性
進程在不同的系統(tǒng)實現(xiàn)方式不一樣,和系統(tǒng)強相關(guān),線程需要在引進線程的操作系統(tǒng)中才能使用,和系統(tǒng)強相關(guān),調(diào)度算法進程和線程都是系統(tǒng)固定的不能用戶自定義,協(xié)程和系統(tǒng)無關(guān),調(diào)度算法也可以用戶自定義
進程,線程,協(xié)程的區(qū)別
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關(guān)閱讀更多精彩內(nèi)容
- 一、進程??進程,直觀點說,保存在硬盤上的程序運行以后,會在內(nèi)存空間里形成一個獨立的內(nèi)存體,這個內(nèi)存體有自己獨立的...
- https://www.cnblogs.com/lxmhhy/p/6041001.html 現(xiàn)在多進程多線程已經(jīng)是...
- 現(xiàn)在多進程多線程已經(jīng)是老生常談了,協(xié)程也在最近幾年流行起來。python中有協(xié)程庫gevent,py web框架t...
- 1.進程 1.1什么是進程? 進程(Process)是計算機中的程序關(guān)于某數(shù)據(jù)集合上的一次運行活動,是系統(tǒng)進行資源...
- 什么是進程和線程 有一定基礎(chǔ)的小伙伴們肯定都知道進程和線程。 進程是什么呢? 直白地講,進程就是應用程序的啟動實例...