操做系統小實驗

生產者消費者問題node

共享緩衝區中放置一個數字,取值範圍爲[0, 10],初值爲0。生產者將此值加1,消費者將此值減1。算法

  1. 場景1 spa

    • 同一進程內啓動一組生產者線程和一組消費者線程線程

    • 緩衝區爲本進程的全局變量索引

  2. 場景2進程

    • 啓動一組生產者進程和一組消費者進程資源

    • 同一個數據文件爲緩衝區it

  • 輸入 io

    • p:生產者數量變量

    • c:消費者數量

  • 輸出

打印當前共享緩衝區中的數值,或者生產者消費者的狀態。如

Producer 1: 0 -> 1

Consumer 2: 1 -> 0

Consumer 3: waiting

...

Producer 0: 0 -> 1

Consumer 3: (resume) 1 -> 0

...

Producer 1: 9 -> 10

Producer 2: waiting

Consumer 1: 10 -> 9

Producer 2: (resume) 9 -> 10

 

 

銀行家算法程序

  • 輸入

    • p: 進程數量

    • r:資源數量

    • 各進程的 max, allocation

  • 輸出

    • 若產生死鎖,打印提示:死鎖狀態。

    • 不然,給出一種調度順序。

頁式存儲邏輯地址到物理地址映射

  • 條件:64位地址空間

  • 輸入:

    • 頁記錄大小(如       4Byte)

    • 頁大小(如 4KB)

    • 頁表級數(如,2表示2級頁表,n表示n級頁表)

    • 邏輯地址(十六進制)

  • 輸出:物理地址(物理塊號,塊內偏移)

說明:頁表隨機產生,爲便於驗證可令邏輯頁號 n 的物理塊號爲 n。

 

混合索引邏輯地址到物理地址映射

  • 條件:自定義混合索引 inode      結構

    • 必須包括一次,二次,和三次間接塊

    • 邏輯塊 n 對應物理塊       n

  • 輸入:文件邏輯地址

  • 輸出

1.   輸出 inode 詳細信息(間接塊不展開)

2.   物理地址(物理塊號,塊內偏移)

相關文章
相關標籤/搜索