THU_C2 - 【考型 1】process...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: 【考型 1】process 行程的執行必須是循序的 CPU 逐一執行行程的每一個指令 直到行程完成 當一個行程被 rolled out 出 , , 。 記憶體後,就喪失了使用 CPU 的能力。但是當一個行程在等待 I/O complete 時,雖然也喪失了使用 CPU 的能力,但是並沒有被 rolled out,而是待在 block/wait state。常見的 process 定義有: 1. 被作業系統分配 CPU 的對象 2. 被作業系統分配資源的對象 3. 行程是以 PCB 的形式存在作業系統中 4. 行程是存在於作業系統中的一群獨立,不需同步的程式活動 系統為了管理處於 ready state 和 waiting state 的行程,大多使用串列結構來管理,有下列兩點不同: 1. ready state 的串列結構內含的行程具有優先權的順序,通常可以使用優先權串列(Heap)來製作備 妥狀態的串列 2. waiting state 的串列結構內含的行程不具有任何優先權的順序,通常是根據所等待的事件的先後順 序來決定處理的順序 【考型 1.1】行程從執行狀態下放棄 CPU 給其它使用者的情形 1. 更高優先權的行程 preemption 2. CPU time 滿期 3. 中斷發生 4. 不正常或正常終止 5. 提出 I/O 要求,並且等候 I/O 完成 【考型 1.2】行程產生新的行程的做法(清大) 1. 父行程繼續執行而子行程也同時執行 2. 父行程等待子行程完成後才繼續執行 3. 父行程和子行程共享全部的變數 4. 子行程只共享部分的父行程變數 5. 父行程和子行程不共享任何資源 【考型 1.3】process 定義 一個正在執行的程式;又稱為 heavy weight process。一個行程包括了: text section 目前運作的 program counter 數值和處理器的暫存器內容 暫用資料(譬如:subprogram 的參數、返回位址以及暫時性變數)的行程堆疊 整體變數的 data section 行程是一項 active 的個體,具備程式計數器來指明下一個執行的指令,以及一些相關的資源。 【考型 1.4】convoy effect 當所有其它的行程都在等待一個大行程離開 CPU 的時候,就產生了護送現象。這個現象造成了 CPU 和裝置的使用率降低,如果比較短的行程可以先做,裝置將可以獲得更高的使用率。發生在當有一個 CPU-bound 的工作和多個 I/O-bound 的工作時,I/O bound 的工作排隊護送等待 CPU bound 的工作 完成。不可搶奪的排班法都會有護送效應的問題。生活中有很多這類例子:如老人家爬樓梯,比較慢, 走在後面就必須放慢腳步才行;又如馬路上,若有特別慢的車,則後面也常會有一長串的車陣。 【考型 1.5】PCB 作業系統利用 PCB 表示一個行程的存在。PCB 是一種資料結構,內容描述了一個行程的重要資訊。 【考型 1.5.1】PCB 的內容 PCB 記載代表行程的相關資訊,包括: Process State Edited by HongJie Dai 1 of 10 Process ID:行程唯一的識別碼 Process priority program counter CPU 暫存器,包括 accumulators、index registers、stack pointer 以及 general purpose register 等,還 有一些 condition code。當中斷發生時,這些狀態資訊以及程式執行計數器,必須儲存起來以便稍 後利用,使程式能於中斷之後順利的繼續執行,其中包括: CPU scheduling 相關資訊 記憶體管理資訊 會計資訊,包括 CPU 和實際時間的使用數量、時限、帳號,工作或行程號碼 輸出∕入狀態資訊 實際上,PCB 只是用來儲存各個行程的相關資訊而已。 【考型 1.6】turnaround time 回復時間經常受到輸出裝置的速度限制。回復時間也跟時間量有關,如果大部分的工作都能在一次時間 量內完成它的下一次 CPU 分割,也就是將時間量變長,則對於回復時間的縮短將大有幫助。但是若是 將時間量定的太長又將退化成為 FCFS,因此一般都是使用 80%的 CPU 分割應該小於時間量的標準。 【考型 1.6.1】turnaround time 計算 turnaround time = 完成時間-抵達時間 = execution time - waiting time 【考型 1.6.2】turnaround time 定義 從行程進入到電腦,一直到該行程完成並且離開電腦,這整段時間稱為回復時間。包括了等待記憶體、 就緒佇列等待、CPU 執行和輸入∕輸入動作執行等時間。使用者提出程式直到整個工作完成的時間。 【考型 1.6.3】在多元程式規劃下的 turnaround time 有可能比只有單一執行的的系統短嗎 不可能,頂多跟只有單一執行緒的系統相同。因為在 multiprogramming system 下,程式的 turnaround time = waiting time + running time + I/O burst time + wait operation 的 waiting time;而在 single-job system 其 turnaround time = running time + I/O Burst time 【考型 1.7】行程由 user mode 轉為 kernel mode 的時機 1. 執行系統呼叫要求作業系統提供服務 2. 執行非法指令 【考型 1.8】context switch 轉換 CPU 到另一個 process 時必須把舊行程的狀態儲存起來,然後再載入新行程的儲存狀態,這項任 務稱為內容轉換。 【考型 1.8.1】減少內容轉換負擔的方法(中山) 替每個行程準備一個獨立的暫存器集合,若暫存器數目夠多,則每個行程可以擁有自己的暫存器集 合。內容轉換時,作業系統只要切換指向暫存器集合的指標即可 系統行程和使用者行程各擁有獨立的暫存器集合,因為系統行程和使用者行程彼此經常發生內容轉 換,屆時作業系統只要改變指標指向其它的暫存器集即可 利用執行緒降低內容轉換的負擔。執行緒是一個 LWP,同一個工作內的執行緒彼此可以有共享的 資源,因此相對的執行緒的區域暫存器數目就較行程少 行程的內容放在 PCB 中,當一個內容轉換發生時,kernel 在它的 PCB 儲存舊行程的內容,以及載入 排班新行程的儲存內容來執行。 內容轉換的時間長短大多取決於硬體的支援程度。譬如一些處理器提供多組暫存器,如此只要將指標指 到目前的暫存器即可完成內容轉換;如果行程多過於暫存器組,則仍使用前述的方法將暫存器組搬進及 搬出記憶體。 【考型 1.8.2】context switch 轉換過程 Edited by HongJie Dai 2 of 10 將目前的行程的狀態儲存,載入新行程的儲存狀態。通常狀態資訊包括:CPU register、process state、table list for I/O queue、memory support allocation information 等。作業系統需將行程使用的 CPU register 的內 容和其它有關資訊存入記憶體中,再將新行程的資訊載入 CPU register,且作業系統需將目前 PCB 指 標指向其所在的 PCB record,然後再將控制權交給下一個行程。若 register 數目夠多,不同的行程可以 佔用不同的 register set,此時作業系統只需更換 register set pointer 即可完成內容轉換。 【考型 1.8.3】執行緒和行程發生內容轉換時 Among thread Among process 儲存執行緒的內容(可能包括暫存器) 並載入其它執行緒 如同執行緒一般,但是還要儲存記憶體內容 , 【考型 1.8.4】內容轉換的時機 當分配的 CPU 時間到屆滿時,或是被更高優先權的行程插隊時。 【考型 1.8.5】內容轉換定義 當行程被迫離開 CPU,需將當時的 process information(PCB、PSW 等)儲存,並載入新的行程的 information,此種額外的負擔稱為 context switch。 【考型 1.8.6】內容轉換在哪裡可能發生 A、B、C 可能發生 context switching。 A:被高優先權行程插隊 B:等待 I/O 運作完成 C:run-time error or 被迫終止 【考型 1.9】允許行程同時執行的理由 1. information sharing 2. computation speedup 3. modularity 4. convenience 【考型 1.10】行程和 program 的不同 process:一個 active 的 entity,擁有 program counter;一個執行中的 program;一段程式碼加上當前的 執行環境(program counter、stack、CPU register 等) 有 PCB,為作業系統排班和分配資源的對象。 ,擁 Program:並非 process,程式是一個 passive 個體,像是儲存在磁碟的檔案內容。通常程式是以二進位 可執行檔的型式存於磁碟上。程式必須被載入 memory,並且放在行程中才能執行。 程式啟動的基本步驟有: 1. high level language 首先經 complier 轉成 assembly language 碼 2. 經 assembler 轉成機器語言的目的模組 3. linker 接著結合眾多模組,配合函式庫,以便理清所有的聯結 4. loader 接著把機器碼至入適當的記憶體位置以便稍後讓處理器來執行 【考型 1.11】communication 兩種常用的通信方式: 1. message-passing:資訊藉著作業系統提供的行程間聯繫設施作交換。進行通信前必須要先開啟連接 管道,而和它進行通信者的名稱一定要先知道,不論該通信者是在相同 CPU 上的另一個行程,或 Edited by HongJie Dai 3 of 10 是在另一個電腦上的行程。以網路為例,每部電腦都有一個 host name,相同的每個行程都有一個 行程名稱,該名稱會轉換成對應的識別名,作業系統藉由識別名就可以找尋到該行程。訊息傳遞的 方式只有在少數資料需要交換時比較有用,跟 shared-memory 的方式比較起來較容易製作 2. shared-memory:在共用記憶體模式中,行程使用 map-memory system call 來取得其它行程所擁有 的記憶體區段之存取權。在正常情況下,作業系統會防止一個行程存取別的行程之記憶體,共用記 憶體的方式則會要求行程之間一致地同意移去此項限制,如此一來行程之間就可以在共用區段內藉 由讀寫資料來交換資訊。資訊的形式和位置都由行程之間決定,而不是由作業系統控制。共用記憶 體方式可取得最大的通信速度及便利性,因為它是用記憶體運作的速度來操作的,不過在實作上比 較困難且在保護及同步方面仍有許多問題存在。 【考型 1.11.1】message-passing 和 shared-memory 的差別 Shared-memory 1. 溝通的行程之間須有共用變數,透過這些共用變數交換資 訊 2. 對於共用變數的存取需透過 critical section 的設計,保證 其互斥 progress 和 bounded waiting 3. process communication 責任落在 programmer,作業系統 只提供記憶體 Message-passing 1. 允許行程透過 send、receive 指令 直接交換訊息 2. 須有 link 建立、維護及 message 遺失的管理機制 3. 提供 communication 的責任落在 作業系統身上 4. 有 direct 和 indirect communication 兩種方式 【考型 1.12】state transition diagram e plet Wa I/O it fo r I/ Oc Com om ple te ide ec ry rd o ule em ed o m sch int rm load -te ng job Lo ich wh ent, I/O Long ev ccurs eo complet 紅色的部分表示處於 kernel mode 下,藍色則是處於 user mode。 【考型 1.12.1】何時會有狀態轉移 Edited by HongJie Dai 4 of 10 A:Low-priority process 無法拿到 CPU 且又佔用太長時間的記憶體空間 B:當 suspended-blocked queue 中有個優先權高於 suspended-ready queue 中的行程,且 wait 的 event 即將發生,則可以轉回 blocked state C:由 medium-term scheduler 將其 swap out 以空出記憶體空間 D:long-time event occurs or resource are available E:wait for I/O complete F:若有個 high-priority 之 suspended-ready process 剛離開此狀態,作業系統可能會搶先執行該行程, 此時作業系統可能將其移到 suspended-ready queue,以 release partial memory space 【考型 1.12.2】行程被 scheduler 調用的情形 【考型 2】thread 執行緒是 CPU 使用時的一個基本單位。它和屬於同一行程的其它執行緒共用程式碼區域、資料區域和 作業系統資源。一般而言執行緒製作的方式有三種型態: Many-to-One:多執行緒模式中,多個使用者層次的執行緒對應到一個核心執行緒。執行緒的管理 在使用者空間執行,所以很有效率。但是如果一個執行緒呼叫暫停的系統呼叫,整個行程就暫停了 同時因為一次只有一個執行緒可以存取核心,數個執行緒不能在多個處理器上平行地執行。一般常 見於在不支援核心執行緒的作業系統上製作使用者層次的執行緒程式庫時,才採使用此一模式 2. One-to-One:每個使用者執行緒對應到一個核心執行緒。其提供了比 Many-to-One 更多的並行功 能。當一個執行緒執行了暫停的系統呼叫時,它允許另外一個執行緒執行;也允許多個執行緒在多 處理器上並行執行。缺點是每一次產生使用者執行緒時就要產生相對應的核心執行緒,因為產生核 心執行緒的額外負擔可能造成應用程式性能的負擔,這種模式的大部分實作都限制了系統支援的執 行緒數目 3. Many-to-Many:對應許多使用者執行緒到較少或數目相等的核心執行緒。相對於 Many-to-One(雖 然允許程式開發者產生所需數目的執行緒,但是因為核心一次只能排班一個執行緒所以真正的並行 並不可得)和 One-to-One(開發時要注意在一個應用程式中不能產生太多執行緒)的缺點,多對多 模式則不受這些缺點困擾:開發者可以產生自己所需的執行緒數目,相對的核心執行緒可以在多處 理機上平行地執行。另外當一個執行緒執行暫停的系統呼叫時,核心可以安排另一個執行緒執行 【考型 2.1】執行緒內容(逢甲) 1. 包括了 PCB、program counter、stack、暫存器。 【考型 2.2】LWP 和 HWP 的差別(成大、中原) Process 是一個正在執行的程式,而執行緒則是一個正在執行的程式單元。所以,process 是一個被分配 CPU 跟電腦資源的對象,而執行緒只是一個被分配 CPU 的對象。一個行程可以分出多個執行緒,執 行緒間可以共用主記憶體的程式碼、資料空間和資源。這種共用資源的方式只要在產生行程最初,進行 一次電腦資源的分配,就不需要對往後產生的新執行緒進行資源的分配,如此可以減輕作業系統的負擔。 因為同一個工作內的執行緒彼此會有共享的資料,因此執行緒之間的獨立邏輯暫存器數目較少,如此當 執行緒之間發生內容轉換的時候,需要儲存和重新讀取的 CPU register 較傳統的行程較少。 Edited by HongJie Dai 5 of 10 Thread(Lightweight process) 內容轉換負擔較輕 Process(Heavyweight process) 重 執行緒間有共享的暫存器 各行程間是獨立的 平行程度較高 低 同一個工作內的執行緒可以共享資源 行程間無共享資源 【考型 2.3】執行緒產生時共享的資源(中正) 當行程建立一個執行緒時,會共用 program counter、stack、CPU register、state 等。 【考型 2.4】peer 執行緒共享的資源 code section、data section、作業系統資源,像是開啟的檔案和信號。 【考型 2.5】執行緒的缺點(中原) 如果核心是單執行緒的,那麼任何使用者層次的執行緒執行暫停的系統呼叫,將造成整個行程暫停執 行;即使這個行程有別的執行緒可以執行。 【考型 2.6】執行緒的優點(中原) 撰寫多執行緒程式的好處有: 增加對使用者 responsiveness 增加在行程中的資源共用(resource sharing) 經濟(economy) 利用多處理器架構(utilization of multiprocessor architecture) 【考型 2.7】多執行緒程式的好處(中原) 減少內容轉換的負擔,並且提升平行執行的程度。 【考型 2.8】user thread and kernel thread 對於執行緒的支援可分為: 1. 使用者層次提供 (稱為 user threads) :使用者層次的執行緒是使用者看的到而核心不知道的執行緒。 使用者執行緒的支援是在核心之上,由使用者層次的執行緒程式庫所製作,並且由執行緒程式庫所 管理。此程式庫提供了執行緒產生、排班和管理的支援,但是沒有從核心獲得支援。因為核心不知 道使用者階層的執行緒,所有執行緒的產生和排班都在使用者空間完成,不需要核心的介入。因此 使用者層次的執行緒通常在產生和管理上都比較快。使用者階層的執行緒在執行時最終都會對應到 核心階層的某一相關執行緒 2. 核心提供(稱為 kernel threads) :核心層次的執行緒是由作業系統核心所支援和管理。核心執行緒 由作業系統直接支援。執行緒的產生、排班和管理是由核心在核心空間完成。因為是由作業系統負 責,所以核心執行緒通常在產生和管理上都比 user threads 慢。因為是由核心管理執行緒,如果一 個執行緒執行暫停的系統呼叫時,核心可以安排應用程式中的其它執行緒執行,如果在多處理器的 環境,核心可以安排執行緒在不同的處理器執行。和使用者階層的執行緒之間的差別還有它們被排 班的方式不同。核心執行緒使用 system global scheduling(執行緒的排班不僅僅侷限於某一應用程 式)來決定哪一個核心執行緒被排班;而使用者階層執行緒則用 process local scheduling(執行緒的 排班僅侷限於某一應用程式) 【考型 2.8.1】使用者執行緒較快速的原因(中原) 使用者階層的執行緒,所有執行緒的產生和排班,不需要核心的介入。因此使用者層次的執行緒通常在 產生和管理上都比較快。 【考型 2.8.2】比較 user level 和 kernel level thread User-level thread 在執行緒間切換較快速 Kernel-level thread 內容轉換較慢 任何對於作業系統的呼叫都會造成整個行 不會有左述的情形 Edited by HongJie Dai 6 of 10 程等待 沒有獲得核心的支援,所以建立、摧毀和切 因為建立、摧毀時需要呼叫系統呼叫,並且需要被核心排 換是便宜的 程,所以是昂貴的 Kernel-level thread 比較 powerful,因為它們是獨立排程,並且一個 thread block 不會造成整個行程都 block;也就是 block individually。 【考型 2.9】thread 定義,什麼是 LWP,和 normal process 有何不同(清大) thread 為 light weighted process,如同傳統的 process 一樣,亦是程式執行的工作代稱,其包含 PC、 CPU register set、stack space 和它的狀態等。不同的是它和 peer thread 共享 code section、data section 和 作業系統資源,故執行緒之間的內容轉換負擔比較輕,又工作內包含多條執行緒,對於平行執行的程度 提升也有助益。 【考型 2.10】使用 thread 的優缺點 建立、摧毀執行緒非常的便宜,並且使用相當少量的資源當它們存在的時候。它們確實使用了 CPU 時 間,但是卻沒有分離的記憶體空間。但是它們卻也必須相信彼此不會破壞共享的資料。例如一個執行緒 也許會摧毀一個被其它所有執行緒依賴的資料,這種情形不會發生在 processes 之間,除非它們允許共 享資料。 【考型 3】CPU scheduling 【考型 3.1】Multilevel Feedback Queue Scheduling 例如一個三層的回饋佇列,編號由 0 到 2。排班程式首先執行編號 0 的行程,直到佇列 0 中的行程 都執行過後才換到編號 1 的佇列,編號 2 的佇列也只有在編號 0 和 1 的佇列都全部執行完後才會輪 到它。佇列 0 會搶佇列 1 中的 CPU,同理佇列 1 會搶佇列 2 的 CPU。每一個行程剛進入就緒佇列 時都是安排在佇列 0 之中,這個佇列的 time slice 是 8 毫秒。在這時間內,未做完的工作就安排到下 一層,也就是編號 1 的佇列尾端。如果這時候佇列 0 沒有任何就緒佇列存在,則接著執行佇列 1 前 端的行程,時間量是 16 毫秒。若是仍然執行不完,就轉移到最後一層。只有當佇列 0 跟 1 都是空時, 佇列 2 的工作才按造 FCFS 的方式處理。 這種排班法則似乎是最通用的一種 CPU 排班法則。理論上它可以設計來適應任何一個特定系統,但是 仍需要利用一些方法來設定這些重要參數的最佳值,以便設計最佳的排班法則。因此雖然多層回饋佇列 是最通用的一種排班法則,但是也是最複雜的一種。 為可奪取的規劃,也是一個不公平的演算法。當上層的佇列有工作要進入時,則下層的佇列的行程就無 法使用 CPU。可以將等待時間當成考量因素,使用 aging 技術避免無限延遲。此演算法會使得需使用 CPU 時間較短的行程可以早點完成工作,因此如 I/O bound 的行程可以早點獲得 CPU,使得輸出∕入 設備使用率提高。 【考型 3.1.1】敘述演算法(中原) 將 ready queue 分成許多不同等級的佇列 每個佇列有各自的排班法則 而佇列之間排序是以 preemptive , , priority scheduling 為主。行程可以在各個佇列之間移動,以防止 starvation 發生。 【考型 3.1.2】使用多層的優點(中原) 因為行程有其優先權和 CPU burst time,若每個佇列皆以 RR 方式排班,則其愈上層的佇列的時間分割 愈小。若所需 CPU 時間較小的行程,在上層的佇列時間分割可完成,否則會被移到較下層的佇列。所 以作業系統可以藉由調整各佇列的時間分割,以獲取最高的 CPU 利用率。 在 Multilevel Queue Scheduling 之中的每個行程,進入系統之後就分配到某一個固定佇列,而每個佇列 的行程都不能轉移到別的佇列。這個設定的優點是可以降低排班的時間負荷,但是比較沒有彈性。而多 層回饋佇列的排班法則允許行程在佇列之間移動,利用不同 CPU 分割時段的特性,界分不同等級的佇 列。如果一個行程需要太長的 CPU 時間就會被排到低優先權佇列;高優先權的佇列通常排的都是 I/O Edited by HongJie Dai 7 of 10 和交談式行程等。而在低優先佇列中等待太久的行程,隨著時間的增長也會逐漸的往高優先權佇列移 動,這也是一種避免 aging 的方式。 【考型 3.2】Round-Robin Scheduling 定義一個小的時間單位,稱為一個 time quantum 或是 time slice。並且把 ready queue 視為一個環狀 queue,CPU 排班程式就繞著這個就緒佇列走,在 CPU 時間間隔到達一個時間量時就分配給下一個行 程,這種行程轉移的過程稱為 context switch。 在這個假設下有兩種情形會發生: 1. 行程的 CPU 分割比時間量還短,那麼行程在結束後自動交還 CPU,於是可以繼續進行在就緒佇 列中的下一個行程 2. 若目前正在執行的 CPU 分割比一個時間量還長,計時器將停止並且對作業系統產生中斷,執行 content switch,並且將該行程置於就緒佇列的尾端。CPU 排班程式在就緒佇列中選出下一個行程 在 RR 方法下的平均等待時間通常是很長的 在此演算法下沒有一個行程所分配的 CPU 時間會超過一 。 個時間量。所以 RR 算是一種可搶先的排班演算法。如果就緒佇列中有 n 個行程,時間量是 q,那麼 每個行程每次最多可以在 1/n 的 CPU 時間內得到 q 單位時間。每個行程必須等待的時間不會超過 (n − 1) × q 單位時間,就可以得到它的下一個時間量。 【考型 3.2.1】time slice 小造成的現象 對於 interactive user,較短的 time slice 會使 CPU 在各使用者行程間快速切換,這種 processor sharing 法則使得使用者認為自己皆有一套專屬的電腦系統,且 response time 夠短,讓使用者覺得系統專為其 運作,且不會有不公平的現象發生,符合 interactive system 的特色。 對於 system utilization 而言,較短的 time slice 不見得有利,因為越短的 time slice,會造成 context switching 頻率相對增加,而內容轉換是一種負擔,嚴重影響作業系統的執行速度。此外,因要公平對 待每個 users,對於高優先權的行程無法獲得較滿意的系統效能。 受時間量的長短影響的有 turnaround time、content switch 以及 RR 法則的效能。 【考型 3.2.2】給予 I/O bound 行程較高的優先對於 CPU scheduling 有幫助嗎 對整體的 system performance 不見得有利,但對於 CPU utilization、average waiting time 降低有所助益: 因為 I/O-bound 行程其所需的 CPU-burst time 較小,若讓其有較高的優先權拿到 CPU,它可以盡 快完成其 CPU computation 工作,釋放 CPU 給其它人使用,依據 SJF,對於 CPU utilization、 turnaround time、waiting time 的降低有所助益 對整體的系統效能的考量,仍是要 mix CPU-bound 和 I/O-bound 工作,若系統全都是 I/O-bound, 則會造成 I/O queue 很長 I/O device 負擔重 大家都在等候 I/O complete 造成整個 turnaround time , , , 拉長,故不見得有利。 所以在一個充分混合 I/O-bound 和 CPU-bound 工作的環境前提下,給予 I/O-bound 工作較高的 CPU 使用權是有益的 【考型 3.2.3】time quantum 跟 context switch 的關係 time quantum 跟 context switch time 比較起來應該要大的多。理想的時間片段長度是恰好稍微大於行程 執行直到開始要求 I/O 運作的這一段時間。如此可讓本文交換的代價最小,同時讓輸出入設備的使用 率達到最大。當系統全是 CPU-bound 行程時,此方式無法增進效能,但是當系統中是 CPU-bound 和 I/O-bound 混合在一起時,則可大大增進效率,因為使得需要中央處理器時間較短的 I/O-bound 行程可 以因早點獲得中央處理器,而使得輸出入設備使用率提高。 【考型 3.4】Job scheduler 和 Process scheduler 的功能 Job scheduler:從 Job queue 中,依據 Job 的優先權,對資源之需求等因素,挑選 Job 載入系統 memory 內執行。Job scheduler 可用來控制 multiprogramming degree,調和 CPU bound 和 I/O bound Job 的比例 Edited by HongJie Dai 8 of 10 Process scheduler:依據行程的 priority,挑選最高優先權的行程,使其獲得 CPU 控制權 【考型 3.5】何為 time sharing time sharing 是有很多使用者交互的同時的使用系統,每個使用者都有共用的 CPU-time。其使用 medium-term scheduling,像是 RR 用在前景,背景可以使用其它不同的 scheduling technique。 【考型 3.5.1】medium-term scheduler 定義 常用於 time sharing system 中,當記憶體空間不夠或是行程的 storage time 超過 storage time quantum, 則 medium-term scheduler 會將其 SWAP out 到 backing store,等到記憶體有空,再將其 SWAP in。其 優點是可以有效利用記憶體空間,並調和 I/O bound 和 CPU bound job 的比例。 【考型 3.6】shortest-remaining-time-first scheduling 為可搶先的 SJF 排班法。系統負責計算出每個行程到執行結束所需要的處理時間,也就是剩下的 CPU burst time,CPU 就分給其中剩餘時間最短的行程,若是兩個行程的使用時間相同時,再用 FCFS 方式 決定。其比 SJF 來得負責代價更高,屬於一種可搶奪的規劃,也是一種不公平的演算法,對排在後面 的長時間行程,比 SJF 更難預估其等待時間,且平均等待時間更大。最短剩餘時間優先的缺點是代價 太高,理論上 SRT 的等待時間會最短,但因為其代價比 SJF 高,反而使得 SJF 的效率較好 。 【考型 3.6.1】為何 SRT 沒有比 SJF 更低的平均 response time 因為正在執行的行程可能會被新到來且 remaining time 較短的 job 所插隊,導致 response time 不可預 測,且會拉大 average response time。 【考型 3.7】dispatcher Dispatcher 為包含在 CPU scheduler 中的元件。分派程式就是將 CPU 控制權交給 short term scheduler 所選出的行程時所採用的模組,功能包括有: 1. 轉換內容 2. 轉換成 user mode 3. 跳躍到使用者程式的適當位置以便重新開啟程式 每次在行程轉換時都必須使用到分派程式,所以分派程式應該盡可能的快速。為了降低分派的潛伏期, 可以允許系統呼叫能夠被搶先。實行方法是在較長的系統呼叫中加入 preemption points,這些點會檢查 是否有更高優先權的行程需要呼叫,如果是,content switch 就發生。當高優先權的行程結束後,被中斷 的行程就繼續執行原先系統呼叫。另一種方式是讓整個核心都成為可以搶先。為了確保正確的操作,所 有的核心資料結構都必須使用同步機制加以保護。使用這種方法可以保證核心永遠可以被搶先,因為任 何核心正在更新的資料都被保護,以防止被高優先權的行程修改。但是如果高優先權的行程需要讀或修 改核心中被另一個低優先權的行程使用到資料時,就會發生 priority inversion(高優先權必須等待低優 先權的行程完成的特殊狀態,通常發生在同步的機制裡) 。事實上可能有許多的行程都在使用高優先權 行程所需的資源,此時可用 priority inheritance protocol(當有一系列的行程都在使用高優先權行程所需 的資源時,藉著優先權繼承規約方法下,所有行程繼承高優先權直到它們用完這個爭議的資源) 來解決。 【考型 3.7.1】dispatch latency 定義 dispatcher 用來停止一個行程並開始另一個行程所用掉的時間,就是所謂的分派潛伏期。 【考型 4】multiprogramming 【考型 4.1】定義 multiprogramming operating system 在同一時間存放數個 job(process)在記憶體中。作業系統把工作池中的一項行程挑出 來,並執行。這個行程可能為了等待某項作業而等上一段時間(比如等待 I/O 要求) 。若是在非多元程 式規劃的系統中,CPU 就會進入閒置狀態;多元程式規劃系統中,作業系統會移轉到另一項工作上並 且執行它。一但某工作需要等待時,CPU 就移轉到其它的工作,如此繼續下去。多元程式規劃的目的 就是讓 CPU 始終有工作做,也就是隨時保有一個 process 在執行,以增加 CPU 的使用率。 Edited by HongJie Dai 9 of 10 【考型 4.2】degree of multiprogramming 正在等待狀態或是就緒狀態的行程數目。Number of jobs in the current mix of running/waiting jobs. 【考型 5】Producer-Consumer problem 這個問題是 Cooperating process 常見的範例。解題的方法有: 1. 利用緩衝區(bounded buffer 或是 unbounded buffer) 使用訊息傳遞來解決(譬如共用 port、控制獨立的 thread) 【考型 5.1】何謂 Producer-Consumer problem 在 producer 產生結果前,Consumer 不允許去使用結果,並且 producer 不允許去產生結果,假如 buffer 是滿的。 【考型 5.2】Producer-Consumer problem 的例子 complier/linker、linker/loader、card-reader/line-printer. Edited by HongJie Dai 10 of 10 ...
View Full Document

Ask a homework question - tutors are online