作業系統 程序9問

2021-06-09 22:26:59 字數 1566 閱讀 2750

買了本《現代作業系統》,前面的介紹部分直接略過,在回家的路上直接從程序開始看。對併發、多道程式設計有了初步的了解,在此將心得稍微寫一下。

1、什麼是程序?

程序是正在執行程式的乙個例項,可以把他比作計算機正在做的某一件事情。

2、什麼是併發?

在單核cpu中,實現真正的併發是不可能的,因為在乙個時間片裡,cpu只能執行乙個程序。就好比,你不可能同時做飯,同時看書。那麼所謂的併發是什麼呢?能實現「併發」是因為cpu的運轉速度是非常快的,所以程序間來回切換速度是異常迅速的,速度快到人感覺他們是同時執行的,並沒有切換。當然,對於多核cpu來說,併發就不是一回事情了,但是每乙個核每次還是只能執行乙個程序。

3、程序和程式有什麼不同?

程序和程式的區別很微妙。程序包含了輸入資料,程式和輸出資料,可以說程序和程式是乙個真包含的關係。程式是告訴乙個程序該怎麼執行的乙個邏輯描述,程序則是實現輸入資料在程式中的執行後的輸出,這樣一整個過程。書中的比喻是做蛋糕:程式相當於是食譜,輸入資料就是做蛋糕的原材料,cpu是做蛋糕的人,程序就是實現做蛋糕這一整件事情的動作總和。

4、什麼是前台程序和後台程序?

與人類進行互動的程序稱為前台程序(辦公軟體、遊戲),停留在後台處理如電郵、web頁面、新聞、列印的程序稱為後台程序,也稱作守護程序。

5、程序的狀態有哪幾種?

執行態——程序實際占用著cpu;

就緒態——準備執行的程序,但是因為其他程序占用著cpu,所以暫時被掛起;

阻塞態——除非某種外部事件發生,否則不能執行(比如需要輸入資料才能執行的程序);

6、程序之間的切換是怎麼控制的?

有乙個叫做程序排程程式的程式(-__-),他是作業系統的一部分,如果系統認為乙個程序占用cpu的時間過長,那麼他會選擇讓另乙個程序開始執行。程序排程程式的排程標準主要從整體效率和競爭公平性中去權衡。程序排程程式的層次結構在普通程序之下。

7、程序是用什麼資料結構實現的?

作業系統中有維護著一張**(書上說的是:結構陣列。估計就是個指標實現的動態陣列,或者有指定大小的靜態陣列),這個**有個名字:程序表,每個程序占用著**中的乙個表項。

8、程序在切換時底層是如何實現的?(微機介面沒學好,這段就不是很理解了,真傷不起啊)

當乙個磁碟中斷發生時,中斷硬體將程式計數器、程式狀態字、有時還有乙個或多個暫存器壓入堆疊,計算機隨即跳轉到中斷向量指向的位址。這些操作都是由組合語言實現的。這一部分還有待進一步研究……

9、什麼是多道程式設計模型?

比如有n個程序,每個程序等待i/o操作的時間與其停留在記憶體中的時間比為p(也就是在記憶體中不幹事的時間),則所有程序都在等待i/o的概率是p^n,那麼他的否命題:至少有乙個程序不在等待i/o(即,在i/o)的概率,也即cpu的利用率為:1-p^n。從這個式子裡就可以看出,等待i/o的時間越長或程序數越少,cpu利用率越低,吞吐量也就越低(也就是說,程序幹事的時間比例越高,幹事的程序越多,cpu利用率就越大)。

程序控制(作業系統9)

2 程序控制的相關原語 3 小結 在本篇中,你將掌握 程序控制 簡化理解就是要實現程序狀態的轉換 而程序控制的實現也只需通過修改pcb內容和相應佇列來實現程序狀態的切換。為了防止pcb和相應佇列的不一致性,就是用了 原語 來實現程序控制。如上圖所示,原語開始執行時會先執行關中斷指令,在此期間傳入外部...

作業系統9 程序和系統排程 II

程序的建立 作業系統通常是提供庫來建立程序。一般有兩種模式去建立程序。在unix社群程序建立有 2個函式 fork 2c 和exec 2c 在unix大部分程序建立都是通過shell。shell是使用者和作業系統互動的中間點。當乙個命令 不是shell的一部分 輸入,shell會產生 fork 乙個...

作業系統(9)

9.1處理器排程 長程排程 作業排程 決定是否將提交的新作業送入記憶體 控制系統並法度 長程排程也根據系統併發度決定啟動,當老程序結束或cpu空閒超過閾值時 排程不頻繁 根據fcfs,優先順序,預計執行時間,組合cpu密集型,i o密集型,組合不同i o需求等來決定排程哪個作業 分時系統不需要長程排...