OSって、、、、カルチャーショック
NHK教育のITWBって番組、そこでOSとは?を解説していた。
それによると、OSはパソコンのメモリー管理でプログラムの運用がスムーズに行えたり、プログラムの使用頻度に併せてメモリーと仮想メモリーの調整を行ったりするもの、、、、とか、或いは、CPU、メモリ、IOの調停を図るのがOSとか、、、或いは、たくさんのソフトを調停するのがOSなんだそうだ。
へ~っ、そうなんだ、、、、
OSって印象、OperatingSystemであり、印象的には、、、、パソコンの操作命令をハードが動く形に翻訳するためのソフトウェアって印象なんだが、ちょっと今の常識から同じとは言い切れないみたい。
そもそも、PCのハードの根幹であるCPUに働かせるためにはCPU専用の言葉で指示することが必要。しかし、そのマシン語で願った形を伝える事は出来ない。本来、プログラムがダイレクトにマシンと対話しても良いのだが、プログラムを構成する関数のレベルが低級関数、高級関数とあって、その低級部分、つまりハードに近い部分を共用することで、ユーザーに近い高級関数の集まりだけでソフトウェアを作るというのが分担となり、その低級関数の集まり、すなわちソフトウェアからの高級コマンドをマシンに伝えるプラットフォームの事をOSっていう風に理解していたのだが、今日のNHKの説明っていうのは違和感を感じる。
時代の進歩とともに、ハードが仮想的なハードを生むことが出来るようになり、それがタスクスイッチ、マルチタスクにつながる。仮想的なハードということで、複数のプロセスを同時実行できるようになると、本来一つの資源をマネジメントする必要が出てきて、複数のソフトの要求に応えてハードとの調停を行うのは、ハードの進化によって求められたOSの必然性であり、それが出来ないものでも当然OSと呼べるものは存在するわけであり、番組の説明は現代のOSの一機能の紹介に過ぎないといえる。
といっても、いまの時代、CPMとかMS-DOSを知る人はいないだろうし、MINIXベースにマルチタスクを走らせるカーネルを記述できる人もいないだろうけど、シングルタスクのシステムでもOSってものはあるのだ。
OSっていうのは、結局、ハードに併せてハードの機能をユーザーが指示できる形に翻訳するものにすぎないのだ。メモリ管理も何も、ハードの機能をユーザーに使わせるために行う仕組みにすぎないのだ。
本来、CPUとRAM、HDDの間のやり取りの調停って説明は、違和感アリアリっていうのは、OSが違っても、CPUとRAM、HDDのやり取りは同じ動きをしている。たとえば、NT系OSであれ、Win9X系OS、MS-DOS、UNIXでは、ドライバの運用ではソフト表現は異なるが、低級レベルでのハード間の交信は同じ動作である。
つまり、ハードの根幹の調停っていうのは、OS以前のBIOSの役割ではないのだろうか?
OSとは、プラットフォームと捉えれば複数のソフトの土台である一方で、ソフトに下した命令をハードに伝えるのが本来の役割。マルチタスクOSの場合は、必然的にリソースの切り分けを機能としてもつのが当然であるのだ。大きく言えば、ハードを簡単に動かすための土台というのがOSでは無いだろうか?
| 固定リンク
コメント
そうですね。
実態を管理する事よりも、履歴を管理して所在を管理する、、、
そう、それは昔のプログラマーなら常識のポインタ、アドレスを管理するという考え方です。
昔のシステムでデータをアドレスでハンドリングするのが常套でしたが、それを今のネットワークシステム自体を昔のローカルシステムに見立て、昔のデータが今のユーザーファイルに見立てている訳です。
ファイル追跡を行うと、基本ファイルから孫データが非常に沢山生まれており、その孫生成の段階で最新は何処にあるか?を通達することで、ファイルの成長精度を高めるのが目的です。
ここで言う成長精度とは、内容、誤記等々も全て含めてのことですね。
投稿: 壱源 | 2009年7月31日 (金) 16時28分
ファイルがローカルに存在することをあえて許し、それをトレースするということですね。 興味深いです。 通常、ソフトウェアの開発などではバージョンコントロールを導入して、チェックイン・チェックアウトなどで整合性を保ちますからね。
OSとアプリの間はミドルウェアとして一応確立されていますが、OS、ミドルウェア、アプリケーションのレイヤーは時代とともに変化・シフトしていくのでしょうね。
投稿: k | 2009年7月31日 (金) 15時06分
そうですね、最近はハードウェアの進歩が著しく、何がハード、何がOS、何処までがプラットフォームという概念の変遷が著しいようですね。
今流行?のWebOSでユーザーファイルのみならず、アプリケーション迄もがサーバーが受け持つような感じで、昔でいう、ユニックスのX端末のようなモノがWindows系の世界でも登場しつつあります。
そうなると、何がプラットフォーム?っていうと、全てがプラットフォームとも言えそうです。
話は変わりますが、自分の仕事の一環で、アプリケーションはローカル、ユーザーファイルもローカルなんですが、アプリケーションにシャドー型のプラグインを組み込み、ユーザーファイルに更新履歴、複写履歴をファイルの移動履歴をユーザーに知らせない形でDB登録するシステムを作っています。
これは、ファイルが到るところで利用されて更新されていく過程を追跡管理するためのモノで、どこで誰が最新の更新をしたか?を記録することで、アプリケーションからファイルオープンする際に、ローカルファイル以外にもルーツを共用するファイルがどれだけ分化して最新が何処にあるか?を明示するシステムです。
言ってみれば、ファイルの更新履歴、所在のみを管理するDBを生成するプラグインの開発を行っています。使い道は限られますが、人の特質として、ファイルは手元に置きたがる習性に沿った管理システムです。
立場としてはOSとアプリの間のソフトウェアです。このように時代と共に様々な階層で様々なアプリが登場する訳で、何処までをプラットフォームって定義するのは、ホント、時代なりかもしれません。
投稿: 壱源 | 2009年7月31日 (金) 14時27分
確かに、マシンの流儀・アーキテクチャに沿って処理をさせるという意味では、OSが差分を吸収して仮想化し、プログラムが意図せずとも動くようにするという点で、翻訳とも取れますね。
最近はマシンパワーの向上による仮想化の進化が著しいですね。 プラットフォームといえば、昔はCPU・マシンレベルの意味、今であればOSレベルを指しますが、今後はブラウザやクラウドといったあたりがプラットフォームと呼ばれるようになるのではないかと思います。
投稿: k | 2009年7月31日 (金) 14時08分
こんにちは!
そうですね、一言で言うとリソースの管理ですね!
本来、アプリケーションプログラム自体がハードを直接指示して今OSとして売られているモノを省略して動かす事も出来ます。
ところで、コンパイラっていうのは、プログラムをマシンを動かす翻訳っていうのは正しくですが、記事でいうところの意味は、ユーザー、或いは、アプリケーションが、なんらかの動作をしたい、その関数を動作させたいと司令した時に、その司令に従った動作をマシンの資源を使ってマシンアーキテクチャに従った流儀で走らせる命令に換えるって意味です。
例えば、X86系のマシンと、モトローラの6800系のマシンでは、アドレス管理が逆ですが、アプリケーションの操作命令はそんな意識は入っていません。そこで、その命令動作に答えるようにマシンが動作するには、マシンの固有のアーキテクチャに従って命令を発効する必要があります。アプリから見るとそれは意識していませんが、OSはその部分を担っている訳ですね。
自身、今は材料開発がメインですが、その昔は、X86系マシンに最小限度なプロセスを複数走らせる超コンパクトなマルチタスクOSのカーネルをカスタマイズして制御系マシンに単純なPCを利用させるような事等も行っていて、その際のOSの理解がマルチクス、ユニクス、そしてUNIXというOSに到った等の歴史から、こんな記事を書くに到った訳ですね。
OS、、、、正しく、リソースの管理、、、それに付きますね。
それと、現代のOSは、リソースの管理を一手に引き受けて、様々なアプリケーションに対しては、プラットフォーム的な機能もあるようですね。
投稿: 壱源 | 2009年7月31日 (金) 11時03分
一応この分野は専門なのでコメントさせていただくと、OSの一番の役割は、やはりリソース管理だと思います。
「パソコンの操作命令をハードが動く形に翻訳するためのソフトウェア」は、通常はコンパイラです(操作命令とというと大体CPUを指すので)。 が、ハードといってもひとくくりには出来ず、ハードがHDDやメモリであればOSが仲介しますし、周辺機器であれば、OS・ドライバがその役割を担います。 OS独自のサービス(GUIなど)を使わないプログラムであれば、書いたコードをコンパイルすれば、そのままCPUが実行できるバイナリが出来上がります。
番組を見ていないのであくまで予想ですが、「調停」という言葉に、この仲介・管理役の意が込められているのかなと思います。
投稿: k | 2009年7月31日 (金) 10時47分