Serial-Port

“串列埠”或“並行埠”是否僅適用於字元設備,而不適用於塊設備?

  • October 3, 2018

來自 http://haifux.org/lectures/86-sil/kernel-modules-drivers/node10.html

字元 (‘c’) 設備是驅動程序通過發送和接收單個字元(字節、八位字節)與之通信的設備。

塊 (‘b’) 設備是驅動程序通過發送整個數據塊與之通信的設備。

字元設備範例:串列埠、並行埠、音效卡。

塊設備的範例:硬碟、USB 攝像頭、Disk-On-Key。

“串列埠,並行埠”是指通過電線進行串列通信和並行通信嗎?

“串列埠”或“並行埠”是否僅適用於字元設備,而不適用於塊設備?

謝謝。

“字元設備”和“塊設備”是抽象的,通常在 Unix 風格的系統中用於對各種設備進行分類。Unix 風格的設備節點 ( /dev/<something>) 通常分為字元設備或塊設備。

基本上,字元設備一次可以有意義地處理數據,即使是一個字節,但塊設備可以處理特定大小的塊(通常為 512、1024 或 4096 字節)。如果您向塊設備提供不完整的塊,您可能必須用零或其他合適的填充填充它以完成該塊,否則塊設備可能無法完成其操作。

在 Unix 風格的系統中,磁碟通常表示為塊設備。但是,在傳統的 Unix 系統中,單個磁碟可能表示為兩個設備:一個用於正常文件系統訪問的塊設備,另一個用於“原始訪問”和其他特殊操作的設備:原始訪問設備通常是字元設備。

在現代 Linux 中,可以通過使用O_DIRECT標誌打開正常塊設備來實現原始訪問,但如果從另一個 Unix 樣式系統移植的應用程序特別需要專用的原始設備,則可以使用raw命令根據需要進行設置。

另一方面,串列和並行埠通常是指物理連接技術

在 PC 硬體中,串口COM 口通常指的是RS232 埠(通常由美國國家半導體 8250 兼容的 UART 晶片驅動)。由於它不需要固定的塊大小,它通常被歸類為 Unix 系統中的字元設備。正如串列埠的名稱所暗示的那樣,該埠以串列方式傳輸數據,一次一位。此埠的最現代規範稱為 EIA/TIA-232。

同樣在 PC 硬體中,並行埠列印機埠LPT 埠Centronics 埠都指一種埠類型,其最現代的實現被標準化為 IEEE 1284。它在 Unix 風格的系統中也表示為字元設備,因為它需要沒有固定的塊大小。顧名思義,它並行傳輸數據:它有 8 條數據線,一個字節中的每一位。

與串列埠不同,最古老形式的並行埠基本上是單向的:電腦可以一次發送一個字節的數據,但另一端的設備只有幾條固定含義的狀態線可以用來與電腦通信。(早期版本的 Linux 核心將這些狀態行的無效狀態組合報告為半幽默的lp<n> on fire錯誤消息。)雙向通信模式被實現為後來的增強功能。

在引入 USB 之前,並行埠可能是典型 PC 上最快的通用外部連接器。如果需要具有更快數據傳輸速度的外部設備,通常意味著向系統添加專用介面卡或帶有外部連接器的 SCSI 適配器卡。例如,專業的平板圖像掃描器可能需要 SCSI 連接。

雖然現代電腦上通常有幾種互連,例如 USB、SATA 和 PCI/e,它們在技術上是串列的(即使在控制塊式設備時也是如此),但您引用的文本更多地是在並行和串列的上下文中,因為它最早用於 20 世紀的計算。

它們指的是用於將電腦與外圍設備或有時與其他電腦互連的方法。

雖然有很多變化,但最常見的“串列埠”是一次發送和/或接收一個字元的 I/O 設備,通常使用固定波特率的非同步協議。通常通過 RS232 電纜。串列埠和 RS232 埠這兩個術語有時可以互換使用,儘管因為 RS-232 實際上是一種電氣標準而用詞不當。一個常見的應用是將使用者終端連接到電腦或調製解調器,使用者可以撥入並連接遠端終端。可以追溯到機電時代,例如 110 波特 ASR-33 電傳打字機,字元串 ’tty’ 的來源經常出現在 unix 命令和設備文件名中。

串列埠相當慢,因此對於需要更高字元速率的用途,可以使用未串列化的並行埠。這有時被稱為列印機製造商,他們將其作為“Centronix”埠流行起來。

並不是說沒有使用串列連接的列印機。

但是正如您引用的那樣,串列埠和並行埠是指這兩種外圍連接方案。

因此,即使塊式設備可能在技術上通過串列數據方法在某個低級別連接,這不是作者所指的,

引用自:https://unix.stackexchange.com/questions/472818