本文へ移動
  1. 高校情報
  2. 基本情報ハンズオンラボ
  3. ソフトウェア

中分類5 大分類:コンピュータシステム テクノロジ系

ソフトウェア

OSは、限られたCPUと主記憶を複数のプログラムに配る係です。この単元では、その配り方(タスク管理・記憶管理)を中心に、ミドルウェア、ファイルシステム、開発ツール、オープンソースソフトウェアを扱います。

左にアプリ・OS・ハードウェアの3層、右にタスクの実行・実行可能・待ちの3状態と、その間の矢印を描いた図
図:OSの位置づけとタスクの状態遷移

要点

オペレーティングシステム

OSの種類と特徴
OSはシステムソフトウェアの中心。ハードウェアの違いを隠し、アプリに共通の機能を出す。PC用・モバイル端末用・リアルタイム用などがある。
仕様を公開したオープンOS(UNIXなど)、強いアクセス制御を持つセキュアOS。1台の上で別のOSを動かすのが仮想マシン(VM)。
OSの機能と構成
中核のカーネルには、機能を最小限に絞るマイクロカーネルと、全部を一体にしたモノリシックカーネルがある。
特権命令を使えるカーネルモードと制限付きのユーザモードを切り替え、割込みで外の出来事に応じる。
電源投入時に小さなプログラムからOSを読み込むのがブートストラップ。ネットワークから起動するネットワークブート、複数のOSから選ぶマルチブートもある。
ジョブ管理
利用者から見た仕事の単位がジョブ、その中の1プログラム分がジョブステップ。ジョブスケジューラーがバッチ処理の順番を決める。
タスクと状態遷移
OSから見た実行の単位がタスク(プロセス)。1つのプロセスの中で並行に動く、より小さな単位がスレッド。
実行可能状態のタスクをディスパッチャが選んで実行状態にする。入出力を待つ間は待ち状態で、終われば実行可能に戻る。
多重プログラミングとスケジューリング
CPUが入出力を待つ間に別のタスクを動かすのが多重プログラミング。実行の順番を決めるのがスケジューリング。
OSが実行中のタスクを止めて交代させるのがプリエンプティブ方式、タスクが自分で手放すまで待つのがノンプリエンプティブ方式。
ラウンドロビンは決まった時間(タイムクウォンタム)ごとに順番に交代するタイムスライス方式。優先順方式は優先度の高いタスクから動かす。
データ管理
装置の違いを隠し、ファイル名とレコードで読み書きできるようにする。アプリは補助記憶装置の種類を意識しなくてよい。
入出力管理
CPUに代わって入出力を進めるチャネルが、終わると入出力割込みでCPUに知らせる。入出力中の障害の扱いもここ。
実記憶管理
主記憶を決まった大きさに分ける固定区画方式と、要る分だけ割り当てる可変区画方式がある。
空きが細切れになるフラグメンテーションは、使用中の領域を詰めるコンパクションで解消する。使われなくなった領域を回収するのがガベージコレクション。
動いていないプログラムを補助記憶へ追い出すスワップアウト、戻すスワップイン(ロールアウト・ロールイン)。必要な部分だけ順に読み込むのがオーバーレイ方式。
仮想記憶管理
補助記憶を使い、主記憶より大きなアドレス空間を見せる。仮想アドレスを実アドレスに直すのが動的アドレス変換。
一定の大きさで区切るページング方式、意味のまとまりで区切るセグメント方式、両方を使うセグメントページング方式。基準の番地に相対位置を足すのがベースアドレス方式。
使うページが主記憶に無いとページフォールト。追い出すページを、読み込みが古い順(FIFO)か、最後に使ってから最も長い順(LRU)で選ぶ(ページリプレースメント)。
主記憶が足りず、置換えばかりで処理が進まなくなるのがスラッシング。
ネットワーク制御
通信プロトコルに従った送受信を受け持ち、アプリにはTCP/IPなどの通信の窓口を出す。相手がLANでもWANでも同じ手順で使える。
運用の管理
起動時の初期化、終了処理、稼働状況の監視など、運用を楽にする機能。利用者ごとの設定がプロファイル、使える範囲を決めるのがファイルアクセス権。
ユーザー管理
全権限を持つスーパーユーザ(UNIXのroot、WindowsのAdministrator)と、権限を絞った一般・ゲストのアカウントを分ける。
多数のアカウントをディレクトリサービスでまとめて管理する。その問い合わせの手順がLDAP。
セキュリティ制御
アクセス制御・暗号化・侵入の検出を受け持つ。ロギング機能やオーディット機能で操作を記録し、誰が何をしたか説明できるようにする(アカウンタビリティ)。
障害管理
ハードウェア障害・ソフトウェア障害を検出し、診断・記録・壊れた部分の切り離し(再構成)・リスタートで回復する。

ミドルウェア

ミドルウェアの役割と機能
OSとアプリの間で、多くのアプリが使う共通の機能を受け持つ。DBMS、TPモニタ、通信管理システム、運用管理ツールなど。
シェル
利用者のコマンドを解釈して、カーネルの機能を呼び出すコマンドインタプリタ。
API
アプリからOSやミドルウェアの機能を呼び出すための、決められた窓口。中身を知らなくても関数のように使える。
ライブラリ
ソースのまま置くソースライブラリ、翻訳済みのオブジェクトライブラリ、すぐ実行できるロードライブラリがある。
実行時につなぐのがDLL。クラスをまとめて再利用できるようにしたのがクラスライブラリ。
コンポーネントウェア
機能を独立した部品(コンポーネント)にして組み合わせて作る。部品の決まりにJava Beans・CORBA・OSGiがある。
開発フレームワーク
アプリの骨組みを先に用意した、クラスやライブラリの集まり。開発者は決まった場所に処理を書き足す。

ファイルシステム

ディレクトリ管理とファイル管理
ファイルはルートディレクトリから木構造で並ぶ。ルートからたどるのが絶対パス、カレントディレクトリからたどるのが相対パス。
別の場所のファイルを指すシンボリックリンク(ショートカット・エイリアス)。読み書きの可否はアクセス権で決める。
ファイルシステムの種類と特徴
補助記憶の領域(ボリューム)を、ファイルとフォルダとして使えるようにする。OSごとにFATやNTFSなどの方式がある。
ファイル編成とアクセス手法
先頭から順に読む順次アクセス、キーで目的のレコードを読む直接アクセス、両方を使い分ける動的アクセス。
索引順編成では、決まった場所に入りきらない追加レコードをあふれ域に置く。
バックアップ
全部を写すフルバックアップ、直前のフル以降の変更分の差分バックアップ、直前のバックアップ以降の変更分の増分バックアップ。
復元には、差分ならフル+最新の差分1つ、増分ならフル+それ以降の増分すべてが要る。同時に複数の媒体へ取るのが多重バックアップ。

開発ツール

開発ツールの種類と特徴
設計・作成・テストを1つの画面にまとめたのがIDE(統合開発環境)。複数のツールを順につないで使うのがツールチェーン。
少ないコードで作るローコードツール、コードを書かないノーコードツールは、利用者自身が作るEUD・EUCを助ける。
組込み開発ではCPUの代わりに挿して動きを調べるICEや、別の機械をまねるエミュレータを使う。
テストでは、実行の跡を記録するトレーサー、変数の中身を見るインスペクター、条件を満たすか調べるアサーションチェッカを使う。
言語処理ツールの種類と特徴
コンパイラは原始プログラムをまとめて目的プログラムに翻訳し、インタプリタは1命令ずつ解釈して実行する。
リンカが目的プログラムとライブラリをつないでロードモジュールを作り、ローダが主記憶に読み込む。
別の機械向けに翻訳するクロスコンパイラ、実行中に翻訳する実行時コンパイラ、翻訳前に書き換えるプリプロセッサ。アセンブリ言語はアセンブラで翻訳する。

オープンソースソフトウェア

OSSの種類と特徴
ソースコードを公開し、利用・改変・再配布を認めるのがOSS。Linux・Apache・MySQL・PHPの組み合わせがLAMP(PostgreSQLならLAPP)。
改変したものも同じ条件で公開させるのがコピーレフトで、代表がGPL。BSDLやApacheライセンスは改変物を非公開にしてもよい。
ファイル単位で公開を求めるのがMPL。2つのライセンスから選ばせるのがデュアルライセンス。
UNIX系OS
Linuxのほか、FreeBSD・NetBSD・OpenBSDなどのBSD系がある。UNIXの名前と仕様はThe Open Groupが管理する。
オープンソースコミュニティ
世界中の開発者がインターネット上で協力し、不具合の報告・修正・機能の追加を公開の場で進める。
OSSの利用・活用と考慮点
無償でも保証はない。ライセンスの条件(公開の義務など)、サポートの費用、問題が起きたときの対処、安全性・信頼性を利用者が考える。

さわって確かめる

記憶管理とタスク管理を、次の3つで動かします。結果の欄には途中の様子も出ます。

1. ページ置換え(FIFO と LRU)

参照列「1 2 3 4 1 2 5 1 2 3 4 5」で、ページ枠を3から4に増やすと、FIFOのページフォールトが増えることを確かめよう。

置換えの方式

2. タスクの状態遷移

「生成」→「ディスパッチ」→「入出力を要求」→「入出力が完了」と押して、タスクがどの状態を通るか確かめよう。

これまでの動き

    3. ラウンドロビンのスケジューリング

    処理時間 A=8、B=2、C=3、タイムクウォンタム2で、短いBが終わる時刻を、到着順に実行した場合と比べよう。

    単位はミリ秒。A・B・Cは時刻0にこの順で並んでいるとし、切り替えにかかる時間は0とする。

    3問チェック

    最初に選んだ答えで採点します。全問正解で、この単元に「済み」の印が付きます。

    1. ページ枠が3つで、最初は空とする。ページを 1 2 3 1 4 1 2 5 1 2 の順に参照したとき、LRU方式でのページフォールトは何回か(最初の読み込みも数える)。

      1. 5回
      2. 6回
      3. 7回
      4. 10回
      答えと解説

      正解はイ。1・2・3で3回。次の1は当たり。4で最後に使ってから最も長い2を追い出し(4回目)、1は当たり。2で3を追い出し(5回目)、5で4を追い出す(6回目)。残りの1と2は当たり。7回はFIFOで数えた値で、FIFOは4のときに1を追い出すため、直後の1でもう一度フォールトが起きる。

    2. 処理時間がA=4ミリ秒、B=6ミリ秒、C=3ミリ秒のタスクが、時刻0にA・B・Cの順で並んでいる。タイムクウォンタム2ミリ秒のラウンドロビンで実行すると、Cが終わるのは時刻何ミリ秒か。切り替えの時間は0とする。

      1. 6ミリ秒
      2. 9ミリ秒
      3. 11ミリ秒
      4. 13ミリ秒
      答えと解説

      正解はウ。A(0〜2)、B(2〜4)、C(4〜6)、A(6〜8でAが終わる)、B(8〜10)、C(10〜11でCが終わる)、B(11〜13)。6ミリ秒はCが最初の2ミリ秒を終えた時刻で、まだ1ミリ秒残っている。13ミリ秒は到着順にA・B・Cを最後まで実行したときのCの終了時刻。

    3. 日曜の夜にフルバックアップを取り、月曜から毎晩、増分バックアップを取っている。木曜の昼にディスクが壊れた。水曜の夜の状態に戻すのに必要なバックアップはどれか。

      1. 日曜のフルバックアップだけ
      2. 日曜のフルと、水曜の増分
      3. 日曜のフルと、月曜・火曜・水曜の増分
      4. 月曜・火曜・水曜の増分だけ
      答えと解説

      正解はウ。増分バックアップは「前回のバックアップから変わった分」だけなので、フルの上に月・火・水の増分を順に重ねる。イは差分バックアップ(フル以降の変更分をまとめて持つ)のときの答え。エは土台になるフルが無いので戻せない。