一:作業系統(1)作業系統是什麼
百度百科上關於作業系統的定義是這樣的:作業系統(operation system,簡稱OS)是管理計算機硬體與軟體資源的計算機程式。作業系統需要處理如管理與配置記憶體、決定系統資源供需的優先次序、控制輸入裝置與輸出裝置、操作網路與管理檔案系統等基本事務。作業系統也提供一個讓使用者與系統互動的操作介面。
簡單點來說,作業系統就是一款軟體,它的作用就是管理電腦,管好電腦硬體以及軟體。
(2)作業系統是如何管理的如上圖,再試想學校是如何管理我們的?校長,黨委書記就好像上圖當中的作業系統一樣,驅動程式類似於班主任,輔導員,而底層硬體正如苦逼的學生一樣。
一個人能否進行管理,關鍵在於它是否具有決策權,正如校長一樣,它可以決定你的去留。校長想要管理學生時,不必親自跑到學生面前,而是通知輔導員去,此時輔導員履行的就是執行權。對於作業系統也是一樣,它不必親自管理硬體,只需讓驅動去管理即可
校長想要了解某個學生的情況時,自然而然透過輔導員口中就可以瞭解到,正如作業系統想要知道底層硬體情況,可以檢視驅動返回回來的引數
一個學校的學生可能多達成千上萬,校長不可能一一過問,只需使用學生管理系統,把想要管理的資訊設定進去(比如成績),然後透過這些資訊評判學生做出判斷,並通知導員執行決定。對於作業系統也是一樣,面對眾多硬體,利用面向物件的思想,將需要了解的資訊進行打包,透過資訊管理硬體
所以,作業系統在進行管理時,可以用“先描述,再組織”的思想,如何描述?那就是把想要管理的資訊使用結構體打包起來,如何組織?那當然就是資料結構的相關知識了。
(3)系統呼叫和庫函式請問,如何使用C語言在螢幕上輸出一行字呢?你可能會說,這還不簡單,直接printf,可是大家想過沒有這個printf到底是怎麼來的。
從我的角度上講,我的要求就是要在螢幕上輸出字,螢幕就是硬體,所以現在就是使用者要操作硬體,很顯然如果直接操作顯然是不可能的,所以必須要經過作業系統,但是作業系統非常複雜,對於非專業人士來講,隨意操作還可能造成系統毀壞。所以系統一般是封裝的,但是它會向外提供一些介面(也就是函式)稱為系統呼叫介面。但是很不幸的事實是要很好地使用系統呼叫也是需要一定的知識的,所以一些開發者會對部分系統呼叫進行一定的封裝,形成庫(lib),有了庫就有利於上層開發者更好的開發。
也就是說我現在正在開發,有一個需求是想要在螢幕上輸出一行字,由於不便於直接去作業系統,雖然作業系統提供了我一些系統呼叫介面,但是這些介面依舊很難使用或者很複雜(因為就連螢幕列印個字都這麼複雜,更不要說其他操作了),所以有了這個需求,一些開發者為了幫我實現整個功能,把某些系統呼叫進行分裝,封裝為一個函式叫做printf,而對於我來說,就可以直接使用這個函數了。
經過以上敘述可以總結系統呼叫和庫函式如下
從開發角度上看,作業系統會對外表現為一個整體,但是會暴露自己的部分介面,以供上層開發者使用——系統呼叫系統呼叫在使用上功能比較繁瑣,對使用者水平要求也比較高。所以,一些開發者會將部分系統呼叫進行適度封裝,從而形成庫,有了庫,就便於上層使用者使用或者開發者進行二次開發。(4)為什麼需要作業系統計算機是萬萬不能沒有作業系統的,沒有作業系統的計算機和一塊磚沒有區別。作業系統對使用者來說,他提供了一個穩定高效的工作環境,對下管好軟硬體資源,為使用者更好的服務