201919102038習題二作業系統

2021-10-09 20:31:21 字數 1059 閱讀 6016

第1題:

第2題

第三題:

思考題:

(1)系統是怎樣建立程序的?

1.申請空白pcb(程序控制塊);

2.為新程序分配資源;

3.初始化pcb;

4.就新程序插入就緒佇列;

(2)當首次呼叫新建立程序時,其入口在**?

fork()函式被呼叫一次,但返回兩次;兩次返回區別在於:子程式返回值是0,而父程序返回值是子程序的id。子程序和父程序執行相同的**,但是有自己的資料空間。

(3)程式的多次執行結果為什麼不同?如何控制實驗結果的隨機性?

多個程序的併發執行,每個程序都有先獲取cpu的可能性,故而哪乙個程序先執行是隨機的。可以通過等待,睡眠的等操作來實現多個程序的同步。(1)可執行檔案載入時進行了哪些處理?

程序用exec( )裝入命令ls ,exec( )後,子程序的**被ls的**取代,這時子程序的pc指向ls的第1條語句,開始執行ls的命令**

(2)什麼是程序同步?wait( )是如何實現程序同步的?

程序同步是指多個相關程序在執行次序上進行協調,以使併發執行的主程序之間有效的共享資源和相互合作,從而使程式的執行具有可再現性。

首先程式在呼叫fork()建立了乙個子程序後,馬上呼叫wait(),使父程序在子程序呼叫之前一直處於睡眠狀態,這樣使子程序先執行,子程序執行exec()裝入命令後,然後呼叫wait(0),使子程序和父程序併發執行,實現了程序同步。

(3)wait( )和exit()是如何控制實驗結果的隨機性的?

可以看出在使用了exec()函式後程式使用了ls的命令,列出/bin/目錄下的檔案資訊,執行完execl()函式後,子程序呼叫exit()函式,退出當前程序,我們可以發現在使用wait()函式後,父程序永遠將在其他的子程序完成之後才執行,所以在輸出的結果中我們可以看到最後輸出的將是父程序的資訊,這樣進而可以控制實驗結果的隨機性。

第二週 習題

時間換算 5分 題目內容 utc是世界協調時,bjt是北京時間,utc時間相當於bjt減去8。現在,你的程式要讀入乙個整數,表示bjt的時和分。整數的個位和十位表示分,百位和千位表示小時。如果小時小於10,則沒有千位部分 如果小時是0,則沒有百位部分 如果分小於10分,需要保留十位上的0。如1124...

C高階習題二

看更多乾貨,獲取第一時間更新 1.實現庫函式 atoi 2.單身狗問題 乙個陣列中只有兩個數字是出現一次,其他所有數字都出現了兩次。編寫乙個函式找出這兩個只出現一次的數字。乙個陣列中只有乙個數字是出現一次,其他所有數字都出現了兩次。編寫乙個函式找出這兩個只出現一次的數字。3.實現 strncat s...

第二週 習題

001 對齊輸出 描述讀入三個整數,按每個整數佔8個字元的寬度,右對齊輸出它們。輸入只有一行,包含三個整數,整數之間以乙個空格分開。輸出只有一行,按照格式要求依次輸出三個整數,之間以乙個空格分開。樣例輸入 1234567890 1樣例輸出 1234567890 1 include using nam...