プリンターはコンピューターからドキュメントをどのように受信しますか? 内部キューイングですか?

プリンターはコンピューターからドキュメントをどのように受信しますか? 内部キューイングですか?

プリンターが実際に印刷データをどのように処理するかについての実際の情報を見つけるのに苦労しました。

私の知る限り、すべての OS には「印刷キュー」があり、印刷されたドキュメントを要求された順にプリンタにバッファリングするようです。

ネットワーク プリンターが登場する前は、実際のプリンターには接続されたマシンからほぼ 1 行ずつデータが送信されていたと思います。

現在、ネットワーク プリンターでは、この想像上のモデルは崩壊しています。最新のプリンターは、単に OS から PostScript (またはその他の印刷形式) ドキュメントを受信し、それをメモリに保存して、そこから印刷するだけだと思います。

問題は、プリンターが複数のドキュメントを受信できる場合、OS 印刷キューはどのような意味を持つのかということです。

OS の印刷キューはローカル バッファなので、他のマシンが何を印刷しているかは表示されません。つまり、プリンタにはオンボード キューがあるということですね? 他に何が印刷されているかがわからないのに、なぜ印刷キューがあるのでしょうか?


現在、シリアル ケーブルなしでプリンタが実際にどのように動作するかについての情報は役に立ちますが、これを有効な質問にするには、次の点に注意してください。

各マシンが他のマシンも印刷していることを知らない場合、プリンターはどのようにして複数のマシンからの文書を印刷するのでしょうか?

文書はどのようにしてプリンターに送信されますか?

ほとんどの印刷プロトコルはどのような情報をサポートしていますか?

最後に質問するのは、私の場合、Cannon が印刷ジョブのようにインク レベルを要求しているように見えるからです。

printing:   supply levels

また、HP プリンターが「偽の」印刷ジョブを使用してファームウェアのアップデートを送信するという話も聞きました。

答え1

私の知る限り、すべての OS には「印刷キュー」があり、印刷されたドキュメントを要求された順にプリンタにバッファリングするようです。

「印刷キュー」は、もともと IBM 360 メインフレームで実行されている HASP/OS360 オペレーティング システムなどの SPOOL (Simultaneous Peripheral Operations On-Line) と呼ばれるプログラムであったプリンタ サービス/デーモンの目に見える部分です。(IMO SPOOL は、プリンタ サービスの動作を説明する類推として使用できる英語の単語 (名詞と動詞の両方) でもあるため、最も優れた頭字語の 1 つです。)

ネットワーク プリンターが登場する前は、実際のプリンターには接続されたマシンからほぼ 1 行ずつデータが送信されていたと思います。

確かに、「ほぼ」は必要ありません。

現在、ネットワーク プリンターでは、この想像上のモデルは崩壊しています。最新のプリンターは、単に OS から PostScript (またはその他の印刷形式) ドキュメントを受信し、それをメモリに保存して、そこから印刷するだけだと思います。

プレーンテキストのみを受け入れる「ラインプリンタ」または「ダム」プリンタは、基本的に時代遅れであり、何らかの形式の入力を受け入れる「ページプリンタ」に置き換えられました。ページ記述言語(例: Postscript、PCL)。ページのテキストだけでなく、PDL 形式の完全なページもプリンタに送信する必要があるため、「Centronics」パラレル ポートや RS-232 シリアルなどの古いインターフェイスは、USB や Ethernet (有線および無線) に置き換えられました。

イーサネット インターフェイスがあり、それを「ネットワーク プリンタ」と呼ぶことは、ネットワーク化された「プリント サーバー」のように機能するという意味ではないことに注意してください。「ピアツーピア」モードで構成された「ネットワーク プリンタ」では、実際には、そのプリンタを使用するすべての PC に「プリンタ ドライバ」をインストールする必要があります。その「ネットワーク プリンタ」は、実際には PC のローカル プリンタとしてインストールされますが、ネットワーク接続を介してそのプリンタをネゴシエートして使用します。「ネットワーク プリンタ」への印刷ジョブは、他のローカル プリンタへのジョブと同様に、ローカル キューに保持する必要があります。

ページ プリンタには、ドキュメント全体が送信されるのではなく (想像どおり)、一度に 1 ページずつ送信されます。もちろん、この「ページ」は PDL 形式であり、転送媒体に応じて行やパケットに分割される可能性があります。これらはプリンタ サーバーではなくページ プリンタであるため、大容量ストレージ (ハード ドライブなど) はなく、各「ページ」は印刷されるまでローカル メモリに保持する必要があります。プリンタで使用可能なメモリがさらに増えると、PC がページ フラグメントまたはページを送信できるように、「フロー制御」プロトコル (ハンドシェイクとも呼ばれます) が配置されます。

問題は、プリンターが複数のドキュメントを受信できる場合、OS 印刷キューはどのような意味を持つのかということです。

大容量ストレージ (ハード ディスク ドライブなど) を備えたプリント サーバーが実際にある場合を除き、「ネットワーク プリンタ」は、ドキュメントがすべてプリンタの RAM に収まるほど小さい場合を除き、完全なドキュメントまたは複数のドキュメントを実際に受け入れることはできません。PC のプリンタ キューを使用して、PC から発行された保留中の印刷ジョブを整理して保存する必要があります。その「ネットワーク プリンタ」を使用するネットワーク上の各 PC は、その共有プリンタを争う必要があります。「ネットワーク プリンタ」は、すべての PC からのジョブ要求のキュー、または少なくともどの PC がサービスを要求しているかを独自に維持できます。プリンタがジョブを開始する準備ができるまで、要求のみを認識し、ページ データ (各 PC 上に残っている) は保持しないことに注意してください。

実際にプリント サーバーがある場合、ローカル キューは、印刷ジョブがプリンタ サーバーのキューに到達する前の中間ステップにすぎません。

OS の印刷キューはローカル バッファなので、他のマシンが何を印刷しているかは表示されません。つまり、プリンタにはオンボード キューがあるということですね? 他に何が印刷されているかがわからないのに、なぜ印刷キューがあるのでしょうか?

できれば、プリンタにリクエスト キューがあり、先着順の印刷ジョブ リストを維持する必要があります。そうしないと、1 台の PC が他の PC に押し出されてしまう可能性があります。ローカル キューは、ローカル PC で印刷ジョブを送信する方法であるため、依然として必要です。印刷ジョブを保持するための大容量ストレージを備えた実際のネットワーク プリント サーバーがない限り、印刷ジョブは移動できるまでローカル PC 上に存在する必要があります。プリンタ (またはサーバー) のキュー/ステータスを照会するためのネットワーク ベースのアプリまたはブラウジング ツールについては、プリンタ (またはサーバー) の製造元に問い合わせてください。

各マシンが他のマシンも印刷していることを知らない場合、プリンターはどのようにして複数のマシンからの文書を印刷するのでしょうか?

これは、コンピュータ サイエンスで一般的なリソース割り当ての問題です。複数のユーザー/消費者が 1 つのリソースを争っています。この場合 (複雑な問題ではありません)、プリンタまたはサーバーは各要求を受信し、それらを何らかの順序で優先順位付けできます。フロー制御により、プリンタが過負荷にならないようにします。もう 1 つの可能な解決策 (プリンタの作業負荷を簡素化する) は、トークン パッシング スキームです。「トークン」を受信した PC には、1 つのジョブに対してプリンタの使用が許可されます。その 1 つのジョブが印刷された後、その PC はキューにジョブがある別の PC にトークンを渡す必要があります。

関連情報