サイトアイコン しらかわるーむ

【基本情報技術者】ソフトウェアについて

こんにちは。

今日もプロット作成から先に進めていきたいと思います。

5月病のせいなのか、気圧のせいなのか、低血圧のせいなのか、やる気がでなかったり、頭痛がしたり、朝起きれなかったりと最近大変です。

と、言い訳はここまでにして、本日もがんばっていきましょー!

スポンサーリンク

基本情報技術者~ソフトウェア~

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

OSとは

OS(Operating System)とは、アプリケーションソフトウェアとハードウェアの間で処理を仲介するためのソフトウェアです。一般的に知られているのは、Windowsです。他にはmacOSやUnix、Linux、iOS、Androidなどがあります。

OSはアプリケーションソフトウェアとハードウェアをつなぐ架け橋のようなものです。一方、アプリケーションソフトウェアは、ユーザーに特定の機能を提供するソフトウェアといえます。

OSの4つの機能

OSにはさまざまな機能が搭載されていますが、基本情報技術者試験では、以下の4つの機能に関する知識が問われます。

 (1)ジョブ管理
 (2)タスク管理
 (3)記憶管理
 (4)データ管理

(1)ジョブ管理

ジョブ管理とは、ジョブの実行順序を管理する機能です。ジョブというのは、ユーザーがコンピューターに依頼する仕事の単位です。ジョブはOSが取り扱います。

(2)タスク管理

タスク管理とは、タスクの実行順序を管理する機能のことです。タスクとは、OSがCPUに出す命令の単位です。
「ジョブ」は、ユーザーがコンピュータに出す命令のことで、「タスク(プロセス)」は、OSがCPU(ハードウェア)に出す命令です。

種類説明
プリエンプティブCPUの使用権をOSが管理する方式。優先度の高いタスクが発生した場合に、優先度の低いタスクから処理を横取りして、優先度の高いタスクに割り当てるやり方。現在の主流の方式。
ノンプリエンプティブCPUの使用権をタスクが管理する方式。タスクの処理が完了するまで、CPUの使用権はそのタスクが持ち、処理が完了するとCPUの使用権をOSに返す。OSの役割がシンプルに見える。

タスクは、生成されてから消滅するまでに3つの状態を取ります。

 (1)実行可能状態:いつでもタスクを実行できる状態
 (2)実行状態:タスクを実行している状態
 (3)待ち状態:タスクの入出力処理の完了を待っている状態

>① タスクの生成 → 実行可能状態
 タスクが生成されると、まずは実行可能状態になります。
>② 実行可能状態 → 実行状態
 CPUの使用権がOS、またはタスクに割り当てられると、タスクは実行状態に移ります。このときの、OSがタスクを実行状態に移すことを「ディスパッチ」と呼びます。
>③ 実行状態 → 実行可能状態
 プリエンプティブの場合、優先度の高いタスクが発生すると、優先度の低いタスクは実行可能状態に戻り、優先度の高いタスクが実行状態となります。一方、ノンプリエンプティブの場合、優先度の高いタスクが発生すると、現在のタスクが終了するのを待ってから、優先度の高いタスクが実行状態に変わります。
>④ 実行状態 → 待ち状態
 タスクに入出力処理が必要になると、実行状態から待ち状態に移ります。この処理には時間がかかるため、OSは入出力処理が必要なタスクを待ち状態にして、他のタスクを実行します。
>⑤ 待ち状態 → 実行可能状態
 入出力処理が完了すると、タスクは待ち状態から実行可能状態へと変わります。
>⑥ 実行状態 → タスクの消滅
 タスクの実行が完了すると、タスクは消滅します。

方式説明
到着順方式先に到着したタスクを先に実行する。
処理時間順方式処理時間の短いタスクを先に実行する。
優先度順方式
(プリエンプティブの場合)
各タスクに優先度を与える。優先度順に実行し、さらに優先度の高いタスクが発生したら、優先度の高いタスクに切り替える。
優先度順方式
(ノンプリエンプティブの場合)
各タスクに優先度を与える。優先度順に実行し、さらに優先度の高いタスクが発生しても、現在のタスクが終了するまで切り替えを行わない。
ラウンドロビン方式タスクを一定時間ごとに切り替えて実行する。

(3)記憶管理

記憶管理とは、記憶装置を効率的に利用するための機能です。

記憶管理には、「主記憶管理」と「仮想記憶管理」の2つに分類されますが、基本情報技術者試験では「仮想記憶管理」についての問題が頻出とのことです。

方式説明
LRU最後に参照されてから最も長い時間が経過したページ(使われていない時間が最も長いデータ)を置き換える方式。Least Recently Usedの略。
LFU参照頻度が最も少ないページを置き換える方式。Least Frequently Usedの略。
FIFO読み込んでから最も長い時間が経過したページを置き換える。First In First Outの略。

次のような表があるとき、LRU、LFU、FIFOそれぞれの場合でどのページが追い出されるページとなるかを説明します。

ページ読み込んだ時刻最後に参照した時刻参照回数
A0:000:059
B0:020:034
C0:030:072

 LRU の場合  ページB:最後に参照した時刻が最も古いため
 LFU の場合  ページC:参照回数が最も少ないため
 FIFOの場合  ページA:読み込んでから最も長く時間が経過していたため

(4)データ管理

4つあるOSの機能のうち、3つを紹介してきたわけですが、最後のデータ管理については、重要事項が多いため、切り分けて、後ほど説明をしていきます。

端的に言うと、データ管理とは、コンピュータが処理するデータを管理する機能です。具体的には「ファイルシステム」「バックアップ」などの機能を指します。

小休止!お試しトライ!過去問①

問1 ジョブ管理

問題
四つのジョブA~Dを次の条件で実行し印刷する。全ての印刷が完了するのは、ジョブを起動してから何秒後か。

平成29年度

(条件)
 (1)ジョブは一斉に起動され、多重度1で実行される。
 (2)優先順位はAが最も高く、B、C、Dの順に低くなる。
 (3)各ジョブの実行後、スプーリング機能が1台のプリンターを用いて逐次印刷を行う。
 (4)各ジョブを単独で実行した場合の実行時間と印刷時間は、表のとおりである。
 (5)その他のオーバーヘッドは考慮しない。

ア.100   イ.160   ウ.190   エ.280

解答
スプーリング機能により、1台のプリンター分だけ処理を並行して行えるので、

各処理が、CPUとプリンターで終わる時間を求めると、上図のようになります。

従って、正解はウ.となります。

データ管理とファイルシステム

データ管理とは

さきほど学んだ、4つあるOSの機能のうち、データ機能に絞って見ていきたいと思います。データ管理とは、コンピュータが処理する「データ」を管理する機能です。基本情報技術者試験では、「絶対パス」関するところがよく出題されるようです。

ツリー構造によるデータ管理

ファイルシステムは、ファイルやディレクトリをツリー構造(木構造、階層構造)で管理します。ツリー構造については割愛させていただきます。

用語説明
ルートディレクトリ
(Root Directory)
階層構造の最上位のディレクトリのこと。通常はハードディスクやSSDの直下がルートディレクトリとなる。
カレントディレクトリ
(Current Directory)
ユーザーが現在、作業しているディレクトリのこと。

「パス」によるファイルの指定

現在主流のOSでは、マウスでディレクトリ移動を行なうこともできますが、キーボードからコマンドで移動させる手段が昔は主流でした。CUIを使った環境では、現在もこれが使えないとお話にならないといった感じではあります。
そして、基本情報技術者試験では、この「パスを使って目的のディレクトリやファイルを指定する方法」という問題が必ずといっていいほど出題されるそうです。その指定方法のルールを学びます。

パスとはなにかということについて触れましたが、これを丸暗記する必要はありません。それよりも、どういった内容のものがあるかということを覚えておくことが重要です。

バックアップ

バックアップとは

バックアップとは、通常使用している補助記憶装置とは別の補助記憶装置にデータの予備を取っておくことです。基本情報技術者試験では「フルバックアップ」「差分バックアップ」「増分バックアップ」の3種類から出題がされます。

小休止!お試しトライ!過去問②

問1 バックアップ

問題
データベースのバックアップ処理には、フルバックアップ方式と差分バックアップ方式がある。差分バックアップ方式に関する記述のうち、適切なものはどれか。

平成18年度

ア.障害からの回復時に差分だけ処理すればよいので、フルバックアップ方式に比べて復旧時間が短い。
イ.フルバックアップのデータで修復した後に、差分を加えて復旧する。
ウ.フルバックアップ方式と交互に運用することはできない。
エ.フルバックアップ方式に比べ、バックアップに要する時間が長い。

解答
ア.から見ていきます。

ア.フルバック方式に比べ、差分バックアップ方式は復旧時間が長くなるため「✕」
イ.正解「○」
ウ.フルバックアップを行ってから、差分バックアップを行なうというように、交互に運用するので「✕」
エ.フルバックアップ方式が、バックアップに要する時間が一番長いので「✕」

従って、解答はイ.となります。

開発ツール

人間が書いたプログラムは、開発ツールと呼ばれるプログラムによって実行されます。基本情報技術者試験では、「最適化コンパイラ」「リンカ」「静的テストツール」の3つの単語がよく出題されます。

プログラムが実行されるまで

① ソースコードを読み込む
② コンパイラが、ソースコードをオブジェクトコードに翻訳する
③ リンカが、オブジェクトコードとライブラリを連結させ、ロードモジュールを作る
④ ローダが、ロードモジュールを主記憶装置に格納する
⑤ PCがプログラムを実行する

ソースコードとオブジェクト

コンピュータは「0」と「1」しか理解できません。一方で、人間にとっては「0」やら「1」の羅列は暗号にしか思えません。そこで、人間は「プログラム言語」というコンピュータの言葉を人間にもわかりやすくした言葉を作り出しました。

この人間が読みやすいプログラム言語で書かれたプログラムのことを、「ソースコード」といい、「0」や「1」に変換されたプログラムのことを「オブジェクトコード」と呼びます。また、この変換を実行するツールのことを「コンパイラ」と呼びます。

コンパイラ

コンパイラは「人間が書いたソースコード」を「コンピュータが読めるオブジェクトコード」へ翻訳するツールのことです。

リンカとロードモジュール

コンパイラによって「0」と「1」で示されたオブジェクトコードが生成されましたが、これだけではまだ実行することはできません。

まだ他に、このオブジェクトコードを実行するのに必要となる別のオブジェクトコードやライブラリなどが1つにまとまっていないためです。

そこで「リンカ」というツールを使って、複数のオブジェクトコードとライブラリを1つにまとめて、ロードモジュール(実行できるプログラム)を生成します。

テストツール

プログラムが正しく動作するかは、テストをして確認を行います。テストは大きく「人間によるテスト」と「コンピュータによるテスト」の2つに分類できます。

人間によるテストには、代表的なものとして「レビュー」があります。コンピュータによるテストには「静的テスト」と「動的テスト」があります。

種類解説
静的テストプログラムは実行せずに、ドキュメントやソースコードをチェックすることで、プログラムの間違いを見つけるテスト手法。
動的テストプログラムを実行し、その結果からプログラムの間違いを見つけるテスト手法。
分類テストツール説明
静的テスト
ツール
ソースコード解析ツールソースコードを解析して、プログラムの誤りを見つけるソフトウェア。
プログラム構造解析ツールソースコードを解析して、プログラムの階層構造を表にしたり、プログラムの改善点を示したりするソフトウェア。
モジュールインターフェース
チェックツール
ソースコードを解析して、モジュール間のインターフェースの整合性をチェックするソフトウェア。
動的テスト
ツール
インスペクタープログラムを実行してエラーを検出するソフトウェア。
テストカバレージツールプログラムが取りうる処理手順のうち、どれだけ多くのルートが実行されたのかを明らかにするソフトウェア。
テスト実施支援
ツール
テストベッドツールモジュール結合テストに必要なドライバやスタブなどの仮モジュールを生成するソフトウェア。テスト環境を自動的に作成してくれるので、手作業でテスト環境を作る手間が省ける。
テストデータ生成ツールテストデータを自動的に生成するソフトウェア。

インタプリタ

ここ数年、インタプリタについての出題が増えているそうです。

インタプリタとは、ソースコードを1文字ずつ解釈しながら実行していくツールです。コンパイラがソースコードを一括で変換するのに対し、インタプリタはソースコードを1文ずつ変換しながら実行します。

メリットとして、インタプリタは書いたコードをすぐに実行できるという点が挙げられます。
デメリットとして、ソースコードの最適化がされていないため、実行時の効率が悪いということが挙げられます。

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

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

オープンソースとは、ソースコードが公開されていて、誰でも自由に見たり、変更したりすることができるという考え方です。

オープンソースの考え方に沿って作られたソフトウェアのことを、オープンソースソフトウェア(OSS)といいます。基本情報技術者試験では、「OSS」と記載されることが多いです。

種類解説
商用ソフトウェア企業が有料で販売するソフトウェアのこと。ソースコードを公開すると、その商品のコピーが作れてしまうため、ソースコードは公開されない。
パブリックドメイン
ソフトウェア
著作権が放棄されたソフトウェアのこと。ソースコードを入手できれば、自由に作り変えることができる。

小休止!お試しトライ!過去問③

問1 リンカ

問題
リンカの機能として、適切なものはどれか。

平成30年度

ア.作成したプログラムをライブラリに登録する。
イ.実行に先立ってロードモジュールを主記憶にロードする。
ウ.相互参照の解決などを行い、複数の目的モジュールなどから一つのロードモジュールを作成する。
エ.プログラムの実行を監視し、ステップごとに実行結果を記録する。

解答
ア.から順に見ていきたいと思います。

ア.これはコンパイラの説明です。
イ.これはローダの説明です。
ウ.リンカの説明です。
エ.これはデバッガの説明です。

従って、正解はウ.となります。

最後に

項目がちょっと多かった気がします。その分覚えることもたくさんありましたね。
ここら辺もしっかりと復習して覚えていきましょう。

こちらが参考にさせていただいているテキストです。

白川秋

ではでは、参考までに

モバイルバージョンを終了