




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、在線教務(wù)輔導(dǎo)網(wǎng): 更多課程配套課件資源請(qǐng)?jiān)L問在線教務(wù)輔導(dǎo)網(wǎng)操作系統(tǒng)原理by Zhou Su內(nèi)容篇1 背景知識(shí)2 進(jìn)程與線程3 存儲(chǔ)管理與調(diào)度4 輸入/輸出與文件管理5 操作系統(tǒng)進(jìn)階4第4篇 輸入/輸出與文件管理11第11章 I/O設(shè)備管理第11章 I/O設(shè)備管理除了提供像進(jìn)程和線程、地址空間和文件這樣的抽象之外,操作系統(tǒng)還要控制計(jì)算機(jī)的所有I/O輸入/輸出設(shè)備。操作系統(tǒng)向設(shè)備發(fā)送命令、捕捉中斷,并處理設(shè)備的各種錯(cuò)誤,它還應(yīng)該在設(shè)備和系統(tǒng)的其他局部之間提供簡單且易于使用的接口。如果可能,這個(gè)接口對(duì)于所有設(shè)備都應(yīng)該是相同的,這就是所謂的設(shè)備無關(guān)性。I/O局部的代碼是整個(gè)操作系統(tǒng)的重要組成局部。 盤
2、盤有很多類型。最常用的是磁盤硬盤和軟盤,它們具有讀和寫的速度快的特點(diǎn),是理想的輔助存儲(chǔ)器用于分頁、文件系統(tǒng)等。這些盤的陣列有時(shí)用來提供高可靠性的存儲(chǔ)器。對(duì)于程序、數(shù)據(jù)和電影的發(fā)行而言,各種光盤CD-ROM、可刻錄CD以及DVD也非常重要。 磁 盤硬盤由一疊鋁的、合金的或玻璃的盤片組成見圖11-1,直徑為英寸或英寸在筆記本電腦上甚至更小。在每個(gè)盤片上鍍著一層薄薄的可磁化的金屬氧化物,制造出來的磁盤上不存在任何信息。 磁盤被組織成柱面,每一個(gè)柱面包含假設(shè)干磁道,磁道數(shù)與垂直堆疊的磁頭個(gè)數(shù)相同。磁道又被分成假設(shè)干扇區(qū),軟盤上大約每條磁道有832個(gè)扇區(qū),硬盤上每條磁道上扇區(qū)的數(shù)目可以多達(dá)幾百個(gè)。磁頭數(shù)
3、大約是116個(gè)。圖11-1 硬盤的物理結(jié)構(gòu) 磁 盤在現(xiàn)在的IDEIntegrated Drive Electronics,集成驅(qū)動(dòng)電子設(shè)備和SATASerial ATA,串行ATA磁盤上,磁盤驅(qū)動(dòng)器本身包含一個(gè)微控制器,由微控制器承擔(dān)了大量的工作和發(fā)出一組高級(jí)命令??刂破鹘?jīng)常做磁道高速緩存、壞塊重映射以及更多的工作。 磁 盤對(duì)磁盤驅(qū)動(dòng)程序有重要意義的一個(gè)設(shè)備特性是控制器是否可以同時(shí)控制兩個(gè)或多個(gè)驅(qū)動(dòng)器進(jìn)行尋道,即重疊尋道。當(dāng)?shù)却粋€(gè)驅(qū)動(dòng)器完成尋道時(shí),控制器可以同時(shí)啟動(dòng)另一個(gè)驅(qū)動(dòng)器進(jìn)行尋道。許多控制器也可以在一個(gè)驅(qū)動(dòng)器上進(jìn)行讀寫操作,與此同時(shí)再對(duì)另一個(gè)或多個(gè)其他驅(qū)動(dòng)器進(jìn)行尋道。在具有一個(gè)以上這種
4、硬盤驅(qū)動(dòng)器的系統(tǒng)上,它們能夠同時(shí)操作,至少在磁盤與控制器的緩沖存儲(chǔ)器之間進(jìn)行數(shù)據(jù)傳輸?shù)南薅戎畠?nèi)是這樣。同時(shí)執(zhí)行兩個(gè)或多個(gè)操作的能力極大地降低了平均存取時(shí)間。 磁 盤現(xiàn)代磁盤被劃分成環(huán)帶,外層的環(huán)帶比內(nèi)層的環(huán)帶擁有更多的扇區(qū)。如圖11-2 a所示,一個(gè)微小的磁盤具有兩個(gè)環(huán)帶,外層的環(huán)帶每磁道有32個(gè)扇區(qū),內(nèi)層的環(huán)帶每磁道有16個(gè)扇區(qū)。圖11-2 磁盤的幾何規(guī)格 磁 盤為了隱藏每個(gè)磁道有多少扇區(qū)的細(xì)節(jié),大多數(shù)現(xiàn)代磁盤都有一個(gè)虛擬幾何規(guī)格呈現(xiàn)給操作系統(tǒng)。軟件在工作時(shí)仿佛存在著x個(gè)柱面、y個(gè)磁頭、每磁道z個(gè)扇區(qū),而控制器將對(duì) (x, y, z) 的請(qǐng)求重映射到實(shí)際的柱面、磁頭和扇區(qū)上。對(duì)于11-2 a
5、中的物理磁盤,一種可能的虛擬幾何規(guī)格如圖11-2 b所示。在兩種情形中磁盤擁有的扇區(qū)數(shù)都是192,只不過公布的排列與實(shí)際的排列是不同的。 磁 盤對(duì)于PC機(jī)而言,上述三個(gè)參數(shù)的最大值常常是65 535, 16, 63,這是因?yàn)樾枰c最初IBM PC的限制向后兼容。在IBM PC機(jī)器上使用16位、4位和6位的字段來設(shè)定這些參數(shù),其中柱面和扇區(qū)從1開始編號(hào),磁頭從0開始編號(hào)。根據(jù)這些參數(shù)以及每個(gè)扇區(qū)512字節(jié)可知,磁盤最大可能的容量是。為突破這一限制,所有現(xiàn)代磁盤現(xiàn)在都支持一種稱為邏輯塊尋址的系統(tǒng),磁盤扇區(qū)從0開始連續(xù)編號(hào),而不管磁盤的幾何規(guī)格如何。 磁 盤磁盤在使用之前必須由軟件完成低級(jí)格式化。該
6、格式包含一系列同心的磁道,每個(gè)磁道包含假設(shè)干數(shù)目的扇區(qū),扇區(qū)間存在短的間隙。一個(gè)扇區(qū)的格式中包括前導(dǎo)碼、數(shù)據(jù)位和ECC域。前導(dǎo)碼以一定的位模式引導(dǎo),使硬件可以識(shí)別扇區(qū)的開始。前導(dǎo)碼還包含柱面與扇區(qū)號(hào)以及某些其他信息。數(shù)據(jù)局部的大小是由低級(jí)格式化程序決定的,大多數(shù)磁盤使用512字節(jié)的扇區(qū)。ECC域包含冗余信息,可以用來恢復(fù)讀錯(cuò)誤。該域的大小和內(nèi)容隨生產(chǎn)商的不同而不同。此外,所有硬盤都分配有一定數(shù)目的備用扇區(qū),用來取代具有制造瑕疵的扇區(qū)。 磁 盤低級(jí)格式化完成后要對(duì)磁盤進(jìn)行分區(qū)。在邏輯上,每個(gè)分區(qū)就像是一個(gè)獨(dú)立的磁盤。在Pentiun和大多數(shù)其他計(jì)算機(jī)上,0扇區(qū)包含主引導(dǎo)記錄,它包含某些引導(dǎo)代碼和
7、末尾的分區(qū)表。分區(qū)表給出了每個(gè)分區(qū)的起始扇區(qū)和大小。在Pentium上,分區(qū)表具有四個(gè)分區(qū)的空間。如果這四個(gè)分區(qū)都用于Windows,那么它們將被稱為C:、D:、E:和F:,并且作為單獨(dú)的驅(qū)動(dòng)器對(duì)待。如果它們中有三個(gè)用于Windows,一個(gè)用于UNIX,那么Windows會(huì)將它的分區(qū)稱為C:、D:和E:,然后第一個(gè)CD-ROM是F:。為了能夠從硬盤引導(dǎo),在分區(qū)表中必須有一個(gè)分區(qū)被標(biāo)記為活動(dòng)的。 磁 盤最后一步是對(duì)每一個(gè)分區(qū)分別執(zhí)行一次高級(jí)格式化。這一操作要設(shè)置一個(gè)引導(dǎo)塊、空閑存儲(chǔ)管理空閑列表或位圖、根目錄和一個(gè)空文件系統(tǒng)。這一操作還要將一個(gè)代碼設(shè)置在分區(qū)表項(xiàng)中,以說明在分區(qū)中使用的是哪個(gè)文件系
8、統(tǒng),因?yàn)樵S多操作系統(tǒng)支持多個(gè)兼容的文件系統(tǒng)由于歷史原因。這時(shí),系統(tǒng)就可以引導(dǎo)了。 磁 盤磁盤制造商通過不斷加大線性位密度而持續(xù)地推進(jìn)技術(shù)的開展,但是,記錄密度的極其精細(xì)使得制造過程難免沒有瑕疵,而制造時(shí)的瑕疵就會(huì)引入壞的扇區(qū)。對(duì)于壞塊,一般的處理方法有兩種:在控制器中或者在操作系統(tǒng)中對(duì)它們進(jìn)行處理。在前一種方法中,磁盤在出廠之前要進(jìn)行測試,并且將一個(gè)壞扇區(qū)列表寫在磁盤上。對(duì)于每一個(gè)壞扇區(qū),用一個(gè)備用扇區(qū)替換它。 磁 盤驅(qū)動(dòng)器安裝之后在正常工作期間也會(huì)出現(xiàn)錯(cuò)誤。如果控制器注意到某個(gè)扇區(qū)具有重復(fù)性的錯(cuò)誤,可以將該扇區(qū)切換到一個(gè)備用扇區(qū),這樣,操作系統(tǒng)和用戶甚至都不會(huì)注意到這一問題。 磁 盤如果控制
9、器不具有透明地重映射扇區(qū)的能力,那么操作系統(tǒng)必須在軟件中做同樣的事情:這意味著操作系統(tǒng)必須首先獲得一個(gè)壞扇區(qū)列表,或者是通過從磁盤中讀出該列表,或者只是由它自己測試整個(gè)磁盤。一旦操作系統(tǒng)知道哪些扇區(qū)是壞的,它就可以建立重映射表。由操作系統(tǒng)處理重映射時(shí),它必須確保壞扇區(qū)不出現(xiàn)在任何文件中,并且不出現(xiàn)在空閑列表或位圖中。做到這一點(diǎn)的一種方法是創(chuàng)立一個(gè)包含所有壞扇區(qū)的秘密的文件。 光 盤光盤比傳統(tǒng)的磁盤有更高的記錄密度。光盤最初是為記錄電視節(jié)目而開發(fā)的,但是作為計(jì)算機(jī)存儲(chǔ)設(shè)備,由于它們潛在的巨大容量,可以被賦予更為重要的用途,并且經(jīng)歷了令人難以置信的快速開展。但是,即使是最快速的光盤驅(qū)動(dòng)器也無法與磁
10、盤驅(qū)動(dòng)器相比,它們在性能上不屬于同一個(gè)范疇。 光 盤1980年,飛利浦與索尼開發(fā)的音頻CD壓縮光盤是第一個(gè)成功的群眾市場數(shù)字存儲(chǔ)介質(zhì),其技術(shù)細(xì)節(jié)以國際標(biāo)準(zhǔn)ISO10149的形式出版紅皮書。將光盤以及驅(qū)動(dòng)器的標(biāo)準(zhǔn)作為國際標(biāo)準(zhǔn)出版,其目的在于讓不同音樂出版商的CD和不同電子設(shè)備制造商的播放器能夠一同工作。一個(gè)標(biāo)準(zhǔn)的音頻CD可以存放74分鐘的音樂,根本容量是650MB。 光 盤一張CD的準(zhǔn)備分成幾個(gè)步驟。使用高功率的紅外激光在具有涂層的玻璃母盤上燒出許多直徑為的小孔。從這張母盤可以制作出鑄模,鑄模在激光孔所在的位置具有突起。將熔化的聚碳酸酯樹脂注入這一鑄模,就可以形成具有與玻璃母盤相同小孔模式的一張
11、CD。然后將一個(gè)非常薄的反射鋁層沉積在聚碳酸酯上,再加上一層保護(hù)性的漆膜,最后加上一個(gè)標(biāo)簽。聚碳酸酯基片中的凹陷處稱為凹痕,凹痕之間未被燒的區(qū)域稱為槽脊。 光 盤在回放的時(shí)候,低功率的激光二極管發(fā)出波長為的紅外光,隨著凹痕和槽脊的通過照射在其上。播放器的光電探測器通過反射光的不同來區(qū)分凹痕和槽脊。凹痕和槽脊寫在一個(gè)連續(xù)螺旋中,該螺旋起源于接近中間圓孔的地方并且向邊緣延伸出32mm的距離。螺旋環(huán)繞著光盤旋轉(zhuǎn)了22 188圈大約每毫米600圈, 如果展開的話,它將有長。 光 盤為了以均勻的速度播放音樂,必須讓凹痕和槽脊以恒定的線速度通過。因此,當(dāng)CD的讀出頭從CD的內(nèi)部向外部移動(dòng)時(shí),CD的旋轉(zhuǎn)速度
12、會(huì)連續(xù)降低。在內(nèi)部,旋轉(zhuǎn)速度是530rpm,以實(shí)現(xiàn)每秒120cm的流動(dòng)速度;而在外部,旋轉(zhuǎn)速度必須降到200rpm以便在激光頭處得到相同的線速度。恒定線速度驅(qū)動(dòng)器與磁盤驅(qū)動(dòng)器存在相當(dāng)大的區(qū)別,后者以恒定角速度操作,與磁頭當(dāng)前處于什么位置無關(guān)。 光 盤1984年,飛利浦和索尼出版黃皮書定義了CD-ROM壓縮光盤-只讀存儲(chǔ)器的光盤標(biāo)準(zhǔn)。CD-ROM在物理尺寸上與音頻CD相同,在機(jī)械上和光學(xué)上也與之兼容。黃皮書定義的是計(jì)算機(jī)數(shù)據(jù)的格式化,它還改進(jìn)了系統(tǒng)的糾錯(cuò)能力。1986年,飛利浦發(fā)布綠皮書,補(bǔ)充了圖形以及在相同的扇區(qū)中保存交錯(cuò)的音頻、視頻和數(shù)據(jù)的能力,這對(duì)于多媒體CD-ROM而言是十分必要的。 光
13、 盤為了使相同的CD-ROM能夠在不同的計(jì)算機(jī)上使用,許多計(jì)算機(jī)公司的代表共同設(shè)計(jì)了High Sierra賓館名稱文件系統(tǒng),這一文件系統(tǒng)后來開展成為國際標(biāo)準(zhǔn)ISO9660。該文件系統(tǒng)有三個(gè)層次。第一層使用最多8個(gè)字符的文件名,可選地跟隨最多3個(gè)字符的擴(kuò)展名MS-DOS的文件命名約定。文件名只能夠包含大寫字母、數(shù)字和下劃線。目錄最多嵌套8層,且目錄名不能包含擴(kuò)展名。第一層要求所有文件都是連續(xù)的,這對(duì)于只能寫一次的介質(zhì)來說并不是問題。 光 盤符合ISO9660標(biāo)準(zhǔn)第一層的任何CD-ROM都可以用在幾乎所有的計(jì)算機(jī)上。ISO9660第二層允許文件名最多有32個(gè)字符,第三層允許文件是不連續(xù)的。Rock
14、 Ridge擴(kuò)展允許非常長的文件名針對(duì)UNIX、UID、GID和符號(hào)連接。 光 盤到20世紀(jì)90年代中期,CD-R可刻錄CD驅(qū)動(dòng)器已經(jīng)是常見的外部設(shè)備,它可以用作為大容量硬盤的備份介質(zhì)。物理上,CD-R像CD-ROM一樣使用120mm的聚碳酸酯空盤,不同的是CD-R包含一個(gè)寬的凹槽來引導(dǎo)激光進(jìn)行寫操作,使用真金代替鋁作為反射層。在CD-R上必須模擬四痕和槽脊的不同反射率,這是通過在聚碳酸酯與反射金層之間添加一層特殊的染料而實(shí)現(xiàn)的。CD-R橘皮書于1989年出版,它定義了一個(gè)新格式CD-ROM XA,允許CD-R被逐漸增長地寫入,一次寫入的一組連續(xù)的扇區(qū)稱為一個(gè)CD-ROM光軌。 光 盤針對(duì)可重
15、寫CD-ROM的需求,還有一個(gè)技術(shù)是CD-RW可重寫CD,它使用與CD-ROM相同尺寸的介質(zhì)。然而,CD-RW使用銀、銦、銻和碲合金作為記錄層,以取代花菁和酞菁染料。這一合金具有兩個(gè)穩(wěn)定的狀態(tài):結(jié)晶態(tài)和非結(jié)晶態(tài),兩種狀態(tài)具有不同的反射率。CD-RW驅(qū)動(dòng)器使用具有三種不同功率的激光。在高功率下,激光將合金融化,將其從高反射率的結(jié)晶態(tài)轉(zhuǎn)化為低反射率的非結(jié)晶態(tài),代表一個(gè)凹痕。在中功率下,激光將合金融化并重構(gòu)其自然結(jié)晶狀態(tài),便再次成為一個(gè)槽脊。在低功率下,材料的狀態(tài)被感知用于讀取,但是不發(fā)生狀態(tài)的轉(zhuǎn)化。 光 盤1980年,技術(shù)與需求方面的結(jié)合引出了DVD光盤。最初DVD是數(shù)字視盤的英文首字母縮寫,而現(xiàn)
16、在的官方名稱是數(shù)字通用光盤Digital Versatile Disk。DVD采用與CD同樣的總體設(shè)計(jì),使用120mm注模聚碳酸酯盤片,包含凹痕和槽脊,但有更小的凹痕,更密的螺旋,并使用紅色激光。綜合起來,這些改進(jìn)將容量提高了7倍,到達(dá)。 光 盤一種新的光盤設(shè)備是Blu-ray藍(lán)光光盤,它使用藍(lán)色激光將25GB壓入單層盤中,或者將50GB壓入雙層盤中。另一種設(shè)備是HD DVD高密度DVD,它使用相同的藍(lán)色激光,但是容量只有15GB單層或者30GB雙層。 固態(tài)硬盤固態(tài)硬盤的存儲(chǔ)介質(zhì)分為兩種,一種采用閃存FLASH芯片,另一種采用DRAM。 固態(tài)硬盤1基于閃存的固態(tài)硬盤IDE FLASH DISK
17、、Serial ATA Flash Disk采用FLASH芯片作為存儲(chǔ)介質(zhì),即通常所說的SSD,它的外觀可以被制作成多種樣式,例如筆記本硬盤、微硬盤、存儲(chǔ)卡、優(yōu)盤等。SSD固態(tài)硬盤最大的優(yōu)點(diǎn)是可移動(dòng),而且數(shù)據(jù)保護(hù)不受電源控制,能適應(yīng)于各種環(huán)境,但使用年限不高,適合于個(gè)人用戶使用。見圖11-3所示。圖11-3 采用單顆16GB容量閃存芯片的三星英寸470系256GB固態(tài)硬盤 固態(tài)硬盤在基于閃存的固態(tài)硬盤中,存儲(chǔ)單元又分為兩類:SLCSingle Layer Cell 單層單元和MLCMulti-Level Cell多層單元。SLC本錢高、容量小、但是速度快,而MLC的特點(diǎn)是容量大本錢低,但速度慢
18、。MLC的每個(gè)單元是2bit的,相對(duì)SLC來說整整多了一倍。不過,由于每個(gè)MLC存儲(chǔ)單元中存放的資料較多,結(jié)構(gòu)相對(duì)復(fù)雜,出錯(cuò)的幾率會(huì)增加,必須進(jìn)行錯(cuò)誤修正,這個(gè)動(dòng)作導(dǎo)致其性能大幅落后于結(jié)構(gòu)簡單的SLC閃存。 固態(tài)硬盤此外,SLC閃存的優(yōu)點(diǎn)是復(fù)寫次數(shù)可高達(dá)100000次,比MLC閃存高10倍。為了保證MLC的壽命,控制芯片都校驗(yàn)智能磨損平衡技術(shù)算法,使得每個(gè)存儲(chǔ)單元的寫入次數(shù)可以平均分?jǐn)?,到達(dá)100萬小時(shí)故障間隔時(shí)間MTBF。 固態(tài)硬盤2基于DRAM的固態(tài)硬盤DRAM,即動(dòng)態(tài)隨機(jī)存儲(chǔ)器,是最為常見的系統(tǒng)內(nèi)存。DRAM使用電容存儲(chǔ),只能將數(shù)據(jù)保持很短的時(shí)間,為此必須隔一段時(shí)間刷新一次,如果存儲(chǔ)單元
19、沒有被刷新,那么所存儲(chǔ)的信息就會(huì)喪失。 固態(tài)硬盤采用DRAM作為存儲(chǔ)介質(zhì)的固態(tài)硬盤仿效傳統(tǒng)硬盤的設(shè)計(jì)、可被絕大局部操作系統(tǒng)的文件系統(tǒng)工具進(jìn)行卷設(shè)置和管理,并提供工業(yè)標(biāo)準(zhǔn)的PCI和FC接口用于連接主機(jī)或者效勞器。應(yīng)用方式可分為SSD硬盤和SSD硬盤陣列兩種。它是一種高性能的存儲(chǔ)器,而且使用壽命很長,美中缺乏的是需要獨(dú)立電源來保護(hù)數(shù)據(jù)平安。 固態(tài)硬盤3固態(tài)硬盤的優(yōu)缺點(diǎn)與普通硬盤比較,固態(tài)硬盤有以下優(yōu)點(diǎn):1啟動(dòng)快,沒有電機(jī)加速旋轉(zhuǎn)的過程。2不用磁頭,快速隨機(jī)讀取,讀延遲極小。根據(jù)相關(guān)測試:兩臺(tái)電腦在同樣配置的電腦下,搭載固態(tài)硬盤的筆記本從開機(jī)到出現(xiàn)桌面一共只用了18秒,而搭載傳統(tǒng)硬盤的筆記本總共用了
20、31秒,兩者幾乎有將近一半的差距。3相對(duì)固定的讀取時(shí)間。由于尋址時(shí)間與數(shù)據(jù)存儲(chǔ)位置無關(guān),因此磁盤碎片不會(huì)影響讀取時(shí)間。4基于DRAM的固態(tài)硬盤寫入速度極快。 固態(tài)硬盤5無噪音。因?yàn)闆]有機(jī)械馬達(dá)和風(fēng)扇,工作時(shí)噪音值為0分貝。某些高端或大容量產(chǎn)品裝有風(fēng)扇,因此仍會(huì)產(chǎn)生噪音。6低容量的基于閃存的固態(tài)硬盤在工作狀態(tài)下能耗和發(fā)熱量較低,但高端或大容量產(chǎn)品能耗會(huì)較高。7內(nèi)部不存在任何機(jī)械活動(dòng)部件,不會(huì)發(fā)生機(jī)械故障,也不怕碰撞、沖擊、振動(dòng)。這樣即使在高速移動(dòng)甚至伴隨翻轉(zhuǎn)傾斜的情況下也不會(huì)影響到正常使用,而且在筆記本電腦發(fā)生意外掉落或與硬物碰撞時(shí)能夠?qū)?shù)據(jù)喪失的可能性降到最小。8工作溫度范圍更大。典型的硬盤驅(qū)
21、動(dòng)器只能在5到55攝氏度范圍內(nèi)工作。而大多數(shù)固態(tài)硬盤可在-1070攝氏度工作,一些工業(yè)級(jí)的固態(tài)硬盤還可在-4085攝氏度,甚至更大的溫度范圍下工作。 固態(tài)硬盤9低容量的固態(tài)硬盤比同容量硬盤體積小、重量輕。但這一優(yōu)勢隨容量增大而逐漸減弱。直至256GB,固態(tài)硬盤仍比相同容量的普通硬盤輕。 現(xiàn)有的固態(tài)硬盤產(chǎn)品有英寸,英寸,英寸等多種類型,容量一般為16256GB,比一般的閃存盤U盤大。接口規(guī)格與傳統(tǒng)硬盤一致,有UATA、SATA、SCSI等。 磁盤臂調(diào)度算法讀或者寫一個(gè)磁盤塊所需要的時(shí)間由以下三個(gè)因素決定:1尋道時(shí)間將磁盤臂移動(dòng)到適當(dāng)?shù)闹嫔纤璧臅r(shí)間。2旋轉(zhuǎn)延遲等待適當(dāng)扇區(qū)旋轉(zhuǎn)到磁頭下所需的時(shí)間
22、。3實(shí)際數(shù)據(jù)傳輸時(shí)間。對(duì)大多數(shù)磁盤而言,尋道時(shí)間與另外兩個(gè)時(shí)間相比占主導(dǎo)地位,所以減少平均尋道時(shí)間可以充分地改善系統(tǒng)性能。 磁盤臂調(diào)度算法如果磁盤驅(qū)動(dòng)程序每次接收一個(gè)請(qǐng)求并按照接收順序完成請(qǐng)求,即先來先效勞FCFS,那么很難優(yōu)化尋道時(shí)間。然而,當(dāng)磁盤負(fù)載很重時(shí),可以采用其他策略。很有可能當(dāng)磁盤臂為一個(gè)請(qǐng)求尋道時(shí),其他進(jìn)程會(huì)產(chǎn)生其他磁盤請(qǐng)求。許多磁盤驅(qū)動(dòng)程序都維護(hù)著一張表,該表按柱面號(hào)索引,每一柱面的未完成的請(qǐng)求組成一個(gè)鏈表,鏈表頭存放在表的相應(yīng)表目中。 磁盤臂調(diào)度算法給定這種數(shù)據(jù)結(jié)構(gòu),可以改進(jìn)先來先效勞調(diào)度算法。為了說明如何實(shí)現(xiàn),考慮一個(gè)具有40個(gè)柱面的假想的磁盤。假設(shè)讀柱面11上一個(gè)數(shù)據(jù)塊的
23、請(qǐng)求到達(dá),當(dāng)對(duì)柱面11的尋道正在進(jìn)行時(shí),又按順序到達(dá)了對(duì)柱面1、36、16、34、9和12的請(qǐng)求,那么讓它們進(jìn)入未完成的請(qǐng)求表,每一個(gè)柱面對(duì)應(yīng)一個(gè)單獨(dú)的全表。圖11-4顯示了這些請(qǐng)求。圖11-4 最短尋道時(shí)間優(yōu)先SSTF磁盤調(diào)度算法 磁盤臂調(diào)度算法當(dāng)前請(qǐng)求請(qǐng)求柱面11結(jié)束后,磁盤驅(qū)動(dòng)程序要選擇下一次處理哪一個(gè)請(qǐng)求。假設(shè)使用FCFS算法,那么首先選擇柱面l,然后是36,以此類推。這個(gè)算法要求磁盤臂分別移動(dòng)10、35、20、18、25和3個(gè)柱面,總共需要移動(dòng)111個(gè)柱面。 磁盤臂調(diào)度算法另一種方法是下一次總是處理與磁頭距離最近的請(qǐng)求以使尋道時(shí)間最小化。對(duì)于圖11-4中給出的請(qǐng)求,選擇請(qǐng)求的順序如圖
24、11-4中下方的折線所示,依次為12、9、16、1、34和36。按照這個(gè)順序,磁盤臂分別需要移動(dòng)l、3、7、15、33和2個(gè)柱面,總共需要移動(dòng)61個(gè)柱面。這個(gè)算法即最短尋道時(shí)間優(yōu)先shortest seek time first,SSTF,與FCFS算法相比,該算法的磁盤臂移動(dòng)幾乎減少了一半。 磁盤臂調(diào)度算法但是,SSTF算法存在一個(gè)問題。假設(shè)當(dāng)圖11-4所示的請(qǐng)求正在處理時(shí),不斷地有其他請(qǐng)求到達(dá)。例如,磁盤臂移到柱面16以后,到達(dá)一個(gè)對(duì)柱面8的新請(qǐng)求,那么它的優(yōu)先級(jí)將比柱面l要高。如果接著又到達(dá)了一個(gè)對(duì)柱面13的請(qǐng)求,磁盤臂將移到柱面13而不是柱面1。如果磁盤負(fù)載很重,那么大局部時(shí)間磁盤臂將
25、停留在磁盤的中部區(qū)域,而兩端極端區(qū)域的請(qǐng)求將不得不等待,直到負(fù)載中的統(tǒng)計(jì)波動(dòng)使得中部區(qū)域沒有請(qǐng)求為止。遠(yuǎn)離中部區(qū)域的請(qǐng)求得到的效勞很差。因此獲得最小響應(yīng)時(shí)間的目標(biāo)和公平性之間存在著沖突。 磁盤臂調(diào)度算法高層建筑也要進(jìn)行這種權(quán)衡處理,高層建筑中的電梯調(diào)度問題和磁盤臂調(diào)度很相似。電梯請(qǐng)求不斷地到來,隨機(jī)地要求電梯到各個(gè)樓層柱面??刂齐娞莸挠?jì)算機(jī)能夠很容易地跟蹤顧客按下請(qǐng)求按鈕的順序,并使用FCFS或者SSTF為他們提供效勞。 磁盤臂調(diào)度算法然而,大多數(shù)電梯使用一種不同的算法來協(xié)調(diào)效率和公平性這兩個(gè)相互沖突的目標(biāo)。電梯保持按一個(gè)方向移動(dòng),直到在那個(gè)方向上沒有請(qǐng)求為止,然后改變方向。這個(gè)算法在磁盤世界
26、和電梯世界都被稱為電梯算法,它需要軟件維護(hù)一個(gè)二進(jìn)制位,即當(dāng)前方向位:UP向上或是DOWN向下。當(dāng)一個(gè)請(qǐng)求處理完之后,磁盤或電梯的驅(qū)動(dòng)程序檢查該位,如果是UP,磁盤臂或電梯艙移至下一個(gè)更高的未完成的請(qǐng)求。如果更高的位置沒有未完成的請(qǐng)求,那么方向位取反。當(dāng)方向位設(shè)置為DOWN時(shí),同時(shí)存在一個(gè)低位置的請(qǐng)求,那么移向該位置。 磁盤臂調(diào)度算法圖11-5顯示了使用與圖11-4相同的7個(gè)請(qǐng)求的電梯算法的情況。假設(shè)方向位初始為UP,那么各柱面獲得效勞的順序是12、16、34、36、9和l,磁盤臂分別移動(dòng)1、4、18、2、27和8個(gè)柱面,總共移動(dòng)60個(gè)柱面。在本例中,電梯算法比SSF還要稍微好一點(diǎn),盡管通常它
27、不如SSF。電梯算法的一個(gè)優(yōu)良特性是對(duì)任意的一組給定請(qǐng)求,磁盤臂移動(dòng)總次數(shù)的上界是固定的:正好是柱面數(shù)的兩倍。圖11-5 調(diào)度磁盤請(qǐng)求的電梯算法 磁盤臂調(diào)度算法對(duì)這個(gè)算法稍加改進(jìn)可以在響應(yīng)時(shí)間上具有更小的變異,方法是總是按相同的方向進(jìn)行掃描。當(dāng)處理完最高編號(hào)柱面上未完成的請(qǐng)求之后,磁盤臂移動(dòng)到具有未完成的請(qǐng)求的最低編號(hào)的柱面,然后繼續(xù)沿向上的方向移動(dòng)。實(shí)際上,這相當(dāng)于將最低編號(hào)的柱面看做是最高編號(hào)的柱面之上的相鄰柱面。 磁盤臂調(diào)度算法某些磁盤控制器提供了一種方法供軟件檢查磁頭下方的當(dāng)前扇區(qū)號(hào)。對(duì)于這種磁盤控制器,還可以進(jìn)行另一種優(yōu)化。如果針對(duì)同一柱面有兩個(gè)或多個(gè)請(qǐng)求正等待處理,驅(qū)動(dòng)程序可以發(fā)出
28、請(qǐng)求讀寫下一次要通過磁頭的扇區(qū)。注意,當(dāng)一個(gè)柱面有多條磁道時(shí),相繼的請(qǐng)求可能針對(duì)不同的磁道,故沒有任何代價(jià)。因?yàn)檫x擇磁頭既不需要移動(dòng)磁盤臂也沒有旋轉(zhuǎn)延遲,所以控制器幾乎可以立即選擇任意磁頭。 磁盤臂調(diào)度算法如果磁盤具有尋道時(shí)間比旋轉(zhuǎn)延遲快很多的特性,那么應(yīng)該使用不同的優(yōu)化策略。未完成的請(qǐng)求應(yīng)該按扇區(qū)號(hào)排序,并且當(dāng)下一個(gè)扇區(qū)就要通過磁頭的時(shí)候,磁盤臂應(yīng)該飛快地移動(dòng)到正確的磁道上對(duì)其進(jìn)行讀或者寫。 磁盤臂調(diào)度算法對(duì)于現(xiàn)代硬盤,尋道和旋轉(zhuǎn)延遲是如此影響性能,所以一次只讀取一個(gè)或兩個(gè)扇區(qū)的效率是非常低下的。由于這個(gè)原因,許多磁盤控制器總是讀出多個(gè)扇區(qū)并對(duì)其進(jìn)行高速緩存,即使只請(qǐng)求一個(gè)扇區(qū)時(shí)也是如此。典
29、型地,讀一個(gè)扇區(qū)的任何請(qǐng)求將導(dǎo)致該扇區(qū)和當(dāng)前磁道的多個(gè)或者所有剩余的扇區(qū)被讀出,讀出的扇區(qū)數(shù)取決于控制器的高速緩存中有多少可用的空間。高速緩存的使用是由控制器動(dòng)態(tài)地決定的。在最簡單的模式下,高速緩存被分成兩個(gè)區(qū)段,一個(gè)用于讀,一個(gè)用于寫。如果后來的讀操作可以用控制器的高速緩存來滿足,那么就可以立即返回被請(qǐng)求的數(shù)據(jù)。 磁盤臂調(diào)度算法值得注意的是,磁盤控制器的高速緩存完全獨(dú)立于操作系統(tǒng)的高速緩存??刂破鞯母咚倬彺嫱ǔ14孢€沒有實(shí)際被請(qǐng)求的塊,但是這對(duì)于讀操作是很便利的,因?yàn)樗鼈冎皇亲鳛槟承┢渌x操作的附帶效應(yīng)而恰巧要在磁頭下通過。與之相反,操作系統(tǒng)所維護(hù)的任何高速緩存由顯式地讀出的塊組成,并且操作
30、系統(tǒng)認(rèn)為它們在較近的將來可能再次需要例如,保存目錄塊的一個(gè)磁盤塊。 磁盤臂調(diào)度算法當(dāng)同一個(gè)控制器上有多個(gè)驅(qū)動(dòng)器時(shí),操作系統(tǒng)應(yīng)該為每個(gè)驅(qū)動(dòng)器都單獨(dú)地維護(hù)一個(gè)未完成的請(qǐng)求表:一旦任何一個(gè)驅(qū)動(dòng)器空閑下來,就應(yīng)該發(fā)出一個(gè)尋道請(qǐng)求將磁盤臂移到下一個(gè)將被請(qǐng)求的柱面處假設(shè)控制器允許重疊尋道。 磁盤陣列RAID在過去十多年里,CPU的性能一直呈現(xiàn)出指數(shù)增長,大體上每18個(gè)月翻一番。但是磁盤的性能就不是這樣了。20世紀(jì)70年代,小型計(jì)算機(jī)磁盤的平均尋道時(shí)間是50100毫秒,現(xiàn)在的尋道時(shí)間略微低于10毫秒。因此,CPU與磁盤在性能上的差距隨著時(shí)間的推移將越來越大。 磁盤陣列RAID為了提高CPU的性能,越來越多地
31、使用了并行處理。在過去許多年,人們也意識(shí)到并行I/O是一個(gè)很好的思想。Patterson等人提出1988年,使用六種特殊的磁盤組織可能會(huì)改進(jìn)磁盤的性能、可靠性或者同時(shí)改進(jìn)這兩者,這個(gè)思想很快被工業(yè)界所采納,并且導(dǎo)致稱為RAID的一種新型I/O設(shè)備的誕生。Patterson等人將RAID定義為Redundant Array of Inexpensive Disk廉價(jià)磁盤冗余陣列,但是工業(yè)界將I重定義為Independent獨(dú)立。 磁盤陣列RAIDRAID的根本思想是將一個(gè)裝滿了磁盤的盒子安裝到計(jì)算機(jī)通常是一個(gè)大型效勞器上,用RAID控制器替換磁盤控制器卡,將數(shù)據(jù)復(fù)制到整個(gè)RAID上,然后繼續(xù)常規(guī)
32、的操作。換言之,對(duì)操作系統(tǒng)而言,一個(gè)RAID看起來就像是一個(gè)單個(gè)的大容量磁盤,但是具有更好的性能和更好的可靠性。由于SCSI盤具有良好的性能、較低的價(jià)格并且在單個(gè)控制器上能夠容納多達(dá)7個(gè)驅(qū)動(dòng)器對(duì)寬型SCSI而言是15個(gè),于是大多數(shù)RAID由一個(gè)RAID SCSI控制器加上一個(gè)裝滿了SCSI盤的盒子組成,以這樣的方法,不需要軟件做任何修改就可以使用RAID。 磁盤陣列RAID所有的RAID都具有同樣的特性,那就是將數(shù)據(jù)分布在全部驅(qū)動(dòng)器上,以實(shí)現(xiàn)并行操作。Patterson等人為這樣的操作定義了幾種不同的模式,稱為0級(jí)RAID到5級(jí)RAID,它們是可能的六種不同的組織形式。0級(jí)RAID如圖11-6
33、 a所示為具有四個(gè)磁盤驅(qū)動(dòng)器的情形,它將RAID模擬的虛擬單個(gè)磁盤劃分成條帶,每個(gè)條帶具有k個(gè)扇區(qū),其中扇區(qū)0k-1為條帶0,扇區(qū)k2k-1為條帶1,以此類推。如果k = 1,那么每個(gè)條帶是一個(gè)扇區(qū);如果k = 2,那么每個(gè)條帶是兩個(gè)扇區(qū),以此類推。0級(jí)RAID結(jié)構(gòu)將連續(xù)的條帶以輪轉(zhuǎn)方式寫到全部驅(qū)動(dòng)器上。圖11-6 0級(jí)RAID到5級(jí)RAID備份驅(qū)動(dòng)器及奇偶驅(qū)動(dòng)器以陰影顯示 磁盤陣列RAID像這樣將數(shù)據(jù)分布在多個(gè)驅(qū)動(dòng)器上稱為劃分條帶。例如,如果軟件發(fā)出一條命令,讀取一個(gè)由四個(gè)連續(xù)條帶組成的數(shù)據(jù)塊,并且數(shù)據(jù)塊起始于條帶邊界,那么RAID控制器就會(huì)將該命令分解為四條單獨(dú)的命令,每條命令對(duì)應(yīng)四塊磁盤
34、中的一塊,并且讓它們并行操作。這樣我們就運(yùn)用了并行I/O而軟件并不知道這一切。 磁盤陣列RAID0級(jí)RAID對(duì)于大數(shù)據(jù)量的請(qǐng)求工作性能最好,數(shù)據(jù)量越大性能就越好。如果請(qǐng)求的數(shù)據(jù)量大于驅(qū)動(dòng)器數(shù)乘以條帶大小,那么某些驅(qū)動(dòng)器將得到多個(gè)請(qǐng)求,在完成了第一個(gè)請(qǐng)求之后就會(huì)開始處理第二個(gè)請(qǐng)求??刂破鞯呢?zé)任是分解請(qǐng)求,并且以正確的順序?qū)⑦m當(dāng)?shù)拿钐峁┙o適當(dāng)?shù)拇疟P,之后在內(nèi)存中將結(jié)果裝配起來。0級(jí)RAID性能杰出而實(shí)現(xiàn)簡單明了。 磁盤陣列RAID但是,對(duì)習(xí)慣于每次請(qǐng)求一個(gè)扇區(qū)的操作系統(tǒng)來說,0級(jí)RAID的工作性能最為糟糕。這一結(jié)構(gòu)的另一個(gè)劣勢是其可靠性潛在地比一個(gè)大磁盤要差,如果一個(gè)RAID由四塊磁盤組成,那么
35、平均故障間隔時(shí)間要高出四倍。由于在這一設(shè)計(jì)中未引入冗余,實(shí)際上它還不是真正的RAID。1級(jí)RAID如圖11-6 b所示,這是一個(gè)真正的RAID。它復(fù)制了所有的磁盤,在執(zhí)行一次寫操作時(shí),每個(gè)條帶都被寫了兩次。在執(zhí)行一次讀操作時(shí),那么可以使用其中的任意一個(gè)副本,從而將負(fù)荷分布在更多的驅(qū)動(dòng)器上。因此,寫性能并不比單個(gè)驅(qū)動(dòng)器好,但是讀性能能夠比單個(gè)驅(qū)動(dòng)器高出兩倍,其容錯(cuò)性是突出的。 磁盤陣列RAID0級(jí)RAID和1級(jí)RAID操作的是扇區(qū)條帶,與此不同,2 級(jí)RAID工作在字的根底上,甚至可能是字節(jié)的根底上。想象一下將單個(gè)虛擬磁盤的每個(gè)字節(jié)分割成4位的半字節(jié)對(duì),然后對(duì)每個(gè)半字節(jié)參加一個(gè)漢明碼從而形成7位
36、的字,其中l(wèi)、2、4位為奇偶校驗(yàn)位。進(jìn)一步想象如圖11-6 c所示的7個(gè)驅(qū)動(dòng)器在磁盤臂位置與旋轉(zhuǎn)位置方面是同步的。那么,將7位漢明編碼的字寫到7個(gè)驅(qū)動(dòng)器上,每個(gè)驅(qū)動(dòng)器寫一位,這樣做是可行的。 磁盤陣列RAIDCM-2計(jì)算機(jī)采用了這一方案,它采用32位數(shù)據(jù)字并參加6個(gè)奇偶校驗(yàn)位形成一個(gè)38位的漢明字,再加上一個(gè)額外的位用于漢明字的奇偶校驗(yàn),并且將每個(gè)字分布在39個(gè)磁盤驅(qū)動(dòng)器上。因?yàn)樵谝粋€(gè)扇區(qū)時(shí)間里可以寫32個(gè)扇區(qū)的數(shù)據(jù),所以總的吞吐量是巨大的。此外,一個(gè)驅(qū)動(dòng)器的損壞不會(huì)引起問題,因?yàn)閾p壞一個(gè)驅(qū)動(dòng)器等同于在每個(gè)39位字的讀操作中損失一位,而這是漢明碼可以輕松處理的事情。不利的一面是,2級(jí)RAID方
37、案要求所有驅(qū)動(dòng)器的旋轉(zhuǎn)必須同步,并且只有在驅(qū)動(dòng)器數(shù)量很充裕的情況下才有意義。這一方案還對(duì)控制器提出許多要求。 磁盤陣列RAID3級(jí)RAID是2級(jí)RAID的簡化版本,如圖11-6 d所示。其中要為每個(gè)數(shù)據(jù)字計(jì)算一個(gè)奇偶校驗(yàn)位并且將其寫入一個(gè)奇偶驅(qū)動(dòng)器中。與2級(jí)RAID一樣,各個(gè)驅(qū)動(dòng)器必須精確地同步,因?yàn)槊總€(gè)數(shù)據(jù)字分布在多個(gè)驅(qū)動(dòng)器上。盡管2級(jí)RAID和3級(jí)RAID都提供了非常高的數(shù)據(jù)率,但是它們能夠處理的單獨(dú)的I/O請(qǐng)求的數(shù)目并不比單個(gè)驅(qū)動(dòng)器好。 磁盤陣列RAID4級(jí)RAID和5級(jí)RAID再次使用條帶,而不是具有奇偶校驗(yàn)的單個(gè)字。如圖11-6 e所示,4級(jí)RAID與0級(jí)RAID相類似,但是它將奇偶
38、條帶寫到一個(gè)額外的磁盤上。例如,如果每個(gè)條帶k字節(jié)長,那么所有的條帶進(jìn)行異或操作,就得到一個(gè)k字節(jié)長的奇偶條帶。如果一個(gè)驅(qū)動(dòng)器崩潰了,那么損失的字節(jié)可以通過讀出整個(gè)驅(qū)動(dòng)器組從奇偶驅(qū)動(dòng)器重新計(jì)算出來。 磁盤陣列RAID這一設(shè)計(jì)對(duì)一個(gè)驅(qū)動(dòng)器的損失提供了保護(hù),但是對(duì)于微小的更新其性能很差。如果一個(gè)扇區(qū)被修改了,那么就必須讀取所有的驅(qū)動(dòng)器以便重新計(jì)算奇偶校驗(yàn),然后還必須重寫奇偶校驗(yàn)。結(jié)果,奇偶驅(qū)動(dòng)器的負(fù)擔(dān)十分沉重,它可能會(huì)成為一個(gè)瓶頸。通過以循環(huán)方式在所有驅(qū)動(dòng)器上均勻地分布奇偶校驗(yàn)位,5級(jí)RAID消除了這一瓶頸,如圖11-6 f所示。然而,如果一個(gè)驅(qū)動(dòng)器發(fā)生崩潰,重新構(gòu)造故障驅(qū)動(dòng)器的內(nèi)容是一個(gè)復(fù)雜的過
39、程。 時(shí) 鐘時(shí)鐘又稱為定時(shí)器,對(duì)于多道程序設(shè)計(jì)系統(tǒng)的操作來說它是至關(guān)重要的。時(shí)鐘負(fù)責(zé)維護(hù)時(shí)間,并且防止一個(gè)進(jìn)程壟斷CPU,此外還有其他的功能。時(shí)鐘軟件可以采用設(shè)備驅(qū)動(dòng)程序的形式,盡管時(shí)鐘既不像磁盤那樣是一個(gè)塊設(shè)備,也不像鼠標(biāo)那樣是一個(gè)字符設(shè)備。我們對(duì)時(shí)鐘的研究將遵循與前面幾節(jié)相同的模式:首先考慮時(shí)鐘硬件然后考慮時(shí)鐘軟件。 時(shí)鐘硬件在計(jì)算機(jī)里通常使用兩種類型的時(shí)鐘,這兩種類型的時(shí)鐘與人們使用的鐘表有很大不同。比較簡單的時(shí)鐘被連接到110V或220V的電源線上,每個(gè)電壓周期產(chǎn)生一個(gè)中斷,頻率是50Hz或60Hz。這類時(shí)鐘過去曾經(jīng)占據(jù)主導(dǎo)地位,但現(xiàn)在已經(jīng)很少見。 時(shí)鐘硬件另一種類型的時(shí)鐘由三個(gè)部件構(gòu)
40、成:晶體振蕩器、計(jì)數(shù)器和存儲(chǔ)存放器,如圖11-7所示。當(dāng)把一塊石英晶體適當(dāng)?shù)厍懈畈⑶野惭b在一定的壓力之下時(shí),它就可以產(chǎn)生非常精確的周期性信號(hào),典型的頻率范圍是幾百兆赫茲,具體的頻率值與所選的晶體有關(guān)。使用電子器件可以將這一根底信號(hào)乘以一個(gè)小的整數(shù)來獲得高達(dá)1000MHz甚至更高的頻率。在任何一臺(tái)計(jì)算機(jī)里通常都可以找到至少一個(gè)這樣的電路,它給計(jì)算機(jī)的各種電路提供同步信號(hào)。該信號(hào)被送到計(jì)數(shù)器,使其遞減計(jì)數(shù)至0。當(dāng)計(jì)數(shù)器變?yōu)?時(shí),產(chǎn)生一個(gè)CPU中斷。圖11-7 可編程時(shí)鐘 時(shí)鐘硬件可編程時(shí)鐘通常具有幾種操作模式。在一次完成模式下,當(dāng)時(shí)鐘啟動(dòng)時(shí),它把存儲(chǔ)存放器的值復(fù)制到計(jì)數(shù)器中,然后,來自晶體的每一個(gè)
41、脈沖使計(jì)數(shù)器減1。當(dāng)計(jì)數(shù)器變?yōu)?時(shí),產(chǎn)生一個(gè)中斷,并停止工作,直到軟件再一次顯式地啟動(dòng)它。在方波模式下,當(dāng)計(jì)數(shù)器變?yōu)?并且產(chǎn)生中斷之后,存儲(chǔ)存放器的值自動(dòng)復(fù)制到計(jì)數(shù)器中,并且整個(gè)過程無限期地再次重復(fù)下去。這些周期性的中斷稱為時(shí)鐘滴答。 時(shí)鐘硬件可編程時(shí)鐘的優(yōu)點(diǎn)是其中斷頻率可以由軟件控制。如果采用500MHz的晶體,那么計(jì)數(shù)器將每隔2ns脈動(dòng)一次。對(duì)于無符號(hào)32位存放器,中斷可以被編程為從2ns時(shí)間間隔發(fā)生一次到時(shí)間間隔發(fā)生一次??删幊虝r(shí)鐘芯片通常包含兩個(gè)或三個(gè)獨(dú)立的可編程時(shí)鐘,并且還具有許多其他選項(xiàng)例如,用正計(jì)時(shí)代替倒計(jì)時(shí)、屏蔽中斷等。 時(shí)鐘硬件為了防止計(jì)算機(jī)的電源被切斷時(shí)喪失當(dāng)前時(shí)間,大多數(shù)
42、計(jì)算機(jī)都有一個(gè)由電池供電的備份時(shí)鐘,它是由在數(shù)字手表中使用的那種類型的低功耗電路實(shí)現(xiàn)的。電池時(shí)鐘可以在系統(tǒng)啟動(dòng)的時(shí)候讀出。如果不存在備份時(shí)鐘,軟件就會(huì)向用戶詢問當(dāng)前日期和時(shí)間。對(duì)于一個(gè)連入網(wǎng)絡(luò)的系統(tǒng)而言,還有一種從遠(yuǎn)程主機(jī)獲取當(dāng)前時(shí)間的標(biāo)準(zhǔn)方法。無論是哪種情況,當(dāng)前時(shí)間都要像UNIX所做的那樣轉(zhuǎn)換成自1970年1月1日上午12時(shí)UTC協(xié)調(diào)世界時(shí),以前稱為格林威治平均時(shí)以來的時(shí)鐘滴答數(shù),或者轉(zhuǎn)換成自某個(gè)其他標(biāo)準(zhǔn)時(shí)間以來的時(shí)鐘滴答數(shù)。 時(shí)鐘硬件Windows的時(shí)間原點(diǎn)是1980年l月1日。每一次時(shí)鐘滴答都使實(shí)際時(shí)間增加一個(gè)計(jì)數(shù)。通常會(huì)提供實(shí)用程序來手工設(shè)置系統(tǒng)時(shí)鐘和備份時(shí)鐘,并且使兩個(gè)時(shí)鐘保持同步
43、。 時(shí)鐘軟件時(shí)鐘硬件所做的全部工作是根據(jù)的時(shí)間間隔產(chǎn)生中斷。涉及時(shí)間的其他所有工作都必須由軟件時(shí)鐘驅(qū)動(dòng)程序完成。時(shí)鐘驅(qū)動(dòng)程序確實(shí)切任務(wù)因操作系統(tǒng)而異,但通常包括下面的大多數(shù)任務(wù):1維護(hù)日時(shí)間。2防止進(jìn)程超時(shí)運(yùn)行。3對(duì)CPU的使用情況記賬。4處理用戶進(jìn)程提出的alarm系統(tǒng)調(diào)用。5為系統(tǒng)本身的各個(gè)局部提供監(jiān)視定時(shí)器。6完成概要剖析、監(jiān)視和統(tǒng)計(jì)信息收集。 時(shí)鐘軟件時(shí)鐘的第一個(gè)功能是維持正確的日時(shí)間,也稱為實(shí)際時(shí)間,這只需要在每個(gè)時(shí)鐘滴答將計(jì)數(shù)器加1即可。唯一要留神的事情是日時(shí)間計(jì)數(shù)器的位數(shù),對(duì)于一個(gè)頻率為60Hz的時(shí)鐘來說,32位的計(jì)數(shù)器僅僅超過2年就會(huì)溢出。很顯然,系統(tǒng)不可能在32位中按照自19
44、70年1月l日以來的時(shí)鐘滴答數(shù)來保存實(shí)際時(shí)間。 時(shí)鐘軟件可以采取三種方法來解決這一問題。第一種方法是使用一個(gè)64位的計(jì)數(shù)器,但這樣做使維護(hù)計(jì)數(shù)器的代價(jià)很高,因?yàn)閘秒內(nèi)需要做很屢次維護(hù)計(jì)數(shù)器的工作。第二種方法是以秒為單位維護(hù)日時(shí)間,而不是以時(shí)鐘滴答為單位,該方法使用一個(gè)輔助計(jì)數(shù)器來對(duì)時(shí)鐘滴答計(jì)數(shù),直到累計(jì)完整的一秒。因?yàn)?32秒超過了136年,所以該方法可以工作到22世紀(jì)。 時(shí)鐘軟件第三種方法是對(duì)時(shí)鐘滴答計(jì)數(shù),但是這一計(jì)數(shù)工作是相對(duì)于系統(tǒng)引導(dǎo)的時(shí)間,而不是相對(duì)于一個(gè)固定的外部時(shí)間。當(dāng)讀入備份時(shí)鐘或者用戶輸入實(shí)際時(shí)間時(shí),系統(tǒng)引導(dǎo)時(shí)間就從當(dāng)前日時(shí)間開始計(jì)算,并且以任何方便的形式存放在內(nèi)存中。以后,當(dāng)
45、請(qǐng)求日時(shí)間時(shí),存儲(chǔ)的日時(shí)間值加到計(jì)數(shù)器上就可以得到當(dāng)前的日時(shí)間。 時(shí)鐘軟件時(shí)鐘的第二個(gè)功能是防止進(jìn)程超時(shí)運(yùn)行。每當(dāng)啟動(dòng)一個(gè)進(jìn)程時(shí),調(diào)度程序就將一個(gè)計(jì)數(shù)器初始化為以時(shí)鐘滴答為單位的該進(jìn)程時(shí)間片的取值。每次時(shí)鐘中斷時(shí),時(shí)鐘驅(qū)動(dòng)程序?qū)r(shí)間片計(jì)數(shù)器減l。當(dāng)計(jì)數(shù)器變?yōu)?時(shí),時(shí)鐘驅(qū)動(dòng)程序調(diào)用調(diào)度程序以激活另一個(gè)進(jìn)程。 時(shí)鐘軟件時(shí)鐘的第三個(gè)功能是CPU記賬。最精確的記賬方法是,每當(dāng)一個(gè)進(jìn)程啟動(dòng)時(shí),便啟動(dòng)一個(gè)不同于主系統(tǒng)統(tǒng)定時(shí)器的輔助定時(shí)器。當(dāng)進(jìn)程終止時(shí),讀出這個(gè)定時(shí)器的值就可以知道該進(jìn)程運(yùn)行了多長時(shí)間。為了正確地記賬,當(dāng)中斷發(fā)生時(shí)應(yīng)該將輔助定時(shí)器保存起來,中斷結(jié)束后再將其恢復(fù)。 時(shí)鐘軟件一個(gè)不太精確但更加簡
46、單的記賬方法是在一個(gè)全局變量中維護(hù)一個(gè)指針,該指針指向進(jìn)程表中當(dāng)前運(yùn)行的進(jìn)程的表項(xiàng)。在每一個(gè)時(shí)鐘滴答,使當(dāng)前進(jìn)程的表項(xiàng)中的一個(gè)域加l 。通過這一方法,每個(gè)時(shí)鐘滴答由在該滴答時(shí)刻運(yùn)行的進(jìn)程“付費(fèi)。這一策略的一個(gè)小問題是:如果在一個(gè)進(jìn)程運(yùn)行過程中屢次發(fā)生中斷,即使該進(jìn)程沒有做多少工作,它仍然要為整個(gè)滴答付費(fèi)。由于在中斷期間恰當(dāng)?shù)貙?duì)CPU進(jìn)行記賬的方法代價(jià)過于昂貴,因此很少使用。 時(shí)鐘軟件在許多系統(tǒng)中,進(jìn)程可以請(qǐng)求操作系統(tǒng)在一定的時(shí)間間隔之后向它報(bào)警。警報(bào)通常是信號(hào)、中斷消息或者類似的東西。需要這類報(bào)警的一個(gè)應(yīng)用是網(wǎng)絡(luò),當(dāng)一個(gè)數(shù)據(jù)包在一定時(shí)間間隔之內(nèi)沒有被確認(rèn)時(shí)該數(shù)據(jù)包必須重發(fā)。另一個(gè)應(yīng)用是計(jì)算機(jī)輔
47、助教學(xué),如果學(xué)生在一定時(shí)間內(nèi)沒有響應(yīng),就告訴他答案。 時(shí)鐘軟件操作系統(tǒng)的組成局部也需要設(shè)置定時(shí)器,這些定時(shí)器被稱為監(jiān)視定時(shí)器或稱看門狗定時(shí)器。例如,為了防止磨損介質(zhì)和磁頭,軟盤在不使用時(shí)是不旋轉(zhuǎn)的。當(dāng)數(shù)據(jù)需要從軟盤讀出時(shí),電機(jī)必須首先啟動(dòng)。只有當(dāng)軟盤以全速旋轉(zhuǎn)時(shí),I/O才可以開始。當(dāng)一個(gè)進(jìn)程試圖從一個(gè)空閑的軟盤讀取數(shù)據(jù)時(shí),軟盤驅(qū)動(dòng)程序啟動(dòng)電機(jī),然后設(shè)置一個(gè)監(jiān)視定時(shí)器,以便在足夠長的時(shí)間間隔之后引發(fā)一個(gè)中斷因?yàn)椴淮嬖趤碜攒洷P本身的到達(dá)速度的中斷。 時(shí)鐘軟件時(shí)鐘驅(qū)動(dòng)程序用來處理監(jiān)視定時(shí)器的機(jī)制和用于用戶信號(hào)的機(jī)制是相同的。唯一的區(qū)別是當(dāng)一個(gè)定時(shí)器時(shí)間到時(shí),時(shí)鐘驅(qū)動(dòng)程序?qū)⒄{(diào)用一個(gè)由調(diào)用者提供的過程,
48、而不是引發(fā)一個(gè)信號(hào)。這個(gè)過程是調(diào)用者代碼的一局部。被調(diào)用的過程可以做任何需要做的工作,甚至可以引發(fā)一個(gè)中斷,但是在內(nèi)核之中中斷通常是不方便的并且信號(hào)也不存在。這就是為什么要提供監(jiān)視定時(shí)器機(jī)制。值得注意的是,只有當(dāng)時(shí)鐘驅(qū)動(dòng)程序與被調(diào)用的過程處于相同的地址空間時(shí),監(jiān)視定時(shí)器機(jī)制才起作用。 時(shí)鐘軟件時(shí)鐘最后要做的事情是剖析。某些操作系統(tǒng)提供了一種機(jī)制,通過該機(jī)制用戶程序可以讓系統(tǒng)構(gòu)造它的程序計(jì)數(shù)器的一個(gè)直方圖,這樣它就可以了解時(shí)間花在了什么地方。當(dāng)剖析是可能的事情時(shí),在每一時(shí)鐘滴答驅(qū)動(dòng)程序都要檢查當(dāng)前進(jìn)程是否正在被進(jìn)行剖析,如果是,那么計(jì)算對(duì)應(yīng)于當(dāng)前程序計(jì)數(shù)器的區(qū)間號(hào)一段地址范圍,然后將該區(qū)間的值加
49、l。這一機(jī)制也可用來對(duì)系統(tǒng)本身進(jìn)行剖析。 軟定時(shí)器大多數(shù)計(jì)算機(jī)主系統(tǒng)定時(shí)器之外還擁有一個(gè)輔助可編程時(shí)鐘,可以設(shè)置它以程序需要的任何速率引發(fā)定時(shí)器中斷。一般而言,有兩種方法管理I/O:中斷和輪詢。中斷具有較低的等待時(shí)間,也就是說,它們在事件本身之后立即發(fā)生,具有很少的延遲或者沒有延遲。另一方面,對(duì)于現(xiàn)代CPU而言,由于需要上下文切換以及對(duì)于流水線、TLB和高速緩存的影響,中斷具有相當(dāng)大的開銷。 軟定時(shí)器替代中斷的是讓應(yīng)用程序?qū)λ旧砥诖氖录M(jìn)行輪詢。這樣做防止了中斷,但是可能存在相當(dāng)長的等待時(shí)間,因?yàn)橐粋€(gè)事件可能正好發(fā)生在一次輪詢之后,在這種情況下它就要等待幾乎整個(gè)輪詢間隔。平均而言,等待時(shí)間
50、是輪詢間隔的一半。對(duì)于某些應(yīng)用而言,中斷的開銷和輪詢的等待時(shí)間都是不能接受的。例如,考慮一個(gè)高性能的網(wǎng)絡(luò),如千兆位以太網(wǎng)。該網(wǎng)絡(luò)能夠每12s接收或者發(fā)送一個(gè)全長的數(shù)據(jù)包。為了以優(yōu)化的輸出性能運(yùn)行,每隔12s就應(yīng)該發(fā)出一個(gè)數(shù)據(jù)包。 軟定時(shí)器到達(dá)這一速率的一種方法是當(dāng)一個(gè)數(shù)據(jù)包傳輸完成時(shí)引發(fā)一個(gè)中斷,或者將輔助定時(shí)器設(shè)置為每12s中斷一次。問題是在一個(gè)300MHz的Pentium H計(jì)算機(jī)上該中斷經(jīng)實(shí)測要花費(fèi)的時(shí)間。這樣的開銷比20世紀(jì)70年代的計(jì)算機(jī)好不了多少。例如,在大多數(shù)小型機(jī)上,一個(gè)中斷要占用4個(gè)總線周期:將程序計(jì)數(shù)器和PSW壓入堆棧并且加載一個(gè)新的程序計(jì)數(shù)器和PSW?,F(xiàn)如今涉及流水線、M
51、MU、TLB和高速緩存,更是增加了大量的開銷。這些影響可能在時(shí)間上使情況變得更壞而不是變得更好,因此抵消了更快的時(shí)鐘速率。 軟定時(shí)器軟定時(shí)器防止了中斷。無論何時(shí)當(dāng)內(nèi)核因某種其他原因在運(yùn)行時(shí),在它返回到用戶態(tài)之前,它都要檢查實(shí)時(shí)時(shí)鐘以了解軟定時(shí)器是否到期。如果這個(gè)定時(shí)器已經(jīng)到期,那么執(zhí)行被調(diào)度的事件例如,傳送數(shù)據(jù)包或者檢查到來的數(shù)據(jù)包,而無需切換到內(nèi)核態(tài),因?yàn)橄到y(tǒng)已經(jīng)在內(nèi)核態(tài)。在完成工作之后,軟定時(shí)器被復(fù)位以便再次鬧響。要做的全部工作是將當(dāng)前時(shí)鐘值復(fù)制給定時(shí)器并且將超時(shí)間隔加上。 軟定時(shí)器軟定時(shí)器隨著因?yàn)槠渌蜻M(jìn)入內(nèi)核的頻率而脈動(dòng)。這些原因包括:1系統(tǒng)調(diào)用。2TLB未命中。3頁面故障。4I/O
52、中斷。5CPU變成空閑。 軟定時(shí)器一項(xiàng)研究對(duì)幾種CPU負(fù)載進(jìn)行了測量,包括全負(fù)載Web效勞器、具有計(jì)算約束后臺(tái)作業(yè)的Web效勞器、從因特網(wǎng)上播放實(shí)時(shí)音頻以及重編譯UNIX內(nèi)核。進(jìn)入內(nèi)核的平均進(jìn)入率在2s到ls之間變化,其中大約一半是系統(tǒng)調(diào)用。因此,對(duì)于一階近似,讓一個(gè)軟定時(shí)器每隔2s鬧響一次是可行的,雖然這樣做偶爾會(huì)錯(cuò)過最終時(shí)限。對(duì)于發(fā)送數(shù)據(jù)包或者輪詢到來的數(shù)據(jù)包這樣的應(yīng)用而言,有時(shí)可能晚10s,比讓中斷消耗35的CPU時(shí)間要好。 軟定時(shí)器當(dāng)然,可能有一段時(shí)間不存在系統(tǒng)調(diào)用、TLB未命中或頁面故障,在這些情況下,沒有軟定時(shí)器會(huì)鬧響。為了在這些時(shí)間間隔上設(shè)置一個(gè)最大值,可以將輔助硬件定時(shí)器設(shè)置為
53、每隔一定時(shí)間例如1ms鬧響一次。如果應(yīng)用程序?qū)τ谂既坏臅r(shí)間間隔能夠忍受每秒只有1000 個(gè)數(shù)據(jù)包,那么軟定時(shí)器和低頻硬件定時(shí)器的組合可能比純粹的中斷驅(qū)動(dòng)I/O或者純粹的輪詢要好。 用戶界面:鍵盤、鼠標(biāo)和監(jiān)視器每臺(tái)通用計(jì)算機(jī)都配有一個(gè)鍵盤、一個(gè)監(jiān)視器和一只鼠標(biāo),使人們可以與之交互。盡管鍵盤和監(jiān)視器在技術(shù)上是獨(dú)立的設(shè)備,但是它們緊密地一同工作。在大型機(jī)上,通常存在許多遠(yuǎn)程用戶,每個(gè)用戶擁有一個(gè)設(shè)備,該設(shè)備包括一個(gè)鍵盤和一個(gè)連在一起的顯示器作為一個(gè)單位。這些設(shè)備在歷史上被稱為終端。 輸入軟件用戶輸入主要來自鍵盤和鼠標(biāo)。在個(gè)人計(jì)算機(jī)上,鍵盤包含一個(gè)嵌入式微處理器,該微處理器通過一個(gè)特殊的串行端口與主板
54、上的控制芯片通信盡管鍵盤越來越多地連接到USB端口上。每當(dāng)一個(gè)鍵被按下的時(shí)候都會(huì)產(chǎn)生一個(gè)中斷,并且每當(dāng)一個(gè)鍵被釋放的時(shí)候還會(huì)產(chǎn)生第二個(gè)中斷。在發(fā)生每個(gè)這樣的鍵盤中斷時(shí),鍵盤驅(qū)動(dòng)程序都要從與鍵盤相關(guān)聯(lián)的I/O端口提取信息,以了解發(fā)生了什么事情。其他的一切事情都是在軟件中發(fā)生的,在相當(dāng)大的程度上獨(dú)立于硬件。 輸入軟件1鍵盤軟件I/O端口中的數(shù)字是鍵編號(hào),稱為掃描碼,而不是ASCII碼。鍵盤所擁有的鍵不超過128個(gè),所以只需7個(gè)位表示鍵編號(hào)。當(dāng)鍵按下時(shí),第8位設(shè)置為0,當(dāng)鍵釋放時(shí),第8位設(shè)置為1。跟蹤每個(gè)鍵的狀態(tài)按下或彈起是驅(qū)動(dòng)程序的任務(wù)。 輸入軟件例如,當(dāng)A鍵被按下時(shí),掃描碼30被寫入一個(gè)I/O存
55、放器。驅(qū)動(dòng)程序應(yīng)該負(fù)責(zé)確定鍵入的是小寫字母、大寫字母、CTRL-A、ALT-A、CTRL-ALT-A還是某些其他組合。由于驅(qū)動(dòng)程序可以斷定哪些鍵已經(jīng)按下但是還沒有被釋放例如SHIFT,所以它擁有足夠多的信息來做這一工作。雖然鍵盤與監(jiān)視器在邏輯上是兩個(gè)獨(dú)立的設(shè)備,但是很多用戶已經(jīng)習(xí)慣于看到他們剛剛鍵入的字符出現(xiàn)在屏幕上,這個(gè)過程叫做回顯。 輸入軟件當(dāng)用戶正在擊鍵的時(shí)候程序可能正在寫屏幕,這一事實(shí)使回顯變得錯(cuò)綜復(fù)雜。最起碼,鍵盤驅(qū)動(dòng)程序必須解決在什么地方放置新鍵入的字符而不被程序的輸出所覆蓋。當(dāng)超過80個(gè)字符必須在具有80字符行或某個(gè)其他數(shù)字的窗口中顯示時(shí),也使回顯變得復(fù)雜。根據(jù)應(yīng)用程序,折行到下
56、一行可能是適宜的。另一個(gè)問題是制表符的處理。通常由驅(qū)動(dòng)程序來計(jì)算光標(biāo)當(dāng)前定位在什么位置,它既要考慮程序的輸出又要考慮回顯的輸出,并且要計(jì)算要回顯的正確的空格個(gè)數(shù)。 輸入軟件2鼠標(biāo)軟件大多數(shù)PC機(jī)都有一個(gè)鼠標(biāo)或者跟蹤球,跟蹤球不過是躺在其背部上的鼠標(biāo)。一種常見類型的鼠標(biāo)在內(nèi)部有一個(gè)橡皮球,該橡皮球通過鼠標(biāo)底部的一個(gè)圓洞突出,當(dāng)鼠標(biāo)在一個(gè)粗糙外表上移動(dòng)時(shí)橡皮球會(huì)隨著旋轉(zhuǎn)。當(dāng)橡皮球旋轉(zhuǎn)時(shí),它與放置在相互垂直的滾軸上的兩個(gè)橡皮滾筒相摩擦。東西方向的運(yùn)動(dòng)導(dǎo)致平行于y軸的滾軸旋轉(zhuǎn),南北方向的運(yùn)動(dòng)導(dǎo)致平行于x軸的滾軸旋轉(zhuǎn)。 輸入軟件另一種流行的鼠標(biāo)類型是光學(xué)鼠標(biāo),它在其底部裝備有一個(gè)或多個(gè)發(fā)光二極管和光電探
57、測器。早期的光學(xué)鼠標(biāo)必須在特殊的鼠標(biāo)墊上操作,鼠標(biāo)墊上刻有矩形的網(wǎng)格,這樣鼠標(biāo)能夠計(jì)數(shù)穿過的線數(shù)?,F(xiàn)代光學(xué)鼠標(biāo)在其中有圖像處理芯片并且獲取處于它們下方的連續(xù)的低分辨率照片,尋找從圖像到圖像的變化。 輸入軟件當(dāng)鼠標(biāo)在隨便哪個(gè)方向移動(dòng)了一個(gè)確定的最小距離,或者按鈕被按下或釋放時(shí),都會(huì)有一條消息發(fā)送給計(jì)算機(jī)。最小距離大約是盡管它可以在軟件中設(shè)置。有些人將這一單位稱為一個(gè)鼠標(biāo)步。鼠標(biāo)可能具有一個(gè)、兩個(gè)或者三個(gè)按鈕,這取決于設(shè)計(jì)者對(duì)于用戶跟蹤多個(gè)按鈕的智力的估計(jì)。某些鼠標(biāo)具有滾輪,可以將額外的數(shù)據(jù)發(fā)送回計(jì)算機(jī)。無線鼠標(biāo)與有線鼠標(biāo)相同,區(qū)別是無線鼠標(biāo)使用低功率無線電,例如使用藍(lán)牙標(biāo)準(zhǔn)將數(shù)據(jù)發(fā)送回計(jì)算機(jī),而
58、有線鼠標(biāo)是通過導(dǎo)線將數(shù)據(jù)發(fā)送回計(jì)算機(jī)。 輸入軟件發(fā)送到計(jì)算機(jī)的消息包含三個(gè)工程:x、y、按鈕,即自上一次消息之后x位置的變化、自上一次消息之后y位置的變化、按鈕的狀態(tài)。消息的格式取決于系統(tǒng)和鼠標(biāo)所具有的按鈕的數(shù)目。通常,消息占3字節(jié)。大多數(shù)鼠標(biāo)返回報(bào)告最多每秒40次,所以鼠標(biāo)自上一次報(bào)告之后可能移動(dòng)了多個(gè)鼠標(biāo)步指出位置上的變化。某些GUI區(qū)分單擊與雙擊鼠標(biāo)按鈕。如果兩次點(diǎn)擊在空間上鼠標(biāo)步足夠接近,并且在時(shí)間上毫秒也足夠接近,那么就會(huì)發(fā)出雙擊信號(hào)。最大的“足夠接近是軟件的事情,并且這兩個(gè)參數(shù)通常是用戶可設(shè)置的。 輸出軟件程序員通常喜歡使用文本窗口的簡單輸出方式,而其他用戶那么喜歡圖形用戶界面。
59、輸出軟件1文本窗口當(dāng)輸出是連續(xù)的單一字體、大小和顏色的形式時(shí),輸出比輸入簡單。大體上,程序?qū)⒆址l(fā)送到當(dāng)前窗口,而字符在那里顯示出來。通常,一個(gè)字符塊或者一行是在一個(gè)系統(tǒng)調(diào)用中被寫到窗口上的。 輸出軟件屏幕編輯器和許多其他復(fù)雜的程序需要能夠以更加復(fù)雜的方式更新屏幕,例如在屏幕的中間替換一行。為滿足這樣的需要,大多數(shù)輸出驅(qū)動(dòng)程序支持一系列命令來移動(dòng)光標(biāo),在光標(biāo)處插入或者刪除字符或行。這些命令常常被稱為轉(zhuǎn)義序列。在25行80列ASCII啞終端的全盛期,有數(shù)百種終端類型,每一種都有自己的轉(zhuǎn)義序列。因而,編寫在一種以上的終端類型上工作的軟件是十分困難的。 輸出軟件一種解決方案是稱為termcap的終端
60、數(shù)據(jù)庫,它是在伯克利UNIX中引入的。該軟件包定義了許多根本動(dòng)作,例如將光標(biāo)移動(dòng)到行,列。為了將光標(biāo)移動(dòng)到一個(gè)特殊的位置,軟件如一個(gè)編輯器使用一個(gè)一般的轉(zhuǎn)義序列,然后該轉(zhuǎn)義序列被轉(zhuǎn)換成將要被執(zhí)行寫操作的終端的實(shí)際轉(zhuǎn)義序列。以這種方式,該編輯器就可以工作在任何具有termcap數(shù)據(jù)庫入口的終端上。許多UNIX軟件仍然以這種方式工作,即使在個(gè)人計(jì)算機(jī)上。逐漸地,業(yè)界看到了轉(zhuǎn)義序列標(biāo)準(zhǔn)化的需要,所以就開發(fā)了一個(gè)ANSI標(biāo)準(zhǔn)。 輸出軟件2X窗口系統(tǒng)幾乎所有UNIX系統(tǒng)的用戶界面都以X窗口系統(tǒng)簡稱為X為根底,它是作為Athena方案雅典娜方案,指麻省理工學(xué)院MIT校園范圍內(nèi)基于UNIX的計(jì)算環(huán)境的一局部
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生豬養(yǎng)殖與農(nóng)業(yè)產(chǎn)業(yè)扶貧合作協(xié)議
- 二零二五年度制造業(yè)工傷責(zé)任保險(xiǎn)合同
- 2025年度男方道歉夫妻共同生活保證協(xié)議
- 2025年度飯店短期勞務(wù)合同-客房服務(wù)員職業(yè)健康與安全協(xié)議
- 二零二五年度物業(yè)公司員工勞動(dòng)合同(含社區(qū)文化活動(dòng))
- 監(jiān)理技術(shù)服務(wù)合同
- 綠色數(shù)據(jù)中心建設(shè)運(yùn)營合同
- 環(huán)境影響評(píng)估結(jié)果展示表
- 股份制企業(yè)股權(quán)分配與管理制度文書
- 財(cái)務(wù)與成本控制管理細(xì)則
- 2024年高考英語易錯(cuò)題 閱讀理解:推理判斷題4大陷阱(教師版新高考專用)
- 醫(yī)院環(huán)境衛(wèi)生學(xué)監(jiān)測和院感控制課件
- 《力與形變》教學(xué)課件(一)
- 湖北省2024年村干部定向考試真題
- 部編版三年級(jí)語文下冊期中試卷及參考答案
- JT-T-1199.1-2018綠色交通設(shè)施評(píng)估技術(shù)要求第1部分:綠色公路
- 酒店能耗分析報(bào)告
- 桃花紅杏花紅混聲合唱簡譜
- DL-T995-2016繼電保護(hù)和電網(wǎng)安全自動(dòng)裝置檢驗(yàn)規(guī)程
- 2024年蘇州農(nóng)業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
評(píng)論
0/150
提交評(píng)論