操作系統(tǒng)與應(yīng)用程序的關(guān)系_第1頁
操作系統(tǒng)與應(yīng)用程序的關(guān)系_第2頁
操作系統(tǒng)與應(yīng)用程序的關(guān)系_第3頁
操作系統(tǒng)與應(yīng)用程序的關(guān)系_第4頁
操作系統(tǒng)與應(yīng)用程序的關(guān)系_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、.操作系統(tǒng)與應(yīng)用程序的關(guān)系操作系統(tǒng)主要可以分為兩大部分:內(nèi)核和內(nèi)核之外的一些程序。內(nèi)核就是直接控制最底層的硬件,而我們?nèi)粘K玫降能浖蠖际峭ㄟ^內(nèi)核之外一些程序與內(nèi)核之間的接口完成的,例如WINDOWS API就是為我們提供了應(yīng)用程序與內(nèi)核的接口,以實現(xiàn)硬件上的一些操作。操作系統(tǒng)(Operating System,簡稱OS)是一管理電腦硬件與軟件資源的程序,同時也是計算機系統(tǒng)的內(nèi)核與基石。操作系統(tǒng)是一個龐大的管理控制程序,大致包括5個方面的管理功能:進程與處理機管理、作業(yè)管理、存儲管理、設(shè)備管理、文件管理。目前微機上常見的操作系統(tǒng)有DOS、OS/2、UNIX、XENIX、LINUX、Wind

2、ows、Netware等。 應(yīng)用軟件是用戶可以使用的各種程序設(shè)計語言,以及用各種程序設(shè)計語言編制的應(yīng)用程序的集合,分為應(yīng)用軟件包和用戶程序.應(yīng)用軟件包是利用計算機解決某類問題而設(shè)計的程序的集合,供多用戶使用。內(nèi)核系統(tǒng)與應(yīng)用程序的關(guān)系在Linux系統(tǒng)中,內(nèi)核為用戶程序提供了兩方面的支持。其一是系統(tǒng)調(diào)用接口,即中斷調(diào)用int 0x80;另一方面是通過開發(fā)環(huán)境庫函數(shù)或內(nèi)核庫函數(shù)與內(nèi)核進行信息交流。不過內(nèi)核庫函數(shù)僅供內(nèi)核創(chuàng)建的任務(wù)0和任務(wù)1使用,它們最終還是去調(diào)用系統(tǒng)調(diào)用。因此內(nèi)核對所有用戶程序或進程實際上只提供系統(tǒng)調(diào)用這一種統(tǒng)一的接口。lib/目錄下內(nèi)核庫函數(shù)代碼的實現(xiàn)方法與基本C函數(shù)庫libc中類

3、似函數(shù)的實現(xiàn)方法基本相同,為了使用內(nèi)核資源,最終都是通過內(nèi)嵌匯編代碼調(diào)用了內(nèi)核系統(tǒng)調(diào)用功能。系統(tǒng)調(diào)用主要提供給系統(tǒng)軟件編程或者用于庫函數(shù)的實現(xiàn)。而一般用戶開發(fā)的程序則是通過調(diào)用像libc等庫函數(shù)來訪問內(nèi)核資源。這些庫中的函數(shù)或資源通常被稱為應(yīng)用程序編程接口(API),其中定義了應(yīng)用程序使用的一組標準編程接口。通過調(diào)用這些庫中的程序,應(yīng)用程序代碼能夠完成各種常用工作,例如,打開和關(guān)閉、對文件或設(shè)備的訪問、進行科學計算、出錯處理以及訪問組和用戶標識號ID等系統(tǒng)信息。在UNIX類操作系統(tǒng)中,最為普遍使用的是基于POSIX標準的API接口。Linux當然也不例外。API與系統(tǒng)調(diào)用的區(qū)別在于:為了實現(xiàn)某

4、一應(yīng)用程序接口標準,例如POSIX,其中的API可以與一個系統(tǒng)調(diào)用對應(yīng),也可能由幾個系統(tǒng)調(diào)用的功能共同實現(xiàn)。當然某些API函數(shù)可能根本就不需要使用系統(tǒng)調(diào)用,即不使用內(nèi)核功能。因此函數(shù)庫可以看做實現(xiàn)像POSIX標準的主體界面,應(yīng)用程序不用管它與系統(tǒng)調(diào)用之間到底存在什么關(guān)系。無論一個操作系統(tǒng)提供的系統(tǒng)調(diào)用有多么大的區(qū)別,但只要它遵循同一個API標準,那么應(yīng)用程序就可以在這些操作系統(tǒng)之間具有可移植性。系統(tǒng)調(diào)用是內(nèi)核與外界接口的最高層。在內(nèi)核中,每個系統(tǒng)調(diào)用都有一個序列號(在include/unistd.h頭文件中定義),并且常以宏的形式實現(xiàn)。應(yīng)用程序不應(yīng)該直接使用系統(tǒng)調(diào)用,因為這樣的話,程序的移植性

5、就不好了。因此目前Linux標準庫(Linux Standard Base,LSB)和許多其他標準都不允許應(yīng)用程序直接訪問系統(tǒng)調(diào)用宏。庫函數(shù)一般包括C語言沒有提供的執(zhí)行高級功能的用戶級函數(shù),如輸入/輸出和字符串處理函數(shù)。某些庫函數(shù)只是系統(tǒng)調(diào)用的增強功能版。例如,標準I/O庫函數(shù)fopen和fclose提供了與系統(tǒng)調(diào)用open和close類似的功能,不過是在更高的層次上。在這種情況下,系統(tǒng)調(diào)用通常能提供比庫函數(shù)略微好一些的性能,但是庫函數(shù)卻能提供更多的功能,而且更具檢錯能力。實際上軟件程序還可以細分成兩種:系統(tǒng)程序軟件和應(yīng)用程序軟件。系統(tǒng)程序軟件實際上就是我們所說的驅(qū)動程序,它們的目的只有一個,

6、就是為了驅(qū)動硬件,使之能正常地完成某種硬件功能,比如網(wǎng)卡的發(fā)送數(shù)據(jù)功能,聲卡的播放聲音功能。應(yīng)用程序軟件則用來接收用戶的輸入請求,進行很多業(yè)務(wù)運算后,再通過驅(qū)動程序驅(qū)動硬件去完成用戶所要求的任務(wù),有時候應(yīng)用程序軟件也負責把運算的最終結(jié)果反饋給用戶。畫成圖就是圖一那樣,注意,在整個軟件系統(tǒng)中,也只有驅(qū)動程序最清楚硬件的功能及工作方式,如果上面應(yīng)用程序想要硬件完成什么樣的任務(wù),必須使用相應(yīng)的驅(qū)動程序所提供的那些接口才行。驅(qū)動程序直接驅(qū)動硬件進行工作,而應(yīng)用程序則只需要知道這些接口,通過它們間接去驅(qū)動硬件來完成任務(wù)。這種策略看似簡單好用,但也會受到兩方面因素的制約。圖一首先,一個計算機系統(tǒng)里面的硬件

7、設(shè)備通常不會只有一個。比方我的魅族MP3里除了音頻解碼器外,自然也有用來存儲歌曲的設(shè)備。這些設(shè)備各具不同的功能,完成這些功能的操作也就各不相同,就決定了寫出來的驅(qū)動程序也是各式各樣的,最后導(dǎo)致他們提供給應(yīng)用程序使用的接口也是千變?nèi)f化的,如圖二那樣,用不同顏色的箭頭表示不同的接口使用。這大大增加了應(yīng)用程序開發(fā)的難度,因為應(yīng)用程序開發(fā)者不僅要考慮上層業(yè)務(wù)邏輯的處理,還要非常熟悉各種驅(qū)動所提供出來的不同接口。圖二: 一個應(yīng)用使用多個硬件設(shè)備其次,一個計算機系統(tǒng)里面同時運行著的應(yīng)用程序通常也不會只有一個,這些應(yīng)用程序會競爭使用總量特定的硬件設(shè)備資源。比方你和朋友在用qq聊天的同時,也聽著千千靜聽放出來

8、的音樂,他們都要使用屏幕設(shè)備show出界面,也都要使用物理內(nèi)存(2)來運行程序代碼。但是屏幕只有一個,內(nèi)存也只有那么多,所以在整個計算機系統(tǒng)范圍內(nèi),必須有某種機制來管理分配這些特定硬件資源的使用。如圖三,設(shè)計的時候,這種機制要么放在應(yīng)用程序中實現(xiàn),要么放在驅(qū)動程序中實現(xiàn),但無論放在哪一方,都是會給這一方的程序開發(fā)者帶來額外的負擔。圖二 一個應(yīng)用使用多個硬件設(shè)備圖三: 多個應(yīng)用使用多個硬件設(shè)備引入操作系統(tǒng)之后 上面之所以說額外,那是因為對于應(yīng)用程序開發(fā)者來講,其重點要考慮的是業(yè)務(wù)邏輯如何實現(xiàn),而不是去考慮硬件資源的管理分配,也最好用不著去區(qū)分那么多驅(qū)動程序的不同接口。類似的,對于驅(qū)動程序開發(fā)者來說,其要考慮的重點是如何正確的驅(qū)動特定的硬件,而不是去考慮硬件資源的管理分配上。那這部分“額外”的工作由誰去做呢,這正是后來出現(xiàn)的操作系統(tǒng)(3)的職責所在。圖五: 引入操作系統(tǒng)后的情況如圖五,操作系統(tǒng)幫我們考慮對各種硬件資源的分配管理,并完成對各種驅(qū)動程序所提供接口的抽象,形成一套簡單一致的接口給上層的應(yīng)用程序去使用。如此,應(yīng)用程序開發(fā)人員只需要知道操作系統(tǒng)所提供的這套編程接口(API),就可以實現(xiàn)不同的業(yè)務(wù)應(yīng)用。前面我們講系統(tǒng)程序軟件實際上就是驅(qū)動程序,但這里我們講系統(tǒng)程序軟件是操作系統(tǒng)。概念上,我們認為操作系統(tǒng)依賴于驅(qū)動程序這一層,但實際上,驅(qū)動程序是嵌入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論