現代操作系統的兩大功能:硬件控制和資源管理。
IOS軟件結構基礎
同時運行多個程序就是多任務。支持這種的就是多任務操作系統。多個程序中的一個子程序叫做一個線程。
一個進程控制一個子集的操作系統資源。操作系統和cpu都支持虛擬內存,每個進程都可能運行在分離的地址空間,用來保護其他進程。
決定運行哪個進程,這叫做預留。預留經常是由一個操作系統的核心來做的,這個叫做內核。
一個操作系統會使用多個手段來預留線程。這也取決於操作系統的可選支持情況。
先進、先出是一個最簡單的方式。它所佔負載很小。是公平的:即所有的線程都均等,先來,就先服務。FIFO.
FIFO不適合實時的交互處理應用,實時處理需要快速、低cpuzu佔用率
一種可能的解決方法是給每個進程機遇應用地綁定優先級,保證實時應用先佔用cpu.
預約方式利用爭搶來取代運行完整的,這個叫做爭適者生存。這種操作系統叫做適者生存的多任務操作系統。
注意:上下文交換髮生生在操作系統內核從cpu刪除一個線程,且把其他線程填進來的時候。
換言之,上下文交換髮生在電腦在當前工作下改變任務的時候上下文交換可以使安靜的執行在cpu時間的術語中,因爲所有的處理器註冊器必須保存給開始拿掉cpu和還原給一開始放入cpu的線程。上下文本質是讓爭搶線程知道誰離開了,並讓正要運行的線程知道上一個進程持續的時間。
多任務爭搶的好處是:他是週期性的。
他是難以打破的,沒有誰可以壟斷資源。
缺點是:他不如全運行完的方式有效利用。他加大了軟件應用的複雜性。
show process Command 詳細解釋:
CPU utilization for five seconds: 98%/65%; one minute: 87%; five minutes: 49%
PID QTy PC Runtime (ms) Invoked uSecs Stacks TTY Process
1 Csp 602F5488 4 472 8 2624/3000 0 Load Meter
2 ME 60542634 3192 4261 749 7756/9000 0 OSPF Hello
3 Lst 602E0E00 1408 278 5064 5632/6000 0 Check heaps
4 Cwe 602D85E0 0 1 0 5572/6000 0 Chunk Manager
5 Cwe 602E6AA8 4 11 363 5620/6000 0 Pool Manager
6 Mst 6025F148 0 2 0 5588/6000 0 Timers
7 Mwe 6001D610 0 3 0 5476/6000 0 Serial Backgroun
8 Mwe 60326EE0 0 1 011608/12000 0 OIR Handler
9 Msi 6033B2D0 0 80 0 5612/6000 0 Environmental mo
10 Lwe 6033D0A8 2272 298 7624 4916/6000 0 ARP Input
11 Mwe 604D0180 0 4 0 5544/6000 0 DDR Timers
12 Mwe 604E67A8 0 2 011596/12000 0 Dialer event
13 Lwe 60638AE8 12 2 6000 5592/6000 0 Entity MIB API
14 Mwe 600218D8 0 1 0 5632/6000 0 SERIAL A'detect
15 Cwe 602EBBB0 0 1 0 5636/6000 0 Critical Bkgnd
16 Mwe 602B0370 172 1599 10710720/12000 0 Net Background
17 Lwe 602544C8 4 27 14811404/12000 0 Logger
18 Msp 602722D8 124 2348 52 5424/6000 0 TTY Background
19 Msp 602AF8F0 24 2358 10 5756/6000 0 Per-Second Jobs
20 Msi 60333560 68 2352 28 5616/6000 0 Partition Check
21 Hwe 602AFB64 10792 15682 688 5608/6000 0 Net Input
——More—— _
? PID— 進程描述號。 每一個進程都有一個單獨的數字來描述和與其他的進程相區分。
? Qty— 進程優先級和進程的狀態。 第一個字母的優先級含義如下:
o K— 沒有優先級,進程被殺了。
o D— 沒有優先級,進程癱了。
o X— 沒有優先級, 進程中斷了。
o C— 緊急優先級
o H— 高優先級。
o M— 中優先級。
o L— 低優先級。
剩下的兩個字母代表當前的處理狀態:
o *— cpu正在處理。
o E— 進程正在等待一個重要動作。
o S— 進程休眠了。
o rd— 進程已經在運行了。
o we— 進程idle了, 等待一個重要動作。
o sa— 進程idle了, 等待一個指定的絕對時間的產生。
o si— 進程idle了,等待一個指定的時間間隔。
o sp— 進程idle了, 等待一個指定的時間間隔(週期性的)。
o st— 進程idle了,等待一個時間終止。
o hg— 進程掛起了。
o xx— 進程死了。
? PC— 當進程持續放棄cpu時程序計數註冊器的內容。 這個地方寫的是內存的地址用以代表進程開始執行寫一次佔用的cpu.值0代表正在運行。
? Runtime— 使用cpu累計時間 (毫秒級)。
? Invoked— 進程的建立起進程運行在cpu的總時間
? uSecs— 每次進程使用平均cpu時間 (毫秒級)。
? TTY— 控制檯設備相關的進程。0代表進程不是被控制檯和通訊器相關的主系統控制檯
? Process— 進程的名字。進程的名字不需要是唯一的 (一個進程的幾分拷貝可以同時是激活狀態的)。 但是進程id號必須是唯一的。。
如果你運行了show processs命令在幾個不同的ios系統, 你會發現有幾個進程一直都有。 這些進程中的大多數 是用來執行家務管理的或者是提供服務給其他的進程。
普通常見系統進程和他們的功能。
系統進程代號 功能
EXEC console和異步口直接tty上來的命令行 (CLI)。 EXEC 進程提供用戶 輸入和對接口粘貼的支持。
Pool manager 管理緩衝池
Check heaps 週期性地確認 IOS代碼運行時間的完整性 以及結構化內存的負載。
Per-minute jobs 一般系統進程,每60秒進行一次系統維護, 如 檢查系統背景進程的堆疊
Per-second jobs 一般系統進程,用以運行每秒都要重複的工作。
Critical background 緊急優先級進程, 用來執行基本的系統服務, 如:當隊列元素被用盡的時候,預留附加的IOS 隊列元素 .
Net background 發送接口keepalive包, 非扼殺端口, 和進程接口狀態的改變。
Logger 查找消息 (debug, error, and informational) 通過內核排隊 由其他進程並 輸出他們到控制檯 以及可選的syslog服務器。
TTY background 管理直接通過tty異步連接上來的 激活的和啓動"EXEC"進程讓他們去激活。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.