プログラミング等専門用語解説4
REV60
今回は既に引用している幾つかの言葉を先ず挙げてから、一つ一つの用語についてボリュームを確認しながら、確認・解説したいと思います。
引用済み用語一覧(主にIT系です)、プログラミング系は別途追加の予定です。
OS(オペレイティングシステム)(Windows/OS X/ChromOS/UNIX&LinuX等)
(WEB)ブラウザー
ソフトウェアとハードウェア
ネットワークとインターネット
UI(GUI/CUI)
TBD
TBD
TBD
この中で、今回は先ずOS(オペレーティングシステム)を取り上げてみたいと思います。
OS(オペレーティングシステム)(Windows/OS X/ChromeOS/UNIX&LinuX等)
インターネットの情報によると各OSの特徴は以下の様なもののとの説明が有りました。
Windows
米国マイクロソフト社が開発・販売するオペレーティングシステム です。グラフィカルユーザインタフェースを採用しているのが特徴です。
OSX
米国のApple社が開発及び販売するMacのオペレーティングシステムで有名です。当初の名称はMac OS Xで、のちにOS Xに改められた様です。
ChromeOS
米国Google社が設計したオペレーティングシステムです。Linuxのカーネルをベースにしていて、Google Chromeウェブブラウザをメインのユーザインタフェース として使用しているとの説明です。
UNIX&LINUX
コンピュータ用のマルチタスク・マルチユーザーのオペレーティングシステムの一種との説明です。LinuxはUnix系オペレーティングシステム の1つと説明されています。
ここで講師が説明しようと思うのは各OSの事では無く、汎用OSと言われるこれらのOSとは異なる性格を持つリアルタイムOSの事です。
と言う事で、皆さんはリアルタイムOSをご存じでしょうか?
現在、我々が使用しているPCや携帯にインストールされているOSは、リアルタイムOSでは無く、汎用OS(要するに非リアルタイムOSという事です)と言われています。
インターネット上の情報でリアルタイムOSと汎用OSの生い立ちを調べてみました。先ず汎用OSの代表格であるWindowsOSの歴史ですが、以下の通りの様です。
1985 Windwos1.0
1987 Windows2.0
1990 Windows3.0
1992 Windows3.1
1993 WindowsNT3.1
1995 Windows95
1996 WindowsNT4.0
1998 Windows98
2000 Windows2000
2000 WindowsME
2001 WindowsXP
2006 Windows Vista
2009 Windows7
2012 Windows8
2015 Windows10
2021 Windows11
リアルタイムOSの歴史は中々、どのリアルタイムOSを基にするかで変わる様です。
又、インターネット上を検索してみても、余り有名な名前のOSもない様に思えます。
インターネット上でリアルタイムOSとして出てきた、OS9が、唯一講師の知っているOS名でした。OS9は、初版が、1980年との情報がインターネット上で出てきます。
ただ、講師が実際に開発した事がある専用機用のリアルタイムOSは、インターネット上の情報では1969年には商用化が行われていた様です。
携帯の歴史も調べてみましたが、1980年台半ばから、車載用からハンディ型が発売され始めたとの情報がインターネット上に出ていました。
という事で、やはりリアルタイムOSの歴史の方が古い・長い様に思えます。
リアルタイムOSの特徴はその名の通り、リアルタイムで、処理が行われます。但し、リアルタイムと言うのは、同時という意味では有りません。(シングルタスクの場合です。最新は複数タスク・複数CPUで更に高度・高速になり、OSは一層複雑化していると想像できます)
リアルタイムOSでは、処理要求をいくつかのレベルに分けて、優先順位を付けて、処理します。例えば、High,Low,Baseの様なレベル・ランクをつけて、高いレベルから低いレベルへ処理を行なっていきます。
処理は大概、キューと呼ばれる様な順位保持機能を持っている器を経由して行われます。キューの使い方としては、必要な情報と共に、登録する事で、処理待ち・処理要求を行うことが出来ます。
OSは、通常、全ての処理を行うための、インターバル・タイマーを持っており、都度都度、待ち処理の実行を行うための割り込みが発生します。インターネット上の情報では、この一定時間ごとに処理を切り替える手法はラウンドロビン方式と説明されていました。(タイムシェアリング方式とも呼ばれている様です)講師が新人の頃、教育を受けた時も、”ラウンドロビン”の名称で教えてもらいました。
従って、リアルタイムOSでは、通常、同じレベルの要求であれば、最初に登録されたものから、順に処理されていきます。これは、”Fast In Fast Out”と呼ばれる処理方式です。
これとは違って、汎用OSでは、複数の処理を同時並列で行う場合は、時分割で処理を行うのが一般的な様で、その結果、ある処理を実施している場合、別の処理の要求があっても、決められた時間が来るまで、処理は開始されない様です。
何が違うかというと、リアルタイムOSでは実行の順番が守られているので、今回の実行タイミングで処理が終了しない場合は、次回の実行タイミングで同じレベルであれば、最初に処理が再開されます。
汎用OSの場合は、この順序制御が完全では無く、要求ごとに処理が実行されてしまい、必ずしも要求毎に処理が終了していかない模様です。従って、汎用OSでは処理要求は、”Fast In Fast Out”の実行結果にはならないと考えられます。
処理方式の違いは一例ですが、他にも色々差があると思います。それは汎用OSがリアルタイムOSの後から開発されている為ではと思っています。また、汎用OSはその名の通り、汎用的であり、色々なCPU系に対応する事が目的とされている様にも思えます。
従って、リアルタイムOSを、知ることで・理解する事で、現在の汎用OSの技術的な位置や仕様をより良く・深く理解できると考えているからです。
皆さんは、プログラミングについて、どの様なご意見・イメージをお持ちでしょうか?
講師の経験が、皆様のお役に立てれば幸いです。