一、列出與併發相關的4個設計問題。
程序間通訊、資源共享和競爭(如記憶體、檔案、i/o訪問)、多個程序活動的同步以及給程序分配處理器時間等。
二、產生併發的三種上下文是什麼?
多應用程式:多道程式設計技術允許在多個活動的應用程式間動態共享處理器時間。
結構化應用程式:作為模組化設計和結構化程式設計的擴充套件,一些應用程式可被有效地設計成一組併發程序。
作業系統結構:同樣的結構化程式設計優點適用於系統程式,且我們已知作業系統自身常常作為一組程序或執行緒實現。
三、執行併發程序最基本的要求是什麼?
控制對共享資源的訪問,加強互斥的能力。
四、列出程序間的三種互相知道的程度,並簡要給出各自的定義。
程序之間相互不知道對方的存在:
程序間接知道對方的存在(如共享物件)
程序直接知道對方的存在(它們有可用的通訊原語0)
五、競爭程序和合作程序有何區別?
競爭程序需要同時訪問相同的資源,像磁碟,檔案或印表機。合作程序要麼共享訪問乙個共有的資源,像乙個記憶體訪問區,程序必須合作以確保它們共享的資料得到正確管理,控制機制必須確保共享資料的完整性。要麼就與其他程序相互通訊,在一些應用程式或活動上進行合作,通訊提供同步和協調各種活動的方法。
六、列出與競爭程序相關的三個控制問題,並簡要給出各自的定義。
互斥(mutual exclusion):競爭程序僅可以訪問乙個臨界資源(一次僅有乙個程序可以訪問臨界資源),併發機制必須滿足一次只有乙個程序可以訪問臨界資源這個規則。當乙個程序在臨界區訪問共享資源時,其他程序不能進入該臨界區訪問任何共享資源的情形。
死鎖(deadlock):兩個或兩個以上的程序因每個程序都在等待其他程序做完某些事情而不能繼續執行的情形。
飢餓(starvation):乙個可執行程序儘管能繼續執行,但被排程程式無限期地忽視,而不能被排程執行的情形。
七、列出對互斥的要求。
必須強制實施互斥:在與相同資源或共享物件的臨界區有關的所有程序中,一次只允許乙個程序進入臨界區。
乙個在非臨界區停止的程序不能干涉其他程序。
絕不允許出現需要訪問臨界區的程序被無限延遲的情況,即不會死鎖或飢餓。
沒有程序在臨界區中時,任何需要進入臨界區的程序必須能夠立即進入。
對相關程序的執行速度和處理器的數量沒有任何要求和限制。
乙個程序駐留在臨界區中的時間必須是有限的。
八、在訊號量上可以執行什麼操作?
為了達到預期效果,可把訊號量視為乙個值為整數的變數,整數值上定義了三個操作:
乙個訊號量可以初始化為非負數。
semwait操作使訊號量減1。若值變成負數,則阻塞執行semwait的程序,否則程序繼續執行。
semsignal操作使訊號量加1.若值小於等於零,則被semwait操作阻塞的程序解除阻塞。
除了這三個操作外,沒有任何其他方法可以檢查或操作訊號量。
九、二元訊號量跟一般訊號量有何區別?
二元訊號量(binary semaphore)是一種更為嚴格的形式。二元訊號量的值只能是0或1,可由下面三個操作定義:
二元訊號量可以初始化為0或1.
semwaitb操作檢查訊號的值。若值為0,則程序執行semwaitb就會受阻。若值為1,則將值改為0,並繼續執行該程序。
semsignalb操作檢查是否有任何程序在該訊號上受阻。若有程序受阻,則通過semwaitb操作,受阻的程序會被喚醒;若沒有程序受阻,則值設定為1。
理論上,二元訊號量更易於實現,且可以證明它和普通訊號具有相同的表達能力。
十、強訊號量和弱訊號量有何區別?
強訊號量要求在訊號量上等待的程序按照先進先出的規則從佇列中移出。弱訊號量沒有此規則。
十一、什麼是管程?
管程是由乙個或多個過程、乙個初始化序列和區域性資料組成的軟體模組,其主要特點如下:
區域性資料變數只能被管程的過程訪問,任何外部過程都不能訪問。
乙個程序通過呼叫管程的乙個過程進入管程。
在任何時候,只能有乙個程序在管程中執行,呼叫管程的任何其他程序都被阻塞,以等待管程可用。
十二、關於訊息,阻塞和無阻塞有何區別?
傳送者和接收者都可阻塞或不阻塞。通常有三種組合,但任何乙個特定系統通常只實現一種或兩種組合:
阻塞send,阻塞receive:傳送者和接收者都被阻塞,直到完成資訊的投遞。這種情況有時也稱會合(rendezvous),它考慮到了程序間的緊密同步。
無阻塞send,阻塞receive:儘管傳送者可以繼續,但接收者會被阻塞直到請求的訊息到達。這可能是最有用的一種組合,它允許乙個程序給各個目標程序盡快地傳送一條或多條訊息,繼續工作前必須接收到訊息的程序將被阻塞,知道該訊息到達。例如,乙個伺服器程序給其他程序提供服務或資源。
無阻塞send,無阻塞receive:不要求任何一方等待。
傳送者和接收者任一方阻塞則訊息傳遞需要等待,都無阻塞則不需等待。
十三、與讀者/寫者問題相關的條件通常有哪些?
讀者/寫者問題定義如下:存在乙個多個程序共享的資料區,該資料區可以是乙個檔案或一塊記憶體空間,甚至可以是一組暫存器;有些程序(reader)只讀取這個資料區中的資料,有些程序(writer)只往資料區中寫資料。此外,還必須滿足以下條件:
任意數量的讀程序可同時讀這個檔案。
一次只有乙個寫程序可以寫檔案。
若乙個寫程序正在寫檔案,則禁止任何讀程序讀檔案。
作業系統第五章
虛擬儲存器的基本概念 引入 實現 特徵 請求分頁儲存管理方式 硬體支援 位址變換 分配演算法 頁面置換演算法 效能分析 請求分段儲存管理方式 主要相同點是都要在記憶體與外存之間交換資訊 主要區別在於交換技術換出換進一般是整個程序 proc結構和共享正文段除外 因此乙個程序的大小受物理儲存器的限制 而...
作業系統原理第五章(資源分配與排程)
一 資源管理 1.資源的動態分配 程序所需的資源是在程序執行中根據運 況動態的分配 使用和釋放的。靜態分配 批處理作業系統中,對作業一級採用資源靜態分配方法。作業所需要的資源是在排程到這個作業的時候,根據使用者給出的資訊進行分配,並在做作業執行完畢後釋放所獲得的的全部資源。2.資源管理任務 對資源資...
作業系統 第五章 死鎖(一)
死鎖 deadlock 定義 在多道程式中,由於多個併發程序共享系統的資源,如果使用不當可能會造成一種僵局,即當某個程序提出資源的使用請求後,使得系統中一些程序處於無休止的阻塞狀態,在無外力的作用下,這些程序將無法繼續進行下去,這就是死鎖。產生死鎖的環境 1 多道程式設計技術 2 多個併發程序 3 ...