freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第4章_io設(shè)備管理-文庫(kù)吧

2025-02-08 08:10 本頁(yè)面


【正文】 i++){ while(*printer_status_reg != READY)。 *printer_data_register = p[i]。}while(飯未吃完 ){ while(寶寶的嘴巴沒(méi)空 ) 等待; 裝一勺飯菜,喂到寶寶嘴里;}程序循環(huán)檢測(cè)方式若是 I/O獨(dú)立編址方式,如何編程? 進(jìn) 程管理 23 中斷驅(qū)動(dòng)方式 循環(huán)檢測(cè)的控制方法占用了太多的 CPU時(shí)間,可能會(huì)造成 CPU時(shí)間的浪費(fèi)。例如:假設(shè)打印機(jī)的打印速度為 100字符 /秒,在循環(huán)檢測(cè)方式下,當(dāng)一個(gè)字符被寫入到打印機(jī)的數(shù)據(jù)寄存器中后, CPU需要等待 10毫秒 才能寫入下一個(gè)字符。一種解決的辦法:中斷驅(qū)動(dòng)的控制方式。 進(jìn) 程管理 24246。寶寶在幼兒園吃飯? 老師從食堂取來(lái)飯菜? 若寶寶尚未準(zhǔn)備好吃飯,循環(huán)等待? 將飯菜裝入每個(gè)寶寶的小碗? 寶寶開始吃飯,老師去做別的事情? 在吃飯時(shí),寶寶通過(guò)各種信號(hào)打斷老師 進(jìn) 程管理 25246。老師被打斷? 如果寶寶舉手,給他 /她添飯? 如果寶寶舉拳頭,給他 /她添湯? 如果寶寶吃完了,收拾碗和勺子? ......? 回到 剛才的狀態(tài) 進(jìn) 程管理 26在硬件一級(jí),當(dāng)一個(gè) I/O設(shè)備完成任務(wù)時(shí),它的控制器會(huì)通過(guò)總線向中斷控制器發(fā)出一個(gè)信號(hào),如果中斷控制器接受了該信號(hào),就把標(biāo)明該設(shè)備的一個(gè)編號(hào)放在地址線上,并向 CPU發(fā)出一個(gè)中斷信號(hào)。 CPU就中斷當(dāng)前工作,并以該 編號(hào) 為索引去訪問(wèn) 中斷向量表 ,取出中斷處理程序的起始地址,并在該程序運(yùn)行后向中斷控制器發(fā)出確認(rèn)信號(hào)。 關(guān)中斷 … 進(jìn) 程管理 27用戶進(jìn)程strcpy(buffer, “ABCDEFGH”)。print(buffer, strlen(buffer))。中斷驅(qū)動(dòng)方式 進(jìn) 程管理 28 系統(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( )。?老師從食堂取來(lái)飯菜?若寶寶尚未準(zhǔn)備好吃飯,循環(huán)等待?將飯菜裝入每個(gè)寶寶的小碗?寶寶開始吃飯,老師去做別的事情?在吃飯時(shí),寶寶通過(guò)各種信號(hào)打斷老師 進(jìn) 程管理 29 中斷處理程序if(count == 0){ unblock_user( )。}else{ *printer_data_register = p[++i]。 count 。}acknowledge_intereupt( )。return_from_interrupt( )。執(zhí)行過(guò)程 進(jìn) 程管理 30中斷驅(qū)動(dòng)方式的基本思路是:用戶進(jìn)程通過(guò)系統(tǒng)調(diào)用函數(shù)來(lái)發(fā)起 I/O操作,并在發(fā)起后阻塞該進(jìn)程,調(diào)度其他的進(jìn)程使用 CPU。在I/O操作完成時(shí),設(shè)備向 CPU發(fā)出中斷,然后在中斷處理程序中做進(jìn)一步的處理。在中斷驅(qū)動(dòng)方式下,數(shù)據(jù)的每次讀寫還是通過(guò) CPU來(lái)完成,但是當(dāng) I/O設(shè)備在進(jìn)行數(shù)據(jù)處理時(shí),CPU不必等待,可以繼續(xù)執(zhí)行其他的進(jìn)程。 進(jìn) 程管理 31 直接內(nèi)存訪問(wèn)方式 I/O讀操作的典型過(guò)程:wCPU向設(shè)備控制器發(fā)出命令,啟動(dòng)讀操作;w設(shè)備控制器控制 I/O設(shè)備完成此次讀操作,并將數(shù)據(jù)保存在設(shè)備控制器內(nèi)部的寄存器或緩沖區(qū)中,然后中斷 CPU;wCPU把數(shù)據(jù)讀入內(nèi)存。 進(jìn) 程管理 32 進(jìn) 程管理 33w直接內(nèi)存訪問(wèn)( Direct Memory Access, DMA)方式:在硬件上需要一個(gè) DMA控制器。wDMA控制器可以直接去訪問(wèn)系統(tǒng)總線,它能代替CPU去指揮 I/O設(shè)備與內(nèi)存之間的數(shù)據(jù)傳送。wDMA控制器包含了一些寄存器,可被 CPU來(lái)讀或?qū)憽0ǎ阂粋€(gè)內(nèi)存地址寄存器、一個(gè)字節(jié)計(jì)數(shù)器,以及一個(gè)或多個(gè)控制寄存器(指明了 I/O設(shè)備的端口地址、數(shù)據(jù)傳送方向、傳送單位,以及每一次傳送的字節(jié)數(shù))。 進(jìn) 程管理 34(本圖摘自 Andrew S. Tanenbaum: “Modern Operating Systems” )5.DMA工作原理是否所有設(shè)備都要用 DMA? 進(jìn) 程管理 35如果使用 DMA,過(guò)程如下:1. CPU對(duì) DMA控制器進(jìn)行編程,告訴它應(yīng)把什么數(shù)據(jù)傳送到內(nèi)存的什么地方。并向磁盤控制器發(fā)出命令,讓它去磁盤驅(qū)動(dòng)器中讀入所需的數(shù)據(jù)塊,保存到內(nèi)部緩沖區(qū)中,并驗(yàn)證數(shù)據(jù)的正確性;2. DMA控制器通過(guò)總線向磁盤控制器發(fā)出一個(gè)讀操作的信號(hào),并把將寫入的內(nèi)存地址打在總線上;3. 磁盤控制器取出一個(gè)字節(jié),按該地址寫入內(nèi)存;4. 磁盤控制器向 DMA發(fā)一個(gè)確認(rèn)信號(hào), DMA把內(nèi)存地址加 1,把字節(jié)計(jì)數(shù)器減 1。若計(jì)數(shù)器的值大于 0轉(zhuǎn)第 2步;5. DMA控制器向 CPU發(fā)出一個(gè)中斷,告訴它數(shù)據(jù)傳輸已完成。 進(jìn) 程管理 36 I/O軟件 I/O軟件的接口 頭腦風(fēng)暴( Brain Storm)為了管理 I/O設(shè)備,需要哪一些相關(guān)的軟件?這些軟件各自完成何種功能,相互的關(guān)系、 組織結(jié)構(gòu) 又如何? 進(jìn) 程管理 37應(yīng)用程序開發(fā)人員 程序 /OS的接口操作系統(tǒng)程序員希望 OS提供什么樣的接口,有何特點(diǎn) ?鍵盤、鼠標(biāo)、顯示器、打印機(jī)、磁盤、磁帶、光驅(qū) … 進(jìn) 程管理 38n 設(shè)備獨(dú)立性:使得用戶在編寫程序、訪問(wèn)各種 I/O設(shè)備時(shí),無(wú)需事先指定特定的 設(shè)備類型 ,各種類型的設(shè)備之間的差異由 OS來(lái)處理,對(duì)用戶是透明的。n 統(tǒng)一命名:即用簡(jiǎn)單的字符串或整數(shù)的方式來(lái)命名一個(gè)文件或設(shè)備。例如在 Unix當(dāng)中,所有的文件和設(shè)備都采用相同的命名規(guī)則:路徑名。n 阻塞與非阻塞 I/O:當(dāng)進(jìn)程啟動(dòng)一個(gè)系統(tǒng)調(diào)用后,是立即返回還是被阻塞起來(lái),直到 I/O操作完成。 進(jìn) 程管理 39n Windows 中的 CreateFile()函數(shù)216。 創(chuàng)建或打開以下的某種對(duì)象:控制臺(tái)、通信資源(如串口)、目錄、磁盤設(shè)備(分區(qū))、文件(軟盤、硬盤、光盤)等;216。 lpFileName, // file namedwDesiredAccess, // 訪問(wèn)模式,讀 /寫 /執(zhí)行等dwShareMode,
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1