溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

協(xié)程、線程、進(jìn)程三者的區(qū)別是什么

發(fā)布時(shí)間:2021-06-22 16:50:21 來源:億速云 閱讀:168 作者:Leah 欄目:編程語言

協(xié)程、線程、進(jìn)程三者的區(qū)別是什么,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

1.進(jìn)程

進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的獨(dú)立單位。程序段、數(shù)據(jù)段、PCB三部分組成了進(jìn)程實(shí)體(進(jìn)程映像),PCB是進(jìn)程存在的唯一標(biāo)準(zhǔn)。

協(xié)程、線程、進(jìn)程三者的區(qū)別是什么

每個(gè)進(jìn)程都有自己的獨(dú)立內(nèi)存空間,不同進(jìn)程通過進(jìn)程間通信來通信。由于進(jìn)程比較重量,占據(jù)獨(dú)立的內(nèi)存,所以上下文進(jìn)程間的切換開銷(棧、寄存器、虛擬內(nèi)存、文件句柄等)比較大,但相對比較穩(wěn)定安全。

2.線程

引入線程之后,進(jìn)程只作為除CPU之外的系統(tǒng)資源的分配單元(如:打印機(jī)、內(nèi)存地址空間等都是分配給進(jìn)程的)

線程是進(jìn)程的一個(gè)實(shí)體,線程是內(nèi)核態(tài),而且是CPU調(diào)度和分派的基本單位,它是比進(jìn)程更小的獨(dú)立運(yùn)行的基本單位,線程自己基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器,一組寄存器和棧),但是它可與同屬一個(gè)進(jìn)程的其他線程共享進(jìn)程所擁有的全部資源。

線程間通信注意通過共享內(nèi)存,上下文切換很快,資源開銷較少,但相比進(jìn)程不夠穩(wěn)定容易丟失數(shù)據(jù)。

進(jìn)程和線程的關(guān)系:一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù)。CPU的最小調(diào)度單元是線程,所以單進(jìn)程多線程是可以利用多核CPU的。

3.協(xié)程

協(xié)程是一種用戶態(tài)的輕量級線程,協(xié)程的調(diào)度完全由用戶控制。協(xié)程擁有自己的寄存器上下文和棧。協(xié)程調(diào)度切換時(shí),將寄存器上下文和棧保存到其他地方,在切回來的時(shí)候,恢復(fù)先前保存的寄存器上下文和棧,直接操作棧則基本沒有內(nèi)核切換的開銷,可以不加鎖的訪問全局變量,所以上下文的切換非常塊。

協(xié)程通過在線程中實(shí)現(xiàn)調(diào)度,避免了內(nèi)核級別的上下文切換造成的性能損失,進(jìn)而突破了線程在IO上的性能瓶頸。

看完上述內(nèi)容,你們掌握協(xié)程、線程、進(jìn)程三者的區(qū)別是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI