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

正文內(nèi)容

第4章_io設(shè)備管理(編輯修改稿)

2025-03-08 08:10 本頁面
 

【文章內(nèi)容簡介】 // 共享模式,lpSecurityAttributes, // 安全屬性dwCreationDisposition, // how to createdwFlagsAndAttributes, // file attributes216。 設(shè)備獨立性。統(tǒng)一命名: “A:\\”、“C:\\”、 “F:\\”、 “COM1”、 “\\.\A:”、“\\.\C:”、 “CON”。 進 程管理 40阻塞與非阻塞 I/O J阻塞:進程被 阻塞 起來,直到 I/O操作完成? 易于使用和理解? 有些情形下不能滿足要求J非阻塞: I/O調(diào)用很快返回n異步性:當(dāng) I/O操作進行時 進程繼續(xù)執(zhí)行 , 當(dāng)I/O操作完成時, I/O子系統(tǒng)給進程發(fā)信號n調(diào)用者具有主動權(quán)n不易使用,多線程 進 程管理 41HANDLE hCom。hCom = CreateFile(COM1,GENERIC_READ,0, NULL, OPEN_EXISTING, 0, NULL)。//EV_RXCHAR: A character was received and placed in the input bufferSetCommMask(hCom, EV_RXCHAR)。 WaitCommEvent(hCom, dwEvtMask, NULL)。if (dwEvtMask EV_RXCHAR) { ReadFile(hCom, buf, NumBytesToRead, NumBytesRead, NULL)。}阻塞 I/O示例( 串口訪問 ) 進 程管理 42HANDLE hCom。OVERLAPPED o。hCom = CreateFile(“COM1”,GENERIC_READ,0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL)。//重疊 I/O//EV_RXCHAR: A character was received and placed in the input bufferSetCommMask(hCom, EV_RXCHAR)。 = CreateEvent(NULL,...)。bR = WaitCommEvent(hCom, dwEvtMask,o)。if(!bR)ASSERT(GetLastError()== ERROR_IO_PENDING)。r = WaitForSingleObject(,INFINITE)。if(r == WAIT_OBJECT_0) //有數(shù)據(jù)到達{非阻塞 I/O示例 進 程管理 43 bR = ReadFile(hCom, buf, sizeof(buf), nBytesRead, o)。 if( !bR ) { if(GetLastError()==ERROR_IO_PENDING) { r = WaitForSingleObject(,2023)。 if(r == WAIT_OBJECT_0) GetOverlappedResult(hCom, o, nBytesRead, FALSE)。 else if(r == WAIT_TIMEOUT)... }} 進 程管理 44應(yīng)用程序開發(fā)人員 程序 /OS的接口操作系統(tǒng)OS/設(shè)備驅(qū)動的接口設(shè)備廠商希望 OS提供什么樣的接口 ?鍵盤、鼠標(biāo)、顯示器、打印機、磁盤、磁帶、光驅(qū) … 進 程管理 45設(shè)備驅(qū)動程序的接口 w為實現(xiàn)設(shè)備獨立性, OS把各種類型的設(shè)備劃分為三類:塊設(shè)備、字符設(shè)備和網(wǎng)絡(luò)設(shè)備,并為每一類定義了一個標(biāo)準(zhǔn)接口,大多數(shù)設(shè)備驅(qū)動程序都支持其中之一。w這個接口供上層的 OS軟件使用,它由一些抽象的函數(shù)組成,該接口是設(shè)備獨立的。w分層 :其他 OS軟件 /接口 /設(shè)備驅(qū)動程序。 進 程管理 46wOpen( deviceNumber )252。 啟動設(shè)備,初始化并分配資源(如緩沖區(qū))wClose( deviceNumber )252。 關(guān)閉設(shè)備,釋放資源w字符設(shè)備接口252。 read(deviceNumber, buffer, size)從一個字節(jié)流設(shè)備中讀入 ”size”個字節(jié)到buffer緩沖區(qū)中。252。 write(deviceNumber, buffer, size)從 buffer緩沖區(qū)中取出 ”size”個字節(jié)寫入到一個字節(jié)流設(shè)備中。設(shè)備驅(qū)動程序的接口(續(xù)) 進 程管理 47w塊設(shè)備接口252。 read(deviceNumber, deviceAddr, buffer)從設(shè)備地址 deviceAddr處讀入一個數(shù)據(jù)塊到buffer緩沖區(qū)252。 write(deviceNumber, deviceAddr, buffer)把 buffer中的數(shù)據(jù)塊寫入到設(shè)備地址deviceAddr252。 seek(deviceNumber, deviceAddress)把訪問指針定位到正確的位置 進 程管理 48 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),它把硬件和較高層的軟件隔離開來。 進 程管理 49 設(shè)備驅(qū)動程序 w設(shè)備驅(qū)動程序:與具體的設(shè)備類型相關(guān)的,用來控制設(shè)備運行的程序。一般由 設(shè)備生產(chǎn)商提供 。w通常是平臺相關(guān)(如 Windows/linux ),適合于特定的某個設(shè)備(如鍵盤)或某類設(shè)備(如 SCSI)w每一個 I/O設(shè)備都需要相應(yīng)的設(shè)備驅(qū)動程序,而每一個設(shè)備驅(qū)動程序一般只能處理一種設(shè)備類型。 進 程管理 50Device DriversRest of theoperatingsystemDevicedriverDevicedriver...DevicedriverI/O SystemDevicecontrollerDevicecontroller...DevicecontrollerDeviceDeviceDeviceDevice 進 程管理 51設(shè)備驅(qū)動程序與中斷處理程序如何協(xié)調(diào)工作,共同完成 I/O操作? 如 scanf(…) 。 進 程管理 52170。當(dāng)用戶進程
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1