打印机如何从计算机接收文档?内部排队?

打印机如何从计算机接收文档?内部排队?

我一直无法找到有关打印机如何处理打印数据的实际信息。

据我所知,所有操作系统都有一个“打印队列”,它似乎按照请求的顺序将打印文档缓冲到打印机。

在网络打印机出现之前,我想象实际的打印机几乎是逐行从所连接的机器发送数据。

现在有了网络打印机,这个想象中的模型就土崩瓦解了。我认为现代打印机只是从操作系统接收一份 PostScript(或其他打印格式)文档,将其保存在内存中并从中进行打印。

问题是,如果打印机可以接收多个文档,那么 OS 打印队列意味着什么?

操作系统打印队列不会显示其他机器正在打印的内容,因为它是本地缓冲区。所以这一定意味着打印机有一个板载队列,对吧?那么如果我们看不到正在打印的内容,为什么还要有打印队列呢?


有关如今打印机在没有串行电缆的情况下如何实际工作的任何信息都会有所帮助,但要使这个问题有效:

如果每台机器都不知道其他机器也在打印,那么打印机如何从多台机器打印文档?

文档是如何传输到打印机的?

大多数打印协议支持什么样的信息?

我问最后一个问题,因为我自己的大炮似乎要求墨水量,就像它是一项打印作业一样:

printing:   supply levels

我还听说过 HP 打印机使用“虚假”打印作业来发送固件更新。

答案1

据我所知,所有操作系统都有一个“打印队列”,它似乎按照请求的顺序将打印文档缓冲到打印机。

“打印队列”是打印机服务/守护程序的可见部分,它最初是一个名为 SPOOL(用于同时在线外围操作)的程序,例如在 IBM 360 大型机上运行的 HASP/OS360 操作系统。(在我看来,SPOOL 是最好的缩写词之一,因为它也是一个英文单词(名词和动词),可以用来类比描述打印机服务的工作方式。)

在网络打印机出现之前,我想象实际的打印机几乎是逐行从所连接的机器发送数据。

没错,没必要说“几乎”。

现在有了网络打印机,这个想象中的模型就土崩瓦解了。我认为现代打印机只是从操作系统接收一份 PostScript(或其他打印格式)文档,将其保存在内存中并从中进行打印。

“行式打印机”或仅接受纯文本的“哑”打印机基本上已经过时,已被接受某种类型输入的“页式打印机”所取代。页面描述语言(例如 Postscript、PCL)。由于需要将更多的数据(即 PDL 格式的完整页面,而不仅仅是页面文本)发送到打印机,因此较旧的接口(例如“Centronics”并行端口和 RS-232 串行端口)已被 USB 和以太网(有线和无线)取代。

请注意,拥有以太网接口并将其称为“网络打印机”并不意味着它可以像联网的“打印服务器”一样运行。以“对等”模式配置的“网络打印机”实际上需要在每台想要使用该打印机的 PC 上安装“打印机驱动程序”。然后,该“网络打印机”实际上作为 PC 的本地打印机安装,但通过网络连接协商和使用该打印机。发送到“网络打印机”的打印作业必须保存在本地队列中,就像发送到其他本地打印机的作业一样。

页式打印机不会发送整个文档(如您想象的那样),而是一次发送一“页”。当然,“页”将采用 PDL 格式,并可能被分解为行和数据包,具体取决于传输介质。由于这些是页式打印机而不是打印服务器,因此没有大容量存储(即硬盘),并且必须将每个“页”保存在本地内存中,直到打印出来。当打印机上有更多内存可用时,PC 将采用“流控制”协议(又称握手)来传输页面片段或页面。

问题是,如果打印机可以接收多个文档,那么 OS 打印队列意味着什么?

除非您真的拥有具有大容量存储(例如硬盘驱动器)的打印服务器,否则“网络打印机”实际上无法接受完整或多个文档,除非它们都足够小以适合打印机的 RAM。必须使用 PC 的打印机队列来排序和存储来自 PC 的待处理打印作业。网络上使用该“网络打印机”的每台 PC 都必须争夺该共享打印机。“网络打印机”可以维护来自所有 PC 的作业请求队列,或者至少维护哪些 PC 正在请求服务。请注意,它只会知道请求,而不会保存任何页面数据(仍在每台 PC 上),直到打印机准备好开始该作业。

如果您确实有打印服务器,那么本地队列只是打印作业最终进入打印机服务器队列之前的一个中间步骤。

操作系统打印队列不会显示其他机器正在打印的内容,因为它是本地缓冲区。所以这一定意味着打印机有一个板载队列,对吧?那么如果我们看不到正在打印的内容,为什么还要有打印队列呢?

希望打印机有一个请求队列,以便维护先到先打印的作业列表。否则一台 PC 可能会被其他 PC 挤占。您仍然需要本地队列,因为这是您仍然在本地 PC 上提交打印作业的方式。除非您有一个真正的网络打印服务器,并具有大容量存储来保存您的打印作业,否则您的打印作业将不得不驻留在您的本地 PC 上,直到可以移动为止。请咨询打印机(或服务器)制造商,以获取基于网络的应用程序或浏览工具来查询打印机(或服务器)的队列/状态。

如果每台机器都不知道其他机器也在打印,那么打印机如何从多台机器打印文档?

这是计算机科学中常见的资源分配问题:多个用户/消费者争夺一个资源。在这种情况下(没有复杂情况),打印机或服务器可以接收每个请求,然后按某种顺序对它们进行优先排序。流量控制将确保打印机不会过载。另一个可能的解决方案(可简化打印机的工作负载)是令牌传递方案。收到“令牌”的 PC 被授予使用打印机执行一项作业的权限。打印完一项作业后,该 PC 必须将令牌传递给队列中有作业的另一台 PC。

相关内容