2015-12-17 17:38:16 1336瀏覽
之前為大家講過了《iOS操作系統(tǒng)的進(jìn)程生命周期》的一篇文章,本文主要講解iOS系統(tǒng)進(jìn)程生存期間主要經(jīng)歷的四個(gè)階段,包括創(chuàng)建階段、修改階段、執(zhí)行階段和終止階段。和大家一起交流溝通下。
1、創(chuàng)建階段
一旦一個(gè)新進(jìn)程被創(chuàng)建,它就會(huì)收到自己的棧區(qū)并進(jìn)入“新的”(new)狀態(tài)。然后就能進(jìn)入修改狀態(tài)。如果沒有必要修改,進(jìn)程就進(jìn)入執(zhí)行狀態(tài)。
2、修改階段
跟其他的許多操作系統(tǒng)不一樣,iOS在進(jìn)程被創(chuàng)建時(shí),并不自動(dòng)向進(jìn)程傳送啟動(dòng)參數(shù)或?yàn)橹峙湟粋€(gè)控制臺(tái),因?yàn)樗俣ù蠖鄶?shù)進(jìn)程不需要這些資源。如果一個(gè)進(jìn)程確實(shí)需要兩個(gè)之中任何一項(xiàng)資源的話,創(chuàng)建它的線程可以修改該進(jìn)程從而給它分配資源。
3、執(zhí)行階段
在一個(gè)進(jìn)程成功地創(chuàng)建和修改后,它轉(zhuǎn)向就緒狀態(tài)并進(jìn)入到執(zhí)行階段。在這個(gè)階段,一個(gè)進(jìn)程能夠訪問CPU并且運(yùn)行。
在執(zhí)行階段,進(jìn)程處于三種狀態(tài)之一:就緒、運(yùn)行或空閑。處于就緒狀態(tài)的進(jìn)程是在等待訪問CPU并就緒開始執(zhí)行指令;處于運(yùn)行狀態(tài)的進(jìn)程是正在控制CPU并執(zhí)行著指令;而一個(gè)空閑的進(jìn)程則是處于睡眠狀態(tài),在它有資格運(yùn)行以前等待一個(gè)外部事件發(fā)生。當(dāng)一個(gè)進(jìn)程被調(diào)度運(yùn)行時(shí),它從就緒狀態(tài)過渡到運(yùn)行狀態(tài)。在沒有搶先的多任務(wù)調(diào)度下,一個(gè)被調(diào)度的進(jìn)程一直在CPU上運(yùn)行直至被掛起或終止。一個(gè)進(jìn)程有兩種被掛起的方法:它可以自己向內(nèi)核明確地表示它要放棄CPU,轉(zhuǎn)入就緒狀態(tài),等待下一次輪到自己時(shí)再運(yùn)行;也可以因?yàn)榈却粋€(gè)外部事件的發(fā)生而掛起,當(dāng)進(jìn)程開始等待一個(gè)外部事件時(shí),內(nèi)核會(huì)隱含地把它轉(zhuǎn)入空閑狀態(tài),從而被掛起,繼續(xù)等待外部事件發(fā)生。事件發(fā)生后,內(nèi)核再把它轉(zhuǎn)入到就緒狀態(tài),于是該進(jìn)程等待輪到它時(shí)再運(yùn)行。
4、終止階段
進(jìn)程生存周期的最后一個(gè)階段是終止階段。當(dāng)一個(gè)進(jìn)程完成它的功能并關(guān)閉(稱為自終止)或者另外一個(gè)進(jìn)程殺死它時(shí),就進(jìn)入終止階段。當(dāng)一個(gè)進(jìn)程被殺死或自終止時(shí)就進(jìn)入死亡狀態(tài)。被終止掉的進(jìn)程一直保持死亡狀態(tài),不被激活,直到內(nèi)核宣布收回它所占的全部資源。內(nèi)核也可能在進(jìn)程終止時(shí)記錄關(guān)于進(jìn)程棧的統(tǒng)計(jì)信息。當(dāng)該進(jìn)程的資源被重分配時(shí),它就轉(zhuǎn)出死亡狀態(tài),徹底從系統(tǒng)中消失。
經(jīng)歷以上四個(gè)階段iOS系統(tǒng)進(jìn)程就完成了一個(gè)循環(huán),iOS操作系統(tǒng)進(jìn)程還有很多的旁枝末節(jié)不能在這里一一敘述。關(guān)注扣丁學(xué)堂資訊頻道或是iOS開發(fā)課程視頻,了解更多更有用的iOS領(lǐng)域知識(shí)。
查看更多關(guān)于“iOS資訊”的相關(guān)文章>>