今天在看阮一峰關(guān)于 JS單線程介紹的時(shí)候盯捌,發(fā)生疑惑:什么是單線程。同時(shí)經(jīng)常聽見進(jìn)程蘑秽。也就產(chǎn)生疑問:什么是進(jìn)程饺著?兩者的區(qū)別是什么箫攀?同時(shí)我們?cè)谫ICPU的時(shí)候,經(jīng)常聽見4核8進(jìn)程幼衰,這又是什么靴跛?
進(jìn)程和線程是計(jì)算機(jī)中中的概念,進(jìn)程相當(dāng)于我們?cè)陔娔X桌面上開了一個(gè)程序渡嚣,例如運(yùn)行了QQ汤求,這QQ就是一個(gè)進(jìn)程。而線程就是在QQ這個(gè)進(jìn)程上面严拒,我們可以進(jìn)行QQ相關(guān)的操作扬绪。比如聊天,發(fā)文件等裤唠。**
具體概念:
- 進(jìn)程:(process)挤牛,是計(jì)算機(jī)中已運(yùn)行程序的實(shí)體。其在分時(shí)系統(tǒng)是作為基本運(yùn)行單位种蘸。而在面向過程設(shè)計(jì)的系統(tǒng)中墓赴,進(jìn)程是程序的基本執(zhí)行實(shí)體,但在面向線程設(shè)計(jì)的系統(tǒng)中航瞭,進(jìn)程本身不是基本單位诫硕,其是線程的容器 簡而言之:其是具有一定獨(dú)立功能的程序、是系統(tǒng)進(jìn)行資源進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立的單位刊侯。重點(diǎn)在于系統(tǒng)調(diào)度和單獨(dú)的單位
- 線程:(thread)章办,是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。其被包含在進(jìn)程之中滨彻,是進(jìn)程中實(shí)際運(yùn)作單位藕届。簡而言之:線程是進(jìn)程中的一個(gè)實(shí)體,是由CPU調(diào)度的分派的基本單位亭饵。
區(qū)別:
進(jìn)程是獨(dú)享內(nèi)存空間和相關(guān)文件休偶、資源,而線程是在被包含在進(jìn)程中的辜羊,是去共享這個(gè)進(jìn)程的空間踏兜、文件和相關(guān)資源。資源分配給進(jìn)程八秃,同一進(jìn)程的所有線程共享該進(jìn)程的所有資源(同一進(jìn)程中的多條線程將共享該進(jìn)程中的全部系統(tǒng)資源碱妆,如虛擬地址空間,文件描述符和信號(hào)處理等等喜德。但同一進(jìn)程中的多個(gè)線程有各自的調(diào)用棧(call stack)山橄,自己的寄存器環(huán)境(register context),自己的線程本地存儲(chǔ)(thread-local storage)。)一個(gè)進(jìn)程可以有很多的線程航棱,每條線程并行去執(zhí)行不同的任務(wù)睡雇,至少有一個(gè)線程(主線程)
線程在執(zhí)行過程中,需要協(xié)同同步饮醇,不同的進(jìn)度中的線程要利用消息通信的辦法實(shí)現(xiàn)同步
真正在電腦上進(jìn)行運(yùn)行的是線程
CPU的四核心和八線程它抱,四核心,說明這個(gè)cpu在物理上朴艰,其的硬件存在四個(gè)核心观蓄。在這里的線程并不是跟上面軟件中的線程是同一個(gè)意思。這里的線程指的是更像上面進(jìn)程的意思祠墅。
同時(shí)一個(gè)核心就只能處理一個(gè)線程侮穿。這個(gè)相當(dāng)于一個(gè)人在一個(gè)時(shí)間段中只能干一件事情。
為什么四個(gè)核心可以有八個(gè)進(jìn)程呢毁嗦?
在這里亲茅,就要提到英特爾用到超線程技術(shù),將一個(gè)核心可以對(duì)于兩個(gè)線程狗准。也就是說一個(gè)核心可以同時(shí)運(yùn)行兩個(gè)線程克锣。參考