進程,線程基本知識

今天在看阮一峰關(guān)于 JS單線程介紹的時候,發(fā)生疑惑:什么是單線程。同時經(jīng)常聽見進程。也就產(chǎn)生疑問:什么是進程?兩者的區(qū)別是什么?同時我們在買CPU的時候,經(jīng)常聽見4核8進程,這又是什么?

進程和線程是計算機中中的概念,進程相當(dāng)于我們在電腦桌面上開了一個程序,例如運行了QQ,這QQ就是一個進程。而線程就是在QQ這個進程上面,我們可以進行QQ相關(guān)的操作。比如聊天,發(fā)文件等。**
具體概念:

  • 進程:(process),是計算機中已運行程序的實體。其在分時系統(tǒng)是作為基本運行單位。而在面向過程設(shè)計的系統(tǒng)中,進程是程序的基本執(zhí)行實體,但在面向線程設(shè)計的系統(tǒng)中,進程本身不是基本單位,其是線程的容器 簡而言之:其是具有一定獨立功能的程序、是系統(tǒng)進行資源進行資源分配和調(diào)度的一個獨立的單位。重點在于系統(tǒng)調(diào)度和單獨的單位
  • 線程:(thread),是操作系統(tǒng)能夠進行運算調(diào)度的最小單位。其被包含在進程之中,是進程中實際運作單位。簡而言之:線程是進程中的一個實體,是由CPU調(diào)度的分派的基本單位。

區(qū)別

  1. 進程是獨享內(nèi)存空間和相關(guān)文件、資源,而線程是在被包含在進程中的,是去共享這個進程的空間、文件和相關(guān)資源。資源分配給進程,同一進程的所有線程共享該進程的所有資源(同一進程中的多條線程將共享該進程中的全部系統(tǒng)資源,如虛擬地址空間,文件描述符信號處理等等。但同一進程中的多個線程有各自的調(diào)用棧(call stack),自己的寄存器環(huán)境(register context),自己的線程本地存儲(thread-local storage)。)

  2. 一個進程可以有很多的線程,每條線程并行去執(zhí)行不同的任務(wù),至少有一個線程(主線程)

  3. 線程在執(zhí)行過程中,需要協(xié)同同步,不同的進度中的線程要利用消息通信的辦法實現(xiàn)同步

  4. 真正在電腦上進行運行的是線程

詳細(xì)區(qū)別
簡單解釋
參考

CPU的四核心和八線程,四核心,說明這個cpu在物理上,其的硬件存在四個核心。在這里的線程并不是跟上面軟件中的線程是同一個意思。這里的線程指的是更像上面進程的意思。
同時一個核心就只能處理一個線程。這個相當(dāng)于一個人在一個時間段中只能干一件事情。

為什么四個核心可以有八個進程呢?
在這里,就要提到英特爾用到超線程技術(shù),將一個核心可以對于兩個線程。也就是說一個核心可以同時運行兩個線程。參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容