概念
- 程序并不能單獨運行累盗,只有將程序裝在到內(nèi)存中寒矿,系統(tǒng)為它分配資源才能運行,而這種執(zhí)行的程序就叫做進程若债。程序和進程的區(qū)別在于符相,程序是指令的集合,它是進程運行的靜態(tài)描述文件蠢琳;進程是程序的一次執(zhí)行活動啊终,屬于動態(tài)概念。
操作系統(tǒng)的內(nèi)存允許多個程序同時加載傲须,在操作系統(tǒng)的調(diào)度下蓝牲,可以通過輪詢分配資源實現(xiàn)并發(fā)執(zhí)行,大大的提高了CPU的利用率泰讽。
區(qū)別
- 進程是具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合上的運行活動例衍,進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位
- 線程是進程的一個實體,是CPU調(diào)度和分配的基本單位已卸,它是比線程更小的能獨立運行的進本單位佛玄。線程不擁有系統(tǒng)資源,它和同進程的其他線程共享系統(tǒng)資源累澡。
- 一個線程可以創(chuàng)建和撤銷另一個線程梦抢,同一個進程的多個線程可以并發(fā)執(zhí)行。
- 進程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式愧哟。進程有獨立的地址空間奥吩,一個進程崩潰后具伍,在保護模式下不會對其它進程造成影響。而線程值是一個進程中的不同執(zhí)行路徑圈驼。線程有自己的堆棧和局部變量,但是沒有單獨的地址空間望几。一個線程死掉就等于整個進程都死掉绩脆,所有多進程的程序要比多線程的程序健壯。但是在進程切換時橄抹,資源耗費比較大靴迫,效率要更差一些。對于一些要求同時進程并共享某些數(shù)據(jù)的并發(fā)操作楼誓,只能使用線程玉锌。