原文:http://www.reibang.com/p/83c481a8bcef
進(jìn)程( process ):當(dāng)你的程序一旦被載入到內(nèi)存中執(zhí)行倔韭,那么你的這段程序就是一個(gè)進(jìn)程。一個(gè)或多個(gè)進(jìn)程組成系統(tǒng)中運(yùn)行的應(yīng)用程序酷窥。另外系統(tǒng)也會(huì)為應(yīng)用的每一個(gè)進(jìn)程分配獨(dú)立的CPU和內(nèi)存等資源堤尾。
進(jìn)程是系統(tǒng)分配資源的最小單位。
線程 ( thread ):進(jìn)程中執(zhí)行的每一個(gè)任務(wù)指的就是線程藻三,系統(tǒng)不會(huì)為其分配內(nèi)存資源触机,各個(gè)線程共享進(jìn)程擁有的內(nèi)存資源。
進(jìn)程和線程的關(guān)系:
1削锰、內(nèi)存對(duì)資源分配的最小單位是進(jìn)程通铲,而進(jìn)程執(zhí)行的最小單位是線程。
2器贩、一個(gè)程序至少有一個(gè)進(jìn)程测暗,一個(gè)進(jìn)程至少有一個(gè)線程。
3磨澡、線程是不能夠脫離進(jìn)程而獨(dú)立運(yùn)行的。
4质和、當(dāng)你的進(jìn)程運(yùn)行時(shí)只產(chǎn)生了一個(gè)線程稳摄,被稱為單線程,否則被稱為多線程饲宿。(JavaScript是單線程厦酬,同一時(shí)間只能做一件事胆描。它用途在于與用戶交互,以及操作DOM仗阅,決定了它是單線程)
5昌讲、單線程和多線程都是指在同一進(jìn)程中的單或多線程。
6减噪、線程越多意味著你在一個(gè)進(jìn)程中同時(shí)執(zhí)行的任務(wù)也就越多短绸。
舉例:
1、假如進(jìn)程為一家公司筹裕,那么線程指的是為公司服務(wù)的員工醋闭。
2、公司擁有自己獨(dú)立的辦公空間朝卒,員工共享公司的辦公空間证逻。
3、一家公司至少有一名員工抗斤,而員工也必須有一家自己所屬的公司囚企。
4、一位員工需要一件件的去完成工作瑞眼,多位員工可以協(xié)調(diào)完成工作龙宏。
再來歸納下概念:
1、公司:進(jìn)程
2负拟、員工:線程
3烦衣、公司有一個(gè)員工:?jiǎn)尉€程
4、公司有多名員工:多線程
5掩浙、一位員工需要獨(dú)立完成工作:?jiǎn)尉€程需要按照程序的順序依次執(zhí)行花吟,也就是說只有前面的處理好,后面的才會(huì)得到執(zhí)行厨姚。
6衅澈、多位員工協(xié)調(diào)完成工作:多個(gè)線程在進(jìn)程中協(xié)作完成任務(wù),從而可以最大程度的使用內(nèi)存資源谬墙。
7今布、擁有獨(dú)立辦公空間:進(jìn)程之間獨(dú)立擁有系統(tǒng)所分配的內(nèi)存資源
8、員工共享公司辦公空間:線程沒有自己的內(nèi)存資源拭抬,多個(gè)線程共享進(jìn)程的內(nèi)存資源
CPU:CPU (中央處理器)是計(jì)算機(jī)的核心配件部默,它的作用相當(dāng)于我們?nèi)祟惖拇竽X,負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行運(yùn)算和處理造虎。
內(nèi)存:與CPU進(jìn)行溝通的橋梁傅蹂。數(shù)據(jù)只能通過內(nèi)存這座橋梁到達(dá)CPU,前提是CPU為空閑狀態(tài),否在必須在內(nèi)存這座橋梁上等待份蝴。
1犁功、當(dāng)內(nèi)存不足時(shí),系統(tǒng)會(huì)自動(dòng)從硬盤上劃分出一部分空間來擴(kuò)充內(nèi)存婚夫,這一部分內(nèi)存就是常說的虛擬內(nèi)存浸卦。虛擬內(nèi)存的讀寫能力與真正的內(nèi)存相差很遠(yuǎn),所以當(dāng)內(nèi)存不足時(shí)案糙,硬盤會(huì)一直響限嫌。
2、數(shù)據(jù)如果在內(nèi)存當(dāng)中由于某種原因未被釋放或無法釋放(該數(shù)據(jù)即是內(nèi)存泄漏數(shù)據(jù))侍筛,勢(shì)必會(huì)造成內(nèi)存的浪費(fèi)萤皂,由此造成內(nèi)存運(yùn)行速度減慢,甚至崩潰匣椰。
我們安裝的應(yīng)用都是在內(nèi)存中運(yùn)行的裆熙,然后在CPU中處理,如果沒有內(nèi)存禽笑,CPU無法接收到數(shù)據(jù)入录。