亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1118 | 回復(fù): 0
打印 上一主題 下一主題

什么是驅(qū)動(dòng)程序 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2009-09-29 22:29 |只看該作者 |倒序?yàn)g覽
   設(shè)備驅(qū)動(dòng)程序在Linux內(nèi)核中扮演著特殊的角色。他們是一個(gè)個(gè)獨(dú)立的“黑盒子”,是某個(gè)特定的硬件相應(yīng)一個(gè)定義良好的內(nèi)部編程接口,這些接口完全隱藏了設(shè)備的工作細(xì)節(jié)。用戶的操作通過一組標(biāo)準(zhǔn)化的調(diào)用執(zhí)行,而這些調(diào)用獨(dú)立于特定的驅(qū)動(dòng)程序。將這些調(diào)用映射到作用于實(shí)際硬件的設(shè)備特有操作上,則是設(shè)備驅(qū)動(dòng)程序的任務(wù)。這個(gè)編程接口能使得驅(qū)動(dòng)程序獨(dú)立于內(nèi)核的其他部分而建立,必要的情況下可在運(yùn)行時(shí)“插入”內(nèi)核。
   促使我們對(duì)Linux驅(qū)動(dòng)程序的編寫感興趣的原因有很多。首先,硬件發(fā)展迅速,每天都會(huì)有大量的新硬件出現(xiàn);其次,個(gè)人用戶可能需要了解一些驅(qū)動(dòng)程序知識(shí)才能訪問設(shè)備;另外,硬件廠商通過提供Linux驅(qū)動(dòng)程序能為自己的產(chǎn)品帶來數(shù)目龐大的潛在用戶群;最后, Linux系統(tǒng)是開源的,如果驅(qū)動(dòng)程序作者愿意,驅(qū)動(dòng)程序源代碼就可以在大量用戶中間迅速流傳。
   每個(gè)驅(qū)動(dòng)程序都不盡相同,但作為驅(qū)動(dòng)程序開發(fā)者,我們應(yīng)該很好地了解自己面對(duì)的具體設(shè)備。但是驅(qū)動(dòng)程序相關(guān)的大部分原理和技巧都是相同的。
設(shè)備驅(qū)動(dòng)程序的作用
作為驅(qū)動(dòng)程序編寫者,我們需要在所需的編程時(shí)間以及驅(qū)動(dòng)程的靈活性之間選擇一個(gè)可接受的折衷!办`活”,實(shí)際上是強(qiáng)調(diào)驅(qū)動(dòng)程序的作用是提供機(jī)制,而不是提供策略。“需要提供什么功能”(機(jī)制),“如何使用這些功能”(策略)。如果這兩個(gè)問題由程序的不同部分來處理,或者甚至由不同的程序來處理,則這個(gè)軟件包更易開發(fā),也更容易根據(jù)需要來調(diào)整。不同環(huán)境通常需要不同的方式來使用硬件,我們應(yīng)當(dāng)盡可能做到讓驅(qū)動(dòng)程序不帶策略。驅(qū)動(dòng)程序應(yīng)該處理如何使硬件可用的問題,而將怎樣使用硬件的問題留給上層應(yīng)用程序。
如果從另外一個(gè)角度來看驅(qū)動(dòng)程序,他還可以看作是應(yīng)用程序和實(shí)際設(shè)備之間的一個(gè)軟件層。驅(qū)動(dòng)程序的這種特權(quán)角色可以讓編寫者選擇如何展現(xiàn)設(shè)備特性,也就是說,即使對(duì)于相同的設(shè)備,不同的驅(qū)動(dòng)程序可能提供不同的功能。實(shí)際的驅(qū)動(dòng)程序設(shè)計(jì)應(yīng)該在許多要考慮的因素之間做出平衡?偟膩碚f,驅(qū)動(dòng)程序設(shè)計(jì)主要還是綜合考慮下面三個(gè)方面的因素:提供給用戶盡量多的選項(xiàng)、編寫驅(qū)動(dòng)程序要占用的時(shí)間以及盡量保持程序簡單而不至于錯(cuò)誤叢生。
不帶策略的驅(qū)動(dòng)程序包括一些典型的特征:同時(shí)支持同步和異步操作、驅(qū)動(dòng)程序能夠被多次打開、充分利用硬件特性,以及不具備用來“簡化任務(wù)”的或提供與策略相關(guān)的軟件層。
內(nèi)核功能劃分
根據(jù)內(nèi)核完成任務(wù)的不同
1、進(jìn)程管理
包括進(jìn)程的創(chuàng)建、銷毀,進(jìn)程的調(diào)度,以及進(jìn)程間通信機(jī)制。
2、內(nèi)存管理
內(nèi)核在有限的可用資源上為每個(gè)進(jìn)程都創(chuàng)建了一個(gè)虛擬地址空間。內(nèi)核的不同部分在和內(nèi)存管理子系統(tǒng)交互時(shí)使用一組函數(shù)調(diào)用。
3、文件系統(tǒng)
Unix中的每個(gè)對(duì)象幾乎都可以當(dāng)做文件來看待。內(nèi)核在沒有結(jié)構(gòu)的硬件上構(gòu)造結(jié)構(gòu)化的文件系統(tǒng),而文件抽象在整個(gè)系統(tǒng)中廣泛使用。Linux支持多種文件系統(tǒng)類型,也就是在物理介質(zhì)上組織數(shù)據(jù)的不同方式。
4、設(shè)備控制
除了處理器(進(jìn)程調(diào)度處理)、內(nèi)存(內(nèi)存管理系統(tǒng))以及其他很有限的幾個(gè)對(duì)象外,所有的設(shè)備控制操作都由與被控制設(shè)備相關(guān)的代碼來完成。內(nèi)核必須為系統(tǒng)中的每件外設(shè)嵌入相應(yīng)的驅(qū)動(dòng)程序。
5、網(wǎng)絡(luò)功能
網(wǎng)絡(luò)功能也必須有操作系統(tǒng)來管理,因?yàn)榇蟛糠志W(wǎng)絡(luò)操作和具體進(jìn)程無關(guān):數(shù)據(jù)的傳入是異步事件。系統(tǒng)負(fù)責(zé)在應(yīng)用程序和網(wǎng)絡(luò)接口之間傳遞數(shù)據(jù)包,并根據(jù)網(wǎng)絡(luò)活動(dòng)控制程序的執(zhí)行。另外,所有的路由和地址解析問題都由內(nèi)核處理。
可裝載模塊
內(nèi)核提供的特性可在運(yùn)行是進(jìn)行擴(kuò)展?稍谶\(yùn)行是添加到內(nèi)核中的代碼被稱為“模塊”。每個(gè)模塊有目標(biāo)代碼(沒有鏈接成一個(gè)完整的可執(zhí)行程序),我們可以使用insmod程序?qū)⒛K連接到正在運(yùn)行的內(nèi)核,也可以使用rmmod程序移除連接。根據(jù)模塊額功能可以將其劃分為不同的類。
設(shè)備和模塊的分類
Linux系統(tǒng)將設(shè)備分成三種基本類型,每個(gè)模塊通常實(shí)現(xiàn)為其中某一類:字符模塊、塊模塊或網(wǎng)絡(luò)模塊。(這種劃分并不嚴(yán)格)
1、字符設(shè)備:字符(char)設(shè)備是個(gè)能夠像字節(jié)流一樣被訪問的設(shè)備,由字符設(shè)備驅(qū)動(dòng)程序來實(shí)現(xiàn)這種特性。字符設(shè)備驅(qū)動(dòng)程序通常至少要實(shí)現(xiàn)open、close、read和write系統(tǒng)調(diào)用。字符設(shè)備可以通過文件系統(tǒng)的節(jié)點(diǎn)來訪問。這些設(shè)備文件和普通文件之間的唯一差別在于對(duì)普通文件的訪問可以前后移動(dòng)訪問位置,而大多數(shù)字符設(shè)備是一個(gè)個(gè)只能順序訪問的數(shù)據(jù)通道。然而,也具有數(shù)據(jù)區(qū)特性的字符設(shè)備,訪問它們時(shí)可前后移動(dòng)訪問位置。
2、塊設(shè)備:也是通過/dev目錄下的文件系統(tǒng)節(jié)點(diǎn)來訪問。塊設(shè)備上能夠容納文件系統(tǒng)。在大多數(shù)Unix系統(tǒng)中,進(jìn)行I/O操作時(shí)塊設(shè)備每次只能傳輸一個(gè)或多個(gè)完整的塊。Linux可以讓應(yīng)用程序像字符設(shè)備一樣的讀寫塊設(shè)備,允許一次傳遞任意多字節(jié)的數(shù)據(jù)。因而,塊設(shè)備和字符設(shè)備的區(qū)別僅僅在于內(nèi)核內(nèi)部管理數(shù)據(jù)的方式,也就是內(nèi)核及驅(qū)動(dòng)程序之間的軟件接口,而這些不同對(duì)用戶來講是透明的。
3、網(wǎng)絡(luò)接口:任何網(wǎng)絡(luò)事物都經(jīng)過一個(gè)網(wǎng)絡(luò)接口,即一個(gè)能夠和其他主機(jī)交換數(shù)據(jù)的設(shè)備。通常,接口是個(gè)硬件設(shè)備,但也可能是個(gè)純軟件設(shè)備,比如環(huán)回(loopback)接口網(wǎng)絡(luò)接口有內(nèi)核中的網(wǎng)絡(luò)子系統(tǒng)驅(qū)動(dòng),負(fù)責(zé)發(fā)送和接收數(shù)據(jù)包,但它不需要了解每項(xiàng)事物如何映射到實(shí)際傳送的數(shù)據(jù)包。由于不是面向流的設(shè)備,因此將網(wǎng)絡(luò)接口映射到文件系統(tǒng)中的比較困難。Unix訪問網(wǎng)絡(luò)接口的方法仍然是給他們分配一個(gè)唯一的名字,比如eth0,但這個(gè)名字在文件系統(tǒng)中不存在對(duì)應(yīng)的節(jié)點(diǎn)內(nèi)核通過一套和數(shù)據(jù)包傳輸相關(guān)的函數(shù)來和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序通信。
還有另外一種劃分驅(qū)動(dòng)程序模塊類型的方法。一般而言,某些驅(qū)動(dòng)程序類型同內(nèi)核用來支持某種給定類型設(shè)備的附加層一起工作。內(nèi)核開發(fā)者實(shí)現(xiàn)整個(gè)設(shè)備類型的共同特性,然后提供給驅(qū)動(dòng)程序?qū)崿F(xiàn)這。
除了設(shè)備驅(qū)動(dòng)程序外,內(nèi)核中的其他一些功能也都模塊化了。一個(gè)文件系統(tǒng)類型決定了如何在塊設(shè)備。例如文件系統(tǒng)。
               
               
               

本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/87729/showart_2062783.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP