前端需要掌握的操作系統(tǒng)的概念

操作系統(tǒng)概念:

  • 程序皮假、進(jìn)程帽撑、線程

程序:由源代碼生成的可執(zhí)行應(yīng)用叛薯。
進(jìn)程:一個(gè)正在運(yùn)行的程序可以看做一個(gè)進(jìn)程,進(jìn)程擁有獨(dú)立運(yùn)行所需要的全部資源帮匾,是資源分配的基本單位
線程:程序中獨(dú)立運(yùn)行的代碼段痴鳄。是調(diào)度運(yùn)行的基本單位瘟斜。

一個(gè)進(jìn)程是由一或多個(gè)線程組成,進(jìn)程只負(fù)責(zé)資源的調(diào)度和分配,線程才是程序真正的執(zhí)行單元哼转,負(fù)責(zé)代碼的執(zhí)行明未。

  • 進(jìn)程控制塊PCB

描述和控制進(jìn)程的運(yùn)行,系統(tǒng)為每個(gè)進(jìn)程定義了一個(gè)數(shù)據(jù)結(jié)構(gòu)——進(jìn)程控制塊(PCB)壹蔓。是進(jìn)程重要的組成部分趟妥,它記錄了操作系統(tǒng)所需的、用于描述進(jìn)程的當(dāng)前狀態(tài)和控制進(jìn)程的全部信息佣蓉。 操作系統(tǒng)就是根據(jù)進(jìn)程的PCB來(lái)感知進(jìn)程的存在披摄,并依此對(duì)進(jìn)程進(jìn)行管理和控制。 PCB是進(jìn)程存在的唯一標(biāo)識(shí)勇凭。
PCB主要包括:進(jìn)程標(biāo)識(shí)信息疚膊、處理機(jī)狀態(tài)(PSW)、進(jìn)程調(diào)度信息(狀態(tài)虾标、優(yōu)先級(jí)等)寓盗、進(jìn)程控制信息 (程序和數(shù)據(jù)地址、進(jìn)程同步和通信機(jī)制等)璧函。

  • 進(jìn)程上下文

進(jìn)程執(zhí)行時(shí)需要操作系統(tǒng)為其設(shè)置相應(yīng)的執(zhí)行環(huán)境傀蚌,如系統(tǒng)堆棧、地址映像寄存器蘸吓、程序計(jì)數(shù)器善炫、程序狀態(tài)字、打開(kāi)文件表以及相關(guān)通用寄存器等库继。 所以箩艺,把進(jìn)程的物理實(shí)體與支持進(jìn)程執(zhí)行的物理環(huán)境合稱為進(jìn)程上下文。

  • 進(jìn)程上下文切換

進(jìn)程上下文切換發(fā)生在不同的進(jìn)程之間而不是同一個(gè)進(jìn)程內(nèi)宪萄。
進(jìn)程上下文切換分成三個(gè)步驟:
(1) 把被切換進(jìn)程的相關(guān)信息保存到有關(guān)存儲(chǔ)區(qū)艺谆,例如該進(jìn)程的PCB中。
(2) 操作系統(tǒng)中的調(diào)度和資源分配程序執(zhí)行拜英,選取新的進(jìn)程静汤。
(3) 將被選中進(jìn)程的原來(lái)保存的正文部分從有關(guān)存儲(chǔ)區(qū)中取出,并送至寄存器與堆棧中,激活被選中進(jìn)程執(zhí)行聊记。

  • 單線程與多線程

單線程
每個(gè)正在運(yùn)行的程序(即進(jìn)程),至少包括一個(gè)線程恢暖,這個(gè)線程叫主線程排监。
主線程在程序啟動(dòng)時(shí)被創(chuàng)建,用于執(zhí)行main函數(shù)杰捂。只有一個(gè)主線程的程序舆床,稱作單線程程序。
主線程負(fù)責(zé)執(zhí)行程序的所有代碼(UI展現(xiàn)以及刷新,網(wǎng)絡(luò)請(qǐng)求挨队,本地存儲(chǔ)等等)谷暮。這些代碼只能順序執(zhí)行,無(wú)法并發(fā)執(zhí)行盛垦。
多線程
擁有多個(gè)線程的程序湿弦,稱作多線程程序。
iOS允許用戶自己開(kāi)辟新的線程腾夯,相對(duì)于主線程來(lái)講颊埃,這些線程,稱為子線程蝶俱“嗬可以根據(jù)需要開(kāi)辟若干子線程。
子線程和主線程都是獨(dú)立的運(yùn)行單元榨呆,各自的執(zhí)行互不影響罗标,因此能夠并發(fā)執(zhí)行。

  • 進(jìn)程間通信方式

進(jìn)程間通信(IPC积蜻,Interprocess communication)是一組編程接口闯割,讓程序員能夠協(xié)調(diào)不同的進(jìn)程,使之能在一個(gè)操作系統(tǒng)里同時(shí)運(yùn)行浅侨,并相互傳遞纽谒、交換信息。這使得一個(gè)程序能夠在同一時(shí)間里處理許多用戶的要求如输。因?yàn)榧词怪挥幸粋€(gè)用戶發(fā)出要求鼓黔,也可能導(dǎo)致一個(gè)操作系統(tǒng)中多個(gè)進(jìn)程的運(yùn)行,進(jìn)程之間必須互相通話不见。IPC接口就提供了這種可能性澳化。每個(gè)IPC方法均有它自己的優(yōu)點(diǎn)和局限性,一般稳吮,對(duì)于單個(gè)程序而言使用所有的IPC方法是不常見(jiàn)的缎谷。
IPC方法包括管道(PIPE)、消息排隊(duì)灶似、旗語(yǔ)列林、共用內(nèi)存以及套接字(Socket)。

  1. 管道( pipe ):管道是一種半雙工的通信方式酪惭,數(shù)據(jù)只能單向流動(dòng)希痴,而且只能在具有親緣關(guān)系的進(jìn)程間使用。進(jìn)程的親緣關(guān)系通常是指父子進(jìn)程關(guān)系春感。
  2. 有名管道 (named pipe) : 有名管道也是半雙工的通信方式砌创,但是它允許無(wú)親緣關(guān)系進(jìn)程間的通信虏缸。
  3. 信號(hào)量( semophore ) : 信號(hào)量是一個(gè)計(jì)數(shù)器,可以用來(lái)控制多個(gè)進(jìn)程對(duì)共享資源的訪問(wèn)嫩实。它常作為一種鎖機(jī)制刽辙,防止某進(jìn)程正在訪問(wèn)共享資源時(shí),其他進(jìn)程也訪問(wèn)該資源甲献。因此宰缤,主要作為進(jìn)程間以及同一進(jìn)程內(nèi)不同線程之間的同步手段。
  4. 消息隊(duì)列( message queue ) : 消息隊(duì)列是由消息的鏈表竟纳,存放在內(nèi)核中并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí)撵溃。消息隊(duì)列克服了信號(hào)傳遞信息少、管道只能承載無(wú)格式字節(jié)流以及緩沖區(qū)大小受限等缺點(diǎn)锥累。
  5. 信號(hào) ( sinal ) : 信號(hào)是一種比較復(fù)雜的通信方式缘挑,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生。
  6. 共享內(nèi)存( shared memory ) :共享內(nèi)存就是映射一段能被其他進(jìn)程所訪問(wèn)的內(nèi)存桶略,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建语淘,但多個(gè)進(jìn)程都可以訪問(wèn)。共享內(nèi)存是最快的 IPC 方式际歼,它是針對(duì)其他進(jìn)程間通信方式運(yùn)行效率低而專門設(shè)計(jì)的惶翻。它往往與其他通信機(jī)制,如信號(hào)量鹅心,配合使用吕粗,來(lái)實(shí)現(xiàn)進(jìn)程間的同步和通信。
  7. 套接字( socket ) : 套解口也是一種進(jìn)程間通信機(jī)制旭愧,與其他通信機(jī)制不同的是颅筋,它可用于不同及其間的進(jìn)程通信。
  • 線程之間的通信方式

鎖機(jī)制:包括互斥鎖输枯、條件變量议泵、讀寫(xiě)鎖

*互斥鎖提供了以排他方式防止數(shù)據(jù)結(jié)構(gòu)被并發(fā)修改的方法。
*讀寫(xiě)鎖允許多個(gè)線程同時(shí)讀共享數(shù)據(jù)桃熄,而對(duì)寫(xiě)操作是互斥的先口。
*條件變量可以以原子的方式阻塞進(jìn)程,直到某個(gè)特定條件為真為止瞳收。對(duì)條件的測(cè)試是在互斥鎖的保護(hù)下進(jìn)行的碉京。條件變量始終與互斥鎖一起使用。

信號(hào)量機(jī)制(Semaphore):包括無(wú)名線程信號(hào)量和命名線程信號(hào)量
信號(hào)機(jī)制(Signal):類似進(jìn)程間的信號(hào)處理
線程間的通信目的主要是用于線程同步螟深,所以線程沒(méi)有像進(jìn)程通信中的用于數(shù)據(jù)交換的通信機(jī)制谐宙。
  • 多進(jìn)程與多線程對(duì)比

多進(jìn)程與多線程對(duì)比
  • 什么時(shí)候用多線程?什么時(shí)候用多進(jìn)程?

1)需要頻繁創(chuàng)建銷毀的優(yōu)先用線程
原因請(qǐng)看上面的對(duì)比血崭。
這種原則最常見(jiàn)的應(yīng)用就是Web服務(wù)器了卧惜,來(lái)一個(gè)連接建立一個(gè)線程,斷了就銷毀線程夹纫,要是用進(jìn)程咽瓷,創(chuàng)建和銷毀的代價(jià)是很難承受的
2)需要進(jìn)行大量計(jì)算的優(yōu)先使用線程
所謂大量計(jì)算,當(dāng)然就是要耗費(fèi)很多CPU舰讹,切換頻繁了茅姜,這種情況下線程是最合適的。
這種原則最常見(jiàn)的是圖像處理月匣、算法處理钻洒。
3)強(qiáng)相關(guān)的處理用線程,弱相關(guān)的處理用進(jìn)程
什么叫強(qiáng)相關(guān)锄开、弱相關(guān)素标?理論上很難定義,給個(gè)簡(jiǎn)單的例子就明白了萍悴。
一般的Server需要完成如下任務(wù):消息收發(fā)头遭、消息處理⊙⒂眨“消息收發(fā)”和“消息處理”就是弱相關(guān)的任務(wù)计维,而“消息處理”里面可能又分為“消息解碼”、“業(yè)務(wù)處理”撕予,這兩個(gè)任務(wù)相對(duì)來(lái)說(shuō)相關(guān)性就要強(qiáng)多了鲫惶。因此“消息收發(fā)”和“消息處理”可以分進(jìn)程設(shè)計(jì),“消息解碼”实抡、“業(yè)務(wù)處理”可以分線程設(shè)計(jì)欠母。
當(dāng)然這種劃分方式不是一成不變的,也可以根據(jù)實(shí)際情況進(jìn)行調(diào)整澜术。
4)可能要擴(kuò)展到多機(jī)分布的用進(jìn)程艺蝴,多核分布的用線程
原因請(qǐng)看上面對(duì)比。
5)都滿足需求的情況下鸟废,用你最熟悉猜敢、最拿手的方式
至于“數(shù)據(jù)共享、同步”盒延、“編程缩擂、調(diào)試”、“可靠性”這幾個(gè)維度的所謂的“復(fù)雜添寺、簡(jiǎn)單”應(yīng)該怎么取舍胯盯,我只能說(shuō):沒(méi)有明確的選擇方法。但我可以告訴你一個(gè)選擇原則:如果多進(jìn)程和多線程都能夠滿足要求计露,那么選擇你最熟悉博脑、最拿手的那個(gè)憎乙。

  • 進(jìn)程狀態(tài)轉(zhuǎn)換圖

轉(zhuǎn)換圖

1)運(yùn)行:當(dāng)一個(gè)進(jìn)程在處理機(jī)上運(yùn)行時(shí),則稱該進(jìn)程處于運(yùn)行狀態(tài)叉趣。處于此狀態(tài)的進(jìn)程的數(shù)目小于等于處理器的數(shù)目泞边,對(duì)于單處理機(jī)系統(tǒng),處于運(yùn)行狀態(tài)的進(jìn)程只有一個(gè)疗杉。在沒(méi)有其他進(jìn)程可以執(zhí)行時(shí)(如所有進(jìn)程都在阻塞狀態(tài))阵谚,通常會(huì)自動(dòng)執(zhí)行系統(tǒng)的空閑進(jìn)程。

(2)就緒:當(dāng)一個(gè)進(jìn)程獲得了除處理機(jī)以外的一切所需資源烟具,一旦得到處理機(jī)即可運(yùn)行梢什,則稱此進(jìn)程處于就緒狀態(tài)。就緒進(jìn)程可以按多個(gè)優(yōu)先級(jí)來(lái)劃分隊(duì)列朝聋。例如嗡午,當(dāng)一個(gè)進(jìn)程由于時(shí)間片用完而進(jìn)入就緒狀態(tài)時(shí),排入低優(yōu)先級(jí)隊(duì)列冀痕;當(dāng)進(jìn)程由I/O操作完成而進(jìn)入就緒狀態(tài)時(shí)翼馆,排入高優(yōu)先級(jí)隊(duì)列。

(3)阻塞:也稱為等待或睡眠狀態(tài)金度,一個(gè)進(jìn)程正在等待某一事件發(fā)生(例如請(qǐng)求I/O而等待I/O完成等)而暫時(shí)停止運(yùn)行应媚,這時(shí)即使把處理機(jī)分配給進(jìn)程也無(wú)法運(yùn)行,故稱該進(jìn)程處于阻塞狀態(tài)猜极。
參考于:http://blog.csdn.net/hyqsong/article/details/51592992

  • 線程狀態(tài)轉(zhuǎn)換圖

image.png

參考于:http://www.cnblogs.com/bhlsheji/p/5099362.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末中姜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子跟伏,更是在濱河造成了極大的恐慌丢胚,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件受扳,死亡現(xiàn)場(chǎng)離奇詭異携龟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)勘高,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門峡蟋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人华望,你說(shuō)我怎么就攤上這事蕊蝗。” “怎么了赖舟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蓬戚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我宾抓,道長(zhǎng)子漩,這世上最難降的妖魔是什么豫喧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮幢泼,結(jié)果婚禮上嘿棘,老公的妹妹穿的比我還像新娘。我一直安慰自己旭绒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布焦人。 她就那樣靜靜地躺著挥吵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪花椭。 梳的紋絲不亂的頭發(fā)上忽匈,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音矿辽,去河邊找鬼丹允。 笑死,一個(gè)胖子當(dāng)著我的面吹牛袋倔,可吹牛的內(nèi)容都是我干的雕蔽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼宾娜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼批狐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起前塔,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嚣艇,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后华弓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體食零,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年寂屏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贰谣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡迁霎,死狀恐怖冈爹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情欧引,我是刑警寧澤频伤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站芝此,受9級(jí)特大地震影響憋肖,放射性物質(zhì)發(fā)生泄漏因痛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一岸更、第九天 我趴在偏房一處隱蔽的房頂上張望鸵膏。 院中可真熱鬧,春花似錦怎炊、人聲如沸谭企。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)债查。三九已至,卻和暖如春瓜挽,著一層夾襖步出監(jiān)牢的瞬間盹廷,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工久橙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俄占,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓淆衷,卻偏偏與公主長(zhǎng)得像缸榄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子祝拯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • word直接復(fù)制來(lái)了碰凶,格式就不改了。至于這門課怎么復(fù)習(xí)鹿驼,只要平時(shí)實(shí)驗(yàn)都認(rèn)真完成欲低、報(bào)告認(rèn)真寫(xiě),平時(shí)分都很高畜晰;考試的話...
    Jozhn閱讀 4,554評(píng)論 0 8
  • 又來(lái)到了一個(gè)老生常談的問(wèn)題砾莱,應(yīng)用層軟件開(kāi)發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個(gè)問(wèn)題開(kāi)始凄鼻,來(lái)談?wù)劜?..
    tangsl閱讀 4,127評(píng)論 0 23
  • 第一章 A:操作系統(tǒng):是管理計(jì)算機(jī)硬件并提供應(yīng)用程序運(yùn)行環(huán)境的軟件 1)資源分配器腊瑟,管理資源、分配資源 2)控制程...
    ZoeyeoZ閱讀 1,106評(píng)論 0 4
  • 腦圖與思維導(dǎo)圖 初中的時(shí)候看過(guò)《學(xué)習(xí)的革命》块蚌,里面提到最重要給我印象最深刻的就是這一張圖闰非,它告訴我,學(xué)習(xí)應(yīng)該是用發(fā)...
    陳素封閱讀 17,118評(píng)論 20 206
  • 手賬入坑已經(jīng)有三月有余峭范,頓時(shí)覺(jué)得生活明亮了起來(lái)财松。在手賬中記錄自己的idea,記錄自己的人生,還可以用來(lái)安排讀書(shū)與學(xué)...
    Sunny飛鳥(niǎo)與魚(yú)閱讀 582評(píng)論 0 1