




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
操作系統(tǒng)OperatingSystems聞立杰清華大學(xué)軟件學(xué)院
進程管理21.I/O硬件2.I/O控制方式3.I/O軟件4.磁盤第四章I/O設(shè)備管理進程管理3在現(xiàn)代計算機系統(tǒng)中,有大量的輸入輸出設(shè)備,其種類繁多、差異大。隨著技術(shù)的發(fā)展,新設(shè)備也不斷地出現(xiàn)。因此,如何管理好這些設(shè)備,使資源得以合理的利用,是操作系統(tǒng)的又一個主要功能。I/O(Input/Output)設(shè)備進程管理44.1
I/O硬件對于I/O硬件,操作系統(tǒng)所關(guān)心的并不是硬件自身的設(shè)計、制造和維護,而是如何對其進行編程,即該設(shè)備給軟件提供的接口是什么,包括它所接受的控制命令、所完成的功能,以及所返回的出錯報告。進程管理5按交互方向分類:輸入設(shè)備:鍵盤、鼠標(biāo)、掃描儀、攝像頭;輸出設(shè)備:顯示器、打印機、音箱;輸入/輸出:磁盤、網(wǎng)卡、聲卡、耳麥。4.1.1
I/O設(shè)備的類型進程管理6按數(shù)據(jù)組織分類:塊設(shè)備:以數(shù)據(jù)塊作為信息的存儲和傳輸單位,每個數(shù)據(jù)塊都有一個地址,數(shù)據(jù)塊之間的讀寫操作是相互獨立的,如磁盤;字符設(shè)備:以字符作為信息存儲和傳輸單位,數(shù)據(jù)即字符流,無定位無尋址,如鼠標(biāo);進程管理7有了I/O設(shè)備,是否就能完成I/O功能呢?進程管理84.1.2設(shè)備控制器機械部分電子部分一個I/O單元由兩部分組成:機械部分和電子部分(設(shè)備控制器或適配器)。進程管理9機械部分即為I/O設(shè)備本身電子部分稱為:設(shè)備控制器(devicecontroller)或適配器(adapter)適配器的形式通常是印刷電路卡,可以插入到主板的擴充槽中;控制器的形式是一組芯片;完成設(shè)備與主機間的連接和通訊。進程管理104.1.3I/O地址每個設(shè)備控制器都有一些寄存器用來與CPU通信。通過向這些寄存器中寫入不同的值,OS能命令該設(shè)備去執(zhí)行發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、打開、關(guān)閉等操作;OS也能通過讀取這些寄存器的值來了解設(shè)備的當(dāng)前狀態(tài)。此外,許多控制器還有一個數(shù)據(jù)緩沖區(qū)供OS讀寫。CPU外部設(shè)備控制邏輯電路控制寄存器狀態(tài)寄存器數(shù)據(jù)寄存器如何讓I/O設(shè)備工作?進程管理11問題: CPU如何與設(shè)備控制器進行通信?這不是普通的內(nèi)存訪問!方法有三種:I/O獨立編址;內(nèi)存映像編址;混合編址。進程管理121.I/O獨立編址基本思路:給控制器中的每一個寄存器分配一個唯一的I/O端口(I/Oport)編號,稱為I/O端口地址,然后用專門的I/O指令對端口進行操作;這些端口地址所構(gòu)成的
地址空間是完全獨立的,
與內(nèi)存的地址空間沒有
關(guān)系。例如:INR0[4]
表示讀入I/O
端口地址為4的內(nèi)容;MOVR0[4]
表示讀入
內(nèi)存地址為4的內(nèi)容;進程管理13Linux0.11/boot/setup.smoval,#0x11!initializePICs-中斷控制器的初始化out#0x20,al!senditto8259A-1moval,#0x20!startofhardwareint's(0x20)
out#0x21,almoval,#0x28!startofhardwareint's(0x28)out#0xA1,al……inal,#0x64
!8042statusport
!鍵盤控制器狀態(tài)寄存器testal,#2jnzempty_8042!isinputbufferfull?進程管理142.內(nèi)存映像編址基本思路:把所有控制器當(dāng)中的每一個寄存器都映射為一個內(nèi)存地址,專門用于I/O操作(功能上),對這些單元的讀寫操作即為普通的內(nèi)存訪問操作。端口地址空間與內(nèi)存的地址空間統(tǒng)一編址,前者是后者的一部分,一般位于后者的頂端部分。進程管理15編程方便,無需專門的I/O指令;不能對控制寄存器的內(nèi)容進行Cache;每一次都要判斷訪問的是內(nèi)存還是I/O。進程管理163.混合編址基本思路:對于設(shè)備控制器中的寄存器,采用獨立編址的方法;而對于設(shè)備的數(shù)據(jù)緩沖區(qū),采用內(nèi)存映像編址的方法。進程管理17PC機上的部分I/O端口地址(本圖摘自Silberschatz,GalvinandGagne:“OperatingSystemConcepts”)進程管理18到目前為止,已經(jīng)介紹了I/O設(shè)備的類型、I/O設(shè)備的控制器、I/O設(shè)備的端口地址?,F(xiàn)在的問題則是:根據(jù)已有的這些知識,能否開始編程使用這些I/O設(shè)備,完成相應(yīng)的輸入輸出功能呢?進程管理194.2
I/O控制方式程序循環(huán)檢測方式(ProgrammedI/O)中斷驅(qū)動方式(Interrupt-drivenI/O)直接內(nèi)存訪問方式(DMA,DirectMemory
Access)進程管理204.2.1
程序循環(huán)檢測方式
小寶寶在家吃飯若寶寶還未吃飽,重復(fù)如下步驟若寶寶的嘴巴沒空(如上一口飯菜尚未吃完),循環(huán)等待裝一勺飯菜,喂到寶寶嘴里進程管理21基本思路:在程序(設(shè)備驅(qū)動程序)中通過不斷地檢測I/O設(shè)備的當(dāng)前狀態(tài),來控制I/O操作的完成。在進行I/O操作之前,要循環(huán)檢測設(shè)備是否就緒;在I/O操作進行之中,要循環(huán)檢測設(shè)備是否完成。從硬件來說,控制I/O的所有工作均由CPU來完成。也稱為繁忙等待方式(busywaiting)或輪詢方式
(polling)。缺點...進程管理22一個例子已知I/O地址采用內(nèi)存映像編址的方式,現(xiàn)需要在打印機上打印一個字符串“ABCDEFGH”?;舅悸罚喊堰@8個字符逐個送到打印機設(shè)備的I/O端口地址(內(nèi)存地址)?!瑼BCDEFGH內(nèi)存pprinter_status_regprinter_data_register進程管理23for(i=0;i<count;i++)
{
while(*printer_status_reg!=READY);*printer_data_register=p[i];
}while(飯未吃完)
{
while(寶寶的嘴巴沒空)等待;裝一勺飯菜,喂到寶寶嘴里;
}程序循環(huán)檢測方式若是I/O獨立編址方式,如何編程?進程管理244.2.2
中斷驅(qū)動方式
循環(huán)檢測的控制方法占用了太多的CPU時間,可能會造成CPU時間的浪費。
例如:假設(shè)打印機的打印速度為100字符/秒,在循環(huán)檢測方式下,一個字符被寫入到打印機的數(shù)據(jù)寄存器中后,CPU需要等待10毫秒才能寫入下一個字符。一種解決的辦法:中斷驅(qū)動的控制方式。進程管理25寶寶在幼兒園吃飯老師從食堂取來飯菜若寶寶尚未準(zhǔn)備好吃飯,循環(huán)等待將飯菜裝入每個寶寶的小碗寶寶開始吃飯,老師去做別的事情在吃飯時,寶寶通過各種信號打斷老師進程管理26老師被打斷如果寶寶舉手,給他/她添飯如果寶寶舉拳頭,給他/她添湯如果寶寶吃完了,收拾碗和勺子......回到剛才的狀態(tài)進程管理27在硬件一級,當(dāng)一個I/O設(shè)備完成任務(wù)時,它的控制器會通過總線向中斷控制器發(fā)出一個信號,如果中斷控制器接受了該信號,就把標(biāo)明該設(shè)備的一個編號放在地址線上,并向CPU發(fā)出一個中斷信號。CPU就中斷當(dāng)前工作,并以該編號為索引去訪問中斷向量表,取出中斷處理程序的起始地址,并在該程序運行后向中斷控制器發(fā)出確認信號。進程管理28
用戶進程strcpy(buffer,“ABCDEFGH”);print(buffer,strlen(buffer));中斷驅(qū)動方式進程管理29
系統(tǒng)調(diào)用函數(shù)printcopy_from_user(buffer,p,count);
//p:內(nèi)核緩沖區(qū)enable_interrupts();while(*printer_status_reg!=READY);
*printer_data_register=p[0];scheduler();老師從食堂取來飯菜若寶寶尚未準(zhǔn)備好吃飯,循環(huán)等待將飯菜裝入每個寶寶的小碗寶寶開始吃飯,老師去做別的事情在吃飯時,寶寶通過各種信號打斷老師進程管理30
中斷處理程序if(count==0)
{
unblock_user();}
else
{
*printer_data_register=p[++i];
count--;
}acknowledge_intereupt();return_from_interrupt();執(zhí)行過程進程管理31中斷驅(qū)動方式的基本思路用戶進程通過系統(tǒng)調(diào)用函數(shù)來發(fā)起I/O操作,并在發(fā)起后阻塞該進程,調(diào)度其他的進程使用CPU。在I/O操作完成時,設(shè)備向CPU發(fā)出中斷,然后在中斷處理程序中做進一步的處理。在中斷驅(qū)動方式下,數(shù)據(jù)的每次讀寫還是通過CPU來完成,但是當(dāng)I/O設(shè)備在進行數(shù)據(jù)處理時,CPU不必等待,可以繼續(xù)執(zhí)行其他的進程。進程管理324.2.3
直接內(nèi)存訪問方式
I/O讀操作的典型過程:CPU向設(shè)備控制器發(fā)出命令,啟動讀操作;設(shè)備控制器控制I/O設(shè)備完成此次讀操作,并將數(shù)據(jù)保存在設(shè)備控制器內(nèi)部的寄存器或緩沖區(qū)中,然后中斷CPU;CPU把數(shù)據(jù)讀入內(nèi)存。進程管理33進程管理34直接內(nèi)存訪問(DirectMemoryAccess,DMA)方式:在硬件上需要一個DMA控制器。DMA控制器可以直接去訪問系統(tǒng)總線,它能代替CPU去指揮I/O設(shè)備與內(nèi)存之間的數(shù)據(jù)傳送。DMA控制器包含了一些寄存器,可被CPU來讀或?qū)?。包括:一個內(nèi)存地址寄存器、一個字節(jié)計數(shù)器,以及一個或多個控制寄存器(指明了I/O設(shè)備的端口地址、數(shù)據(jù)傳送方向、傳送單位,以及每一次傳送的字節(jié)數(shù))。進程管理35(本圖摘自AndrewS.Tanenbaum:“ModernOperatingSystems”)5.DMA工作原理是否所有
設(shè)備都要
用DMA?進程管理36如果使用DMA,過程如下:CPU對DMA控制器進行編程,告訴它應(yīng)把什么數(shù)
據(jù)傳送到內(nèi)存的什么地方,并向磁盤控制器發(fā)出
命令,讓它去磁盤驅(qū)動器中讀入所需的數(shù)據(jù)塊,
保存到內(nèi)部緩沖區(qū)中,并驗證數(shù)據(jù)的正確性;DMA控制器通過總線向磁盤控制器發(fā)出一個讀操
作的信號,并把將寫入的內(nèi)存地址打在總線上;磁盤控制器取出一個字節(jié),按該地址寫入內(nèi)存;磁盤控制器向DMA發(fā)一個確認信號,DMA把內(nèi)存
地址加1,把字節(jié)計數(shù)器減1。若計數(shù)器的值大于0
轉(zhuǎn)第2步;DMA控制器向CPU發(fā)出一個中斷,告訴它數(shù)據(jù)傳
輸已完成。進程管理374.3
I/O軟件4.3.1I/O軟件的接口頭腦風(fēng)暴(BrainStorm)為了管理I/O設(shè)備,需要哪一些相關(guān)軟件?這些軟件各自完成何種功能,相互的關(guān)系、組織結(jié)構(gòu)又如何?進程管理38應(yīng)用程序開發(fā)人員程序/OS的接口操作系統(tǒng)程序員希望OS提供什么樣的接口,有何特點?鍵盤、鼠標(biāo)、顯示器、打印機、磁盤、磁帶、光驅(qū)…進程管理39設(shè)備獨立性:使得用戶在編寫程序、訪問各種I/O設(shè)備時,無需事先指定特定的設(shè)備類型,各種類型設(shè)備之間的差異由OS來處理,對用戶是透明的。統(tǒng)一命名:即用簡單的字符串或整數(shù)的方式來命名一個文件或設(shè)備。例如在Unix當(dāng)中,所有的文件和設(shè)備都采用相同的命名規(guī)則:路徑名。阻塞與非阻塞I/O:當(dāng)進程啟動一個系統(tǒng)調(diào)用后,是立即返回還是被阻塞起來,直到I/O操作完成。進程管理40Windows中的CreateFile()函數(shù)創(chuàng)建或打開以下的某種對象:控制臺、通信資源(如串口)、目錄、磁盤設(shè)備(分區(qū))、文件(軟盤、硬盤、光盤、U盤)等;lpFileName,//filename
dwDesiredAccess,//訪問模式,讀/寫/執(zhí)行等
dwShareMode,//共享模式,
lpSecurityAttributes,//安全屬性
dwCreationDisposition,//howtocreate
dwFlagsAndAttributes,//fileattributes設(shè)備獨立性。統(tǒng)一命名:“A:\\1.txt”、“C:\\2.txt”、“F:\\3.txt”、“COM1”、“\\.\A:”、“\\.\C:”、“CON”。進程管理41阻塞與非阻塞I/O阻塞:進程被阻塞起來,直到I/O操作完成易于使用和理解有些情形下不能滿足要求非阻塞:I/O調(diào)用很快返回異步性:當(dāng)I/O操作進行時進程繼續(xù)執(zhí)行,當(dāng)I/O操作完成時,I/O子系統(tǒng)給進程發(fā)信號調(diào)用者具有主動權(quán)不易使用,多線程進程管理42HANDLE;=CreateFile("COM1",GENERIC_READ,0,
NULL,OPEN_EXISTING,0,NULL);//EV_RXCHAR:AcharacterwasreceivedandplacedintheinputbuffermMask(,EV_RXCHAR);mEvent(,&dwEvtMask,NULL);if(dwEvtMask&EV_RXCHAR){ReadFile(,buf,NumBytesToRead,
NumBytesRead,NULL);}阻塞I/O示例(串口訪問)進程管理43HANDLE;OVERLAPPEDo;=CreateFile(“COM1”,GENERIC_READ,0,
NULL,OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,NULL);//重疊I/O//EV_RXCHAR:AcharacterwasreceivedandplacedintheinputbuffermMask(,EV_RXCHAR);o.hEvent=CreateEvent(NULL,...);bR=mEvent(,&dwEvtMask,&o);if(!bR)ASSERT(GetLastError()==ERROR_IO_PENDING);r=WaitForSingleObject(o.hEvent,INFINITE);if(r==WAIT_OBJECT_0)//有數(shù)據(jù)到達{非阻塞I/O示例進程管理44bR=ReadFile(,buf,sizeof(buf),
&nBytesRead,&o);if(!bR){if(GetLastError()==ERROR_IO_PENDING){r=WaitForSingleObject(o.hEvent,2000);if(r==WAIT_OBJECT_0)GetOverlappedResult(,&o,&nBytesRead,FALSE);elseif(r==WAIT_TIMEOUT)...}}進程管理45應(yīng)用程序開發(fā)人員程序/OS的接口操作系統(tǒng)OS/設(shè)備驅(qū)動的接口OS為設(shè)備廠商提供什么樣的接口?鍵盤、鼠標(biāo)、顯示器、打印機、磁盤、磁帶、光驅(qū)…進程管理46設(shè)備驅(qū)動程序的接口為實現(xiàn)設(shè)備獨立性,OS把各種類型的設(shè)備劃分為三類:塊設(shè)備、字符設(shè)備和網(wǎng)絡(luò)設(shè)備,并為每一類定義了一個標(biāo)準(zhǔn)接口,大多數(shù)設(shè)備驅(qū)動程序都支持其中之一。這個接口供上層的OS軟件使用,它由一些抽象的函數(shù)組成,該接口是設(shè)備獨立的。分層:其他OS軟件/接口/設(shè)備驅(qū)動程序。進程管理47Open(deviceNumber)啟動設(shè)備,初始化并分配資源(如緩沖區(qū))Close(deviceNumber)關(guān)閉設(shè)備,釋放資源字符設(shè)備接口read(deviceNumber,buffer,size)
從一個字節(jié)流設(shè)備中讀入”size”個字節(jié)到buffer緩沖區(qū)中。write(deviceNumber,buffer,size)
從buffer緩沖區(qū)中取出”size”個字節(jié)寫入到一個字節(jié)流設(shè)備中。設(shè)備驅(qū)動程序的接口(續(xù))進程管理48塊設(shè)備接口read(deviceNumber,deviceAddr,buffer)
從設(shè)備地址deviceAddr處讀入一個數(shù)據(jù)塊到buffer緩沖區(qū)write(deviceNumber,deviceAddr,buffer)
把buffer中的數(shù)據(jù)塊寫入到設(shè)備地址deviceAddrseek(deviceNumber,deviceAddress)
把訪問指針定位到正確的位置進程管理494.3.2
I/O軟件的層次結(jié)構(gòu)
用戶空間的I/O軟件設(shè)備獨立的系統(tǒng)軟件設(shè)備驅(qū)動程序中斷處理程序硬件I/O軟件系統(tǒng)的層次I/O設(shè)備管理軟件的基本思想是采用分層的結(jié)構(gòu),把各種設(shè)備管理軟件組織成一系列的層次。低層與硬件特性更相關(guān),它把硬件和較高層的軟件隔離開來。進程管理50
設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序:與具體的設(shè)備類型相關(guān)的,用來控制設(shè)備運行的程序。一般由設(shè)備生產(chǎn)商提供。通常是平臺相關(guān)(如Windows/Linux),適合于特定的某個設(shè)備(如鍵盤)或某類設(shè)備(如SCSI)每一個I/O設(shè)備都需要相應(yīng)的設(shè)備驅(qū)動程序,而每一個設(shè)備驅(qū)動程序一般只能處理一種設(shè)備類型。進程管理51DeviceDriversRestoftheoperatingsystemDevicedriverDevicedriver...DevicedriverI/OSystemDevicecontrollerDevicecontroller...DevicecontrollerDeviceDeviceDeviceDevice進程管理52設(shè)備驅(qū)動程序與中斷處理程序
如何協(xié)調(diào)工作,共同完成I/O
操作?如scanf(…)。進程管理53當(dāng)用戶進程需要輸入輸出服務(wù)時,會調(diào)用相應(yīng)的系統(tǒng)調(diào)用函數(shù)(->sys_read);該函數(shù)又調(diào)用相應(yīng)的設(shè)備驅(qū)動程序,驅(qū)動程序在啟動I/O操作后被阻塞(->driver_read);I/O操作完成后,將產(chǎn)生一個中斷,然后中斷處理程序?qū)⒔庸蹸PU,并喚醒被阻塞的驅(qū)動程序。方案一進程管理54驅(qū)動程序以什么形式存在?單獨的一個進程嗎?調(diào)用驅(qū)動時有無進程切換?中斷處理程序是誰寫的?OSor廠商?設(shè)備驅(qū)動程序與中斷處理程序(兩個進程間)如何同步?如果有多個進程同時都要訪問該I/O設(shè)備,該怎么辦?問題進程管理55我們要為一個簡單的字符輸入設(shè)備實現(xiàn)相應(yīng)的設(shè)備驅(qū)動程序。當(dāng)用戶進程需要I/O操作時,啟動相應(yīng)系統(tǒng)調(diào)用,最終執(zhí)行各種設(shè)備統(tǒng)一的對外接口函數(shù)read(devID,buf,size)。設(shè)備驅(qū)動程序主要由兩個函數(shù)組成:foo_read(),該設(shè)備對read接口函數(shù)的具體實現(xiàn)。foo_interrupt(),中斷處理函數(shù)。一個例子進程管理56size_tfoo_read(structfile*filp,char*buf,
size_tcount,loff_t*ppos){foo_dev_t*foo_dev=filp->private_data;if(down_interruptible(&foo_dev->sem))//互斥
return-ERESTARTSYS;foo_dev->intr=0;//同步
outb(DEV_FOO_READ,DEV_FOO_CONTROL_PORT);
wait_event_interruptible(foo_dev->wait,
(foo_dev->intr==1));//被阻塞
if(put_user(foo_dev->data,buf))return-EFAULT;up(&foo_dev->sem);return1;}進程管理57voidfoo_interrupt(intirq,void*dev_id,
structpt_regs*regs){
foo->data=inb(DEV_FOO_DATA_PORT);foo->intr=1;
wake_up_interruptible(&foo->wait);}用戶進程A→系統(tǒng)調(diào)用→read→foo_read→A被阻塞→用戶進程B→被中斷→foo_interrupt→A被喚醒進程管理58方案1只適合需要互斥訪問的設(shè)備塊設(shè)備如何處理?
例如:A進程訪問磁盤的第i個數(shù)據(jù)塊,B進程也要訪問第i個數(shù)據(jù)塊,如何優(yōu)化,減少I/O操作?進程管理59數(shù)據(jù)結(jié)構(gòu):請求隊列(requestqueue);塊設(shè)備驅(qū)動程序:上層函數(shù),負責(zé)管理請求隊列;底層函數(shù),負責(zé)與硬件打交道,完成真正的I/O;I/O請求的提交與真正實現(xiàn)是分離的。各個用戶進程(通過內(nèi)核)調(diào)用上層函數(shù),提交I/O請求(mak_request),然后阻塞;底層函數(shù)則從隊列中取出每個I/O請求,并完成之。能對各I/O請求進行優(yōu)化,如數(shù)據(jù)塊重組。方案二進程管理60Example:AscsidiskdriverinUNIX? sdstrategy:doerrorchecking,ifdeviceisnotbusy,issueastartrequestforthespecificunit(disk).? sdustart:findtheproperqueueforthisunit,puttherequestonthequeue,issuestart.? sdstart:requesttheresourcesneededfortherequest(scsibusorDMAresources).? sdgo:writethecommandstothecontroller,settheinterruptvector,issuethestartrequesttothecontroller.? sdintr:calledfromI/Ointerrupt,finishtherequest(schedulethewaitingprocess),issueanewrequestifthereisone.進程管理61設(shè)備獨立的I/O軟件是系統(tǒng)內(nèi)核的一部分,它的基本任務(wù)是實現(xiàn)所有設(shè)備都需要的一些通用的I/O功能,并向用戶級軟件提供一個統(tǒng)一的接口。實現(xiàn)的主要功能:給上層應(yīng)用的統(tǒng)一接口;與設(shè)備驅(qū)動程序的統(tǒng)一接口;提供與設(shè)備無關(guān)的數(shù)據(jù)塊大??;緩沖技術(shù);設(shè)備獨立的I/O軟件進程管理62庫函數(shù):如C語言里與I/O有關(guān)的庫函數(shù)write、
read等,它們實質(zhì)上只是將它們的參數(shù)再傳遞給
系統(tǒng)調(diào)用函數(shù),并由后者來完成實際的I/O操作;Spooling技術(shù):在多道系統(tǒng)中,一種處理獨占設(shè)
備的方法。用戶空間的I/O軟件進程管理63利用假脫機技術(shù)(SPOOLing,SimultaneousPeripheralOperationOnLine,也稱虛擬設(shè)備技術(shù))可把獨占設(shè)備轉(zhuǎn)變成具有共享特征的虛擬設(shè)備,從而提高設(shè)備利用率。ApplicationAApplicationBSPOOLingProgramDeviceVirtualI/OActualI/O打印機...進程管理644.4
磁盤4.4.1
磁盤硬件磁盤的硬件結(jié)構(gòu):磁盤(軟盤和硬盤)由一個或多個金屬盤片組成,這些盤片組合固定在一根旋轉(zhuǎn)軸上,由同一個馬達驅(qū)動。每個盤片有上下兩個盤面,在盤面上涂有磁性材料,信息就記錄在這些盤面上。在每個盤面上方,都有一個磁頭,它固定在一個磁頭臂上,而磁頭臂又固定在一個傳動裝置上。通過磁頭的讀寫裝置,磁盤上的信息可以被寫入、讀出和修改。進程管理65磁道扇區(qū)柱面讀寫磁頭磁頭臂盤片傳動裝置旋轉(zhuǎn)軸移動方向進程管理66磁道:當(dāng)傳動裝置固定在某個位置時,若盤面旋轉(zhuǎn)一圈,磁頭所能訪問的圓環(huán)區(qū)域;柱面:在所有盤面上,半徑相同的所有磁道即組成一個柱面;扇區(qū):每一個磁道被劃分為若干個扇區(qū);磁盤的訪問過程:以扇區(qū)作為最小的尋址和存取單位。首先移動傳動裝置,通過它來移動磁頭,從而定位正確的柱面。然后選中相應(yīng)的磁頭,等我們想要的扇區(qū)正好路過這個磁頭正下方的時候,就可以對它進行訪問了。進程管理67如何寫一個字節(jié)?讀-修改-寫
讀入包含該字節(jié)的扇區(qū);修改該字節(jié);把整個扇區(qū)寫回到磁盤;進程管理68參數(shù)IBM360-KB軟盤Barracuda180硬盤柱面數(shù)4024247磁道數(shù)∕柱面224扇區(qū)∕磁道9609(平均)扇區(qū)∕磁盤72035742000字節(jié)數(shù)∕扇區(qū)512512磁盤容量360KB181GB柱面定位(相鄰)6毫秒0.8毫秒柱面定位(平均)77毫秒7.4毫秒旋轉(zhuǎn)時間200毫秒8.33毫秒扇區(qū)傳送時間22毫秒17微秒進程管理69硬盤的格式化可分為三個步驟,即低級格式化、分區(qū)和高級格式化。低級格式化:標(biāo)出磁道和扇區(qū),在相鄰的扇區(qū)之間有狹窄的間隙隔開。一個扇區(qū)的格式是:相位編碼(preamble)+數(shù)據(jù)區(qū)+糾錯碼(ECC)。相位編碼:以某個特定的位組合模式開始,向硬件表明這是一個新扇區(qū)的開始。還包括柱面號、扇區(qū)號、扇區(qū)大小等類似信息;數(shù)據(jù)區(qū):由格式化程序確定其大小,一般512;糾錯碼:包含冗余信息,用來糾正讀取錯誤。4.4.2
磁盤格式化進程管理70分區(qū):用分區(qū)軟件把整個硬盤劃分為若干個邏輯分區(qū),每個分區(qū)可視為一個獨立的磁盤。在多數(shù)計算機上,用第0個扇區(qū)來存放一些系統(tǒng)啟動代碼和一個分區(qū)表,記錄了每個分區(qū)的起始扇區(qū)和大小。高級格式化:對每一個邏輯分區(qū),分別進行一種高級格式化(即通常的格式化操作),生成一個引導(dǎo)塊、空閑存儲管理結(jié)構(gòu)、根目錄和一個空白的文件系統(tǒng)。對不同的分區(qū),可以使用不同的文件系統(tǒng),如FAT16、FAT32、NTFS等。進程管理71磁盤的訪問是以扇區(qū)作為最小的尋址和存取單位,在訪問一個磁盤扇區(qū)時,所需的時間主要有:柱面定位時間:磁頭在磁頭臂牽引下,移動到指定柱面的機械運動時間;旋轉(zhuǎn)延遲時間:等待指定的扇區(qū)旋轉(zhuǎn)到磁頭的正下方所需的機械運動時間;它與磁盤轉(zhuǎn)速有關(guān),如:軟盤轉(zhuǎn)速可為600rpm(每分鐘轉(zhuǎn)速),硬盤可為5,400rpm至15,000rpm;數(shù)據(jù)傳送時間:從指定扇區(qū)讀寫數(shù)據(jù)的時間。4.4.3
磁盤調(diào)度算法進程管理72方法1:合理地組織磁盤數(shù)據(jù)的存儲位置。例子:磁盤轉(zhuǎn)速為10,000rpm,每個磁道有300個扇區(qū),每個扇區(qū)有512字節(jié),現(xiàn)要讀一個150KB的文件。假設(shè)柱面定位(平均)時間為6.9毫秒,旋轉(zhuǎn)延遲(平均)時間為旋轉(zhuǎn)時間的一半(3ms),扇區(qū)數(shù)據(jù)傳送時間17微秒;(1)文件由同一個磁道上的300個連續(xù)扇區(qū)構(gòu)成:(2)文件由300個隨機
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國大型混料桶數(shù)據(jù)監(jiān)測研究報告
- 2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識能力測試試卷A卷附答案
- 2025年軍隊文職人員招聘之軍隊文職法學(xué)題庫練習(xí)試卷B卷附答案
- 電動葫蘆考試試題及答案
- 酒店洗滌合同(2篇)
- 餐飲業(yè)服務(wù)培訓(xùn)試卷
- 中學(xué)生課外閱讀指南經(jīng)典情節(jié)讀后感
- 十萬個為什么科學(xué)故事讀后感
- 秦文字從大篆到小篆的演變
- 山東省濱州市2024-2025學(xué)年高一上學(xué)期1月期末生物學(xué)試題(含答案)
- 卡通小學(xué)生校園用電安全教育參考課件
- 民族宗教政策講座課件
- 廣州市出租汽車駕駛員從業(yè)資格區(qū)域科目考試題庫(含答案)
- 中醫(yī)學(xué)病因病機共53張課件
- 幼兒園校車安全管理臺賬
- 人教版高中生物學(xué)選擇性必修教材簡介及實施建議課件
- 湯姆·索亞歷險記(節(jié)選)課件教學(xué)
- 古代漢語文選無標(biāo)點(第一冊,第二冊)
- 靜物素描玻璃器皿塑造
- 江西省鄱陽湖康山蓄滯洪區(qū)安全建設(shè)工程項目環(huán)境影響報告書
- 第二章蛋白質(zhì)化學(xué)-課件
評論
0/150
提交評論