![Bashはフレームバッファなしでどのように画面に印刷しますか? [コピー]](https://linux33.com/image/81668/Bash%E3%81%AF%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%81%AA%E3%81%97%E3%81%A7%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E7%94%BB%E9%9D%A2%E3%81%AB%E5%8D%B0%E5%88%B7%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
一部のシステムでは、フレームバッファが常に存在していないことがわかりました。このような場合、bashはどのように画面に印刷します(fbデバイスを使用すると仮定します)?フレームバッファデバイスがないので、これはbashが各グラフィックカードの動作を知ってレジスタに直接書き込むことができるという意味ですか、それとも別のAPIを使用しますか?
答え1
シェルはコマンドラインユーティリティで、入力を読み取り、出力を書き込みます。通常、インタラクティブシェルは|
パイプに似ていますが、モデム制御やI / O解析モードなどの追加機能を持つ端末デバイス(通常はカーネルバッファシリアルモード文字デバイス)で開きます。一部の他のプログラムは、表示のために端末装置に書き込まれたデータを読み取って解釈し、シェルから読み取った端末装置の最後に標準入力を書き込みます。
これは端末エミュレータ。少なくともこれは一般的な構成です。端末は次のとおりです。実際ターミナル - 頭の大きさだけの真空管でいっぱいの巨大で揺れ、光るハードウェアの彫刻や部屋のサイズのプリンタのように手を失わないように手を置く位置に特別な注意を払う必要があります。
しかし、通常ターミナルエミュレータは、テキスト設定のためのやや標準的なプロトコルを理解し、シェルのI / Oを画面に描画できるものに変換できるプログラムです。 Linuxカーネルはカーネル仮想コンソールに付属しています。これは内蔵ディスプレイポートで、内蔵端末エミュレータに接続されます。xterm
もう1つの端末エミュレータ - プロトコルを介してフレームバッファを描画することですX11
。
しかし、とにかくプロセスから多くのシェルが削除されました。
答え2
まず、bash
画面またはフレームバッファデバイスに直接印刷されません。単に出力を単純なファイル記述子に書き込みます。
第二に、Linuxはグラフィックモードコンソールとテキストモードコンソールの両方をサポートします。したがって、設定でフレームバッファドライバを使用しない場合、テキストモードコンソールが有効になります。良い時間をお過ごしください記事このトピックに関するウィキペディア。