2015-12-17 17:29:51 1621瀏覽
iOS的進(jìn)程與其他操作系統(tǒng)里的單線程基本相同。每一個iOS進(jìn)程有且只有一個線程,每個進(jìn)程都有自己的??臻g、CPU上下文,并且都能控制諸如存儲器和控制臺設(shè)備(后面再詳述)這樣的資源。為了使開銷最小,iOS并不采用進(jìn)程間的存儲保護(hù),在上下交換期間不執(zhí)行任何存儲器管理。因此,雖然每個進(jìn)程都有分配給自己的存儲空間,但其他的進(jìn)程也同樣能訪問該空間。
iOS采用帶優(yōu)先級的運行直至結(jié)束策略調(diào)度的可執(zhí)行進(jìn)程。開始,這種沒有搶先的模型對一個要迅速處理輸入報文的操作系統(tǒng)來說是一個很次的選擇。在某種意義上說,這是對的。iOS交換需要快速改善其處理模型的實時反映限制。然而,這種模型也有許多優(yōu)點從而讓它比較適合于支持在外部保持關(guān)鍵交換路徑的進(jìn)程,一些優(yōu)點如下所示:
1、低開銷
協(xié)調(diào)的多任務(wù)通常會使線程間的上下文交換更少,同時也減少了CPU總的調(diào)度開銷。這也是iOS開發(fā)課程中非常重要的一門。
2、 對編程者更簡單
因為編程者能控制一個進(jìn)程將在哪里被掛起,這就很容易限制上下文交換發(fā)生在共享數(shù)據(jù)不會被修改的地方,從而減少了偏向某一進(jìn)程和進(jìn)程間死鎖的可能性。
iOS操作系統(tǒng)的進(jìn)程生命周期:
除了在iOS被中斷期間,可以在任何時候創(chuàng)建和終止一個進(jìn)程,一個進(jìn)程可以被內(nèi)核(iOS初始化時)或被其他運行的進(jìn)程創(chuàng)建或終止。這里所用的中斷是指硬件中斷。當(dāng)CPU被中斷時,它暫時掛起現(xiàn)在運行的線程,并開始運行相應(yīng)的中斷處理程序,在CPU運行中斷處理程序期間不能創(chuàng)建新的進(jìn)程。
在iOS中有一個進(jìn)程負(fù)責(zé)創(chuàng)建多個進(jìn)程:分析程序(Parser),它是一個解釋iOS配置和可執(zhí)行命令的函數(shù)集合。它在iOS初始化期間被內(nèi)核喚醒,也可以被為控制臺和Telnet會話提供命令行接口(CLI,Command—line Interface)的進(jìn)程喚醒。
任何時候用戶鍵入一個命令或從一個文件讀出一個配置命令行,分析程序都會解釋該內(nèi)容并采取相應(yīng)的動作。一些配置命令可能只是一個值的集合,如IP地址,而有的命令可能比較復(fù)雜,如路由命令或事件監(jiān)視命令。有些命令也會引起分析程序創(chuàng)建新的進(jìn)程,比如:當(dāng)通過CLI鍵入router eigrp配置命令時,分析程序就創(chuàng)建一個稱為ipigrp(jtlJ果ipigrp進(jìn)程還沒被啟動)的進(jìn)程開始處理EIGRP IP報文。如果鍵入norouter eigrp命令,分析程序就會終止ipigrp進(jìn)程進(jìn)而停止任何IEIGRP IP路由。
本文主要介紹了iOS進(jìn)程生命周期,其實iOS進(jìn)程的生存期間還要經(jīng)歷幾個階段,扣丁學(xué)堂下一篇iOS開發(fā)資訊文章中我們將會詳細(xì)介紹iOS進(jìn)程生存期間經(jīng)歷的四大階段。
查看更多關(guān)于“iOS資訊”的相關(guān)文章>>