計算機システム概論 コンピュータアーキテクチャの基本について学ぶ 前半部分(中島先生)...主としてハードウェアに関するお話 後半部分(楫)...オペレーティングシステム(OS)について
講義スケジュール 教科書は指定しない 楫担当分の講義資料(このPowerPointのファイル) http://apal.naist.jp/~kaji/lecture/ 月曜2限,水曜1限 5月 6月 月 水 7 9 14 16 21 23 28 30 月 水 4 ✘ (木曜授業の実施のため) 試験
本日の講義 オペレーティングシステムについて学ぶ 本日の講義内容: オペレーティングシステム(OS)とは何か OSの役割とは 本日は,あくまでも「概論」 次回以降の講義で,技術的な詳細について詳しく述べる
OSとは何か:OSのない計算機 昔のパソコン(マイコン): プログラムを実行するには,カセットテープからロード 同時に一つのプログラムしかロードできない メインメモリのどの部分を使用するか,強く意識 入出力装置へのアクセスも直接的 ハードウェアとプログラムが 直接的に結びついている シャープ MZ-80C,1980年発売,定価 268,000円 CPU: Z-80 (2MHz), 4KB ROM + 48KB RAM 写真出典 http://www.itoi.co.jp/attic/time3.html
OSがないと何が困るか ハードウェアとプログラムが直接的に結びついていると... ハードウェアの性能を最大限に引き出せる ハードウェアが変わると,ソフトが使えなくなる ハードウェアA ソフトウェア ソフトウェア ハードウェアB 日本電気 PC-8001 http://www.itoi.co.jp/attic/time41.html MZ-80C
OSのある世界 現在のパソコン: プログラムの格納場所やロード方法は意識不要 ハードウェアを直接駆動する必要もない 複数のプログラムを安全・同時に実行可能 機器が多少変化しても,プログラムは共通利用可能 ハードウェアの仕組みは,基本的に昔から変わっていない 昔は人間が直接やっていたことを, オペレーティングシステム(OS)がサポートしてくれる OSは,裏方仕事を引き受ける特別なプログラム
OSの役割 OS:裏方仕事をひきうける特別なプログラム システムを使いやすくする 計算機資源を効率よく利用する 複数のサービスを同時かつ安全に提供する etc... 現在のOS:非常に複雑で,多様な役割を負う 昔はもっとシンプル: 歴史を追うことで,実像が見えてくる
初期のコンピュータシステム 草創期のコンピュータ: パンチカードからプログラムやデータを入力 プログラムは機械語で記述 出力は紙テープやラインプリンタ 別プログラムに切り替えるには,システムリセット プログラムの作成が面倒 カードの取り扱いが大変 プログラムの切り替えも面倒 パンチカード 高級言語,コンパイラ オペレーティングシステム
第1世代のOS 第1世代のOS(1950年代) プロセッサの利用効率の向上が主目的 バッチジョブの概念が登場 バッチジョブ: プログラムの読込と起動,データ投入,出力結果の記録等, 一連の操作内容を一まとめにしたもの ユーザがコンピュータを直接操作するのではなく, 「操作内容」だけを伝え,適当なタイミングでの処理を依頼する UNIVAC 1
第1世代OSの処理の流れ 第1世代OSが提供する機能 バッチジョブの受付 ユーザから投入されたジョブを受け付ける バッチジョブの切り替え ジョブ実行環境を初期化し,新しいジョブを開始する プロセッサ OS 結果出力 ジョブ切替 ジョブ受付
第1世代OSの特徴 各ジョブが順番にプロセッサを占有する ジョブの占有時間中に,プロセッサが遊んでしまうことも... プロセッサのスピード > 入出力装置のスピード プロセッサ 入出力装置 アクティブ アイドル データ送受信 プロセッサ処理と入出力操作を並列化する仕組みが出現 オフライン入出力,バッファリング,スプーリングetc. 補助的な仕組みと,メインのプロセッサとの調整が必要 ⇒ OSの仕事
プロセッサと入出力処理について 直接駆動 プロセッサが出力装置の速度に 歩調をあわせる バッファリング(キュー) 出力装置がデータを一時保管し, プロセッサの処理中に裏で作業 一時保管場所(バッファ)が使用中 ならば,プロセッサは待機 プロセッサ 入出力 プロセッサ 入出力 スプール スプーリング バッファを,高速大容量の磁気ディスクで実現 入出力の順序やタイミングの調整が可能
第2世代のOS 第1世代OS:各ジョブが順番にプロセッサを占有する 柔軟性の欠如...「急ぎの仕事」に対応できない 応答性の悪さ...プログラムミスの発見が遅れる 第2世代のOS(1960年代前半) ユーザの利便性を改善することが強く意識される 「複数のプログラムが同時並行的に実行」 ...されているように見せる仕組みの実現 ユーザは,「自分が計算機を占有している」ように使える GE-200
タイムシェアリングシステム タイムシェアリングシステム(TSS, 時分割処理) プロセッサが,複数のプログラムを少しずつ実行する 短い時間(タイムスライス)で,プログラムを切替える 遂次処理 時分割処理 時間経過 時間経過 トータルの実行時間は変わらない (切替オーバヘッドのため,効率は若干低下) ユーザの利便性は向上 ⇒ 生産性の著しい向上 将棋の多面指し
TSSと仮想計算機 時分割処理は,ユーザが計算機を独占しているように「錯覚」させるための仕組み 各ユーザに「独立した仮想計算機」を提供している 他ユーザのプログラムの影響を受けないように... ユーザのミスがシステム全体に影響しないように... 仮想計算機 実際の計算機
プロセスの概念の登場 独立した仮想計算機: 個別のプログラム 個別の計算環境(メモリやレジスタ等) を保有している プロセッサは,時分割で, 「各仮想計算機の動作をシミュレートする」 実行中の計算環境まで含めた仮想計算機をプロセスと呼ぶ
第3世代のOS 第2世代OS: TSSにより,「仮想計算機」をユーザに提供 第3世代のOS(1960年代後半~70年代前半) 抽象性と汎用性の導入 仮想計算機: 論理的な存在で,比較的自由に設計可能 ハードウェアが違っても,同じ仮想計算機を... ハードウェア上の制約からの脱却 ⇒ 仮想記憶などの技術が確立
マイルストーン:IBM OS/360 IBM System/360: 1964年発売の汎用計算機ファミリー 目的や用途に応じて,自由度の高い組合わせが可能 IBM System/360 IBMのWebページより IBM OS/360: IBM System/360で採用されたOS ハードウェアの差異を吸収し,高い汎用性を実現 仮想記憶等,当時として最新の技術を導入
第4世代のOS 1970年代後半...コンピュータの小型化,利用者の小集団化 コンピュータ単体の性能が「小粒」に 機能をそぎ落とし,技術的に退化する動きも 第4世代のOS(1970年代後半~現在?) 自己完結するのではなく,「協調作業」を前提とする 仕組みの導入 プロセス間通信 ネットワーク対応 ユーザインタフェイスの充実 Micro VAX 3900
プロセス間通信 プロセス = 仮想計算機 + 実行中の計算環境 元々は,他のユーザの存在を意識させないための仕組み プロセス間通信の基本的な考え方 単純な機能を持つプロセスを,必要に応じて稼働させる ある機能が必要なときは,それ専門のプロセスに照会する クライアント プロセス サーバ プロセス
プロセス間通信の拡張 プロセス間通信...一台のコンピュータ内に限定する必要はない 「他のコンピュータで稼働しているプロセスとの通信」へ, 自然に拡張可能 ファイルサーバ,プリンタサーバ,メールサーバ etc...
UNIX オペレーティングシステム 元来はミニコン,ワークステーション用OS 1970年代初頭に誕生,以降のOSに大きな影響を及ぼす 機能のモジュール化 ⇒ 部品を付け足すように,OSの機能を拡張可能 パイプ,ソケット等の概念 ⇒ シンプルで使いやすいプロセス間通信機能を提供 豊富なネットワーク機能 ⇒ インターネットの礎を築く 高い移植性,優れたパフォーマンス セキュリティ,安定性,堅牢性に優れた,完成度の高いOS
UNIXの歴史 初期バージョンの開発は,AT&T (ベル研究所)が主体 独占禁止法の関係で,当初は比較的自由に配布可能 ⇒ 急速な普及,発展を遂げる BSD UNIX...カリフォルニア大バークレー校 AT&T版をベースに,大規模な機能改善を加えたもの 豊富なネットワーク機能の実現 AT&Tが分割され,UNIX の商用利用が可能に 厳しいライセンス管理,不毛な法廷闘争 開発は停滞,オープンソース UNIX へ
オープンソースUNIX UNIXと同様の機能,操作性を提供するOS ソースコードが公開されており,誰でも無料で利用可能 GNU/Linux: GNU のソフトウェア群と Linux カーネル カーネル:自動車のエンジン,に相当 ソフトウェア群:自動車の他の部品,に相当 FreeBSD, NetBSD etc... 派生技術は,他のOS にも取り込まれている Mac OS, Android ... Linus Torvalds
パソコン由来のOS 初期のパソコン... 非常に機能が低く,OSによるオーバヘッドが無視できない MS-DOS ... Microsoft Disk Operating System 当初は,基本的なファイル管理機能のみを提供 後に,UNIXライクな機能を追加 Mac OS ... Apple社 Macintosh 向けのOS 革新的なユーザインタフェースの提供 技術革新への対応遅れ ⇒ UNIXベースの Mac OS X へ
現在のOS(1) 現在のOS:これまでの技術を蓄積,多くの役割を背負っている 計算資源の有効利用 プロセッサを遊ばせない ハードウェアの差異の吸収 プログラムの再利用が可能となる 論理的で使いやすい計算環境の提供 プログラミングが楽になる ユーザの負担を小さくする
現在のOS(2) プロセスの独立性・安全性保障 他のユーザに邪魔されない計算環境を実現 あるユーザのミスが,他のユーザやシステム全体に 影響しないような仕組みを実現 協調作業をサポートする仕組みの提供 同一計算機内でのプロセス間通信 ネットワーク機能等,外部世界との架け橋
本日のまとめ OSとは何か 歴史 役割 機能