乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      驅(qū)動與固件的區(qū)別是什么?

       pgl147258 2015-04-13

      【時國懷的回答(81票)】:

      驅(qū)動和固件(firmware)都是代碼,前者為軟件服務(wù),后者為硬件服務(wù)。

      在操作系統(tǒng)概念還不明確的時代,二者是沒有明顯區(qū)別的。

      但是隨著計算機體系結(jié)構(gòu)的發(fā)展,硬件的種類開始變多,操作系統(tǒng)的種類也變多了。

      這個時候,因為各種技術(shù)的、商業(yè)的原因,硬件廠商希望自己的硬件能被更多的軟件廠商使用,所以就需要在硬件之上做一些封裝,讓自己的硬件操縱起來更容易,這個時候就要有firmware這種東西了,它簡化了軟件與硬件的交互。

      但是為什么不把fimware做的很完美,做的不需要驅(qū)動支持呢?因為有不同的操作系統(tǒng)。我不知道你對操作系統(tǒng)的理解是到什么程度?只知道Windows?還是還僅僅知道Linux?還是清楚Unix和FreeBSD是不同的系統(tǒng)?知道有RTOS?知道有上百種不同的內(nèi)核?

      不同的操作系統(tǒng),對于操作硬件的方式完全不同,在Windows里應(yīng)用態(tài)是無法直接寫IO端口的,而在嵌入式系統(tǒng)里,一般都不限制直接操作IO端口。所以,硬件廠商一方面為了自己的硬件能被軟件更簡單的使用,就需要寫firmware,而另一方面為了兼容各種操作系統(tǒng),又不能把firmware寫的太死,必須預(yù)留足夠的余地讓軟件自由發(fā)揮——軟件的自由發(fā)揮就是驅(qū)動。

      不同操作系統(tǒng)的驅(qū)動是不能兼容的,原因就是驅(qū)動是為操作系統(tǒng)服務(wù)的,有的操作系統(tǒng)是單線程的,有些操作系統(tǒng)不允許動態(tài)申請內(nèi)存,所以不同的操作系統(tǒng)要操作硬件,就要根據(jù)自身的特性編寫對應(yīng)的操作代碼,這就是驅(qū)動存在的意義——適應(yīng)系統(tǒng)需要。

      假如世界上只有一種操作系統(tǒng),并且版本永遠不會改變,那么firmware和驅(qū)動就可以融合在一起,但這只能一個不現(xiàn)實的夢想,要知道民用操作系統(tǒng)和工業(yè)控制操作系統(tǒng)差別是十分巨大的。

      【innek的回答(4票)】:

      至今為止回答的人可能就沒有搞Linux的。

      首先從計算機領(lǐng)域來說,驅(qū)動和固件從來沒有過明確的定義,就好像今天我們說內(nèi)存,大部分人用來表示SDRAM,但也有人把Android里的“固化的Flash/Storage"稱為“內(nèi)存”,你不能說這樣說就錯了,因為這確實是一種“內(nèi)部存儲”。

      但在Linux Kernel中,Driver和Firmware是有明確含義的,其中Driver是控制被操作系統(tǒng)管理的外部設(shè)備(Device)的代碼段。很多時候Driver會被實現(xiàn)為LKM,但這不是必要條件。driver通過register_dirver()注冊到總線(bus_type)上,當某個device被注冊到同樣的總線的時候,driver和device會通過一定的策略進行binding,最終在probe()函數(shù)中由driver實際控制對應(yīng)的設(shè)備,并把控制接口注冊到Linux的其他子系統(tǒng)上(例如字符設(shè)備,v4l2子系統(tǒng)等)。

      而Firmware,是表示運行在非“控制處理器”(指不直接運行操作系統(tǒng)的處理器),例如外設(shè)中的處理器,或者被用于bare metal的主處理器的其中一些核,中的程序。這些程序很多時候使用和操作系統(tǒng)所運行的處理器完全不同的指令集。這些代碼以二進制形成存在于Linux內(nèi)核的源代碼樹中,根據(jù)配置,可以直接集成到最終的映像中,或者被拷貝到指定的位置。當driver對device進行初始化的時候,通過load_firmware()等接口,可以把指定的firmware加載到內(nèi)存中,并傳輸?shù)街付ǖ脑O(shè)備上。

      所以,總的來說,其實driver和firmware沒有什么直接的關(guān)系。

      【楊慶的回答(2票)】:

      driver 和 firmware 兩個名詞有很大的區(qū)別。

      驅(qū)動 driver 指的提供編程api接口,用以操控某一硬件/軟件產(chǎn)品的應(yīng)用程序。以程序的使用目的來定義 它是否為driver。

      固件firmware 概念上來說是指那些預(yù)安裝到硬件產(chǎn)品內(nèi)部只讀記憶體里面,與硬件產(chǎn)品捆綁匹配的程序。這個名詞的定義主要強調(diào)此類軟件的不應(yīng)當被修改,并且與硬件捆綁的特性。更改firmware屬于hack范疇了。

      名詞解釋到這,下面舉幾個例子吧

      屬于driver但是不屬于firmware的例子:

      1. oracle database, .net driver。 所有軟件產(chǎn)品的驅(qū)動都不屬于固件。

      2. 打印機 驅(qū)動光盤。由于并沒有預(yù)裝入打印機只讀記憶體,不屬于固件。

      屬于固件但不屬于驅(qū)動的:

      1. 洗衣機內(nèi)置電腦程序。此為直接用戶交互的系統(tǒng)終端(user interface,UI),并不和其他應(yīng)用程序交互(application programming interface, API).

      2. 計算器里面的操作系統(tǒng)。

      同屬于firmware 和 driver的

      1. 路由器內(nèi)置系統(tǒng)... 刻錄入路由器存儲器,用于與其他軟件連接交互的(電腦,手機,其他路由器等)

      【chencrazy的回答(1票)】:

      簡單來說,你電腦新裝了一個聲卡,跑在聲卡硬件內(nèi)部的是固件,安裝在你電腦里的是驅(qū)動

      【杜克石的回答(1票)】:

      驅(qū)動和操作系統(tǒng)一起在服務(wù)器上運行,為操作系統(tǒng)提供功能服務(wù)。驅(qū)動是硬件封裝層,它按照操作系統(tǒng)定義的功能要求提供服務(wù)并操作硬件。驅(qū)動屏蔽了操作系統(tǒng)對硬件的直接操作,降低了操作系統(tǒng)編寫的難度,它使操作系統(tǒng)看到的不同廠家的、但是功能類似的硬件都一樣。

      固件的情況有點復(fù)雜,我知道的一般是:

      固件是某些硬件的操作系統(tǒng),比如計算機中的智能SCSI卡的固件,它就是SCSI卡的操作系統(tǒng)。

      【陳厚來的回答(0票)】:

      驅(qū)動相對沒有標準答案,為驅(qū)動某模塊工作的插件,都可以叫驅(qū)動。

      所以不光操作系統(tǒng)有驅(qū)動,應(yīng)用程序也可以有,比如某種數(shù)據(jù)庫的驅(qū)動。

      固件,望文生義,就是相對固定的軟件,比如燒寫在芯片內(nèi)的軟件。

      【高雄的回答(0票)】:

      首先要對操作系統(tǒng)有個概念,從低級系統(tǒng)(前后臺系統(tǒng))到高級系統(tǒng)(進程式系統(tǒng))的發(fā)展是模塊化的過程。系統(tǒng)的不同功能由不同模塊來實現(xiàn)。

      驅(qū)動:它是實現(xiàn)高級應(yīng)用和底層硬件操作的中間模塊。

      在高級系統(tǒng)(如Windows)很明顯,可以用安裝包來安裝。而在低級系統(tǒng)里可能它只是一個函數(shù),嵌入式開發(fā)里常見。

      固件:可以認為就是操作系統(tǒng),或者是操作系統(tǒng)+必要的應(yīng)用程序。

      最平常的就是把android和ios都叫做固件(刷固件,升級固件)。

      人們把嵌入式系統(tǒng)的安裝叫做刷固件,把pc和pc以上的硬件叫安裝系統(tǒng)。

      為什么會有這樣的叫法,我覺得

      1,嵌入式很多系統(tǒng)很低級,有些甚至不超過百行代碼,在操作系統(tǒng)歸類中,有些都不認為它是操作系統(tǒng)。

      2,嵌入式系統(tǒng)安裝后基本不會再進行軟件層面的修改,是穩(wěn)固的。

      ps:電腦可以認為是一個高級系統(tǒng)和多個低級系統(tǒng)攜手操作硬件的機器。像網(wǎng)卡、聲卡、usb等的主控制器都有操作系統(tǒng)(固件)來控制完成其所需要完成的工作

      原文地址:知乎

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多