■ 11_03. OS(オー・エス) Operating System ■
世界でもっとも多く利用されている OSは TRON (トロン)
世界でもっとも多く利用されている OS は、、、
東大の坂村先生が開発したITron(アイ・トロン)です。
携帯電話、家電品、自動車、小惑星探査機「はやぶさ」など、、、
あらゆる機器に組み込まれ、利用されています。
ITron は完全オープン・ソースで、誰でも無料で自由に改造して使えます。
お会いしたことは有りませんが、さすが坂村先生!
どこかの奥万長者とは大違い、、、
パソコン用の OS では、マイクロソフトのWindows が9割のシェアを占めているらしいですが、
スマホやタブレットが主流になりつつある中で、Windowsの相対シェアは激減しています。
アップルのMac OS(マック オーエス)は、デザインやDTM/DAWの分野で根強い人気があります。
※DTM = Desk Top Music : コンピュータと電子楽器を接続し演奏・制作すること
※DAW = Digital Audio Workstation : デジタルで音声の録音・編集を行うシステム
サーバーには、オープンソースのLinux(リナックス)が多く使われています。
OS は、コンピュータの動作環境を整えるソフトウェアなので、基本ソフトウェアとも呼ばれます。
マウスでクリックしたり、キーボードで文字を入力したりする当り前の動作環境のことです。
OS がないと、アプリケーション・ソフト以前に、文字入力も、アイコンのクリックもできません。
OS とは、このように、裏方の仕事全般を賄っているソフトウェアです。
「OS って何?」と聞かれたら、「脳幹」と答えるようにしています。
寝てる間も、心臓は鼓動し、肺は呼吸し、血管の中を血がめぐり、
外敵から察知されにくいように、少し体温は下がり、、、
膀胱が満杯になったら寝小便しないように目が覚めます、、、
これらは、みんな脳幹の仕事と言われています。
脳幹が停止すれば、仕事する以前に、数分で死亡ですね。
■ OS(オーエス)の役割
OSには おおまかに以下の機能があります。
詳細を覚える必要はありません。概略をつかんで下さい
■ エーピーアイ(API=Aplication Programing Interface)
■ カーネル(Kernel)
・プログラム実行(Program Processing)
・割り込み(Interrupt)
・メモリ管理(Memory Management)
・仮想記憶(Virtual Memory)
・マルチタスク(Multi Tasking)
・デバイス・ドライバ(Device Driver)
■ ネットワーク(Network)
■ セキュリティ(Security)
■ ユーザ・インターフェイス(User Interface)
■ プラグ・アンド・プレイ(Plug And Play)
■ エーピーアイ ( API=Application Programming Interface )
アプリケーションソフトで共通に使える様々な機能「プログラムの素」を提供します。
「プログラムの素」を利用してアプリケーションソフトをシンプルに開発することができます。
OS の機能を共通化することで、違うアプリケーションも似た操作になり、
一つのアプリケーションを習得すれば、他のアプリケーションも、感覚的に使えるようになります。
■ カーネル ( Kernel )
カーネルは、OS の中核です。
CPU、メモリ、デバイス と、アプリケーション・ソフトウェアがやり取りできるようにします。
具体的には、
みたいな感じです。
■ プログラム実行 ( Program Processing )
OS に組み込まれた手順に従い、プログラムはハードウェアとやりとりします。
カーネルが、プログラムの実行に合わせて、プロセスを生成します。
プロセスの生成には、
といった仕事が含まれます。
■ 割り込み ( Interrupt )
マナーの悪い人が、先に並んでいる人の間に割り込むのと同じように、
実行中のプログラムにも割り込みが入ります。
人間の割り込みとは違い、プログラムの割り込みは非常に重要です。
プログラムは、何もなければ順番に処理される仕組みになっていて、
ユーザが何らかの操作をしたときや周辺機器から信号を受けたとき、
瞬時に反応するために「割り込み」があります。
OS が割り込みを検知すると、実行中のプログラムを中断し、事前に決められた命令を実行します。
割り込みには優先順位があり、それに従って実行されます。
ハードウェアからの割り込み処理は通常、デバイスドライバに任されます。
デバイスドライバは割り込みで得た情報を動作中のプログラムに中継します。
■ メモリ管理 ( Memory Management )
コンピュータのメモリは、いろんな種類があり、必要に応じ役割分担しています。
SRAM=Static RAM 記憶保持動作が不要なメモリーで高速です。
SRAM =DRAM に対する言葉です。
DRAM = Dynamic RAM 記憶保持動作が必要なメモリーです。
HDD(Hard Disk Drive)
下図は、「プログラム」 のところでも出てきた加算プログラムの処理プロセスです。
16bit CPU、32bit CPU、64bit CPU、などのコトバをよく聞くと思いますが、、、
レジスタ が、16bit なら 16bit CPU、
レジスタ が、32bit なら 32bit CPU、
レジスタ が、64bit なら 64bit CPU、です。
上図のメモリーのところに アドレス とありますが、これはメモリーの番地を表しています。
メモリーの番地を、最大いくつまで管理できるかで、アドレス空間が決まりますが、
番地の最大個数は、レジスタのビット・サイズに比例しています。
16bit CPU = 2の16乗 = 65536 個 のアドレス空間を使って プログラムを実行できます。
32bit CPU = 2の32乗 = 65536 × 65536 個 のアドレス空間を使えます。
64bit CPU = 2の64乗 = 65536 × 65536 × 65536 × 65536個 のアドレス空間を使えます。
Windowsは、別々のアプリケーション・プログラムを同時に実行できます(マルチ・タスク)。
1つのアプリケーションがアドレス空間を占有すると 他のアプリケーションは起動すらできません。
それを解決するのが、仮想記憶です。
■ 仮想記憶 ( Virtual Memory )
仮想記憶は、メイン・メモリーの不足を、ハード・ディスクで補完する技術です。
メイン・メモリーが不足したとき、実行中のプログラムやデータを、いくつかの部分に分割し、
実行に影響ない部分をハード・ディスクに書き出し 必要な部分をハードディスクから読み込みます。
メモリーとハード・ディスクの間で読み書きするのに、二つの方式があります。
プログラムを、処理やデータに都合のよい区切りで分割するのが「セグメント方式」で、
プログラムを、内容にかかわらず固定サイズで分割するのが「ページング方式」です。
セグメント方式は、効率が良いのですが、仕組みは複雑です。
ページング方式は、効率は悪いのですが、仕組みは単純です。
Windowsは、ページング方式で、一つのページのサイズは、4Kバイトです。
数百ページのマニュアルが製本してあるのをイメージしてみて下さい。
急いで書かれたせいか、、、ページの途中で、章が変わることも多々あります。
「仮想記憶」式に言うと、製本されたマニュアルは、ページング方式で分割されている訳です。
メモリーとハードディスクでページを入れ替えるのを「ページング」または「スワップ」といいます。
人見さん、、、違う事を想像してませんか、、、
メモリーからハードディスクにページを移すのを「ページアウト」または「スワップアウト」といい、
ハードディスクからメモリーにページを戻すのを「ページイン」または「スワップイン」といいます。
実行しようとしたページがメモリー上にないと、現在使われていないページをページアウトして、
必要なページをページインします。
OSがこの処理をしている間は、プログラムの実行が中断されます。
実行しようとしたページがメモリー上にないことを「ページフォルト」と呼びます。
ページフォルトで割り込みプログラムが起動、アプリケーション・プログラムが一時停止します。
頻繁にページフォルトが起きると アプリケーション・プログラムが円滑に動作しません。
これを スラッシング(Thrashing)と呼びます。
ハードディスクのアクセス・ランプが激しく点滅し、プログラムの応答が異様に遅くなってるとき
たいてい、スラッシングが起きています。
下の図は、ページ001〜100とページ501〜600 の領域でスワップを繰り返し、
ハードディスクの読み書きヘッドが内周・外周に往復を繰り返す様子を示しています。
スラッシングが頻繁に起きるようなら、メモリー容量を増やす必要があります。
仮想メモリーの実体は「pagefile.sys」というファイル
Windowsの仮想メモリーは ハードディスクのルートディレクトリにある pagefile.sys です。
これを ページング・ファイル と呼びます。
ページアウト された個々のページが、一つの ページング・ファイル に収まっています。
ウィンドウが最小化された状態でしばらくアクセスしていないアプリケーションがあると、
Windowsは、そのアプリケーションのメモリを ページング・ファイル へ移動させます。
■ マルチタスク ( Multi Tasking )
タスクはプログラムの実行単位で、アプリケーションソフトが行っている処理の断片です。
OSがタスクの実行や処理の順番などを管理します。
複数のウィンドウを開き、異なる処理を同時に実行することをマルチタスクと呼びます。
時間を区切って、複数のプログラムを切り替えながら実行し、マルチタスクを実現しています。
これを、タイムシェアリング、タイムスライシングなどと言います。
プログラム のところにも出てきましたが、、、
下図、目・口・手 の動きは並列処理に見えますが、瞬間を切り取ると、1つしか処理してません。
タスクバーで右クリック→「タスクマネージャの起動」→「プロセス」で、
「イメージ名」の列に並んでいるのが、現在動作しているタスクの一覧です。
「CPU」をクリックすると、CPUを酷使しているタスクの順に並びます。
「メモリ」をクリックすると、メモリを多く消費しているタスクの順に並びます。
ファイルシステム
ハードディスクなどにデータを保管する仕組みをファイルシステムと呼びます。
物理的にどの位置から、どれだけのファイルを保管し、どれだけの容量を使っているか、
どのようにフォルダを分け、その中に、どんなフォルダやファイルを保管しているか、、、
OS、アプリケーション、デバイス・ドライバ等が、データファイルとどう関連しているか等、
ファイルに関する全てを管理するのが、ファイルシステムです。
UNIX は VFS(共通API)で、様々なファイルシステム、あらゆる周辺機器とアクセス可能です。
Mac OS Xは、Mac独自、制限付きWindows互換、Unix互換 のファイルシステムを備えています。
Windowsが標準で扱えるファイルシステムには、FAT32や、現在主流の NTFS などがあります。
NTFSやUNIXのファイルシステムには、電源切断等によるハードディスク障害に対応するため、
ジャーナル と呼ばれる更新履歴を残す仕組みがあり、障害復旧時間を短縮します。
これを持たない FAT32は、整合性維持のため ハードディスク全体を検査する必要があります。
■ デバイス・ドライバ ( Device Driver )
世界中の人が集まって会議をする場合、どの国の出席者も、自国語と英語の通訳を連れていれば、
自国語で話した内容が英語に翻訳され、各国の通訳が、英語から自国語に翻訳するだけで、全参加国
の出席者が理解できます。(実際は、こんな通訳の仕方ではないと思いますが、、、)
WordやExcel等のアプリケーションが、デバイス(周辺機器)を利用するとき
Windows(OS)が提供する共通APIを使って、デバイスを利用します。
共通APIとハードウェアの間を そのハードウェア専用のデバイスドライバが受け持ちます。
国際会議の例では、英語が共通API、各国語がハードウェア専用のデバイスドライバ に該当します。
抽象化した共通APIを介在させることで、メーカや機種によるハードウェアの差異を吸収できます。
プログラマは、特定のハードウェアに対応する細々としたコードを書かなくても、
共通APIにあわせたアプリケーションプログラムを作るだけで済み、
完成した1本のソフトウェアで、不特定多数のハードウェアを利用できます。
抽象化されたAPIとは、
・ デバイスに対して、入出力の準備をする open 処理、入出力処理を終える close 処理、
・ デバイスからデータを入力する read 処理、デバイスにデータを出力する write 処理、
・ デバイスに対して特別な処理を行う ioctl 処理、、、、などです。
read, write で何が行われるかは、デバイスごとに異なります。
共通化されたハードウェア(キーボード、マウス、USB)のドライバは OSに標準装備されてます。
ドライバがOSに標準装備されていないハードウェアは、
そのハードウェアを提供するメーカが、デバイスドライバを製品にCD-ROMで添付するか、
インターネットのメーカー・サイトからダウンロードできるようにするのが一般的です。
■ ネットワーク ( Network )
コンピュータどうしや、周辺機器との間でデータをやりとりする仕組みをネットワークと言います。
初期のコンピュータ・ネットワークには電話回線のモデムを使っていました。
やがて、パケット通信が主流になり、IBMのSNAなど各社が独自のネットワーク技術を競いました。
現在は、TCP/IPが主流で、殆どののOSが、TCP/IPをサポートしています。
TCP/IPで、異なるOS間でもネットワークを組め、ネトワーク先の周辺機器を使うこともできます。
インターネットで世界中と情報のやりとりができるのも、
OSの異なるコンピュータ同士が、TCP/IPでつながっているからです。
少し前まで、ネットワークを組むには専門知識が必要で、メーカーや機器毎の設定もややこしく、
ちょっとした LAN を組むのも、システム管理者か専門業者に委ねていました。
LAN設定だけで数十万の見積もり、、、というのもザラでした。
昨今、LANに接続するパソコンや周辺機器で、専門知識を要求するような商品は誰も買いません。
企業内LANのセキュリティ権限設定や機器管理などは別次元の話ですが、、、
家庭内LANなら機器同士をつないで電源を入れ、メッセージに従って [次へ] するだけです。
接続に関する技術は何も変わりませんが、専門用語が廃止され、[次へ]だけで済むように、、、
ユーザー・インターフェイスと操作ガイドが改善されました。
ソフトウェアは、同じ技術レベルのエンジニアが開発しても、手間をかければ使いやすくなります。
使い易くする工夫は、技術の問題ではありません。手を抜くか、丁寧に仕上げるかの違いです。
手間をかければ人件費が嵩み、リリースが遅れ、販売機会を逃すことに〜最後は経営判断です。
コンピューターをネットに繋ぐのが普通になり、ネットで繋がる機器の数が膨大になった結果、
ネットワークに関わるソフト開発にもケタ違いのお金をかけられるようになって、、、
LAN設定が簡単になったと言えます。
「〜この頃コーヒーメーカー沸くの遅なった〜」と女房が言うので、
裏蓋を開け電熱棒の周りにこびりついた白いカスを取ると
「〜早湧くようになった〜」のですが、、、、裏蓋を開けた時に、指先を軽く切ってしまいました。
裏蓋を天眼鏡で見ると、バリ(切削加工時のササクレ)が取れてませんでした。
Made in ?????
日本の家電品なら、こんなことはまず有りません。
永年使った日本製コーヒーメーカーを娘が持って行ったので、何かの景品で貰ったものを使いました。
裏蓋を開けるのは、どうせ修理の専門家だろうから気をつけるだろう、、と考えて手を抜くか、、、
全ての部品のバリを取るのは最低限の品質と考えてモノを作るか、、、
法整備の問題もさることながら、普通の日本の技術者は、基本的に「手を抜く」ことを許しません。
坂村先生の iTRON が世界で最も多く使われている理由は、こういうところにあるのかも知れません。
技術立国日本の根底を揺さぶるような事件やスキャンダルが続いて残念ですが、
「見えないところに気を配る」のが日本の「技」の原点だと思います。
因みに、我が家の炊飯器は女房が独身の時に買ったモノですが、今もご飯を美味しく炊けtてます。
■ セキュリティ ( Security )
OSのセキュリティ機能には、ハードウェアとの組み合わせで、、、
ログインの際、ユーザーIDとパスワードなどでユーザーを認証するような簡単なものから、
指紋認証・顔認証などを組み合わせて、厳密に認証するものまであります。
WindowsXpのサポート打ち切りで、XpからWindows8.1への切り替えが叫ばれましたが、、、
「ネットにつながなければ関係ない」、、、という意見と、
「誤ってネットにつないでしまうリスクを回避しなければ」、、、という意見があります。
プライベートなら前者で、ビジネスで使うなら後者のとおり、回避マニュアルが必須でしょう。
セキュリティはOSだけに頼らず、専門のセキュリティ・ソフトと併用でガードするのが普通です。
現在主流のブロードバンド・ルータには、ファイア・ウォール機能が装備されています。
有償のセキュリティ・ソフトやファイア・ウォール・ソフトで更にガードを固められます。
下の図は、各パソコンに、セキュリティ・ソフトをインストールした例です。
WindowsXpの脆弱性を突かれ 2台のパソコンがウィルスに侵入された縁起でもない想像図です。
Windows7は 何とか侵入を喰いとめています。
評価機関による(国内で入手可能な)セキュリティ・ソフトのランキングは以下の通りです、、、
(価格と更新料は、3年一括キャンペーン料金などを3で割って求めました)
会社の環境は McAfeeと Cats(LAN監視ツール)、iFilter(ブラウザ用フィルター)、、、
セキュリティ関連ソフトウェアで、仕事に差し支えるほど?がんじがらめです。
「情報が北京に筒抜け」と2CHで袋叩きの中国製セキュリティ・ソフトに若干不安もありましたが、
家では、Windows7×1、WindowsXp×2 のパソコンに、KingsoftのInternetSecurity2014年版を
インストールしています。
今までトラブルも無く、特に不満は有りませんが〜推奨するワケではないので自己責任で〜
無料のセキュリティ・ソフトに、ファイア・ウォールやフィッシング詐欺対策機能は無いので、
有償のセキュリティ・ソフトを買うか、別途ファイア・ウォール・ソフトなどを入手して下さい。
〜ファイア・ウォール抜き・神経をピリピリさせ・ネットに向うと究極のボケ防止になるかも〜
■ ユーザ・インタフェース ( User Interface )
アイコンをクリックしてアプリを起動したり、ファイルを掴んでドラッグ&ドロップするなど、
視覚的、感覚的な操作を、GUI(ジーユーアイ=Graphical User Interface )といいます。
インタフェース(Interface)は、ものごとの境界となる部分と、その境界でのプロトコルです。
プロトコル(Protocol)は、特定の何かを確実に実行するために決められた手順です。
Windows や MAC OS、IOS、Androidなど、今やほとんどのOSが GUI を採用しています。
ユーザインタフェース は、コンピュータと人間を繋ぐ操作系みたいな意味で使います。
GUIの前は、CUI( シーユーアイ=Character User Interface )で全てタイプ入力してました。
Windows7の DOS窓 で、ファイル一覧を表示すると、、
アイコンも、階層構造ツリーもない、黒い背景に白のテキストと、殺風景な画面です〜
CUI で人生の半分を過ごしたワタシは、CUIをイメージしながら、GUI で操作してます。
■ プラグ・アンド・プレイ ( Plug and Play )
周辺機器をパソコンにつなぐだけですぐに使える仕組みです。
以下は、EPSONのインクジェット・プリンターをパソコンに接続する時の説明書きです。
昔は、周辺機器を接続する時、専用ドライバを CD-ROMなどからインストールし
パソコンを再起動させて周辺機器を接続し認識させる〜など面倒な手続きが必要でした。
他の周辺機器や、アプリとの相性が悪いと、インストール途中に訳のわからないエラーが出る
なんていうトラブルも日常茶飯事でした。
今では、新しい周辺機器をパソコンにつなぐだけで、
最悪でも、必要なドライバをネットでダウンロードするように促してくる、、、など、
誰でも簡単に接続できるようになりました。
■ ホットスワップ/ホットプラグ ( Hot Swap/Hot Plug )
本体の電源を入れたまま周辺機器を抜き差しできる機能で、今や当たり前になりつつあります。
昔、コンピュータに周辺機器を接続する時は、本体を止め、周辺機器を接続し、再起動してました。
USB接続の周辺機器、サーバのストレージ、プリンターのカートリッジ等がホットプラグ対応です。
OS については、言い出したらきりがないので、このへんにしときましょう。