ソフトウェア(OS・ミドルウェア・ファイルシステム・開発ツール・OSS)
テクノロジ系 / コンピュータシステム
この単元の範囲
大分類2「コンピュータシステム」の中分類5にあたる「ソフトウェア」は、ハードウェアを人間やアプリケーションが使いやすい形に橋渡しする層を扱う。シラバスは小分類として「1. オペレーティングシステム」「2. ミドルウェア」「3. ファイルシステム」「4. 開発ツール」「5. オープンソースソフトウェア」の5つを挙げている。OSがハードウェアを直接制御する最下層、ミドルウェアがOSとアプリの間を仲介する層、ファイルシステムがデータの永続化を担う仕組み、開発ツールがソフトウェアを作る側の道具、OSSがその開発・利用形態の一つ、という位置関係で覚えると整理しやすい。
1. オペレーティングシステム
OSは「OSの種類と特徴」から「障害管理」までの12項目で構成される、この単元の中核である。
種類と機能・構成:サーバーやワークステーションで使われてきたUNIX系OS、スマートフォン向けのモバイル端末用OS、クラウド基盤上で動くクラウドコンピューティング用OSなどがある。OS内部の設計方式には、必要最小限の機能だけをカーネルに残し他はサービスプログラムに分離するマイクロカーネル方式と、機能をひとまとめにしたモノリシックカーネル方式がある。電源投入からOS起動までの一連の処理をブートストラップと呼ぶ。
ジョブ管理・タスク管理:夜間バッチ処理のように、複数の処理(ジョブ)の実行順序を調整するのがジョブスケジューラーである。CPUを使う個々の処理単位は実行可能状態・実行状態・待ち状態を行き来するタスク(プロセス/スレッド)として管理され、複数のタスクを切り替えながら同時に処理する多重(マルチ)プログラミングを実現する。切り替え方式には、一定時間(タイムスライス)ごとに強制的にCPUを奪うプリエンプティブ方式と、タスクが自発的にCPUを手放すまで待つノンプリエンプティブ方式があり、前者の代表例が、優先度を考慮せず待ち行列中の各タスクへ均等な時間を順番に割り当てるラウンドロビン方式である。
記憶管理:物理メモリが足りないとき、使用頻度の低いデータを補助記憶へ退避するロールアウト/スワップアウト、必要になったデータを主記憶へ呼び戻すスワップインを行う。仮想記憶ではページ単位でメモリを管理し、追い出すページを決める方式として、最も長く使われていないページを追い出すLRU(Least Recently Used)、最初に読み込んだページから追い出すFIFO(First In First Out)が代表的である。ページの出し入れが頻発して性能が低下する現象をスラッシングという。
ネットワーク制御・運用・ユーザー管理・セキュリティ制御・障害管理:通信の手順を定めるTCP/IP、通信階層を7層で整理するOSI基本参照モデル(国際標準ISO/IEC 7498-1で規定)がある。運用面ではファイルへのアクセス可否を定めるファイルアクセス権、ユーザー管理では管理者権限を持つroot/AdministratorやディレクトリサービスのLDAP、セキュリティ制御では操作記録を残すロギング機能、障害管理ではハードウェア障害・ソフトウェア障害への対応が扱われる。
2. ミドルウェア
OSとアプリケーションの間で共通機能を提供する層がミドルウェアである。データベース管理システム(DBMS)や、複数システム間のトランザクションを一括制御するTPモニターが代表例で、コマンドを解釈してOSに橋渡しするシェルもここに含まれる。アプリケーションが機能を呼び出すための窓口であるAPI、あらかじめ作られた部品をまとめたライブラリ(実行時に動的に結合されるDLL:Dynamic Link Libraryが典型例)、再利用可能な部品として組み合わせるコンポーネントウェア(Java Beans、CORBA、OSGiなど)、開発の土台となる開発フレームワークもミドルウェアの範囲である。
3. ファイルシステム
ファイルを階層構造で管理する仕組みで、最上位のルートディレクトリから現在作業中のカレントディレクトリへとたどる。実体を指し示す別名としてシンボリックリンク(Windowsではショートカット、macOSではエイリアス)がある。ファイルシステムの種類には古いWindowsで使われたFAT、現在の標準であるNTFSがあり、これらは記憶領域の集合をボリュームとして扱う。データの読み書き手法には、先頭から順に読む順次アクセス、位置を指定して直接読む直接アクセスがある。障害復旧のために、全データを保存するフルバックアップ、前回フルバックアップとの差分のみ保存する差分バックアップ、直前のバックアップとの差分のみ保存する増分バックアップを使い分ける。
4. 開発ツール
ソフトウェアを作る側の道具は、設計・実装・テストを支援する開発ツールと、プログラム言語を実行可能な形に変換する言語処理ツールに分かれる。前者には、コードを書かずに開発するローコード/ノーコードツール、動作を模擬するエミュレーター、組み込み機器のデバッグに使うICE(In-Circuit Emulator)、ソースコード変更履歴を管理するバージョン管理ツール、これらを統合したIDE(統合開発環境)が含まれる。後者には、人間が読める原始プログラム(ソースプログラム)を機械語の目的プログラムへ変換するコンパイラ、1行ずつ解釈しながら実行するインタプリタ、複数の目的プログラムを結合して実行可能なロードモジュールを作るリンカ、それを主記憶に読み込んで実行準備するローダがある。
5. オープンソースソフトウェア(OSS)
ソースコードを公開し改変・再配布を認めるソフトウェアがOSSである。Linuxカーネルを中核にApache(Webサーバ)・MySQL(DB)・PHP(言語)を組み合わせた構成をLAMP(PostgreSQLを使う場合はLAPP)と呼ぶ。ライセンスには、改変後の配布物にも同じ条件でのソースコード公開を義務づけるコピーレフトの考え方があり、代表例がGPLである。GPLはGNUプロジェクトが公開する「GNU General Public License」の略称で、現行の最新メジャーバージョンGPLv3は2007年6月に公開された。他に、改変後の非公開配布も認める緩やかなBSDL、MPL、Apacheライセンスがある。UNIX系OSではFreeBSD・NetBSD・OpenBSDが知られ、UNIXの商標管理はThe Open Groupが行う。利用にあたっては、サポート体制や脆弱性対応の速さといった安全性・信頼性の観点からの見極めも重要になる。
---
参考文献
- IPA「基本情報技術者試験シラバス Ver.9.2」大分類2「コンピュータシステム」中分類5「ソフトウェア」(印刷ページ-18-~-22-): https://www.ipa.go.jp/shiken/syllabus/omgdg50000005kpe-att/syllabus_fe_ver9_2.pdf
- GNU General Public License v3.0(Free Software Foundation公式、2007年6月29日公開): https://www.gnu.org/licenses/gpl-3.0.en.html
- ISO/IEC 7498-1(OSI基本参照モデル)概説: https://en.wikipedia.org/wiki/ISO/IEC_7498-1
本資料はIPAが公表する基本情報技術者試験シラバスVer.9.2(大分類2「コンピュータシステム」中分類5「ソフトウェア」、印刷ページ-18-~-22-)に基づく自作の解説テキストである。
- シラバス本文の小分類構成・用語例を参照しつつ、解説文・具体例は独自作成である
- 本文中でIPA過去問・サンプル問題の実在する問番号は一切引用していない
- 末尾の「オリジナル演習問題」はIPA過去問を模倣・転記せず、独自に作成したものである
- シラバスそのものの著作権はIPAに帰属する。原文はIPA公式シラバスPDFを参照すること
- 本資料の利用にあたっては、IPAの著作権・利用規約に従うこと
- 著者: 本資料著者(nomuraya-dojo)
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
問1
複数のタスクを切り替えながら実行するOSのスケジューリング方式のうち、一定時間(タイムスライス)が経過すると実行中のタスクからOSが強制的にCPUの使用権を取り上げ、他のタスクに割り当てる方式を何と呼ぶか。
ア ノンプリエンプティブ方式
イ プリエンプティブ方式
ウ バッチ処理方式
エ オーバーレイ方式
解答:イ
解説: OSが時間管理によって強制的にCPUの使用権を切り替える方式をプリエンプティブ方式と呼ぶ。対してノンプリエンプティブ方式は、タスク自身が処理を終える・待ち状態に入るなど自発的にCPUを手放すまでOSが介入しない方式である。バッチ処理方式はジョブの実行形態を指す用語、オーバーレイ方式は主記憶を節約するための実記憶管理の手法であり、いずれもタスク切替えの方式を指す言葉ではない。
問2
仮想記憶のページ置換えアルゴリズムのうち、主記憶上のページの中から最も長い間参照されていないページを追い出しの対象として選ぶ方式はどれか。
ア FIFO
イ LRU
ウ ラウンドロビン
エ スラッシング
解答:イ
解説: LRU(Least Recently Used)は「最も長く参照されていないページ」を追い出す方式である。FIFOは参照頻度に関係なく「最も先に読み込まれたページ」から追い出す方式で、両者は判定基準が異なる点に注意する。ラウンドロビンはタスクのCPU割当て方式の名称であり、ページ置換えアルゴリズムではない。スラッシングはページの出し入れが頻発して性能が低下する現象を指す用語であり、方式の名称ではない。
問3
Windows環境において、複数のアプリケーションプログラムから共通の機能(関数やルーチン)を実行時に動的に呼び出して利用できるようにした、拡張子「.dll」で提供されるライブラリ形式を何と呼ぶか。
ア ソースライブラリ
イ オブジェクトライブラリ
ウ DLL(Dynamic Link Library)
エ クラスライブラリ
解答:ウ
解説: DLL(Dynamic Link Library)は、プログラムの実行時に必要に応じて動的にリンク(結合)される共有ライブラリ形式であり、複数のアプリケーションから同じ機能を呼び出して再利用できる点が特徴である。ソースライブラリはコンパイル前の原始プログラムを集めたもの、オブジェクトライブラリはコンパイル後だが未リンクの目的プログラムを集めたもの、クラスライブラリはオブジェクト指向言語のクラス定義を集めたものであり、いずれも「実行時に動的に結合される」という性質を第一の特徴とする用語ではない。
問4
バックアップ方式のうち、「前回のフルバックアップ以降に変更されたデータをすべて」保存する方式として最も適切なものはどれか。
ア フルバックアップ
イ 差分バックアップ
ウ 増分バックアップ
エ 多重バックアップ
解答:イ
解説: 差分バックアップは、直近のフルバックアップを基準にして、そこから変更された分をすべてまとめて保存する方式である。復元時にはフルバックアップと最新の差分バックアップの2つだけを使えばよいが、日数が経つほど差分データ自体は大きくなっていく。これに対し増分バックアップは「直前のバックアップ(フル or 増分)からの変更分のみ」を都度保存する方式で、バックアップ自体は毎回軽くなるが、復元時にはフルバックアップと複数世代の増分バックアップをすべて順番に適用する必要がある。
問5
OSSのライセンスに関する説明のうち、GPL(GNU General Public License)が採用している「コピーレフト」の考え方の説明として最も適切なものはどれか。
ア ソースコードの改変や再配布を一切禁止する考え方
イ 改変後のソフトウェアを配布する際にも、同じライセンス条件でソースコードを公開することを求める考え方
ウ ソースコードを一切公開せず、実行形式のみを配布することを義務づける考え方
エ 商用利用のみを禁止し、非営利利用に限ってソースコードの改変を認める考え方
解答:イ
解説: コピーレフトは、著作権(コピーライト)による権利保護の仕組みを利用しつつ、逆に「改変・再配布する際には元と同じ条件でソースコードを公開しなければならない」という義務を課す考え方である。GPLはこの考え方を採用した代表的なライセンスであり、GPLで公開されたソフトウェアを改変して配布する場合、その改変版もGPLの下でソースコードを公開する必要がある。BSDLやMPL、Apacheライセンスのように、改変後の非公開配布(クローズドソース化)を認める緩やかなライセンスとはこの点で対照的である。