OS とは オペレーティングシステムとは 1 コンピュータでプログラムを実行する場合、そのプログラマが、コンピュータの周辺機器とのデータの やりとりのすべての処理を記述するのは非常に手間がかかる。周辺装置などのハードウェアを制御する基 本ソフトウェアを用意しておき、応用ソフトウェアとの仲立ちをおこなうソフトウェアをオペレーティン グシステム (OS) と呼ぶ。 • 基本ソフトウェア (広義の OS) – 制御プログラム (狭義の OS) カーネル (kernel) とも呼ばれる ∗ プロセス管理 ∗ 入出力管理 ∗ 主記憶管理 ∗ ファイルシステム – 開発環境 (言語プロセッサ) ∗ コンパイラ、アセンブラ ∗ リンケージエディタ ∗ デバッガ – ユーティリティプログラム ∗ コマンドインタプリタ ∗ GUI(Graphical User Interface) ∗ エディタ 1.1 1.1.1 OS の役割 共通機能の提供 周辺装置とのデータのやり取りをあらかじめ共通化しておくことで、プログラム作成での労力を削減が できる。また、OS の基本機能が無ければ、応用プログラムが直接ハードウェアを操作する必要があり、こ の処理の記述に誤りがあれば、ハードウェアなどを故障させるかもしれない。ハードウェアの保護1 1 MS-DOS や Windows/9x では、この保護機能が (CPU の能力不足から) 不完全である。 1 1.1.2 資源の管理 コンピュータシステムの中で、様々なプログラムや多くの利用者が共通に利用する「もの」を資源 (re- source) と呼ぶ。 • キーボード等のハードウェア (物理的なリソース) • 計算に必要な主記憶 (メモリ) • CPU を利用する時間 (抽象的なリソース) これらの資源が、複数のプログラムやユーザの間で共有しても、相互に支障が無いように管理される必 要がある。 1.2 ジョブとプロセスとスレッド OS におけるプログラムの実行する単位で分類すると、主に3つになる。 ジョブ 利用者がコンピュータを利用する視点での単位。1連の処理 (サービス) を実現するために、複数 のプロセスの組み合わせで行う。 プロセス (タスク) 1 つのプログラムの実行に対応する。ジョブを構成するために、他のプロセスと情報交 換する必要がある場合には、ファイルを用いたり、プロセス間通信機能を用いる必要がある。 スレッド 1つのプロセスが、リアルタイム処理のために複数の処理を並列動作させる場合の、各処理をス レッドと呼ぶ。1つのプロセスとして割り当てられたメモリを共有して、複数のスレッドが並列動作 する。 Job Process Data Process User Thread Results (Service) Thread Process Process Thread 1.3 Thread ジョブやプロセスの処理方式 ジョブの処理方式には、以下の3つがある。 バッチ処理 利用者は、実行したいプログラムの内容を記述し、コンピュータに処理を投入する。処理が 終ったら利用者は結果を受け取る。 一連の処理が終るまで、利用者の操作を必要としない。 2 タイムシェアリングシステム (TSS と略) 1 台のコンピュータを複数の利用者が同時に利用するための方 式。コンピュータは、複数のプロセスを短い時間間隔で切替えながら処理をするため、複数の処理が 動いているように見える。 リアルタイム処理 リアルタイム処理に近いが、利用者の要求に対して、一定時間内にその処理が行われる 様な機能を持つ。 User Job User Job Computer User Computer Results Results User Batch Processing Time Sharing System コンピュータ内部でのプロセスの実行方式を、大きく分類すると、 シングルタスク方式 プログラムを1つだけ実行する方式。他の処理は、処理の終了まで待たされる。他の プログラムとの資源の共有を、あまり気にしなくて良い。 マルチタスク方式 1つの CPU にて、短い一定時間毎や入出力待ちのタイミングで、処理を次々と切替え ることで複数の処理が行われているようにみせかける。 マルチプロセッサ方式 複数のプロセッサ (PU)2 により分割して並列処理を行う。 補足 並列処理によるプロセッサの高速化の方法をいくつか紹介する。 2 一般的に CPU(中央処理装置) と呼ばれる。しかしマルチプロセッサシステムでは、中心となるプロセッサが存在しないので、 PU (Processor Unit) と呼ぶ。 3 E W Write Execute R E W Read Decode D R E W W Processing Unit ..... Super Scaler Architecture Opcode Opcode Opcode Processing Unit Opcode Opcode Opcode Pipeline Architecture Opcode Opcode Opcode Opcode ..... F D R E W Opcode F D R E W Fetch Operation Code Processing Unit Processing Unit Processing Unit Shared Memory Processing SMP 2 PU Opcode PU Opcode Opcode Data Data Vector Processor Single Instruction Multiple Data stream (SIMD) Data Data Data ..... PU Data Data ..... Data ..... ..... Data Data Data Data PU Opcode PU Opcode Memory Data PU Data PU PU Data VLIW Architecture Multiple Instruction stream Multiple Data stream (MIMD) 割り込み処理 通常 CPU は、一連の流れに沿って処理を行う。その処理中に何らかの他の処理を実行を要求された場 合、あらかじめプログラム中に、その要求に対応した分岐処理を入れておくことは困難となる。 そこで CPU には、処理の要求があった時、強制的に処理を他の処理に切替える機構が必要となる。こ れが割り込みである。 目的の処理の途中で他の処理に切り替わる場合、その割り込み処理が終了したら、元の処理に復旧でき る必要がある。 このため、割り込み処理が発生した場合、以下のような一連の処理が行われる。 • 割り込み発生 • 割り込み許可の確認 • 処理していたプログラムの場所の保存 (プログラムカウンタの保存) し、 • その計算で用いていた CPU 内部のデータを一旦保存し、 • 割り込み処理に切替える。 • 割り込み処理の実行。 • 保存してあった、CPU 内部データを復旧 4 • 割り込み前の処理に戻る。 OS にて利用される割り込みとしては、 • 入出力割り込み (周辺機器からの割り込み) • タイマ割り込み (時間による割り込み) • エラー割り込み (0 除算、オーバーフロー、メモリ保護エラー) • ソフトウェア割り込み プロセスとは 3 ユーザの要求に応じて、OS は補助記憶装置 (ハードディスク等) からプログラムの内容を主記憶 (メモ リ) に読みだし、CPU はプログラムの流れに沿って一連の処理 (これをプロセスと呼ぶ) を開始する (プロ セスの生成)。そして一連の処理が終了すると、プロセスは処理を停止し、利用していた主記憶を開放し、 メモリ上から消滅する。(プロセスの消滅) 3.1 マルチタスク処理の実現 プロセッサにて、複数の処理を同時に行うマルチタスク処理は、タイマ割り込みを用いて、実現している。 CPU の内部には、インタバルタイマと呼ばれる時計があり、決められた周期毎に割り込みを発生させる。 OS は、他のプロセスへの処理の切替え、後で処理を復旧・継続して再開するために以下のような情報 を保存する。 • CPU の内部データ (プログラムカウンタ、レジスタ等) • プロセスの状態、優先度、タイムスライスの残り時間 • プロセスの主記憶内部の位置 time-slice OS Process A Process B Process C Interrupt 3.1.1 Interrupt Interrupt Interrupt プロセスの状態 効率良く複数の処理を切替えるために、プロセスには以下の図の様に、3つの状態を割り当てる。 実行中 CPU が割り当てられて動作している状態 実行可能状態 動作できるが他の処理のために待機している状態 待ち状態 入出力装置などの完了を待っている状態 5 Create Process Waiting Assign CPU Running Process Process Terminated Time-slice I/O Completion or Signal I/O Access Process Blocked 3.1.2 スケジューリング プロセスの実行する順序を決めることをスケジューリングと呼び、マルチタスク処理の OS での重要な 機能である。スケジューリングには、公平性・効率・応答時間 (ターンアラウンドタイム)・スループット 3 を考えて、OS に適したスケジューリング手法が取られる。 ラウンドロビン方式 実行可能状態の待ち行列プロセスの再前列のプロセスに実行権を与える方式。タイム スライスが経過して実行権を奪われたプロセスは、待ち行列の最後尾に置く、最も基本的な手法。 優先度方式 プロセスに優先度を設け、その高いものを選ぶ。 フィードバック待ち行列方式 簡単な説明だと、前2方式の複合方式 到着順方式 起動された順に実行 処理時間順方式 プロセスに割り当てた時間の短いものから実行 これらの方式は、プログラムの実行中に OS が CPU を取り上げるため、プリエンプティブスケジュー リング (横取り方式) と呼ばれる。これに対し、OS がプロセスの実行権を奪わない方式は、ノンプリエン プティブスケジューリングと呼ばれる。この方式では、アプリケーションプログラムは適当な時間毎に実 行権を OS に返す処理を行う必要がある。 3 一定時間内の仕事処理量 6
© Copyright 2026 Paperzz