web-dev-qa-db-ja.com

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

プリンタが実際に印刷データを処理する方法に関する実際の情報を見つけるのに苦労しました。

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

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

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

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

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


シリアルケーブルなしで今日のプリンタが実際にどのように機能するかについての情報は役に立ちますが、これを有効な質問にするために:

各マシンが他のマシンも印刷しているという事実に無知である場合、プリンタはどのようにして複数のマシンからドキュメントを印刷しますか?

ドキュメントはどのようにプリンタに送信されますか?

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

私自身の大砲が印刷ジョブであるかのようにインクレベルを要求しているように見えるので、最後の質問をします。

printing:   supply levels

また、「偽の」印刷ジョブを使用してファームウェアの更新を送信するHPプリンターについても聞いたことがあります。

5
Hawken

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

「印刷キュー」は、IBM360メインフレームで実行されているHASP/OS360オペレーティングシステムなど、元々SPOOL(同時周辺操作オンライン用)と呼ばれるプログラムであったプリンターサービス/デーモンの表示部分です。 (IMO SPOOLは、プリンターサービスの仕組みを説明するためのアナロジーとして使用できる英語の単語(名詞と動詞の両方)でもあるため、造られた最高の頭字語の1つです。)

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

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

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

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

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

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

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

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

実際にプリントサーバーを使用している場合、ローカルキューは、印刷ジョブがプリンタサーバーのキューに配置される前の中間ステップにすぎません。

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

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

各マシンが他のマシンも印刷しているという事実に無知である場合、プリンタはどのようにして複数のマシンからドキュメントを印刷しますか?

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

7
sawdust