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

正文內(nèi)容

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

2025-02-22 08:10本頁面
  

【正文】 阻塞的驅(qū)動程序。當(dāng)用戶進程需要輸入輸出服務(wù)時,會調(diào)用相應(yīng)的系統(tǒng)調(diào)用函數(shù) (sys_read);170。 進 程管理 50Device DriversRest of theoperatingsystemDevicedriverDevicedriver...DevicedriverI/O SystemDevicecontrollerDevicecontroller...DevicecontrollerDeviceDeviceDeviceDevice 進 程管理 51設(shè)備驅(qū)動程序與中斷處理程序如何協(xié)調(diào)工作,共同完成 I/O操作? 如 scanf(…) 。一般由 設(shè)備生產(chǎn)商提供 。?低層與硬件特性相關(guān),它把硬件和較高層的軟件隔離開來。 write(deviceNumber, deviceAddr, buffer)把 buffer中的數(shù)據(jù)塊寫入到設(shè)備地址deviceAddr252。設(shè)備驅(qū)動程序的接口(續(xù)) 進 程管理 47w塊設(shè)備接口252。252。 關(guān)閉設(shè)備,釋放資源w字符設(shè)備接口252。 進 程管理 46wOpen( deviceNumber )252。w這個接口供上層的 OS軟件使用,它由一些抽象的函數(shù)組成,該接口是設(shè)備獨立的。 if(r == WAIT_OBJECT_0) GetOverlappedResult(hCom, o, nBytesRead, FALSE)。if(r == WAIT_OBJECT_0) //有數(shù)據(jù)到達{非阻塞 I/O示例 進 程管理 43 bR = ReadFile(hCom, buf, sizeof(buf), nBytesRead, o)。if(!bR)ASSERT(GetLastError()== ERROR_IO_PENDING)。 = CreateEvent(NULL,...)。hCom = CreateFile(“COM1”,GENERIC_READ,0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL)。}阻塞 I/O示例( 串口訪問 ) 進 程管理 42HANDLE hCom。 WaitCommEvent(hCom, dwEvtMask, NULL)。hCom = CreateFile(COM1,GENERIC_READ,0, NULL, OPEN_EXISTING, 0, NULL)。統(tǒng)一命名: “A:\\”、“C:\\”、 “F:\\”、 “COM1”、 “\\.\A:”、“\\.\C:”、 “CON”。 lpFileName, // file namedwDesiredAccess, // 訪問模式,讀 /寫 /執(zhí)行等dwShareMode, // 共享模式,lpSecurityAttributes, // 安全屬性dwCreationDisposition, // how to createdwFlagsAndAttributes, // file attributes216。 進 程管理 39n Windows 中的 CreateFile()函數(shù)216。例如在 Unix當(dāng)中,所有的文件和設(shè)備都采用相同的命名規(guī)則:路徑名。 進 程管理 36 I/O軟件 I/O軟件的接口 頭腦風(fēng)暴( Brain Storm)為了管理 I/O設(shè)備,需要哪一些相關(guān)的軟件?這些軟件各自完成何種功能,相互的關(guān)系、 組織結(jié)構(gòu) 又如何? 進 程管理 37應(yīng)用程序開發(fā)人員 程序 /OS的接口操作系統(tǒng)程序員希望 OS提供什么樣的接口,有何特點 ?鍵盤、鼠標、顯示器、打印機、磁盤、磁帶、光驅(qū) … 進 程管理 38n 設(shè)備獨立性:使得用戶在編寫程序、訪問各種 I/O設(shè)備時,無需事先指定特定的 設(shè)備類型 ,各種類型的設(shè)備之間的差異由 OS來處理,對用戶是透明的。并向磁盤控制器發(fā)出命令,讓它去磁盤驅(qū)動器中讀入所需的數(shù)據(jù)塊,保存到內(nèi)部緩沖區(qū)中,并驗證數(shù)據(jù)的正確性;2. DMA控制器通過總線向磁盤控制器發(fā)出一個讀操作的信號,并把將寫入的內(nèi)存地址打在總線上;3. 磁盤控制器取出一個字節(jié),按該地址寫入內(nèi)存;4. 磁盤控制器向 DMA發(fā)一個確認信號, DMA把內(nèi)存地址加 1,把字節(jié)計數(shù)器減 1。包括:一個內(nèi)存地址寄存器、一個字節(jié)計數(shù)器,以及一個或多個控制寄存器(指明了 I/O設(shè)備的端口地址、數(shù)據(jù)傳送方向、傳送單位,以及每一次傳送的字節(jié)數(shù))。wDMA控制器可以直接去訪問系統(tǒng)總線,它能代替CPU去指揮 I/O設(shè)備與內(nèi)存之間的數(shù)據(jù)傳送。 進 程管理 31 直接內(nèi)存訪問方式 I/O讀操作的典型過程:wCPU向設(shè)備控制器發(fā)出命令,啟動讀操作;w設(shè)備控制器控制 I/O設(shè)備完成此次讀操作,并將數(shù)據(jù)保存在設(shè)備控制器內(nèi)部的寄存器或緩沖區(qū)中,然后中斷 CPU;wCPU把數(shù)據(jù)讀入內(nèi)存。在I/O操作完成時,設(shè)備向 CPU發(fā)出中斷,然后在中斷處理程序中做進一步的處理。return_from_interrupt( )。 count 。?老師從食堂取來飯菜?若寶寶尚未準備好吃飯,循環(huán)等待?將飯菜裝入每個寶寶的小碗?寶寶開始吃飯,老師去做別的事情?在吃飯時,寶寶通過各種信號打斷老師 進 程管理 29 中斷處理程序if(count == 0){ unblock_user( )。*printer_data_register = p[0]。 // p:內(nèi)核緩沖區(qū)enable_interrupts( )。print(buffer, strlen(buffer))。 CPU就中斷當(dāng)前工作,并以該 編號 為索引去訪問 中斷向量表 ,取出中斷處理程序的起始地址,并在該程序運行后向中斷控制器發(fā)出確認信號。寶寶在幼兒園吃飯? 老師從食堂取來飯菜? 若寶寶尚未準備好吃飯,循環(huán)等待? 將飯菜裝入每個寶寶的小碗? 寶寶開始吃飯,老師去做別的事情? 在吃飯時,寶寶通過各種信號打斷老師 進 程管理 25246。一種解決的辦法:中斷驅(qū)動的控制方式。}while(飯未吃完 ){ while(寶寶的嘴巴沒空 ) 等待; 裝一勺飯菜,喂到寶寶嘴里;}程序循環(huán)檢測方式若是
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1