由系統呼叫想起的。。。

2022-07-26 19:00:20 字數 1364 閱讀 3123

作業系統作為使用者和計算機硬體系統之間的介面,主要有兩種:

(1)命令介面

主要分為聯機控制方式和離線控制方式;

聯機控制又稱互動式命令介面,適用於分時和實時系統的介面;由一組鍵盤操作指令組成,使用者通過控制台或終端輸入操作命令,向系統提出各種服務請求;

離線控制又稱批處理命令介面,適用於批處理系統,由一組作業控制命令組成;離線使用者不能直接干預作業的執行,應連同作業一起提交給系統;

(2)程式介面

程式控制介面是一組系統呼叫命令(簡稱系統呼叫,也稱廣義指令)組成;使用者通過在程式中使用這些系統呼叫命令請求作業系統為其提供服務。使用者可以直接在程式中使用這組系統呼叫命令向系統提出各種服務要求,如使用各種外部裝置,進行有關磁碟檔案的操作,申請分配和**記憶體以及其他各種控制要求;

作業系統的體系架構分為使用者態和核心態;如圖:

作業系統執行環境可以理解為:使用者通過作業系統執行上層程式(如系統提供的命令解釋程式或使用者自編程式),這個上層程式的執行依賴於作業系統的底層管理程式提供支援服務,當需要管理程式服務時,系統則通過硬體中斷機制進入核心態,執行管理程式;也可能是程式執行出現異常情況,被動地需要管理程式的服務,這時就通過異常處理來進入核心態。

系統呼叫就是使用者在程式中呼叫作業系統所提供的一些子功能,系統呼叫可以被看做特殊的公共子程式。系統中的各種共享資源都由作業系統共同管理;因此在使用者程式中,凡是與資源相關的操作(如儲存分配,進行i/o傳輸以及管理檔案等),都必須通過系統呼叫方式向作業系統提供服務請求,並由作業系統代為完成。

當中斷或異常發生的時候,執行使用者態的cpu就會進入核心態,這是通過硬體實現的(例如,用乙個特殊的暫存器的一位來是表示cpu所處的工作狀態,0表示核心態,1表示使用者態,要進入核心態,只需要將該位置0)

系統呼叫按功能大致可分為如下幾類:

1.裝置管理。完成裝置的請求和釋放,以及裝置啟動等功能;

2.檔案管理。完成檔案的讀,寫,建立及刪除等功能;

3.程序控制。完成程序的建立,撤銷,阻塞和喚醒等功能;

4.程序通訊。完成程序之間的訊息傳遞或訊號傳遞等功能;

5.記憶體管理。完成記憶體的分配,**以及獲取作業占用記憶體大小及始址功能;

舉幾個使用者態進入核心態的例子:

1.使用者程式要求作業系統的服務,即系統呼叫;

2.傳送一次中斷

3.使用者程式中產生了一次錯誤狀態;

4.使用者程式中企圖執行一條特權指令;

5.從核心態轉向使用者態由一條特殊指令實現,這條指令也是特權命令。一般是中斷返回指令;

注意:使用者態進入核心態,不僅僅是狀態需要切換,而且,所使用的堆疊也可能需要由使用者堆疊切換為系統堆疊,但這個系統堆疊也是屬於該程序的;

由「重構」想起的

在作 重構 時的一點感悟。很多時候,可以說重構是對以前工作失誤的彌補,當然,這個失誤不一定是由你乙個人造成的。在重構工作中,最重要的收穫之一就是 在處理乙個複雜軟體系統的設計實現問題上,目前,我還找不到有比使用uml及其建模工具更有效的解決這個問題的方法 國內企業做系統設計的水平和歐美企業的差距還是...

由換專案想起的

不知不覺在嘻嘻ms呆了5年了。這是成長最快的5年,從乙個純菜鳥,現在可以說基本入了個門。換專案早就有想法,但真做了確實問題很多。我這人太容易在舒適區呆著了,現在有人或者說有個機會推我一把,也是好事兒。不過最近餓補新專案的知識,卻找到了好久沒經歷過的,類似剛剛上班的那種慌亂感覺 生於憂患,死於安樂,這...

由一次奇怪的編譯出錯想起的

最近在工作中遇到了一次奇怪的編譯出錯。事情是這樣的,本來這個asp.net webform應用是可以編譯的。但是將另外乙個class library的工程加入到這個asp.net webform應用的引用中,還未改任何其它的 這個asp.net webform應用就出現了編譯錯誤。分析這些編譯出錯的...