Android開發(fā)藝術(shù)探索之讀書筆記二

進(jìn)程跟線程的理解

進(jìn)程(英語:process),是計(jì)算機(jī)中已運(yùn)行程序的實(shí)例,是系統(tǒng)進(jìn)行資源分配和調(diào)度(若不支持線程機(jī)制,進(jìn)程的系統(tǒng)調(diào)度的單位。否則,線程是系統(tǒng)調(diào)度的單位)的獨(dú)立單位。

為了更好的介紹進(jìn)程這個(gè)概念,先從多道程序設(shè)計(jì)說起,多道程序設(shè)計(jì)技術(shù)是操作系統(tǒng)最早引入的技術(shù),它的設(shè)計(jì)思想是允多個(gè)程序同時(shí)進(jìn)入內(nèi)存并運(yùn)行,其目的是為了CPU的利用率,進(jìn)而提高系統(tǒng)效率。多道程序設(shè)計(jì)技術(shù)允許多個(gè)程序同時(shí)進(jìn)入內(nèi)存并運(yùn)行,在這樣的并發(fā)環(huán)境下,如何描述、刻畫這樣執(zhí)行的程序呢?因此引入了“進(jìn)程”。

程序本身只是指令、數(shù)據(jù)及其組織形式的描述,進(jìn)程才是程序(那些指令和數(shù)據(jù))的真正運(yùn)行實(shí)例。若干進(jìn)程有可能與同一個(gè)程序相關(guān)系,且每個(gè)進(jìn)程皆可以同步(循序)或異步(平行)的方式獨(dú)立運(yùn)行。

進(jìn)程特點(diǎn):

進(jìn)程是是正在運(yùn)行程序的抽象。

有狀態(tài)(新生、運(yùn)行、等待、就緒、結(jié)束),切換耗時(shí)。

系統(tǒng)資源(如內(nèi)存、文件)以進(jìn)程為單位分配。

操作系統(tǒng)為每個(gè)進(jìn)程分配了獨(dú)立的地址空間

操作系統(tǒng)通過“調(diào)度”把控制權(quán)交給進(jìn)程。

線程

線程(英語:thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位,線程是進(jìn)程中的一個(gè)執(zhí)行路徑。

線程特點(diǎn):

有標(biāo)識(shí)符ID

有狀態(tài)(產(chǎn)生、中斷、非中斷、結(jié)束)及狀態(tài)轉(zhuǎn)換,所以需要提供一些狀態(tài)轉(zhuǎn)換操作

不運(yùn)行時(shí)需要保存上下文環(huán)境,所以需要程序計(jì)數(shù)器等寄存器

有自己的棧和棧指針

共享所在進(jìn)程的地址空間和其它資源

進(jìn)程與線程區(qū)別

定義方面:進(jìn)程是程序在某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng);線程是進(jìn)程中的一個(gè)執(zhí)行路徑。(進(jìn)程可以創(chuàng)建多個(gè)線程)

角色方面:在支持線程機(jī)制的系統(tǒng)中,進(jìn)程是系統(tǒng)資源分配的單位,線程是CPU調(diào)度的單位。

資源共享方面:進(jìn)程之間不能共享資源,而線程共享所在進(jìn)程的地址空間和其它資源。同時(shí)線程還有自己的棧和棧指針,程序計(jì)數(shù)器等寄存器。

獨(dú)立性方面:進(jìn)程有自己獨(dú)立的地址空間,而線程沒有,線程必須依賴于進(jìn)程而存在。

開銷方面。進(jìn)程切換的開銷較大。線程相對(duì)較小。

重點(diǎn)

面試其實(shí)如果沒把握,只需要回答:進(jìn)程是系統(tǒng)資源分配的單位,線程是CPU調(diào)度的單位,進(jìn)程可以創(chuàng)建多個(gè)線程

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

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

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