この記事は、絵でわかる プログラムとは何か(2)~翻訳と管理のプログラム~ の一記事です。
この記事は、アセンブリ からの続編です。
この記事のポイント
- 元々は人手で行っていたプログラム切替作業を、自動化したのがオペレーティングシステムの始まり。
- このオペレーティングシステムの根幹部分をカーネルと言う。
- プログラムやデータを長期保存するもののことをストレージと言う。
- ストレージとメモリとのやりとりはファイル単位で行われる。
- ファイルを、ストレージからメモリにコピーすることをロードと言う。
- プロセッサの設計のことをアーキテクチャと言う。
- プログラムは、プロセッサとオペレーティングシステムの組み合わせ=プラットフォームの上で動く。
コンピューターをもっと使おう
アセンブリ言語によって、複雑なプログラムが作れるようになりました。それによってコンピューターに処理をさせる機会も増えました。
すると今度は、実行完了のプログラムと、順番待ちのプログラムとの切替をスムーズに行う必要が出てきました。1960年頃までのプログラムの切替は、コンピューターのオペレーター(operator : コンピューターにつきっきりで操作(operate)する人)がしていた仕事でした。
オペレーティングシステム(OS)
しかし、プログラム切替専用の新たなプログラムが作られて、プログラム切替の仕事もコンピューターが自動で行えるようになりました。その切替プログラムはオペレーティングシステム(略してOS)と呼ばれるようになりました。
OSは、メモリに記録した複数のプログラムを管理して、それらを指定した順番に自動的に実行するだけが当初の目的でした。しかし1960年代以降、様々な追加機能が急速に発展して、コンピューターやそれにつながった機器を含め、全体を効率よく動かすシステムとして、進化していきました。
現在のOSの例:Windows、Unix/Linux系(Mac OS, Ubuntu, iOS, Android, Raspbian, …) 等
カーネル
それでもなお、カーネル(kernel)と言われるOSの核となる機能は、プログラムやデータの保管および利用に関わる処理です。実際には、そこに様々な処理が含まれるのですが、以下にその一部を見ていきましょう。
英語のkernelの元の意味は「大きな果実の核心部にある種(の殻の中にある仁)」の意味です。
プログラムやデータの保管
メモリからストレージへ
メモリへ記録されたプログラムやデータは、メモリ上では単なる電気のON/OFFパターンです。このON/OFFパターンは、メモリへ安定的に電流を流し続けている間はずっと保持されます。しかし、停電や異常電流、電力コストのことを考えると、大量のON/OFFパターンを長期に保存しておくには、もっと電力に頼らない物に記録した方が安心です。そこで長期記録用に、パンチカードや磁気テープが開発されました。しかしこれらは人手でセットし、コンピューターはそれを先頭から順次読み込むこと(シーケンシャルアクセス: sequential access )しかできませんでした。
そしてさらにその後、読み取り開始位置を自由に指定すること(ランダムアクセス: random access )ができる、磁気ディスクや光ディスクなどの長期記録専用の機器が開発され、コンピューターに接続されるようになりました。
これらの長期大容量記録機器を「ストレージ」または「補助記憶装置」あるいは「メディア・ドライブ」とも言います。
ファイル
ただ、プログラムやデータを長期保存する際、利用に適した単位で分けておかないと、後で大変なことになります。使う時に、先頭から順に中身を見ていって、ここからここまで。…なんて使う時ほど、早く結果が欲しいのに、そんな余裕はきっとないでしょう。
よって、プログラムやデータは必ず、利用に適した単位で分けて保存します。この分けた1個1個を、ファイルと言います。ファイルには中身を推測しやすく、別ファイルと区別がつくよう、個別にファイル名を付けておきます。ファイル名は、人間によって個別に付けられたり、プログラムによって自動で付けられたりします。
このようにOSは、プログラムやデータの管理をファイル単位で行います。
プログラムやデータの利用
プログラムやデータを、長期記録用の装置から読み出してメモリへ入れることをロード(load)と言います。loadは英語で「積荷(つみに)」のことです。OSは、ロードもファイル単位で行います。
各ストレージ内にも個別のアドレスがあり、通常、ストレージ先頭領域にあるファイル名とその先頭アドレスの対応表を見て、OSがファイル操作をできるようになっています
また、プログラムやデータを、メモリからプロセッサへマシンコードとして送る時は、正しく、より効率的な順番で送れるように、メモリアドレスを細かく指定して、バイト単位でメモリからの送信内容を制御します。
切っても切れないプロセッサとの関係
アーキテクチャ
マシンコードの使われ方は、プロセッサの設計によって異なり、対応するアセンブリ言語もアセンブラの設計によって異なります。また、コンピューターを効率的に動かすためのOSも、そのプロセッサの設計に合わせて、最適な動作は大きく違ってきます。
このように、プログラミングにも大きく影響してくるプロセッサの設計をアーキテクチャ(architecture)と言います。architecture は「設計技術」のような意味の英語です。
アーキテクチャはプロセッサのメーカーごとに異なるだけでなく、同じメーカーのプロセッサでも、一度に処理できるオペランドのビット数の違いから、32ビットアーキテクチャ、64ビットアーキテクチャなどと分かれている場合があります。
なお、アーキテクチャという言葉は、プロセッサの設計に限らず、様々な設計技術を表す言葉として使われる場合もあります。
プラットフォーム
また、そのようなアーキテクチャを持つプロセッサとOSとを合わせて、プラットフォーム(platform)と言います。platformは「台」を意味する英語で、その台に合ったプログラムだけがその台に載れ、その台を活かすことができるのです。
この記事のまとめ
オペレーティングシステムは、人手で行っていたプログラム切替作業の自動化から始まり、コンピューター全体を効率よく動かすシステムとして進化しました。オペレーティングシステムの根幹部分をカーネルと言います。
プログラムやデータを長期保存するものをストレージと言い、ストレージとメモリとのやりとりはファイル単位で行われます。ファイルを、ストレージからメモリにコピーすることをロードと言います。
プログラムに大きく影響するプロセッサの設計のことをアーキテクチャと言い、プログラムは、プロセッサとオペレーティングシステムの組み合わせ=プラットフォームの上で動きます。
次は、高級プログラミング言語 に進みましょう。
この記事は、絵でわかる プログラムとは何か(2)~翻訳と管理のプログラム~ の一記事です。
コンピューターのしくみ全体を理解したい場合は、以下の2コースがお勧めです。
日本全国 オンラインレッスン にも対応しています。
知りたいことだけ単発で聞きたい場合は、 オンラインサポート をご利用ください。