操作系統(tǒng)功能的歷史
在計(jì)算機(jī)中尚不存在操作系統(tǒng)的年代,完全沒有任何程序,因此程序員就需要編寫出處理相關(guān)的所有程序。用機(jī)器語言編寫程序,然后再使用開關(guān)將程序輸入,這個(gè)過程非常麻煩。于是,有人開發(fā)出僅具有 「加載」 和 「運(yùn)行功能」 的 「監(jiān)控程序」 ,這就是操作系統(tǒng)的原型。
通過事先啟動(dòng)監(jiān)控程序,程序員就可以根據(jù)需要將各種程序加載到內(nèi)存中運(yùn)行。
隨著時(shí)代的發(fā)展,人們?cè)诶?「監(jiān)控程序」 編寫程序的過程中,發(fā)現(xiàn)很多程序都有 「共通」 的部分。例如,鍵盤輸入、顯示器輸出文字等。因此,基本的 「輸入輸出」 部分的程序被追加到了監(jiān)控程序中。因此,初期的操作系統(tǒng)就應(yīng)用而生了。
初期的操作系統(tǒng) = 監(jiān)控程序 + 基本的輸入輸出程序
之后,開始有更多的功能被追加到監(jiān)控程序中。例如,硬件控制程序、語言處理器(匯編、編譯、解析)以及各種實(shí)用程序等。從此可知, 「操作系統(tǒng)本身并不是單獨(dú)的程序,而是多個(gè)程序的集合體」 。
意識(shí)到操作系統(tǒng)的存在
我們希望制作應(yīng)用的程序員意識(shí)到一點(diǎn),那就是他們制作的不是硬件,而是 「利用操作系統(tǒng)功能的應(yīng)用」 。
雖然,對(duì)程序員來說,掌握硬件的基本知識(shí)是必需的,不過,在操作系統(tǒng)誕生后,就沒有必要再編寫直接控制硬件的程序了。不過,「要想成為一個(gè)全面的程序員,有一點(diǎn)需要清楚的是,掌握基本的硬件知識(shí),并借助操作系統(tǒng)進(jìn)行抽象化,可以大大提高編程效率。」
?在操作環(huán)境這個(gè)運(yùn)行環(huán)境下,應(yīng)用并不是直接控制硬件,而是通過操作系統(tǒng)來 「間接」 控制硬件。
?
系統(tǒng)調(diào)用和高級(jí)編程語言的移植性
操作系統(tǒng)的硬件控制功能,通常是通過一些小的 「函數(shù)集合」 的形式來提供的。這些函數(shù)及調(diào)用函數(shù)的行為統(tǒng)稱為系統(tǒng)調(diào)用System Call,也就是應(yīng)用對(duì)操作系統(tǒng)的功能進(jìn)行調(diào)用。
C語言
等高級(jí)編程語言并不依存于特定的操作系統(tǒng)。這是因?yàn)闊o論Windows
還是Linux
都能使用幾乎相同的源代碼。因此, 「高級(jí)編程語言的機(jī)制就是,使用獨(dú)自的函數(shù)名,然后再在編譯時(shí)將其轉(zhuǎn)換成相應(yīng)操作系統(tǒng)的系統(tǒng)調(diào)用」 。
用高級(jí)編程語言編寫的應(yīng)用在 「編譯后」 ,就轉(zhuǎn)換成了利用系統(tǒng)調(diào)用的 「本地代碼」 。
操作系統(tǒng)和高級(jí)編程語言使硬件抽象化
通過使用操作系統(tǒng)提供的 「系統(tǒng)調(diào)用」 ,程序員就沒必要編寫直接控制硬件的程序了。而且,通過使用高級(jí)編程語言,有時(shí)甚至也無需考慮系統(tǒng)調(diào)用的存在。這是因?yàn)?「操作系統(tǒng)和高級(jí)編程語言能夠使硬件抽象化」 。
我們用C語言
編寫一個(gè)往文件中寫入字符串的應(yīng)用。
#include
void main(){
//打開文件
FILE *fp = fopen("MyFile.txt","w");
/寫入文件
fputs("前端柒八九",fp);
// 關(guān)閉文件
fclose(fp);
}
fopen()
是用來打開文件的函數(shù)fputs()
是用來往文件中寫入字符串的函數(shù)fclose()
是用來關(guān)閉文件的函數(shù)
在應(yīng)用被編譯運(yùn)行后,MyFile
文件中就會(huì)被寫入前端柒八九
字符串。
?文件是操作系統(tǒng)對(duì)磁盤媒介空間的抽象化
?
正如前面介紹過,硬件被劃分為了多個(gè)扇區(qū),并以扇區(qū)為單位對(duì)磁盤進(jìn)行讀寫。
變量fp
中被賦予的是fopen()
函數(shù)的返回值。該值稱為 「文件指針」 。應(yīng)用打開文件后,操作系統(tǒng)就會(huì)自動(dòng)申請(qǐng)分配用來管理文件讀寫的內(nèi)存空間。這個(gè)內(nèi)存空間的地址可以通過fopen()
函數(shù)的返回值獲得。用fopen()
打開文件后,接下來就是通過指定文件指針來對(duì)文件進(jìn)行操作。
Windows 操作系統(tǒng)的特征
32/64
位操作系統(tǒng)- 通過 「API函數(shù)集」 來提供系統(tǒng)調(diào)用
- 提供采用了圖形用戶界面Graphical User Interface的用戶界面
- 通過
WYSIWYG
實(shí)現(xiàn)打印輸出 - 提供多任務(wù)功能
- 提供網(wǎng)絡(luò)功能及數(shù)據(jù)庫功能
- 通過 「即插即用」 實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)的自動(dòng)設(shè)定
我們來挑幾個(gè)我們比較感興趣的來簡單講講。
通過WYSIWYG
實(shí)現(xiàn)打印輸出
WYSIWYG
是What You See Is What You Get
的縮寫。翻譯成中文就是 「所見即所得」 。
WYSIWYG
指的是顯示器上顯示的內(nèi)容可以直接通過打印機(jī)打印輸出。在Windows
中,顯示器和打印機(jī)是被作為同等的圖形輸出設(shè)備處理的,而該功能也就為WYSIWYG
的實(shí)現(xiàn)提供了條件。
借助WYSIWYG
功能,基本上在同一個(gè)程序中就可以實(shí)現(xiàn)顯示和打印這兩方面的操作了。
提供多任務(wù)功能
? 「多任務(wù)」 指的是同時(shí)運(yùn)行多個(gè)程序的功能。
Windows
是通過 「時(shí)鐘分割」 技術(shù)來實(shí)現(xiàn)多任務(wù)功能的。?
時(shí)鐘分割指的是在短時(shí)間間隔內(nèi),多個(gè)程序切換運(yùn)行的方式。在用戶看來,就是多個(gè)任務(wù)在同時(shí)運(yùn)行。而Windows
會(huì)自動(dòng)切換多個(gè)程序的運(yùn)行。此外,Windows
還具有 「以程序中的函數(shù)為單位來進(jìn)行時(shí)鐘分割的多線程功能」 。
提供網(wǎng)絡(luò)功能及數(shù)據(jù)庫功能
Windows
中,網(wǎng)絡(luò)功能是作為 「標(biāo)準(zhǔn)功能」 提供的。數(shù)據(jù)庫功能有時(shí)也會(huì)在之后進(jìn)行追加。網(wǎng)絡(luò)功能和數(shù)據(jù)庫功能,雖并不是操作系統(tǒng)本身不可欠缺的功能,但因?yàn)樗鼈兒筒僮飨到y(tǒng)很接近,所以被統(tǒng)稱為 「中間件」 而不是應(yīng)用。
?中間件的意思是處于 「操作系統(tǒng)和應(yīng)用的中間」 。
?
操作系統(tǒng)和中間件合在一起,也稱為**「系統(tǒng)軟件」**
通過即插即用實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)的自動(dòng)設(shè)定
即插即用Plug-and-Play指的是新的設(shè)備連接(Plug
)后立刻就可以使用(Play
)的機(jī)制。新的設(shè)備連接到計(jì)算機(jī)后,系統(tǒng)就會(huì)自動(dòng)安裝和設(shè)定用來控制該設(shè)備的 「設(shè)備驅(qū)動(dòng)」 程序。
設(shè)備驅(qū)動(dòng)是操作系統(tǒng)的一部分,提供了同硬件進(jìn)行基本的輸入輸出的功能。
-
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7430瀏覽量
87735 -
程序員
+關(guān)注
關(guān)注
4文章
950瀏覽量
29768 -
機(jī)器語言
+關(guān)注
關(guān)注
0文章
35瀏覽量
10747
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論