第22章 操作系統(tǒng)_第1頁
第22章 操作系統(tǒng)_第2頁
第22章 操作系統(tǒng)_第3頁
第22章 操作系統(tǒng)_第4頁
第22章 操作系統(tǒng)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第22章一直以來,我們似乎在組裝著—至少在想像中—一臺完整的計算機(jī)。它有一個微處理器、一些隨機(jī)訪問存儲器、一個鍵盤、一個視頻顯示器和一個磁盤驅(qū)動器。當(dāng)所有硬件各就各位以后,我們?nèi)褙炞⒂陂_關(guān),給它加電,帶給它生命。也許這樣的描述會在你的腦海里喚起VictorFrankenstein裝配怪物時的情景,或者想起Geppetto正在制造將要命名為匹諾槽的木偶。但我們還缺少一些東西,既不是驚人的力量,也不是良好的愿望。繼續(xù)進(jìn)行下去,打開新計算機(jī)電源,然后告訴我們你看到了什么?當(dāng)陰極射線管發(fā)熱以后,屏幕上顯示的是一些整齊排列但又是隨機(jī)的ASCII碼字符。這正如預(yù)期的那樣,當(dāng)電源斷開時,半導(dǎo)體存儲器的內(nèi)容會丟失;當(dāng)給它加電時,它處在隨機(jī)的不可預(yù)料的狀態(tài)。同樣,為微處理器構(gòu)建的所有RAM中的內(nèi)容也是隨機(jī)的,微處理器把這些隨機(jī)的字節(jié)當(dāng)作機(jī)器代碼來執(zhí)行。這樣不會引起任何壞的情況發(fā)生,但是,也沒有什么意義。這里缺少的正是軟件。當(dāng)微處理器加電或復(fù)位時,它執(zhí)行內(nèi)存中某個地址里存放的機(jī)器代碼。對8080來說,這個地址是0000h。對正確設(shè)計的計算機(jī)來說,加電時,該地址處應(yīng)該有一個機(jī)器代碼指令(很可能是多個指令中的第一條。機(jī)器代碼指令又是怎樣放到內(nèi)存的那個地方的呢?在新設(shè)計的計算機(jī)中,把軟件放到合適地方的處理過程可能是最令人費解的。要理解它,先從一個控制面板著手。該控制面板與第16章講到的用來寫入字節(jié)到隨機(jī)訪問存儲器然后再讀出的控制面板相似:控制面 接 與以前的控制面板不同的是,這個控制面板有一個標(biāo)明為復(fù)位的開關(guān),這個開關(guān)連到微處理器的復(fù)位輸入。只要這個開關(guān)是閉合的,處理器就什么也不做;當(dāng)斷開這個開關(guān)后,微處理器開始執(zhí)行機(jī)器碼。控制面板的使用方法是:復(fù)位開關(guān)置ON,復(fù)位微處理器,中止執(zhí)行機(jī)器碼;接管開關(guān)置ON,則接收總線上的地址信號和數(shù)據(jù)信號。這時,可以使用A0~A15開關(guān)輸入16位的存儲器地址。標(biāo)為D0~D7的燈用來顯示該地址的8位內(nèi)容。要寫入一個新的字節(jié)到相應(yīng)的地址,則應(yīng)在D0~D7開關(guān)上設(shè)置該字節(jié),然后把寫入開關(guān)先撥到ON再撥到OFF第22章第22章操作系 字節(jié)以后,把接管開關(guān)設(shè)置為OFF,復(fù)位開關(guān)設(shè)置為OFF這就是如何向剛剛從頭建成的計算機(jī)中輸入第一個機(jī)器碼程序的過程,不用說,這是很費事的。又是什么改變了這一切,使得人們樂于在視頻顯示器前查看自己程序的執(zhí)行結(jié)果呢?在上一章中已經(jīng)講到,只顯示字符的視頻顯示器有1KB的隨機(jī)訪問存儲器用來存放25行,每行40個字符的ASCII碼。程序把內(nèi)容寫入到該存儲器中,方法與寫入到計算機(jī)中其他存儲器中的方法一樣。然而,把程序的輸出顯示到視頻顯示器并不是那么簡單。例如,如果一段程序,執(zhí)行結(jié)果是4Bh,則不能簡單地把這個值寫入視頻顯示器的存儲器中。如果這樣做,屏幕上將會看到的是字符KASCII碼是4Bh。正確的是應(yīng)寫兩個ASCII碼字符到顯示器:34h(是4的ASCII碼)和42h(是B的ASCII碼。8位的計算結(jié)果每半個字節(jié)是一個十六進(jìn)制數(shù)字,該數(shù)字必須通過對應(yīng)的ASCII碼來顯示。當(dāng)然,也可以寫一段小的子程序來完成這種轉(zhuǎn)換。下面的一段8080匯編語言程序用來把十六進(jìn)制數(shù)中的一位轉(zhuǎn)換成對應(yīng)的ASCII碼(00h~0Fh:NibbleToAscii:CMPA,0Ah;Checkifit’saletterornumber(判斷是數(shù)字還是字母JCADDA,37h ;AtoFconvertedto41hto46h(把A~F轉(zhuǎn)換成41h~46h) ADD 0to9convertedto30hto39h(把0~9轉(zhuǎn)換成下面的子程序調(diào)用NibbleToAscii兩次,把累加器A中的一個字節(jié)轉(zhuǎn)換成兩個ASCII碼數(shù)字,并放在寄存器B和C中: ;RotateAright4times...(A右移4次;...togethigh-ordernibble(取高半字節(jié))CALLNibbleToAscii;ConverttoASCIIcode(轉(zhuǎn)換成ASCII碼);MoveresulttoregisterB(結(jié)果放入寄存器;GetoriginalAback(取出原來的;Getlow-ordernibble(取低半字節(jié)CALLNibbleToAscii ;ConverttoASCIIcode(轉(zhuǎn)換成ASCII碼)MOVC,A ;MoveresulttoregisterC(結(jié)果放入寄存器C)這些子程序使得可以在視頻顯示器中按十六進(jìn)制來顯示一個字節(jié)。如果要轉(zhuǎn)換成十進(jìn)制,再做一些工作即可。此過程與把十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法非常相似—用10來除幾次即可。記住,還沒有把這些匯編語言程序輸入到內(nèi)存中。也許,你已經(jīng)把它們寫到了紙上并且轉(zhuǎn)換成了機(jī)器碼,然后再輸入到內(nèi)存中。這種“手工匯編”是第24章要講的內(nèi)容。盡管控制面板不需要許多硬件,但卻不容易使用。它所采用的輸入/輸出方法是最壞的方法。既然聰明到可以從零開始來制造自己的計算機(jī),卻還用數(shù)字0和1當(dāng)然要用鍵盤來作為按鍵。前面講過計算機(jī)鍵盤的構(gòu)造是只要按下一個鍵,就會產(chǎn)生一個對微處理器的中斷信號。計算機(jī)中的中斷控制芯片使得微處理器響應(yīng)中斷,執(zhí)行一條RST指令。假設(shè)這是一條RST1指令,這條指令使得微處理器在堆棧中保存當(dāng)前程序計數(shù)器的值并跳轉(zhuǎn)到地址0008h處。從這個地址開始,可以輸入一些代碼(用控制面板。這些代碼稱為鍵盤處理程序。為了使一切都正常工作,還需要一些代碼在微處理器復(fù)位時執(zhí)行,這些代碼叫初始化程序。初始化程序首先設(shè)置堆棧指針,使得堆棧分配到內(nèi)存的有效區(qū)域,然后,把視頻顯示存儲器的每一個字節(jié)設(shè)置為十六進(jìn)制數(shù)20h,即ASCII碼的空格,這樣就可以去掉屏幕上的隨機(jī)字符。初始化程序用OUT(Output)指令設(shè)置光標(biāo)的位置(光標(biāo)是視頻顯示器上的下劃線,指示了新輸入的字符將要顯示的位置)1行第1列。下一條指令為EI,即中斷允許,該指HT指令,它停止微處理器的工作。這就是初始化程序的工作。從這時起,由于執(zhí)行了HT指令,計算機(jī)很可能處于停機(jī)狀態(tài)。能夠把計算機(jī)從停機(jī)狀態(tài)喚起的事件僅有來自于控制面板的復(fù)位信號或從鍵盤來的中斷信號。無論何時在鍵盤上按下一個鍵,中斷信號都使得微處理器從初始化程序最后的HT語句跳轉(zhuǎn)到鍵盤處理程序。鍵盤處理程序用IN(Input)指令來確定按下的鍵,然后根據(jù)按下的鍵來執(zhí)行一些動作(即鍵盤處理程序處理每一個按鍵,接著執(zhí)行一條RET(Return)指令,最后又回到HT語句等待另一個鍵盤中斷。不論按下的是字符、數(shù)字還是標(biāo)點符號,鍵盤處理程序使用鍵盤掃描碼,結(jié)合Shift鍵是否被按下,來確定合適的ASCII碼。然后將ASCII碼寫到視頻顯示存儲器中光標(biāo)的位置。這個過程稱為回顯鍵到顯示器。光標(biāo)位置增加并移到剛才顯示的字符后面的空格處。由此,可以在鍵盤上敲入一串字符并顯示在屏幕上。如果按下的鍵是Backspace(對應(yīng)的ASCII碼是08h,則鍵盤處理程序刪除最后寫入到視(刪除字符是很簡單的一件事,只需寫入ASCII20h—空格字符)人們通常在鍵盤上敲入一行字符(需要改正錯誤時可用Backspace鍵,然后敲入Return(回車)Ente。與在電子打字機(jī)上敲Return鍵表明已Enter鍵表明打字者已經(jīng)完成了一行文字的鍵入。鍵盤處理程序在處理Return或Enter鍵(對應(yīng)的ASCII碼為0Dh)的時候,視頻顯示存儲器的這一行字符被解釋成對計算機(jī)的一個命令,也就是說,鍵盤處理程序要去做的一些事情。W、D和R。如果字符行以W開始,該命令意味著Writ(寫入)一些字節(jié)到內(nèi)存中。假設(shè)敲入到屏幕上的行如下面這樣:W1020354F78239BAC這個命令指示命令處理程序把十六進(jìn)制數(shù)35、4F1020h開始的內(nèi)存中。為了完成這項工作,鍵盤處理程序需要將ASCII碼轉(zhuǎn)換成字節(jié)—前面示范的那個變換的反變?nèi)绻址幸訢開頭,該命令意味著Display(顯示) 命令處理程序?qū)@示從內(nèi)存地址1030h11個字節(jié)(11,是因為在40個字符寬的顯示器上,在與上面命令同一行的地址后面能顯示的字符數(shù)為11。可以用Display命令來查看內(nèi)存中的內(nèi)容。如果字符行以R開頭,該命令意味著Run(運行) 1000h1000h存到寄存器對HL中,然后執(zhí)行指令PCHL,即把寄存器對HL的值裝入程序計數(shù)器,也就是跳轉(zhuǎn)到該地址處執(zhí)行程序。采用鍵盤處理程序和命令處理程序進(jìn)行工作是一個重要的里程碑。有了它,無需再用什么控制面板,從鍵盤輸入容易、迅速且效果良好。當(dāng)然,還有問題。當(dāng)電源斷電時,輸入的所有代碼會丟失。正因為如此,可能要把這些新代碼存到只讀存儲器,即ROM中。上一章曾講到了一個ROM芯片里存有所有用來在屏幕上顯示ASCII字符的點陣模式。假定所用的芯片在制造時已經(jīng)配置有這些數(shù)據(jù),則你也可以在家里自己編程ROM芯片。可編程只讀存儲器(PROM)芯片只可以編程一次;可擦除可編程只讀存儲器(EPROM)芯片即可以編程,而且它在紫外光的照射下擦除所有的信息后還可以重新再進(jìn)行編程。前面講過,RAM板連到DIP開關(guān),DIP開關(guān)允許設(shè)定RAM8080系統(tǒng),初始時一個RAM板地址應(yīng)設(shè)置成0000hROM,則ROM0000h,而RAM命令處理程序的創(chuàng)建是一個重要的里程碑,不僅因為它對輸入到內(nèi)存中的字節(jié)提供了較快的解釋,而且使計算機(jī)現(xiàn)在成為交互式的了。當(dāng)從鍵盤上敲入一些東西后,計算機(jī)就會做出響應(yīng),并在屏幕上顯示出來。一旦有了ROM中的命令處理程序,就可以開始試著從內(nèi)存中寫入數(shù)據(jù)到磁盤驅(qū)動器(可能是對應(yīng)于磁盤扇區(qū)大小的塊,并且把數(shù)據(jù)讀回到內(nèi)存。把程序和數(shù)據(jù)存放在磁盤上比存放在RAM中要安全得多(后者如果電源出故障它們會丟失,也比存放在ROM中要靈活得多。也許應(yīng)該加入一些命令到命令處理程序,如用S 2080215這個命令表示從地址2080h處開始的內(nèi)存塊將要存放到磁盤的第2面,第15磁道,第3(內(nèi)存塊的大小根據(jù)磁盤扇區(qū)的大小確定。同樣,也可以加入一個LoadL2080215當(dāng)然,還需要保留存放的地方的記錄,可以用手邊的本和鉛筆來記錄。一定要小心不要把保存在某個地址的代碼重載到內(nèi)存的另一個地址,這樣做就別指望它能正常工作。所有的Jump和Call指令將會出錯,因為它們標(biāo)識的是原來的地址。同樣,如果一個程序比磁盤扇區(qū)的大小要大,則需要把它存放到幾個扇區(qū)。磁盤中有些扇區(qū)可能被其他程序或數(shù)據(jù)占用了,有些扇區(qū)還是空的,因而存放長程序的扇區(qū)在磁盤上可能是不連續(xù)的。文件系統(tǒng)是指在磁盤存儲器中按文件來組織數(shù)據(jù)的方法。文件是存放在一個或多個扇區(qū)中相關(guān)數(shù)據(jù)的集合。更重要的是,每個文件有一個文件名作為標(biāo)識,便于記住文件中包含的內(nèi)容??梢园汛疟P看成類似于文件柜,里面的每一個文件都有一個標(biāo)志用來表示文件的名稱。文件系統(tǒng)通常是稱作操作系統(tǒng)的較大軟件集合的一部分。本章構(gòu)造的鍵盤處理程序和命令處理程序也肯定包含在操作系統(tǒng)中。先不考慮其漫長的演化過程,讓我們看一下真正的操作系統(tǒng)是在干什么,又是如何工作的。8位微處理器操作系統(tǒng)是CP/M,是GaryKildall(出生于1942年)在2070Intel8080微處理器而寫的,他后來創(chuàng)立了DRI(digitalresearchCP/M存放在磁盤中。早期CP/M最常用的存儲介質(zhì)是單面8英寸磁盤,有77個磁道,每道26128個字節(jié)(總共256256字節(jié))CP/M。下面將簡單地描述CP/M是如何從磁盤裝入到計算機(jī)內(nèi)存中的。CP/M盤中余下的75CP/M的文件系統(tǒng)雖然很簡單,但卻滿足兩個基本的要求:首先,磁盤中的每個文件有一個名字作為標(biāo)識,這個名字也存在磁盤中。其實,CP/M用來讀取文件所需的全部信息都與文件一起存放在磁盤中;第二,文件在磁盤中并不占據(jù)連續(xù)的扇區(qū)。由于經(jīng)常創(chuàng)建和刪除不同大小的文件,因而磁盤上的剩余空間都是碎片。文件系統(tǒng)具有把大文件存放在不連續(xù)扇區(qū)的這種能力是非常有用的。用來存放文件的758個扇區(qū),即1024字節(jié)。磁盤中共有243個分配塊,編號從0~242。開始的兩個分配塊(共2048字節(jié))用作目錄區(qū)。目錄區(qū)是磁盤中的一個特殊區(qū)域,用來存放磁盤中每一個文件的名稱和一些主要信息。存在磁盤中的每一個文件需要一個32字節(jié)長2048字節(jié),因而磁盤能夠存放2048/32,即64個文件。每一個32字 含 通常設(shè)為 保留(設(shè)置為 目錄項的第一個字節(jié)只在文件系統(tǒng)可供兩個或更多人同時共享時使用。在CP/M中,該字節(jié)通常設(shè)置為0,與第13、14字節(jié)一樣。在CP/M中,每個文件的文件名由兩部分組成,第一部分稱作文件名,最多有8個字符,1~8字節(jié);第二部分是文件類型,最多有39~11字節(jié)。有幾個標(biāo)準(zhǔn)的文件類型,如:TXT表示文本文件(即文件中只包含ASCII碼)COM(Command的簡稱)8080機(jī)器碼指令或程序。定義文件時,這兩部分由點隔開,如:這種文件命令的方式習(xí)慣上稱為8.3,表明點前最多有8個字符,點后最多有3目錄項中的磁盤存儲表標(biāo)明了該文件所存放的分配塊。假設(shè)磁盤存儲表的前4項分別為14h、15h、07h和23h,其余均為0,則表明該文件占用4個分配塊,即4KB的空間。文件實際15字節(jié)標(biāo)明在最后一個分配塊中實際用到了多少個128字節(jié)的扇磁盤存儲表長1616384字節(jié)的文件,超過16KB的文件要使用多個目錄項,稱為擴(kuò)展。在這種情況下,第一個目錄項的第12字節(jié)設(shè)置為0,第二個目錄項的第12字節(jié)設(shè)置為1,依此類推。上面提到過文本文件也稱為ASCII文件,或其他類似名稱。文本文件中包含有對應(yīng)于字符的ASCII碼(包括回車和換行代碼)供人們?yōu)g覽。不是文本文件的文件稱為二進(jìn)制文件。CP/M的COM8080的機(jī)器碼。假設(shè)一個文件(一個很小文件)包括三個16位數(shù)—5A48h、78BFh和F510h。由6字節(jié):485ABF7810當(dāng)然,這是存儲多字節(jié)數(shù)的Intel格式,其中低字節(jié)在前。為Motorola處理器編寫的程序則5A4878BFF5若用ASCII碼文本文件存放這同樣3個1635413438680D0A37384246680D0A46353130680DASCII碼,每一個數(shù)由回車(0Dh)和換行(0Ah)終止。文本文件很容易顯示,它們不是作為字節(jié)串,而是作為字符顯示:包含這3個數(shù)的ASCII32333131320D0A33303931310D0A36323733360D這些字節(jié)是與這3個數(shù)等效的十進(jìn)制數(shù)的ASCII既然采用文本文件的目的是方便人們閱讀,因而沒有什么理由不用十進(jìn)制而非要用十六進(jìn)制。CP/M自身存放在磁盤的頭兩個磁道。為了執(zhí)行它,CP/M必須從磁盤裝載到內(nèi)存。使用CP/M的計算機(jī)中,ROM并不需要很多,它只需要用來存放一小段代碼,稱為引導(dǎo)程序(因為這段代碼通過自舉來引導(dǎo)操作系統(tǒng)的其余部分。引導(dǎo)程序把磁盤最開始的128個字節(jié)的扇區(qū)裝入內(nèi)存并執(zhí)行,這個扇區(qū)包含有把CP/M的其余部分裝入內(nèi)存的代碼。整個這個過程稱為引導(dǎo)操作系統(tǒng)。第22章第22章操作系 CP/M把它自己安排在RAMCP/M以后,整個內(nèi)存組織如下CP/M的三個部件—基本輸入/輸出系統(tǒng)(BIOS、基本磁盤操作系統(tǒng)(BDOS)和控制臺命令處理程序(CCP)6KB的內(nèi)存,臨時程序區(qū)域(TPA)—在64KB內(nèi)存的計算機(jī)中大約有58KBCCP提示符提示可以輸入信息。在有不止一個磁盤驅(qū)動器的計算機(jī)中,A指的是第一個磁盤驅(qū)CP/M從該驅(qū)動器裝入。在提示符后敲入命令并按回車鍵,CCP就執(zhí)行該命令并在屏幕CCP又顯示提示符。CCP該命令用來顯示磁盤目錄,即存放在磁盤中的所有文件的列表??梢杂锰厥庾址亢?來DIRDIR顯示文件名為5個字符,第一個字符為A,最后一個字符為B另外一個命令是ERA,它是EraseERAERA還一個命令是REN,它是Rename的縮寫,用來改變文件名。TYPE命令用來顯示文本文件的內(nèi)容。因為文本文件只包含有ASCII碼,因而該命令還可用來瀏覽屏幕上的文件內(nèi)容,如:TYPESAVE命令用來把臨時程序區(qū)域中的一個或多個256字節(jié)的內(nèi)存塊以一個特定名稱存入到磁盤中。如果敲入一個CP/M不能識別的命令,就認(rèn)為輸入的是磁盤中的一個程序的名稱。程序的文件類型為COM,代表命令。CCPCP/M把文件從磁盤裝入臨時程序區(qū)域,該區(qū)域從地址0100h處開始。以上就是告訴你如何運行磁盤中的文件。如果在CP/M提示符后敲入:且如果名稱為CALC.COM的文件存在于磁盤中,則CCP把該文件裝入從地址0100h處開始的內(nèi)存中,然后轉(zhuǎn)到地址0100h處的機(jī)器碼指令開始執(zhí)行程序。前面講述了如何在內(nèi)存的任一地方加入機(jī)器碼指令并執(zhí)行,但按磁盤文件存儲的CP/M程0100h處開始裝入。CP/M包括幾個有用的程序,如PIP(peripheralinterchangeprogram,即外設(shè)交換程序,用來拷貝文件。ED是文本編輯器,用來創(chuàng)建和修改文本文件。像PIP和ED這類小且用來完成簡單事務(wù)的程序通常稱為實用程序。如果運行CP/M系統(tǒng),可以購買一些大的應(yīng)用程序,如字處理軟件或計算機(jī)電子報表軟件;也可以自己編制這樣的軟件。所有這些也都以COM類型的文件存儲。到目前為止,已經(jīng)知道了CP/M(像許多操作系統(tǒng)一樣)如何提供命令和實用程序以便對文件進(jìn)行基本的操作。同樣,也已經(jīng)知道CP/M如何把程序裝載到內(nèi)存并執(zhí)行。作為一個操作系統(tǒng),CP/M還有第三個主要功能。在CP/M下運行的程序經(jīng)常需要把輸出寫到視頻顯示器,或者從鍵盤上讀入輸入的內(nèi)容,或者從磁盤讀取一個文件和向磁盤中寫入一個文件。但通常情況下,CP/M程序并不把程序輸CP/M程序也不訪問鍵盤硬件看看輸入了什么,它也不訪問磁盤驅(qū)動器硬件去讀或?qū)懘疟P的扇區(qū)。事實上,運行在CP/M下的程序利用CP/M中所構(gòu)建的子程序集來完成這些公共事務(wù)。這些子程序經(jīng)過特別設(shè)計,從而使得程序很容易訪問計算機(jī)中的硬件—包括視頻顯示器、鍵盤和磁盤—CP/M下運行的程序不需要了解磁道、扇區(qū),這是CP/M的工作,它可以把文件存放到磁盤,也可以讀取磁盤上的文件。為程序提供方便訪問計算機(jī)硬件的手段是操作系統(tǒng)的第三個主要功能。操作系統(tǒng)提供的這種訪問手段稱之為應(yīng)用程序接口,即API(applicationprogramminginterface。在CP/M下運行的程序通過設(shè)置寄存器C為某一特定值(叫作功能值)來使用APICALLMOVC,01hCALL5累加器A中包含有輸入的鍵的ASCIIMOVCALL把累加器A中的ASCII如果程序中要創(chuàng)建一個文件,則把寄存器對DE設(shè)置為包含有文件名所在的內(nèi)存區(qū)域的地MOVC,16hCALL5CALL5指令使CP/M在磁盤上創(chuàng)建一個空文件。程序可以利用其他功能向文件寫入,最后關(guān)閉文件,意味著文件已經(jīng)使用完畢。該程序和其他程序以后可打開文件并讀取文件內(nèi)容。CALL50005h位置由CP/M設(shè)置了一條JMP(Jump)指令,該指令跳轉(zhuǎn)到CP/M基本磁盤操作系統(tǒng)(BDOS)所在的位置。這個區(qū)域包含有一些子程序用來完成CP/M的每一項功能。BDOS正如它的名字一樣,基本作用是維護(hù)磁盤上的文件系統(tǒng)。通常BDOS必須利用CP/M基本輸入/輸出系統(tǒng)(BIOS)中的子程序,而BIOS可實現(xiàn)對像鍵盤、視BIOS是CP/M中唯一需要了解計算機(jī)硬件的部分。CCP利用BDOS的功能來實現(xiàn)自己功能,那些CP/M提供的實用程序也是如此。API是與設(shè)備無關(guān)的計算機(jī)硬件接口,也就是說在CP/M下編寫的程序不需要知道某一機(jī)器上鍵盤的工作機(jī)制、視頻顯示器的工作機(jī)制或讀寫磁盤扇區(qū)的工作機(jī)制,它只是簡單地利用CP/M的功能來完成涉及到鍵盤、顯示器和磁盤的工作。這樣,CP/M程序就可以在不同的計算機(jī)上運行,而這些機(jī)器可能會用差別很大的硬件來訪問外設(shè)。(所有CP/M程序必須運行在8080微處理器上,或能執(zhí)行8080Intel8085或Zilog的Z-80)只要計算機(jī)運行CP/M,則程序就可以利用CP/MAPI,程序則需要針對不同類型的計算機(jī)來做不同的工作。CP/M曾經(jīng)是8080中非常流行的操作系統(tǒng),至今仍具有重要的歷史意義。CP/M對其后的16位操作系統(tǒng)QDOS(quickanddirtyoperatingsystem)有很大的影響。QDOS是西雅圖計算機(jī)產(chǎn)品公司(seattlecomputerproducts)的TimPaterson為Intel的16位8086和8088芯片而編寫的。QDOS后來改名為86-DOS,由MicrosoftIBM以MS-DOS1代IBMPC機(jī)。盡管CP/M的16位版本(稱為CP/M-86)也可用于IBMPC,但MS-DOS很快成了標(biāo)準(zhǔn)。MS-DOS(在IBM計算機(jī)上叫PC-DOS)也允許其他生產(chǎn)IBMPC兼容機(jī)的廠商使用。MS-DOS沒有保留CP/M的文件系統(tǒng),在MS-DOS文件系統(tǒng)中使用的是一張叫文件分配表的表,即FA。這種技術(shù)最初由Microsoft公司在1977年采用。磁盤空間分成簇,根據(jù)磁盤空512~16384字節(jié)不等。每個文件是簇的集合,文件的目錄項只表明了能夠表明磁盤上每一個簇的下一簇。MS-DOS磁盤上的目錄項長32字節(jié),采用與CP/M一樣的8.3文件命名系統(tǒng),只是術(shù)語有些不同:后面的3個字符稱作文件擴(kuò)展名而不是文件類型。MS-DOS的目錄項無需包含分配塊的列表,它包含的是這樣一些有用的信息,如文件最后修改的日期、時間及文件大小。MS-DOSCP/M,但MS-DOS中不需要BIOS,因為IBMPC中已經(jīng)有完整的BIOS存放在了ROM中。MS-DOS的命令處理程序是一個名叫COMMAND.COM的文件。MS-DOS的運行程序有兩種:具有擴(kuò)展名COM的文件,大小不能超過64KB;具有擴(kuò)展名EXE(可執(zhí)行)的較大文件。盡管開始時MS-DOSCALL5API功能接口,但對新的程序推薦了新的接口。新的接口利用了8086的一個功能叫作軟件中斷,這類似于子程序調(diào)用,但程序不需要知道它正在調(diào)用的確切地址。程序通過執(zhí)行指令I(lǐng)NT21hMS-DOSAPI功能。理論上講,應(yīng)用程序只能通過操作系統(tǒng)提供的接口它們來訪問計算機(jī)的硬件。但對針對20世紀(jì)70年代和80年代早期的小型操作系統(tǒng)的應(yīng)用程序而言,經(jīng)常繞過操作系統(tǒng),尤其是在處理視頻顯示器的時候。直接寫入字節(jié)到視頻存儲器的程序比采用其他方式的程序執(zhí)行速度要快。的確,對有些應(yīng)用程序—例如,那些需要在顯示存儲器上顯示圖形的應(yīng)用程序—操MS-DOS最吸引程序員的地方正是它的“反傳統(tǒng)性”,程序員可以編寫程序以達(dá)到硬件的最快速度。正因為如此,運行在IBMPC上的流行軟件常常是根據(jù)IBMPC的硬件特點編制的。機(jī)器制造商為了與IBMPC競爭也不得不沿襲這些特點。如果不這樣做,則會使得這些流行軟件不IBMPC或與IBMPC100MS-DOS2.0版于1983年3月發(fā)布,它增強(qiáng)了功能來使用硬盤驅(qū)動器。雖說當(dāng)時的硬盤容量很小(按今天的標(biāo)準(zhǔn),但很快就變得大了起來。當(dāng)然,硬盤越大就越能存儲更多的文件,但磁盤上存儲的文件越多,則找到某個文件或組織文件就變得越麻煩。MS-DOS2.0的解決方法是采用層次文件系統(tǒng),它對原有的MS-DOS文件系統(tǒng)做了一些小的改動。前面講過,磁盤中有一個區(qū)域叫目錄,它是一個文件列表,里面包含了有關(guān)文件存放在磁盤的什么地方的信息。在層次文件系統(tǒng)里,一些這樣的文件可能本身就是目錄,也就是說,它們是包含其他文件列表的文件,這些文件也有可能還是目錄。磁盤中,這個常規(guī)的目錄稱為根目錄,包含在其他目錄里的目錄稱為子目錄。目錄(有時稱文件夾)成為對相關(guān)文件進(jìn)行分組的一種方法。層次文件系統(tǒng)以及MS-DOS2.0的其他一些功能是從UNIX操作系統(tǒng)借鑒來的。UNIX是20世紀(jì)70年代早期在貝爾實驗室開發(fā)的,大部分工作由KenThompson(生于1943年)和Dennis驗室為MIT和GE開發(fā)的名為Multics(表示多路復(fù)用信息和計算業(yè)務(wù):multiplexedinformationandcomputingservices)的早期操作系統(tǒng)的一個缺少健壯性的版本。對設(shè)計計算機(jī)核

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論