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

基本情報技術者
この記事は約18分で読めます。

こんにちは。

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

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

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

スポンサーリンク

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

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

OSとは

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

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

OSの4つの機能

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

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

(1)ジョブ管理

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

  • なぜジョブ管理が必要か
    なぜジョブ管理が必要なのか。それは、CPUと他のハードウェアとの処理速度が大幅に異なるということが挙げられます。もし、OSにジョブ管理機能がないと、例えば「プリンターで印刷処理を行なう」といったジョブを発生させたときに、CPUはプリンターのすべての処理が終わるまで、待ち状態となってしまい、ロスが生まれてしまいます。そこで、「プリンターが印刷を行っている間は、CPUは別のジョブを行なう」とジョブ管理ができれば、CPUを有効活用できますよね。
  • スプーリング
    OSがジョブ管理を行い、CPUとプリンターを別々に動作させるには「スプーリング」という技術が必要となります。
    スプーリングとは、「CPU」と「低速の入力装置」の間のデータ伝送を「高速の補助記憶装置」に仲介させるという方法です。
  • バッファ
    スプーリングで使用する補助記憶装置のように、処理速度や伝送速度の異なる2つの装置の差を補うことを目的とし、データを一時的に保存する記憶装置のことを、一般に「バッファ」と呼びます。装置間の処理速度の差を和らげる(緩衝する)役割であるということから、「緩衝記憶装置」と呼ばれることもあります。
    「キャッシュメモリ」や「ディスクキャッシュ」などもバッファのひとつです。

(2)タスク管理

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

  • マルチタスク
    マルチタスクとは、タスク管理によって複数のタスクを頻繁に素早く入れ替えて実行することで、あたかも同時に処理を行っているかのように見せる技術です。
    マルチタスクはCPUが単体で行っているのではなく、OSがCPUを操作することによって実現されています。
  • プリエンプティブとノンプリエンプティブ
種類説明
プリエンプティブCPUの使用権をOSが管理する方式。優先度の高いタスクが発生した場合に、優先度の低いタスクから処理を横取りして、優先度の高いタスクに割り当てるやり方。現在の主流の方式。
ノンプリエンプティブCPUの使用権をタスクが管理する方式。タスクの処理が完了するまで、CPUの使用権はそのタスクが持ち、処理が完了するとCPUの使用権をOSに返す。OSの役割がシンプルに見える。
  • タスクが生成されてから消滅するまで

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

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

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

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

(3)記憶管理

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

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

  • 仮想記憶管理
    仮想記憶管理とは、補助記憶装置の一部をあたかも主記憶装置であるかのように扱う方式です。この方式を利用すると、プログラムが主記憶装置の容量を超える場合でも、実行することが可能になります。
    仮想記憶管理では、OSが「論理的な記憶領域」を作ります。この「論理的な記憶領域」のことを仮想記憶といい、主記憶装置上の「物理的な記憶領域」のことを実記憶といいます。
    仮想記憶管理は、さらに、セグメンテーション方式とページング方式の2つに分類できます。
    • セグメンテーション方式
      セグメンテーション方式とは、仮想記憶と実記憶をセグメントと呼ぶ可変長の領域に分割して管理する方式です。なお、基本情報技術者試験で出題傾向の高い方式は、ページング方式のほうです。
    • ページング方式
      ページング方式とは、仮想記憶と実記憶をページと呼ぶ固定長の領域に分割して管理する方式です。
      仮想記憶と実記憶の各ページには、先頭から順にアドレスが割り当てられ、仮想記憶のアドレスを「仮想アドレス」、実記憶のアドレスを「物理アドレス」と呼びます。
      仮想アドレスと物理アドレスは、「ページテーブル」と呼ばれる表によって対応付けられています。それぞれに、以下の値が割り当てられます。(仮想記憶にあるページの総数とページテーブルの行の総数は同じになります)
      • 仮想アドレスを示す列には、仮想記憶の仮想アドレスと同じ番号
      • 物理アドレスを示す列には、実記憶の物理アドレスと同じ番号
  • CPUがページにアクセスする流れ
    ページング方式でCPUが目的のページにアクセスする流れを説明したいと思います。
    (1) CPUが仮想記憶の「ページA」にアクセスする。「ページA」の仮想アドレスは「1」なので、ページテーブルにある仮想アドレスが「1」の行にアクセスする。
    (2) 次に、その行の物理アドレスは、例えば「2」となっているとき、実記憶にある物理アドレス「2」のページにアクセスする。
    (3) CPUが「ページA」の実体にアクセスできた。
  • ページインとページアウト
    「プログラムを実行するのに必要なページ」が実記憶に存在しないとき、ページフォールトという割込みが発生します。
    この割込みにより、OSが「プログラムを実行するために必要なページ」を補助記憶装置から実記憶へ読み込みます。これをページインと呼びます。
    逆に、実記憶に空きページがない場合には、実記憶から外すページを1つ選び、そのページを実記憶から補助記憶装置に書き出します。これをページアウトと呼びます。
  • ページの置き換えアルゴリズム
    ページアウトにおいて、どのページを実記憶から外すと良いのかを決めるためのアルゴリズムのことを、「ページの置き換えアルゴリズム」と呼び、そのアルゴリズムは全部で3種類あります。
方式説明
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の機能のうち、データ機能に絞って見ていきたいと思います。データ管理とは、コンピュータが処理する「データ」を管理する機能です。基本情報技術者試験では、「絶対パス」関するところがよく出題されるようです。

  • ファイルシステム
    ファイルシステムとは、データのまとまりを「ファイル」として扱うことで、データを管理しやすくなるという機能です。ファイルシステムの代表例として、Windowsのエクスプローラが挙げられます。
    ファイルシステムにより、コンピュータに保存されている「0」と「1」のデータの羅列をファイルとして視覚化する働きがあります。
  • ファイルとディレクトリ
    ファイルとは、記憶装置に保存された情報の集まりです。ファイルには「書類」という意味があります。
    ディレクトリとは、ファイルを格納する場所です。ディレクトリを活用することで、無数に存在するファイルを、種類ごとに分類することができます。例えば、画像ファイルは画像ディレクトリに、音楽ファイルは音楽ディレクトリに格納することで、人間が理解しやすくなります。

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

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

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

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

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

  • パスとは
    •  ルール1  ディレクトリやファイルは「/」(スラッシュ)で区切る
    •  ルール2  パスのはじまりが「/」のときは、左端にルートディレクトリが省略されているものとする
    •  ルール3  カレントディレクトリは「.」で表す
    •  ルール4  1階層上のディレクトリは「..」で表す

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

  •  ルール1  ディレクトリやファイルは「/」(スラッシュ)で区切る
    ファルダやファイルの階層構造は「/」(スラッシュ)で区切ります。
    例)/画像/りんご.jpg
  •  ルール2  パスのはじまりが「/」のときは、左端にルートディレクトリが省略されているものとする
    パスの指定が「/」から始まる場合は、ルートディレクトリから指定されていることを意味します。この場合のパスを、「絶対パス」と呼びます。
    例)/画像/りんご.jpg → c:/画像/りんご.jpgのような意味合い
  •  ルール3  カレントディレクトリは「.」で表す
    パスは、カレントディレクトリから指定することもできます。カレントディレクトリから始まっているということを示すときに、「.」を使用します。カレントディレクトリからのパスのことを「相対パス」と呼びます。
    例)./高解像度/みかん.jpg
  •  ルール4  1階層上のディレクトリは「..」で表す
    相対パスの場合、カレントディレクトリよりも上に遡ったパスを指定するケースもあります。そんなときに使用するのが「..」です。
    例)../音楽/どんぐりころころ.mp3

バックアップ

バックアップとは

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

  • フルバックアップ
    フルバックアップ(完全バックアップ)とは、すべてのデータをバックアップすることです。
    • メリット  ⋯ 復旧作業が簡単
    • デメリット ⋯ データ量が多い場合、バックアップの作成に時間がかかる
  • 差分バックアップ
    差分バックアップとは、フルバックアップ以降、新たに追加されたデータのみをバックアップすることです。
    • メリット  ⋯ 差分だけを取るので、バックアップにかかる時間が短い
    • デメリット ⋯ 復旧作業が煩雑で時間がかかる
  • 増分バックアップ
    増分バックアップとは、前回のバックアップから新たに追加されたデータのみをバックアップすることです。
    • メリット  ⋯ 差分バックアップよりさらに短いデータをバックアップするので、時間が短い
    • デメリット ⋯ 復旧作業が差分バックアップよりも更に煩雑で時間がかかる

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

問1 バックアップ

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

平成18年度

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

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

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

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

開発ツール

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

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

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

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

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

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

コンパイラ

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

  • コンパイラの処理手順
    コンパイラの処理手順には5つの処理の順序があります。基本情報技術者試験では、これらの順序とそれぞれの処理内容について出題されることがあります。

    (1)字句解析 :ソースコードを細かい要素に分けて、間違いがないかチェックする
    (2)構文解析 :プログラムの文法が間違っていないかをチェックする
    (3)意味解析 :プログラムの手続きに矛盾がないかチェックする
    (4)最適化  :計算の順序などを改善して、効率的なプログラムに変換する
    (5)コード生成:オブジェクトコードのプログラムを作成する

    この処理により、ソースコードをオブジェクトコードに変換することができます。

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

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

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

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

テストツール

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

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

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

インタプリタ

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

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

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

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

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

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

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

  • Eclipse(エクリプス)
    Eclipseとは、OSSの統合開発環境です。統合開発環境(IDE:Integrated Development Environment)とは、テキストエディタやコンパイラ、テストツールなど、開発に必要なツールが1つにまとめられているソフトウェアのことです。
  • その他のソフトウェア
    オープンソースソフトウェアの他には「商用ソフトウェア」「パブリックドメインソフトウェア」があります。
種類解説
商用ソフトウェア企業が有料で販売するソフトウェアのこと。ソースコードを公開すると、その商品のコピーが作れてしまうため、ソースコードは公開されない。
パブリックドメイン
ソフトウェア
著作権が放棄されたソフトウェアのこと。ソースコードを入手できれば、自由に作り変えることができる。
  • コピーレフト
    コピーレフト(Copyleft)とは、プログラムの著作権は作者が保持するが、誰もがプログラムの複製、改変、再配布ができ、さらに2次著作物(派生物)にもオリジナルと同じ配布条件を求める考え方です
    ポイントとしては、「2次著作物にも」という点です。つまりこれは、「改変したプログラムを再配布する場合はソースコードも公開しなけらばならない」という考え方です。

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

問1 リンカ

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

平成30年度

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

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

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

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

最後に

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

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

白川秋
白川秋

ではでは、参考までに

コメント

タイトルとURLをコピーしました