オペレーティングシステム 「第1単元 OSの概要と歴史」

最近、生涯学習とか大事だよな〜と思っており、いくつかのmoocを覗いています。

その中でお仕事関連でOSについて学ぶため、「オペレーティングシステム」の講義を受講してみました。

まずは第1単元 OSの概要と歴史について気になったことや為になったことをまとめてみました。

オペレーティングシステム2020:F00000131 - Fisdomホームページ

ちなみに、fisdom今年の9月でサ終なんすね。。。始めたばかりなのに。。。

www.jmooc.jp

OSの概要

OSとはなんぞや。「使いづらい計算機を効率よく利用するためのもの」

  • 使いづらい計算機とは
    ディスク上に保存したデータを直接見るとディレクトリ構造なんてないし、計算ロジックのキーとなるCPUをそのまま使うのは難しい。
    そのあたりの特性を隠蔽して利用者が使いやすいようにする。

  • 効率よく利用とは
    動的なメモリアロケートとか、マルチユーザに対して適切にプロセスを振り分けたり、動作が遅いI/O機器にCPUが引っ張られないようにするなど
    計算機のリソースを効率的に利用する。

OSの歴史

なぜ歴史?

OSの歴史はハードウェアの刷新と切っても切り離せない関係があるため。
なぜその機能があるのかを理解するために必須。

1940年代(プログラマブルではない計算機から。。。)

この時代はリアルハードコーディング(プログラムごとに配線をし直していた)

それを変えたのが「EDSAC」
管の中に水銀を満たして片側から超音波のパルスを与えると、 超音波は水銀中を伝わって反対側に届き
これを電気信号に変えてまた超音波のパルスにして管に戻し、 水銀の中で循環する超音波のパルスとしてデータを記憶させていた。

参考 : https://www.komazawa-u.ac.jp/~takai/kougi/EC.pdf

これにより、プログラムはこの水銀遅延管のデータを読み込む形に変わり、以降はこの形式(ストアードプログラム方式)に変わっていった。

1950年代前半(真空管の時代。OSはまだ登場していない)

この時代は計算機を動かす人と、計算機にプログラムをする人と、計算機を保守する人がすべて同じで
その人が計算機を独占していました。

真空管もすぐ壊れて(利用している個数が多いため、そのうち一つが壊れるのも時間の問題で)信頼性も低かった。

なお、最初に作成された商用計算機のUNIVAC 1を作成した会社は経営統合の末、UNISYSになっている。

UNIVAC - Wikipedia

1950年代後半〜60年代前半(トランジスタが実用化。ジョブバッチ処理の時代へ)

1956年にノーベル物理学賞を受けたトランジスタは、1947年には発明されていたものの真空管に一歩遅れて1954年に製造開始。

めちゃ高い計算機だが、作業員が手作業で操作していたため計算機の稼働が止まっていることもしばしば。
ひと塊の処理をジョブと定義し、それをひとまとめに投入する処理をバッチ処理とし、ジョブのバッチ処理を行うためにOSのようなものが作られた。
パンチカードをひとまとめにし、オペレーター(人間)の代わりにOSにジョブを渡して、OSが適宜計算機にジョブを打ち込んで結果を受け取る。
そのジョブを管理する言語をJCLという。また、この時代にFORTRANCOBOLが生まれている。

1960年代〜70年前半(IC!計算機高速化!ディスクは遅い!そして、計算機のアーキテクトが各社でバラバラ!)

トランジスタの小型化が進み、トランジスタを集積したICが登場。計算機は高速化。
ただ、ディスクがそれに比べてめちゃくちゃ遅いため、入出力がネックになってきた。めっちゃプロセッサ遊んでるわ〜。

じゃあ、あるジョブの入出力待ちのときに、他のジョブをプロセッサ上で動かしましょう。マルチプログラミング
ジョブの入出力が終わったときに、次のジョブしたいしどう知らせようか?割り込み
複数のジョブが単一のプロセッサ上で並行で動いててややこしい!スケジューリング
あるジョブが、他のジョブのメモリ上のデータを見ちゃうことない?保護機構

IC時代のOS OS/360

アーキテクト合わせましょう!SYSTEM/360 IBM
安い計算機から高性能な計算機に移行するのが容易!やったね。アポロ11号でも使われたらしい。
SYSTEM/360上で動くのがOS/360。マルチプログラミングもできるよ。

IC時代のOS Multics

1964年からGEとAT&Tベル研究所が共同で開発(1969年にベル研究所は離脱しUNIX開発へ)

高可用性を目指して様々な機能が盛り込まれ、電話や電力サービスのような「コンピュータ・ユーティリティ」を目標としていた。
そのためソフトウェア構造のモジュール化だけでなく、ハードウェアもモジュール化され、必要なリソース(計算機能、主記憶、ディスク装置など)を追加するだけで拡張可能な構造を目指した。
ファイル毎のアクセス制御リストによって柔軟な情報共有が可能だが、必要に応じて完全なプライバシーも提供できる。技術者がシステムの性能を分析できる機構も標準で組み込んでいて、様々な性能最適化機構も組み込まれた。

ただ、時代がハードウェアが追いついてなかった。現在の計算機システムの基盤となる機構が多く含まれる。

Multics - Wikipedia

IC時代のOS UNIX

1969年からAT&Tベル研究所で開発スタート。言わずもがな。みんな大好きUNIX

プログラマに重点をおいた開発。

1970年代〜80年代 (LSI時代)

半導体技術が進歩したものの、人間の要求も進化。。。

TSSや多重仮想記憶など、複数人が同時に計算機を利用するための技術が発展。CPUのマルチコア化や仮想化がより進んだ。

仮想記憶方式とは、ユーザからは主記憶装置より大きなデータが見えるが、主記憶装置上には必要なデータのみを保持し、それ以外をディスクなどの補助記憶装置上に保管する方式。
それにともない、フラグメンテーションの解消や記憶保護などが実装される。

1990年代(分散処理・ネットワークの時代)

プロトコルなどが・・・

2000年代(分散処理・クラウド保有から利用へ)

計算機リソースの保有から、手元になくても利用できるように。。。