パソコンのハードウェアとカーネルの世界観2(周辺機器)です。ハードウェア1(半導体)も参照のこと。
パソコンは、思ったより簡単に自作できます。たとえば、メモリの容量を増やしたり、ネットワークカードやグラフィックカードなどを追加することで、性能の向上が期待できます。
もちろん、LSI(CPUやメモリのような半導体素子)を自作するわけではありません。そんなことは高度な会社や研究所でなければできません。ここでいう自作とは、ハードウェアをいったん分解して、その上で自分の好きなカードやボードを追加し、パソコンの性能を向上させることです。
デスクトップ型のマシンは、最初から自作PCを作ることを想定して作られているため、簡単にネジが外せたりします。ノートパソコンであっても、メモリを増設したり、あるいはハードディスクを取り換えて別のものにしたりすることができます。たとえば、Windowsの入ったハードディスクをそのままで取っておいて、その上で別のハードディスクにLinuxをインストールしたりすることができます。僕はいつもこのやり方で、Windowsにいつでも戻せる状態を維持したままで、Linuxを新しいハードディスクに入れています。Windowsがなければインターネットの情報にもアクセスできず、Linux関連の情報も調べることができなくなったりします。Linux入門者のみんなにもこの方法をおすすめします。
別のやり方として、コンピュータを数台用意して、スイッチ方式でキーボード、マウス、ディスプレイなどを切り替える方法もあります。昔は、僕もこの方法でやっていました。この方法の利点は、同時に複数のパソコンの電源を入れて、簡単にスイッチできることです。欠点は、パソコンのハードウェアがたくさん増えて、置き場所に困ることです。また、スイッチを行うための専用の機器が必要になります。ですが、一端それを導入してしまうと、いつでもWindowsとLinuxを切り替えることができて、とても便利です。
もっと別のやり方としては、Windowsの仮想環境にLinuxをインストールする、という方法もあるでしょう。オープンソースのVirtualBox環境にインストールしたり、Windows 10のHyper-Vを使う方法などがあります。
僕がパソコンの自作をしていたのは昔からで、中学生の頃には学校に自由研究のレポートにパソコンの分解と自作のことを書きました。ですから、子供ならLinuxの仕組みは分かるでしょう。ですが、きちんと開発するのであれば、大人になってからで良いと思った方が良いでしょう。きちんと前提となる基礎知識があれば、ソフトウェアの開発は難しくはないのです。ですが、ハードウェア環境を用意することがネックになる場合はたくさんあります。本当に開発するハードウェアと、いつも使うハードウェアはOSも含めて分けて管理しましょう。開発環境はいつ動かなくなるか、分からないからです。
ハードウェアについては以下のような書籍が参考になります。
CPUとデバイスの処理を行う間、CPUが待っていては遅いので、I/O処理を入出力専用のプロセッサであるチャネル・コントローラに任せる。
Wikipedia
パソコンや周辺機器を接続するハードウェアインターフェース。
Wikipedia
シリアルインターフェースでは1ビットずつ直列で、パラレルインターフェースでは複数のビットずつ並列でデータを送り出す。シリアルインターフェースにはRS-232C(シリアル回線)やUSBやIEEE1394、パラレルインターフェースにはIDEやSCSIなどがある。
詳しくは以下の書籍が参考になります。
InfiniBandは高いRAS(信頼性・可用性・保守性)を持つ新しいI/Oバスの通信規格。
コンピュータ内部で各回路がデータをやり取りするための伝送路。
バスはコンピュータのインターフェース同士を繋いでデータを送受信する「通信回路」であり、CPUやメモリとハードディスクやプリンターなどの周辺機器を繋ぐ。
その通信回路のやり取りの方法と移動の経路が、バス停を順次移動していくバスに似ていることから、「バス」と名付けられた。
バスには8bit時代からさまざまな規格があり、それぞれのインターフェースをたくさんの(それだけの)線で結ぶ方式をパラレルバス、すべてを一本の線で結ぶ方式をシリアルバスと呼ぶ。
Wikipedia
USBは「ユニバーサル・シリアル・バス」の略で、比較的新しいバスのインターフェース。
今では、マウスやプリンターなど、多くの機器がUSBで繋がれている。
USBは通信用の2つの線と電源用の2つの線の4本の線だけで成り立ち、これだけで高速な通信ができる。最初の頃のUSB 1.0は遅かったが、USB 2.0で速度が改善され、USB 3.0ではもっと高速になった。
USBは簡単に抜いたり挿したりすることで動的にデバイスを感知し、ユーザーモードで接続するため、ホットプラグの仕組みが必要である。伝統的に、UNIXではデバイスファイルを事前に作っておくのが慣例であり、Linuxでもホットプラグを実現することは長い間課題だった。今では、ユーザーモードで/devディレクトリのデバイスを動的に作成するudevがLinuxでは使われている。
Linuxデバイスファイルも参照のこと。
帯域とはデータの転送速度のことで、スループットともいう。
基本的に、CPUやメモリに近いところには高速なI/Oコントローラを配置し、ハードディスクなどの大容量なストレージに近い(CPUやメモリから遠い)ところでは低速なコントローラや機器を配置する。
詳しくは以下の書籍が参考になります。
CPUから入出力を行うには、CPUに直接接続されたI/Oポートを使う方法と、バスを使う方法がある。
I/Oポートはより基本的かつ単純であり、小さなマイコンの周辺機器などに適している。
これに対して、バスは入出力専門の転送回路であるデータチャネルを持つなど、データを転送するためにより適している。
(放送大学「コンピュータの動作と管理 ('17)」を参考に執筆しました。)
2023.04.22
入力デバイスも参照のこと。
文字の入力装置。
Wikipedia
GUIイベントの入力装置・ポインティングデバイス。
Wikipedia
紙にデータを印刷する装置。
プリンターも参照のこと。
PostScriptについてはPostScriptのページに情報がある。
Wikipedia
出力をモニター画面に映し出す装置。
Wikipedia
音を再生する装置。
電話も参照のこと。
Wikipedia
データの記憶装置。パソコンに内蔵されて用いられることが多い。
Wikipedia
外部から大容量のデータを読み込む時に使われる。
Wikipedia
ネットワークも参照のこと。
ネットワークを使うことで、別々の場所にあるコンピュータ同士を繋ぐことができる。
Wikipedia
TCP/IPはネットワークにおけるプロトコルの1つ。
Wikipedia
電子回路基板。
Wikipedia
パソコンの機能を拡張できるカード。
Wikipedia
パソコンに電気を送る装置。
Wikipedia
ハードウェアに対してソフトウェア向けのインターフェースを提供する小さな内蔵ソフトウェア。
Wikipedia
ハードウェアを制御し、アプリケーションを実行出来るようにする。
Wikipedia
ユーザが使いやすいユーザーランドを実現する基本ソフトウェア。
Wikipedia
カーネルと応用ソフトウェアの中間として、さまざまなサービスを提供する。
Wikipedia
プログラムを記述するための言語。アセンブリに翻訳するコンパイラ方式と実行時に読み込みながら逐次的に実行するインタプリタ方式がある。
Wikipedia
Webアプリケーションは、プログラミング言語以上のフレームワークを用いて開発されることがある。
Wikipedia
GUIプログラムは、プログラミング言語以上のGUIツールキットを用いて開発される。
Wikipedia
コンピュータの歴史。思ったより面白いです。
Wikipedia
古いコンピュータを参照のこと。
コンピュータの仕組み。