情報システム論 第 7 週ソフトウェアシステム Operating System (part I) 根來 均
ソフトウェア (Software) とは プログラムと同義もしくは各種プログラムの総称 ソフトウェアは 記憶装置上などに 電子的にのみ (0/1 で記録された情報として ) 存在する ソフトウェアに対して 物理的に存在する CPU 等の各種装置をハードウェア Hardware と呼ぶ 例えば ソフトを購入すると CD-ROM 等にそのソフト ( プログラム ) が入っているが CD-ROM 自体は ハードウェアの一部 ( メディア ) であり それはソフトではない
ソフトウェアの 分類 システム ソフトウェア 基本ソフトウェア ( 広義の OS) 近年 OS の一部化しつつある ミドルウェア 制御プログラム ( 狭義の OS) 汎用言語 プロセッサ サービス プログラム GUI 制御 グラフィック処理 アプリケーション ( 応用 ) ソフトウェア 共通応用ソフトウェア 個別応用 ソフトウェア 通信管理 DBMS 等々 出典 : 情報処理開発協会他
OS (Operating System) ハードウェアの物理的特性を極力隠して ユーザ ( 利用者 ) やアプリケーションからコンピュータが利用しやすいサービスを提供するソフトウェア OS だけでは ( 動くが ) 何も役に立たない (cf. ソフトがなければ ( コンピュータは ) ただの箱 ) アプリケーション ユーザ OS ハードウェア OS の役割の概念図 ( ハードウェア固有の仕様を吸収する役割を果たす )
主な ( 狭義の ) OS の仕事 プロセス管理 ( タスク管理 ) CPU での各作業の実行時間の割当など 記憶管理 メインメモリや仮想記憶領域の領域の管理 保護 補助記憶装置上の領域 ファイルシステム ユーザ管理 入出力管理 入出力装置と I/O コントローラの管理 ネットワーク管理 保護とセキュリティ
代表的な ( パソコン )OS Microsoft: Windows Windows 10 (v6.4) XP (v5.1) のサポートが切れ 7 に移行 タブレット感覚の 8/8.1 (6.2/6.3) と統合した 10 Apple: Mac OSX El Capitan (v10.11) タブレット環境の ios(iphone, ipad) と共通した 直感的なユーザーインターフェイスを継承 ネットワーク資源 クラウド (icloud) との連携強化 cf. Google Linux Red Hat 系 Fedora Core : 実験的に新しい機能等を追加 Cent OS : サーバー用, 商用の Red Hat に対するサポートなしの無料版 Debian 系 Ubuntu : 一般向け シェアでは Smart Phone, Tablet 用の OS が台頭
OS の系図.. Microsoft 社 (MS-DOS)... (Windows 3.1) - Windows 95 ME Apple 社 Mac... 6 7 8 9 ( サーバー用... NT -) XP Vista 8 10 (BSD UNIX -) OSX X(10) - 10.1 -... - 10.4 -. 10.11 UNIX (BSD... ).. SUN OS 4 (AT...) FreeBSD... Solaris... Linux Redhat 系 Fedora, CentOS, Debian 系 Ubuntu,.. Google 社 Android.. ios 1 - - 8
プロセス ( タスク ) 管理 実行処理の単位 (OS により定義は多少異なる ) タスク (Task)/ ジョブ (Job) ユーザが実行するプログラム 処理の単位 ジョブは TSS (Time Sharing System, 後述 ) のような大型計算機環境で用いられることが多い プロセス (Process) 計算機から見た処理の単位で 計算機が CPU 時間やメモリなどの資源を割り当てる単位 1 つの CPU は同時に 2 つ以上のプロセスを処理出来ない スレッド (Thread) プロセスをさらに分割した CPU の処理時間が割り当てられる処理単位 メモリ等の領域は 別のスレッド処理中もそのままであり スレッドが変わってもオーバーヘッドが少ない
プロセスの確認 Windows Ctrl-Alt-Delete で表示 Unix (MacOSX) top コマンドで表示
マルチタスクとマルチスレッドの例 マルチタスク マルチスレッド 音楽を聞きながら インターネットやメイルをする ブラウザ ( 1 プロセス ) で複数のページを見たり ファイルをダウンロードする
Single/Dual-Core マシンを用いたスレッドプログラミングの実例より 複数の CPU もしくは (CPU) コアを持ったマシンの性能を発揮させるためには 処理が並行して行われるような特別な仕組み ( プログラミング ) が必要 複数のスレッド (Thread) に分ける 例 )pthread (UNIX) 他にも 複数のプロセスに分ける という方法もある 例 )fork (UNIX) 1 つの CPU (1 コア ) しか持たないマシンで 複数のスレッド ( またはプロセス ) に分けて処理をしても 並行処理されているように見えるが 並行処理しない場合とトータルの実行時間はほとんど変わらない ( 若干遅くなる可能性さえある オーバーヘッド )
タスク プロセス スレッドの概念と OS 依存性 user 1 マルチユーザ環境 program 1 マルチタスク program 2 ある瞬間 瞬間では1つのCPU は一つのプロセス ( スレッド ) しか処理していない! CPU の割当時間 process 1 thread1 thread2 thread3 process 2 thread4 マルチプロセス マルチタスク process 3 thread5 user 2 program 3 process 4 process 5 thread6 thread7 thread8
タスク プロセス スレッドの概念と OS 依存性 user 1 マルチユーザ環境 program 1 マルチタスク program 2 ある瞬間 瞬間では1つのCPU は一つのプロセス ( スレッド ) しか処理していない! CPU の割当時間 (2 CPU の場合 ) process 1 thread1 thread2 thread3 process 2 thread4 マルチプロセス マルチタスク process 3 thread5 OS に大きく依存 user 2 program 3 process 4 process 5 thread6 thread7 thread8
プロセスの状態遷移 CPU を使用している状態 与えられた CPU 時間を使い切った場合や 優先度の高いプロセスが発生した場合 実行状態 (running state) 入出力要求が出た場合 (CPU を明け渡す ) 実行可能状態 (ready state) すぐに実行可能な状態 待機状態 (wait state) 入出力の終了を待っている状態
プロセスのスケジューリング 到着順方式 実行要求が出た順に逐次 ( 終了まで ) 処理する ラウンドロビン方式 各プロセスを順に同じ長さだけ処理する 優先順方式 現在の OS のほとんどがこれらを併用 プロセスに優先順位を付け 優先度が高いプロセスを優先的に処理する 多重待ち行列方式 ( フィードバック待ち行列方式 ) 初めての実行ほど 高い優先順位を付けて ( 短時間 ) 処理する 処理時間順方式
タスクの種類 シングルタスク (single task) 1 つのプロセスが その終了まで CPU を独占する ノンプリエンプティブマルチタスク (non-preemptive multitasking) 疑似マルチタスク 協調性マルチタスク CPU 時間を分割し 複数のプロセスが実行可能であるが 実行中のプロセスが OS に制御を戻さない限り 占有し続ける Windows 3.x, (Windows 95/98/ME 16bit 処理部 ), Mac OS 9 プリエンプティブマルチタスク (preemptive multitasking) OS がある時間間隔で実行中のプロセスに 割込み をかけて 強制的に 他のプロセスに移行する UNIX 系, (Windows 95/98/ME 32bit 処理部 ), Windows NT/2000/ XP, Mac OS X 非力な CPU の時代 強力な CPU の時代 ( 参考 ) TSS (Time Sharing System) : ( 大型 ) 計算機が非常に高額だった頃 複数のユーザが ( あたかも ) 同時に使えるよう CPU の利用時間を細かく割り当てた (Time Slice) システム
マルチ OS の時代 マルチユーザ OS 複数のユーザが ( 同時に )1 つの計算機を共有する事が出来る OS Windows も MacOS も XP, X から本格的なマルチユーザ環境に マルチタスク OS 複数のプロセスを同時に行える OS マルチプロセッサ OS 複数の CPU で並行処理出来る OS Windows は 2 CPU まで (Windows 7 でも Home, Premium は 1 CPU, Professional, Ultimate で 2 CPU ただし core は複数サポート ) UNIX 系は 非常に多数の CPU で処理が可能
割込み制御 外部割込み 入出力装置からの処理終了通知 電源異常等の異常割込み通知など ソフトウェア割込み ( スーパバイザコール SVC) プログラムが OS の機能 ( システムコール ) を利用した割込み 例外割込み ゼロによる除算やオーバフロー アンダーフロー アドレス指定のエラーなどによる割込み ( 参考 ) リアルタイム OS (real-time operating system): 処理をリアルタイムで行う事を重視した OS ( 産業機械を制御する計算機の OS に多い ITRON や VxWORKS などがある )
情報処理試験など出題される関連事項 排他制御 セマフォ デッドロック