讓我們界定「仁」爲2個類別的東西主要/次要號碼 - 「核心服務」(如物理內存管理,調度等),和那麼「非核心服務」(並非總是存在的東西,比如設備驅動程序,文件系統等 - 例如ext2可能不存在,因爲您使用的是RieserFS)。 請注意,這已經限於特定類型的內核(例如,單片內核而不是微內核)。
允許將「設備驅動程序」定義爲位於一個抽象(由OS /內核設計者確定的內核的設備驅動程序API)與另一個抽象(由相應設備提供的硬件接口,由硬件設計者/製造商確定)。
對於幾乎所有的內核,「核心服務」之一是IPC(進程間通信) - 進程間通信的一些方式。對於許多內核,IPC有多種不同形式(共享內存,消息,信號等)。管道只是IPC的另一種形式。
大多數管道沒有名稱 - 只是得到某種不透明的句柄(例如文件描述符)。命名管道與普通管道相同;不同之處在於將名稱與管道關聯,以便其他進程可以從「已知」名稱找到不透明句柄。
基於以上所有;命名管道沒有設備驅動程序(並且是「核心服務」,因此甚至與設備驅動程序不在同一類別中)。
但是,「基於以上所有」意思是「根據我編制的定義」。這裏真正的問題是,如何定義任何術語並沒有真正的共識。這就是爲什麼好書(以及良好的OS文檔)會明確定義這些東西的原因。這也是爲什麼讀過這個答案的人中有一半會不同意(因爲他們以不同的方式定義諸如「設備驅動程序」之類的東西)。
@moooeeeep不相關但已訪問的鏈接。事實上,我的查詢中的定義來自這些鏈接。檢查幻燈片32 [這裏](https://www.youtube.com/watch?v=2DrjQBL5FMU)。在文件類型中,Pipe與字符/塊設備文件不同。 'ls -l MYFIFO'不給出主要/次要號碼 – overexchange
FIFO(命名管道)的設備類型與塊設備或字符設備不同的事實並不意味着沒有用於設備驅動程序的設備驅動程序它 - 至少,如果將'設備驅動程序'解釋爲'內核中的代碼,以確保被訪問的設備的正確行爲',則不是這樣。普通文件與塊和字符設備也不同,但內核中肯定有設備驅動程序(和文件系統管理代碼)以使它們按預期工作。普通文件不會暴露主要/次要數字。 –
@JonathanLeffler如果有一個命名管道的設備驅動程序,那我爲什麼看不到'ls -l MYFIFO'上的主要/次要編號? – overexchange