FreeBSD連載(29):印表機配置:系統結構

1999年12月2日 00:52 王波

印表機配置

  FreeBSD是多用戶操作系統,因此可能有多個用戶同時發出打印請求,如果每個請求都直接訪問印表機,那麼 必然就會發生衝突問題。為了使印表機能為所有的用戶服務,FreeBSD使用偽脫機的打印服務方式。在這種方式下,每 個使用FreeBSD的打印用戶並不直接訪問印表機,而是通過一系列偽脫機打印程序來使用印表機。

  FreeBSD的打印系統提供了以下功能:

  • 控制用戶對印表機的訪問,包括本地的印表機和網路印表機﹔
  • 允許用戶提交打印作業,並允許用戶可以管理自己的打印作業﹔
  • 維護一個打印隊列,防止多個用戶同時使用印表機的現象發生﹔
  • 可以選擇在文檔的開始打印標志,使打印出的文檔至於混淆﹔
  • 能通過過濾器支持不同的印表機﹔
  • 提供記帳功能﹔

  • 系統結構

  通常用戶使用程序lpr進行打印,但lpr並沒有直接將所有打印的檔案發送到印表機上,而是將其放到打印緩衝 目錄中。通常這個緩衝區在/var/spool目錄下,每個印表機有自己的spool目錄,打印檔案就被放到這裡,存 儲為一個臨時檔案。而系統使用守護進程lpd監視spool目錄,當發現一個緩衝目錄中有需要打印的文檔時,lpd就 復制自身,為這個打印任務產生一個lpd進程,這個進程負責處理這個打印緩衝目錄的文檔,將其發送到這個目錄對應的打 印機中進行打印。由於一個印表機對應一個緩衝目錄,並且由一個lpd進程管理,因此就不會發生多個打印任務同時訪問打 印機,發生資源衝突問題。

  在這種打印方式將普通的打印系統分為三個部分:

  • 用戶接口:打印命令lpr等是用戶用來實施打印和管理的程序,可以通過它將要打印的檔案放到本地或遠程的打印緩衝區中﹔
  • 打印緩衝區:每個印表機有自己的緩衝區,用戶或管理員可以通過一系列命令進行維護﹔
  • 印表機管理程序:打印守護進程lpd是打印系統的中心,負責監視緩衝區,並將緩衝區中的打印作業送到印表機上進行打印﹔

  這種方式雖然與直接訪問印表機相比看起來比較複雜,但是這樣能夠支持多用戶和多印表機﹔而且使用打印緩衝區和 後台打印守護程序使打印工作放到後台進行,用戶不需等待打印結束。此外,這樣也可以使得打印系統可以很好的和網路相結 合,可以通過lpd將打印到其他主機上的打印作業通過網路發送出去,或者監視網路上發送來的打印文檔,將其放入打印緩 沖區中進行處理。

  將打印過程分為三個部分的另一個優點是可以使用過濾程序,對放置在打印緩衝區中的打印作業進行處理,這樣可以 完成轉換格式、統計信息等很多功能,充分發揮了易管理的特點。

  這種BSD風格的打印系統是FreeBSD預設提供的,為了支持多種印表機,以及支持對中文和圖形的打印,還 需要安裝額外的軟體包。包括ghostscript, psutils, apsfilter, gb2ps等,這些 軟體都通過Packages Collection進行安裝。

  為了使用這個打印系統,就必須啟動打印守護進程lpd,rc.conf中有一個選項lpd_enable就用 於這個目的。