操作系統(tǒng)工作原理 引言 如果您擁有一臺(tái)計(jì)算機(jī),那么您對(duì)操作系統(tǒng)一定不陌生。人們購(gòu)買(mǎi)的任何臺(tái)式或便攜式PC通常都預(yù)先安裝了Windows XP;Macintosh計(jì)算機(jī)預(yù)先安裝的是OS X;許多企業(yè)的服務(wù)器使用Linux或UNIX操作系統(tǒng)。操作系統(tǒng)(OS)是裝入計(jì)算機(jī)的第一個(gè)程序,如果沒(méi)有操作系統(tǒng),計(jì)算機(jī)將毫無(wú)用處。 最近,操作系統(tǒng)也開(kāi)始出現(xiàn)在更小型的計(jì)算機(jī)中。如果您平時(shí)喜歡擺弄電子設(shè)備,會(huì)很高興地發(fā)現(xiàn),如今操作系統(tǒng)可以安裝在我們?nèi)粘J褂玫暮芏嘣O(shè)備中,從手機(jī)到多種無(wú)線訪問(wèn)終端。這些小型設(shè)備中的計(jì)算機(jī)的功能非常強(qiáng)大,它們都可以運(yùn)行操作系統(tǒng)和應(yīng)用程序?,F(xiàn)在的一部普通手機(jī)中所包含的計(jì)算機(jī)功能甚至比20年前臺(tái)式計(jì)算機(jī)的功能還要強(qiáng)大。因此這種進(jìn)步很有意義,也是自然發(fā)展不可避免的趨勢(shì)。在任何一臺(tái)裝有操作系統(tǒng)的設(shè)備中,通常都提供了更改該設(shè)備工作方式的方法。這絕不是一個(gè)幸運(yùn)的巧合,操作系統(tǒng)之所以采用可移植的代碼,而不采用永久性的物理電路,原因之一就是通過(guò)代碼對(duì)其進(jìn)行更改或修改時(shí)可避免拆卸整臺(tái)設(shè)備。
對(duì)于臺(tái)式計(jì)算機(jī)用戶來(lái)說(shuō),這意味著在進(jìn)行更改時(shí)只需添加一個(gè)新的安全更新、系統(tǒng)補(bǔ)丁、新的應(yīng)用程序,甚至是整個(gè)新的操作系統(tǒng),而無(wú)須淘汰計(jì)算機(jī)去購(gòu)買(mǎi)全新的一臺(tái)。只有在了解操作系統(tǒng)的工作原理并知道如何利用時(shí),您才可以在許多方面對(duì)計(jì)算機(jī)的一些工作方式進(jìn)行更改。此外,手機(jī)中操作系統(tǒng)的工作原理與計(jì)算機(jī)的實(shí)際上沒(méi)有什么區(qū)別。 操作系統(tǒng)用于組織和控制硬件、軟件,從而使安裝操作系統(tǒng)的設(shè)備以一種靈活但可預(yù)期的方式運(yùn)行。在本文中,我們將講述必須具備什么功能的軟件才稱為操作系統(tǒng),并向您介紹臺(tái)式計(jì)算機(jī)中操作系統(tǒng)的工作原理,以及舉例說(shuō)明如何控制身邊的其他操作系統(tǒng)。 操作系統(tǒng)的本質(zhì) 并不是所有的計(jì)算機(jī)都具有操作系統(tǒng)。例如,廚房中控制微波爐的計(jì)算機(jī)就不需要操作系統(tǒng)。微波爐有一組要執(zhí)行的任務(wù),用戶可直接輸入所期望執(zhí)行的操作(數(shù)字按鍵和一些預(yù)設(shè)置的按鈕),并且它還具有可以控制的簡(jiǎn)單且無(wú)需更改的硬件。對(duì)于此類(lèi)計(jì)算機(jī),操作系統(tǒng)反而會(huì)成為不必要的負(fù)擔(dān)——它將大幅增加產(chǎn)品的開(kāi)發(fā)和生產(chǎn)成本,而且增添不必要的復(fù)雜性。因此,微波爐中裝入的計(jì)算機(jī)只需一直運(yùn)行一個(gè)簡(jiǎn)單的固化程序即可。 對(duì)于其他設(shè)備,操作系統(tǒng)需要具有滿足以下條件的功能:
所有的臺(tái)式計(jì)算機(jī)都具有操作系統(tǒng)。其中最普遍的是微軟開(kāi)發(fā)的Windows操作系統(tǒng)、蘋(píng)果公司開(kāi)發(fā)的Macintosh操作系統(tǒng)以及UNIX系列操作系統(tǒng)(由若干開(kāi)發(fā)人員、公司及合作者共同開(kāi)發(fā))。此外,還有針對(duì)特殊應(yīng)用領(lǐng)域的數(shù)以百計(jì)的其他操作系統(tǒng),包括專(zhuān)門(mén)用于大型機(jī)、機(jī)器人技術(shù)、生產(chǎn)制造和實(shí)時(shí)控制系統(tǒng)等的操作系統(tǒng)。 操作系統(tǒng)的功能 簡(jiǎn)單來(lái)說(shuō),操作系統(tǒng)的功能有兩個(gè):
第一個(gè)任務(wù)(即管理硬件和軟件資源)非常重要,因?yàn)槎鄠€(gè)程序和輸入方法會(huì)出于自己的目的競(jìng)相爭(zhēng)奪CPU(中央處理單元)的資源,并且使用內(nèi)存、存儲(chǔ)器及輸入/輸出帶寬。在此功能中,操作系統(tǒng)扮演著出色的指揮者角色,它既要確保每個(gè)應(yīng)用程序都得到所需的資源,又要保證與所有其他應(yīng)用程序的兼容,同時(shí)還要充分利用有限的系統(tǒng)容量,從而最大程度地滿足所有用戶和應(yīng)用程序的需要。 如果有多個(gè)特定類(lèi)型的計(jì)算機(jī)使用操作系統(tǒng),或者要更換計(jì)算機(jī)硬件時(shí),第二項(xiàng)任務(wù)(即提供兼容的應(yīng)用程序接口)就變得格外重要。一致的應(yīng)用程序接口(API)使軟件開(kāi)發(fā)人員在一臺(tái)計(jì)算機(jī)上編寫(xiě)應(yīng)用程序時(shí),有信心保證此應(yīng)用程序可以在另一臺(tái)同一類(lèi)型的計(jì)算機(jī)上運(yùn)行,盡管兩臺(tái)計(jì)算機(jī)的內(nèi)存容量或存儲(chǔ)器數(shù)量各不相同。 即使某種特殊計(jì)算機(jī)是唯一的,操作系統(tǒng)也可以確保在硬件升級(jí)和更新時(shí)應(yīng)用程序得以正常運(yùn)行。這是因?yàn)?,操作系統(tǒng)(而不是應(yīng)用程序)負(fù)責(zé)管理硬件和分配其資源。開(kāi)發(fā)人員面臨的挑戰(zhàn)之一是要保證他們的操作系統(tǒng)具有足夠的靈活性,從而可以在成千上萬(wàn)的計(jì)算機(jī)設(shè)備供應(yīng)商所提供的硬件上運(yùn)行。因?yàn)楫?dāng)今的系統(tǒng)可以配置成千上萬(wàn)種不同種類(lèi)的打印機(jī)、磁盤(pán)驅(qū)動(dòng)器以及任何可能組合的特殊外設(shè)。 操作系統(tǒng)的種類(lèi) 操作系統(tǒng)擁有廣泛的系列,根據(jù)它們所控制的計(jì)算機(jī)類(lèi)型和所支持應(yīng)用程序的類(lèi)型,大致可分為四類(lèi)。這些廣泛的分類(lèi)包括:
區(qū)分多用戶操作系統(tǒng)和支持網(wǎng)絡(luò)的單用戶操作系統(tǒng)很重要。Windows 2000和Novell Netware均可以支持成千上萬(wàn)的網(wǎng)絡(luò)用戶,但操作系統(tǒng)本身并不是真正的多用戶操作系統(tǒng)。系統(tǒng)管理員是Windows 2000或Netware的唯一“用戶”。從操作系統(tǒng)的整體計(jì)劃來(lái)看,網(wǎng)絡(luò)支持和所有遠(yuǎn)程用戶均可登錄到網(wǎng)絡(luò),這些都屬于由管理員用戶運(yùn)行的程序。 在了解了各種不同類(lèi)型的操作系統(tǒng)后,現(xiàn)在我們將進(jìn)一步介紹操作系統(tǒng)所提供的基本功能。 操作系統(tǒng)的任務(wù) 打開(kāi)計(jì)算機(jī)的電源時(shí),通常運(yùn)行的第一個(gè)程序是保存在計(jì)算機(jī)只讀存儲(chǔ)器(ROM)中的一組指令。此代碼檢驗(yàn)系統(tǒng)硬件,從而確保一切運(yùn)行正常。上電自檢(POST)將檢測(cè)CPU、內(nèi)存和基本輸入輸出系統(tǒng)(BIOS) 是否存在錯(cuò)誤并將結(jié)果存儲(chǔ)在某個(gè)特殊的內(nèi)存位置。一旦成功完成POST,載入ROM的軟件(有時(shí)則稱為BIOS或固件)將開(kāi)始激活計(jì)算機(jī)的磁盤(pán)驅(qū)動(dòng)器。在大多數(shù)現(xiàn)代計(jì)算機(jī)中,當(dāng)計(jì)算機(jī)激活硬盤(pán)驅(qū)動(dòng)器時(shí),該計(jì)算機(jī)將運(yùn)行第一個(gè)操作系統(tǒng):引導(dǎo)裝入程序。 這種引導(dǎo)裝入程序是具有單一功能的小程序:它將操作系統(tǒng)載入到內(nèi)存并使之開(kāi)始運(yùn)行。引導(dǎo)裝入程序通過(guò)最基本的形式設(shè)置與之交互的小驅(qū)動(dòng)程序,并控制計(jì)算機(jī)的各個(gè)硬件子系統(tǒng)。它設(shè)置存放操作系統(tǒng)、用戶信息及應(yīng)用程序的內(nèi)存分區(qū),也建立裝有大量信號(hào)、標(biāo)記和信號(hào)量(用于在子系統(tǒng)和計(jì)算機(jī)應(yīng)用程序內(nèi)部及之間通信)的數(shù)據(jù)結(jié)構(gòu),然后再將其對(duì)計(jì)算機(jī)的控制轉(zhuǎn)移給操作系統(tǒng)。 在一般情況下,操作系統(tǒng)的任務(wù)基本分為六種類(lèi)型:
盡管有人爭(zhēng)論操作系統(tǒng)應(yīng)執(zhí)行比這六項(xiàng)任務(wù)更多的功能,并且確實(shí)也有一些操作系統(tǒng)供應(yīng)商將更多的實(shí)用程序及輔助功能集成到他們的操作系統(tǒng)中,但這六項(xiàng)任務(wù)幾乎涵蓋了所有操作系統(tǒng)的核心內(nèi)容。下面我們將介紹操作系統(tǒng)執(zhí)行每項(xiàng)功能所使用的工具。 管理處理器 管理處理器的核心內(nèi)容可以歸結(jié)為兩個(gè)相關(guān)問(wèn)題:
在由處理器完成工作的計(jì)劃中,操作系統(tǒng)處理的軟件基本單元為進(jìn)程或線程,具體取決于操作系統(tǒng)。 通常,人們傾向于將進(jìn)程看作是一個(gè)應(yīng)用程序,但這并沒(méi)有全面給出進(jìn)程與操作系統(tǒng)和硬件之間的關(guān)聯(lián)。實(shí)際上,我們所了解的應(yīng)用程序(文字處理器、電子數(shù)據(jù)表或游戲)的確是一個(gè)進(jìn)程,但該應(yīng)用程序可能會(huì)導(dǎo)致幾個(gè)其他進(jìn)程開(kāi)始運(yùn)行,比如,與其他設(shè)備或計(jì)算機(jī)進(jìn)行通信的任務(wù)。然而,此外還有大量我們察覺(jué)不到的運(yùn)行的進(jìn)程,因?yàn)樗鼈儾粫?huì)提供直觀的證據(jù)。例如,Windows XP和UNIX可以同時(shí)運(yùn)行十幾個(gè)后臺(tái)進(jìn)程以處理網(wǎng)絡(luò)、內(nèi)存管理、磁盤(pán)管理和病毒檢查等。 因此,進(jìn)程是執(zhí)行一些操作的軟件,并且可由用戶、其他應(yīng)用程序或操作系統(tǒng)進(jìn)行控制。 操作系統(tǒng)控制進(jìn)程(而不是應(yīng)用程序),并由CPU安排執(zhí)行。在單任務(wù)系統(tǒng)中,計(jì)劃表簡(jiǎn)明易懂,操作系統(tǒng)允許應(yīng)用程序開(kāi)始運(yùn)行,只有在要處理中斷和用戶輸入時(shí),才會(huì)暫停足夠長(zhǎng)的時(shí)間。 中斷是由硬件或軟件發(fā)送給CPU的特殊信號(hào)。就好比在某一次現(xiàn)場(chǎng)會(huì)議上,計(jì)算機(jī)的某部分突然舉手示意以引起CPU的關(guān)注。有時(shí)操作系統(tǒng)通過(guò)安排進(jìn)程的優(yōu)先級(jí),從而使中斷被屏蔽——換言之,操作系統(tǒng)將忽略來(lái)自于某些源的中斷,從而能夠盡快完成特定的任務(wù)。然而有一些中斷(比如出現(xiàn)錯(cuò)誤或內(nèi)存故障)非常重要,因此不能忽略。無(wú)論當(dāng)前正在執(zhí)行什么其他任務(wù),都必須立即處理這些非屏蔽中斷(NMI)。 盡管在單任務(wù)系統(tǒng)中,中斷為進(jìn)程的執(zhí)行增加了一些復(fù)雜性,但操作系統(tǒng)的任務(wù)在多任務(wù)系統(tǒng)中更為復(fù)雜。那么,操作系統(tǒng)必須安排應(yīng)用程序的執(zhí)行,從而使人們相信這幾件事看上去是同時(shí)發(fā)生的。因?yàn)镃PU在某一時(shí)間只能做一件事情,這就變得很復(fù)雜。為了制造同時(shí)做多件事的假象,操作系統(tǒng)必須每秒在不同的進(jìn)程之間轉(zhuǎn)換數(shù)千次。下面我們來(lái)介紹它的過(guò)程:
在將切換數(shù)據(jù)存儲(chǔ)在稱為進(jìn)程控制塊的數(shù)據(jù)包中后,所有信息都將用于跟蹤一個(gè)進(jìn)程。進(jìn)程控制塊通常包括:
每個(gè)進(jìn)程都具有與之相關(guān)聯(lián)的狀態(tài),很多進(jìn)程在獲得某類(lèi)輸入之前不會(huì)消耗CPU時(shí)間。例如,一個(gè)進(jìn)程可能需要用戶按鍵才會(huì)啟用,而等待按鍵時(shí),該進(jìn)程不消耗任何CPU時(shí)間。處于等待狀態(tài)時(shí),該進(jìn)程被“中止”;當(dāng)開(kāi)始按鍵時(shí),OS會(huì)改變其狀態(tài)。比如,當(dāng)該進(jìn)程的狀態(tài)發(fā)生改變(例如,從等待到活動(dòng)狀態(tài),或從中止?fàn)顟B(tài)到運(yùn)行狀態(tài))時(shí),必須像使用任何其他程序中的數(shù)據(jù)一樣使用進(jìn)程控制塊中的信息,從而直接執(zhí)行操作系統(tǒng)的任務(wù)切換部分。 執(zhí)行此進(jìn)程切換無(wú)需進(jìn)行直接的用戶干涉,每個(gè)進(jìn)程可以獲得足夠的CPU周期,從而在適量的時(shí)間內(nèi)完成任務(wù)。但是,如果用戶試圖同時(shí)運(yùn)行太多的進(jìn)程,那么就會(huì)出現(xiàn)問(wèn)題。操作系統(tǒng)本身需要一些CPU周期來(lái)執(zhí)行應(yīng)用程序進(jìn)程中所有寄存器、堆棧和隊(duì)列的保存及切換。如果啟動(dòng)太多的進(jìn)程,并且操作系統(tǒng)又沒(méi)有經(jīng)過(guò)精心設(shè)計(jì),系統(tǒng)便可能會(huì)占用大多數(shù)可用的CPU周期在進(jìn)程之間進(jìn)行切換,而不是運(yùn)行進(jìn)程。當(dāng)出現(xiàn)此種情況(稱為系統(tǒng)顛簸)時(shí),通常需要某種直接的用戶干涉以停止進(jìn)程,從而使系統(tǒng)恢復(fù)秩序。 操作系統(tǒng)設(shè)計(jì)人員降低發(fā)生系統(tǒng)顛簸幾率的一個(gè)方法是,減少新進(jìn)程執(zhí)行多項(xiàng)任務(wù)的需求。一些操作系統(tǒng)允許“小進(jìn)程”(稱為線程),可以處理普通進(jìn)程的所有CPU密集型任務(wù),但通常不會(huì)處理各種類(lèi)型的I/O,并且也不會(huì)創(chuàng)建要求常規(guī)進(jìn)程的大量進(jìn)程控制塊的結(jié)構(gòu)。一個(gè)進(jìn)程可能啟用很多線程或其他進(jìn)程,但線程卻不能啟動(dòng)進(jìn)程。 到目前為止,我們所討論的所有安排都是關(guān)于單個(gè)CPU的。在一個(gè)具有兩個(gè)或更多CPU的系統(tǒng)中,操作系統(tǒng)必須在各個(gè)CPU之間分配工作量,試圖平衡不同CPU可用周期所需進(jìn)程的需求。不對(duì)稱的操作系統(tǒng)針對(duì)自身需求使用一個(gè)CPU,并在剩余的CPU中分配應(yīng)用程序的進(jìn)程。對(duì)稱的操作系統(tǒng)則將自身分配到各個(gè)CPU中,即使在只有操作系統(tǒng)本身運(yùn)行的情況下,也要平衡需求和CPU可用性。 雖然操作系統(tǒng)是需要執(zhí)行的唯一軟件,但CPU卻不是需要安排的唯一資源。內(nèi)存管理是確保所有進(jìn)程平穩(wěn)運(yùn)行的下一個(gè)關(guān)鍵步驟。 內(nèi)存存儲(chǔ)器管理 當(dāng)操作系統(tǒng)管理計(jì)算機(jī)的內(nèi)存時(shí),有兩個(gè)主要任務(wù)需要完成:
第一項(xiàng)任務(wù)需要操作系統(tǒng)為不同類(lèi)型的軟件和單個(gè)應(yīng)用程序設(shè)置內(nèi)存邊界。
我們以一個(gè)虛擬的小型系統(tǒng)為例來(lái)進(jìn)行分析,該系統(tǒng)有1兆字節(jié)(1,000千字節(jié))的RAM。在啟動(dòng)進(jìn)程過(guò)程中,我們將虛擬計(jì)算機(jī)的操作系統(tǒng)設(shè)計(jì)為位于所有可用內(nèi)存的頂部,然后充分進(jìn)行“備份”以滿足操作系統(tǒng)本身的需求。例如,操作系統(tǒng)運(yùn)行需要300千字節(jié)。那么現(xiàn)在,操作系統(tǒng)進(jìn)入到RAM池的底部,并使用控制計(jì)算機(jī)硬件子系統(tǒng)的各驅(qū)動(dòng)程序軟件開(kāi)始創(chuàng)建。在我們虛擬的計(jì)算機(jī)中,驅(qū)動(dòng)程序占用了200千字節(jié)。因此,在將操作系統(tǒng)完全加載后,還有剩余的500千字節(jié)可用于應(yīng)用程序進(jìn)程。 當(dāng)應(yīng)用程序開(kāi)始載入內(nèi)存時(shí),它們以操作系統(tǒng)確定的塊大小進(jìn)行載入。如果塊大小為2千字節(jié),那么每個(gè)已載入的進(jìn)程將會(huì)獲得多個(gè)大小為2千字節(jié)的內(nèi)存塊。應(yīng)用程序?qū)?huì)以這些固定的塊大小載入,并開(kāi)始和結(jié)束于由4或8個(gè)字節(jié)的字創(chuàng)建的邊界。這些塊和邊界有助于確保各應(yīng)用程序不會(huì)因?yàn)橐粌蓚€(gè)字節(jié)的計(jì)算誤差而載入彼此內(nèi)存空間的頂部。在確保滿足這一條件后,更重要的問(wèn)題是,當(dāng)500千字節(jié)的應(yīng)用程序空間被填滿之后應(yīng)當(dāng)采取什么措施。 在多數(shù)計(jì)算機(jī)中,可以在原有內(nèi)存空間的基礎(chǔ)上添加內(nèi)存。例如,您可以將RAM從1兆字節(jié)擴(kuò)展到2兆字節(jié)。這是可行的,但通常比較昂貴。此外,這忽視了計(jì)算的一個(gè)基本現(xiàn)狀,即由應(yīng)用程序存儲(chǔ)在內(nèi)存中的多數(shù)信息在給定時(shí)間內(nèi)并不會(huì)被使用。處理器一次只能訪問(wèn)處于一個(gè)位置的內(nèi)存,因此大多數(shù)的RAM不會(huì)在任意時(shí)段使用。因?yàn)榇疟P(pán)空間相對(duì)于RAM更為充足,所以將RAM中的信息移動(dòng)到硬盤(pán)可以在不花費(fèi)任何代價(jià)的情況下大大擴(kuò)展RAM空間,這項(xiàng)技術(shù)被稱為虛擬內(nèi)存管理。 磁盤(pán)存儲(chǔ)是必須由操作系統(tǒng)管理的唯一一種內(nèi)存類(lèi)型,并且也是最慢的一種類(lèi)型。按速度排序,計(jì)算機(jī)系統(tǒng)中的內(nèi)存類(lèi)型可分為:
操作系統(tǒng)必須使用不同類(lèi)型內(nèi)存的可用性來(lái)平衡各進(jìn)程的需求,按照進(jìn)行的指示計(jì)劃將數(shù)據(jù)以塊(稱為頁(yè)面)的形式在可用內(nèi)存之間移動(dòng)。 驅(qū)動(dòng)程序 操作系統(tǒng)和所有不位于計(jì)算機(jī)主板上的硬件是通過(guò)一種稱為驅(qū)動(dòng)程序的特殊程序進(jìn)行通信的。驅(qū)動(dòng)程序的主要作用是充當(dāng)硬件子系統(tǒng)的電子信號(hào)、操作系統(tǒng)及應(yīng)用程序的高級(jí)編程語(yǔ)言之間的轉(zhuǎn)換器。驅(qū)動(dòng)程序?qū)⒉僮飨到y(tǒng)已定義的數(shù)據(jù)視為文件,然后將它們轉(zhuǎn)換成存儲(chǔ)設(shè)備上特定位置處的比特流,或打印機(jī)中的一系列激光脈沖。 因?yàn)樵谟沈?qū)動(dòng)程序控制的硬件之間存在著很大的差異,因此驅(qū)動(dòng)程序運(yùn)行的方式也存在差異,但大多數(shù)驅(qū)動(dòng)程序都會(huì)根據(jù)設(shè)備的要求運(yùn)行,并且運(yùn)行方式也與任何其他進(jìn)程類(lèi)似。操作系統(tǒng)頻繁地將擁有較高優(yōu)先級(jí)的塊分配給驅(qū)動(dòng)程序,以使硬件資源盡可能快地得到釋放并準(zhǔn)備進(jìn)一步使用。 驅(qū)動(dòng)程序與操作系統(tǒng)之所以分開(kāi),其中一個(gè)原因是為了將新增功能添加到驅(qū)動(dòng)程序(從而添加到硬件子系統(tǒng)),而無(wú)需對(duì)操作系統(tǒng)本身進(jìn)行修改、重新編譯以及重新分配。通過(guò)開(kāi)發(fā)新的硬件設(shè)備驅(qū)動(dòng)程序,通常由子系統(tǒng)的制造商執(zhí)行開(kāi)發(fā)或付費(fèi),而不是操作系統(tǒng)的發(fā)行商,整個(gè)系統(tǒng)的輸入/輸出功能將得到大幅度提高。 管理輸入和輸出很大程度上是管理隊(duì)列和緩沖器,從某一設(shè)備接收字節(jié)流的特殊存儲(chǔ)設(shè)備(可能是鍵盤(pán)或串行端口)將存儲(chǔ)這些字節(jié),再將其以CPU可以處理的足夠慢的速度釋放到CPU。當(dāng)大量進(jìn)程同時(shí)運(yùn)行并占用處理器時(shí)間時(shí),這個(gè)功能尤其的重要。該操作系統(tǒng)將對(duì)緩沖器發(fā)出指令,使之可以繼續(xù)接收該設(shè)備的輸入,但當(dāng)使用該輸入的進(jìn)程處于中止?fàn)顟B(tài)時(shí),操作系統(tǒng)會(huì)停止向CPU發(fā)送數(shù)據(jù)。那么,當(dāng)需要輸入的進(jìn)程再一次激活時(shí),操作系統(tǒng)將會(huì)命令緩沖器發(fā)送數(shù)據(jù)。該進(jìn)程允許使用鍵盤(pán)或調(diào)制解調(diào)器處理外部用戶或高速運(yùn)行的計(jì)算機(jī)的需求,盡管有時(shí)CPU不能使用那些來(lái)源的輸入。 管理計(jì)算機(jī)系統(tǒng)的所有資源是操作系統(tǒng)的主要功能,對(duì)于實(shí)時(shí)操作系統(tǒng),可能需要所有的功能。但是對(duì)于其他操作系統(tǒng),為應(yīng)用程序提供相對(duì)簡(jiǎn)單、一致的方式以及人們使用功能強(qiáng)大的硬件是它們存在的一個(gè)重要原因。 應(yīng)用程序接口 應(yīng)用程序接口 一位正在編寫(xiě)一個(gè)從科學(xué)儀器記錄數(shù)據(jù)應(yīng)用程序的程序員,可能希望科學(xué)家能夠指定所創(chuàng)建文件的名稱。操作系統(tǒng)可能提供一種稱為MakeFile的API功能來(lái)創(chuàng)建文件。當(dāng)編寫(xiě)該程序時(shí),該程序員可能會(huì)插入一行,如: MakeFile [1, %Name, 2] 在此示例中,該指令告訴操作系統(tǒng)創(chuàng)建一個(gè)允許隨機(jī)訪問(wèn)其數(shù)據(jù)的文件(以1表示,對(duì)于序列文件中的其他選項(xiàng)可以用0表示),將由用戶(%Name)鍵入名稱,并且其大小取決于存儲(chǔ)在該文件中的數(shù)據(jù)多少(以2表示,其他選項(xiàng)中的固定大小可能用0表示,并且用1表示文件在添加數(shù)據(jù)時(shí)變大,但在數(shù)據(jù)刪除時(shí)卻不會(huì)減小)?,F(xiàn)在,讓我們了解一下操作系統(tǒng)如何將指令轉(zhuǎn)換成操作。 操作系統(tǒng)向磁盤(pán)驅(qū)動(dòng)器發(fā)送請(qǐng)求,以確定第一個(gè)可用空白存儲(chǔ)空間的位置。 使用該信息,操作系統(tǒng)在文件系統(tǒng)中創(chuàng)建一個(gè)項(xiàng)以顯示文件的起始與結(jié)束位置、文件名、文件類(lèi)型、文件是否歸檔、哪些用戶具有查看或修改文件的權(quán)限,以及文件的創(chuàng)建日期和時(shí)間。 操作系統(tǒng)在標(biāo)識(shí)文件的起始位置編寫(xiě)信息,設(shè)置可能的訪問(wèn)類(lèi)型,并包含將文件捆綁到應(yīng)用程序的其他信息。在所有信息中,發(fā)送到磁盤(pán)驅(qū)動(dòng)器的請(qǐng)求和文件起始與結(jié)束點(diǎn)的地址在格式方面很大程度上取決于制造商和磁盤(pán)驅(qū)動(dòng)器的型號(hào)。 由于程序員編寫(xiě)了程序來(lái)使用磁盤(pán)存儲(chǔ)的API,因此程序員不需要跟蹤指令代碼、數(shù)據(jù)類(lèi)型以及每個(gè)可能的硬盤(pán)和磁帶驅(qū)動(dòng)器的響應(yīng)代碼。與各硬件子系統(tǒng)的驅(qū)動(dòng)程序相關(guān)聯(lián)的操作系統(tǒng),可以處理硬件更改的細(xì)節(jié)——程序員必須簡(jiǎn)單編寫(xiě)API的代碼并相信操作系統(tǒng)可以完成剩下的任務(wù)。 近年來(lái),API已成為計(jì)算機(jī)行業(yè)競(jìng)爭(zhēng)最為激烈的領(lǐng)域之一。很多公司認(rèn)識(shí)到,使用API的程序員會(huì)最終將其轉(zhuǎn)換成一種控制并從該行業(yè)的某一特定領(lǐng)域獲利的能力。這就是為什么目前有這么多的公司愿意為公眾免費(fèi)提供閱讀器和查看器之類(lèi)的應(yīng)用程序的原因之一。他們了解消費(fèi)者將會(huì)要求這類(lèi)程序可以利用免費(fèi)的閱讀器,而應(yīng)用程序公司就準(zhǔn)備要求支付使用費(fèi)才可以使用提供消費(fèi)者要求的各種功能的軟件。 用戶界面 正如API為應(yīng)用程序提供了可以一直使用計(jì)算機(jī)系統(tǒng)資源的方法,用戶界面(UI)則提供了一個(gè)用戶與計(jì)算機(jī)進(jìn)行交互的結(jié)構(gòu)。在過(guò)去十年中,幾乎所有用戶界面的發(fā)展都出現(xiàn)在圖形用戶界面(GUI)領(lǐng)域。蘋(píng)果公司的Macintosh和微軟公司的Windows都引起了眾多關(guān)注并占領(lǐng)了多數(shù)市場(chǎng)份額。廣受歡迎的開(kāi)源軟件技術(shù)Linux操作系統(tǒng)也支持圖形用戶界面功能。
還有用于其他操作系統(tǒng)的其他用戶界面,有些是圖形界面,有些則不是。 例如,Unix具有稱為外殼的用戶界面,相對(duì)于標(biāo)準(zhǔn)操作系統(tǒng)基于文本的界面,該用戶界面具有更大的靈活性以及更強(qiáng)大的功能。諸如Korn外殼和C外殼的程序是添加了重要實(shí)用程序的基于文本的界面,但它們的主要目的是使用戶可以更輕松地利用操作系統(tǒng)的功能。也有一些圖形用戶界面,如X-Windows和Gnome,可以使Unix和Linux操作起來(lái)更像是Windows和Macintosh計(jì)算機(jī)。 在所有這些示例中,用戶界面作為一個(gè)層面是位于操作系統(tǒng)本身之上的程序或程序集,記住這一點(diǎn)很重要。對(duì)于具備不同機(jī)制的Windows和Macintosh操作系統(tǒng)而言,原理也是一樣的。核心操作系統(tǒng)工作功能,即計(jì)算機(jī)系統(tǒng)的管理,在于操作系統(tǒng)的內(nèi)核。盡管顯示管理器與位于下方的內(nèi)核緊密相連,但它是獨(dú)立的。操作系統(tǒng)內(nèi)核和用戶界面、實(shí)用程序以及其他軟件之間的聯(lián)系決定了當(dāng)今操作系統(tǒng)的很多差異,并且將會(huì)在未來(lái)進(jìn)一步影響它們。 操作系統(tǒng)的新增功能 日益增長(zhǎng)的網(wǎng)絡(luò)的重要性 對(duì)于桌面系統(tǒng)而言,訪問(wèn)局域網(wǎng)或互聯(lián)網(wǎng)已經(jīng)成為一種必備的功能,從而在很多方面只要談及操作系統(tǒng),就不能不說(shuō)它與其他計(jì)算機(jī)和服務(wù)器的連接。操作系統(tǒng)開(kāi)發(fā)人員已經(jīng)使互聯(lián)網(wǎng)成為能夠提供重要操作系統(tǒng)更新和錯(cuò)誤修復(fù)的標(biāo)準(zhǔn)方法。盡管可以通過(guò)CD接受這些更新,但使用這種方式的人越來(lái)越少。事實(shí)上,一些完整的操作系統(tǒng)本身只能通過(guò)互聯(lián)網(wǎng)發(fā)布來(lái)獲得。 其次,一種稱為NetBooting的進(jìn)程可以很輕松地將普通消費(fèi)者的臺(tái)式計(jì)算機(jī)中正在運(yùn)行的操作系統(tǒng)(內(nèi)核、用戶界面及所有其他內(nèi)容)從它所控制的計(jì)算機(jī)上移除。而這在先前只有那些多用戶平臺(tái)(如UNIX)上經(jīng)驗(yàn)豐富的超級(jí)用戶以及使用特殊應(yīng)用程序套件才可以實(shí)現(xiàn)。NetBooting允許一臺(tái)計(jì)算機(jī)的操作系統(tǒng)通過(guò)網(wǎng)絡(luò)中所連接任意位置的一臺(tái)遠(yuǎn)程計(jì)算機(jī)服務(wù)于整個(gè)網(wǎng)絡(luò)連接。一臺(tái)NetBoot服務(wù)器可以同時(shí)為幾十臺(tái)客戶端計(jì)算機(jī)和每臺(tái)客戶端計(jì)算機(jī)的用戶提供操作系統(tǒng),使用戶得到類(lèi)似于使用他們熟知的桌面操作系統(tǒng)(如Windows或MacOS)的體驗(yàn)。 開(kāi)源軟件技術(shù) 有關(guān)軟件分發(fā)的特殊理念是操作系統(tǒng)未來(lái)發(fā)展所需關(guān)注的一個(gè)問(wèn)題,即開(kāi)發(fā)一種同時(shí)適用于公司和消費(fèi)者的操作系統(tǒng)。 大家普遍認(rèn)為L(zhǎng)inux作為一種根據(jù)開(kāi)源軟件技術(shù)的原則創(chuàng)建和分發(fā)的操作系統(tǒng),已經(jīng)對(duì)操作系統(tǒng)產(chǎn)生了較大的影響。大多數(shù)操作系統(tǒng)、驅(qū)動(dòng)程序和實(shí)用程序由分發(fā)其軟件可執(zhí)行版本(這些版本不可以研究或更改)的商業(yè)組織編寫(xiě)。開(kāi)源軟件技術(shù)需要分發(fā)可以研究、更改以及在其基礎(chǔ)上創(chuàng)建的原始源材料,并且其結(jié)果也可再次自由分發(fā)。在臺(tái)式計(jì)算機(jī)領(lǐng)域內(nèi),這將導(dǎo)致無(wú)數(shù)有用的和無(wú)成本的應(yīng)用程序(如圖像操作程序GIMP和廣受歡迎的網(wǎng)絡(luò)服務(wù)器Apache)的開(kāi)發(fā)及分發(fā)。在消費(fèi)者設(shè)備領(lǐng)域,Linux的使用已經(jīng)在更大程度上為個(gè)人用戶控制其設(shè)備的工作方式鋪平了道路。 Linux徽標(biāo) 了解操作系統(tǒng) 許多消費(fèi)電子設(shè)備(如手機(jī)和路由器)都有意避免用戶訪問(wèn)其中的操作系統(tǒng),很大程度上是為了確保操作系統(tǒng)不會(huì)在無(wú)意中被破壞或刪除。在許多情況下,他們保留了一種“開(kāi)發(fā)人員模式”或“程序員模式”,這允許具有相應(yīng)知識(shí)的用戶可以進(jìn)行更改。通常這些系統(tǒng)的編程方式是使之可以在僅有的范圍內(nèi)進(jìn)行更改。但有些設(shè)備保留訪問(wèn)模式以及進(jìn)行增強(qiáng)功能的更改方式都是開(kāi)放的,特別是在使用Linux時(shí)較為常見(jiàn)。下面介紹幾個(gè)例子:
[責(zé)任編輯:小敏] |
|
來(lái)自: ldjsld > 《電腦手機(jī)及電子技術(shù)》