2. ソフトウェアとマルチメディア
2.1. 基本ソフトウェア
2.1.1. OSのタスク
OSはコンピュータの基本動作を実現する基本ソフトウェアである。
ソフトウェアの分類
2.1.1.1. 基本ソフトウェアのプログラム
基本ソフトウェアは3つのプログラムに分けられる。
- 基本ソフトウェア
- 制御プログラム ・・・ ハードウェアを管理しコンピュータを効率管理できるように働くソフトウェア
- 言語処理プログラム ・・・ C言語、Javaなどのプログラム言語で書かれたプログラムを機械語に翻訳するプログラム
- サービスプログラム ・・・ コンピュータの機能を補う補助的なプログラムでユーティリティと呼ばれ、ファイル圧縮プログラムなどがある
2.1.1.2. 代表的なOS
種類 | 説明 |
---|---|
Windows | Microsoft社製のOS、GUIによる画面操作でコンピュータに命令を行う |
Mac OS | Apple社製のクリエイティブな作業によく用いられるOS、GUIを先駆けで導入したことで有名 |
MS-DOS | Windows普及前に使われていたMicrosoft社製のOSであり、CUI入力であったことで有名 |
UNIX | サーバに使われることが多いOS、大勢のユーザが同時利用できるように考えられている |
LINUX | UNIX互換のOSであり、オープンソースで無償で利用可能 |
2.1.1.3. OSの操作性(GUI/CUI)
コンピュータを操作するインターフェスとしてGUIとCUIがある。 GUIは画面を視覚的に操作することで命令を伝える操作方式でCUIはコマンドで操作する方式。
2.1.1.4. API(Application Program Interface)
APIはOSが含み持つ各機能をアプリケーションから呼び出せる仕組みである、
2.1.1.5. ソフトウェアによる自動化(RPA)
ソフトウェアによる自動化にRPA(Robotic Process Automation)がある。
2.1.2. ジョブ管理
ユーザからみて処理させたい一連の作業のかたまり単位がジョブであり、OSはそれを効率よく処理していけるように実行スケジュールを管理する。
ジョブ管理にはバッチ処理と呼ばれる処理に時間のかかる作業をコンピュータに登録しまとめて処理する仕組みがある。
ジョブ管理フロー
ジョブ管理はカーネルが持つ機能の1つであり、この機能でユーザとの間に橋渡しを行うマスタスケジューラという管理プログラムがある。
ユーザはこの管理プログラムにジョブの実行を依頼する。 また、マスタスケジューラはジョブの実行をジョブスケジューラに依頼し、マスタスケジューラは実行の監視に努め、ジョブスケジューラがジョブを実行する。
スプーリング
CPUと入出力装置には処理速度に大きな差が存在する。 スプーリングと呼ばれる、低速な装置とのデータやり取りを高速な磁気ディスクを介して行い処理効率を高める手法が導入されている。
スプーリングを用いるとCPUの待ち時間を削減できるため、単位時間あたりに処理できる仕事量を増やすことが可能。
2.1.3. タスク管理
コンピュータから見た仕事の単位がタスクである。
タスクの状態遷移
生成されたタスクの状態には3つの状態がある。
- 実行可能状態(Ready) ・・・ いつでも実行可能でCPUの使用権が回るのを待機する状態、生成直後のタスクは待ち行列になりこの状態となる
- 実行状態(Run) ・・・ CPUの使用権が与えられ実行中の状態
- 待機状態(Wait) ・・・ 入出力処理が発生したので終了を待っている状態
ディスパッチャとタスクスケジューリング
実行可能状態で待機するタスクにCPUの使用権を割り当てるのはディスパッチャと呼ばれる管理プログラムである。
また、このときどのタスクに使用権を割り当てるかを決めるためにタスクの実行順序を定める必要がある。これはタスクスケジューリングと呼ばれる。 タスクスケジューリングの種類には3つの方式がある。
方式の種類 | 説明 |
---|---|
到着順序方式 | 実行可能となったタスク順にCPUの使用権を割り当てる方式。タスクに優先順位がないため、実行途中でCPUの使用権が奪われることはない(ノンプリエンプション) |
優先式方式 | タスクに優先度を設定し、優先度が高いものから実行していく方式。実行中のタスクよりも優先度が高いものが待ち行列に追加されると実行途中でCPUの使用権が奪われる(プリエンプション) |
ラウンドロビン方式 | CPUの使用権を一定時間ごとに切り替える方式。実行可能状態になった順番でタスクにCPU使用権が割り当てられるが、規定時間に終わらなかった場合は待ち行列の最後に回されます。 |
マルチプログラミング
タスク管理の役割はCPUの有効活用によります。 マルチプログラミングは複数のプログラムを見かけ上同時に実行させることにより遊休時間を削減しCPuの使用効率を高めるものである。
割り込み処理
実行中のタスクを中断し別の処理に切り替え、そちらが終了すると再び元のタスクに再帰する処理は割り込み処理と呼ばれる。 割り込み処理には下記のような種類がある。
内部割込み
種類 | 説明 |
---|---|
プログラム割込み | 記憶保護例外などの場合に生じる割り込み |
SVC割り込み | 入出力処理の要求などのカーネル呼出し命令が生じた際に生じる割り込み |
外部割込み
種類 | 説明 |
---|---|
入出力割込み | 入出力装置の動作完了時や中断時に生じる割り込み |
機械チェック割込み | 電源異常や主記憶装置障害などのハードウェアの異常時に生じる割り込み |
コンソール割込み | ユーザによる介入が行われた際に生じる割り込み |
タイマ割込み | 規定の時間を過ぎたときに生じる割り込み |
2.1.4. 実記憶管理
限られた主記憶空間を効率よく使われるようにプログラムに割り当てるのが実記憶管理の役割です。
ノイマン型コンピュータではプログラム内蔵方式をとります。この方式では主記憶上にプログラムをロードして実行する。 プログラムをロードしたときの割り当て方が不適切であると容量は活用できなくなる。そこで適切に書き込むための方法がいくつか存在する。
固定区画方式
固定区画方式は主記憶に固定長の区画(パーティション)を設けて、そこにプログラムを読み込む管理方式です。 全体を単一の区画とする単一区画方式と複数の区画に分ける多重区画方式がある。
可変区画方式
主記憶を最初に固定用で区切るのではなく、プログラムをロードするタイミングで必要なサイズに区切る管理方式が可変区画方式である。 この方式ではプログラムが必要とする大きさで区切りを作りそこのプログラムをロードする。また固定区画方式よりも主記憶の利用効率は良い。
フラグメンテーションとメモリコンパクション
可変区画方式の場合プログラムを主記憶上に隙間なく埋め込んで実行するとができるが、必ず詰め込んだ順番にプログラムが終了するとは限らないため連続した状態で主記憶の空き容量を確保することができない。この現象はフラグメンテーション(断片化) と呼ばれる。 フラグメンテーションの解消のためにはロードされているプログラムを再配置することにより、細切れ状態の空き領域を連続したひとつの領域する必要がある。この操作はメモリコンパクションまたはガーベジコレクションと呼ばれる。
オーバレイ方式
区画を効率よく配置できるようにしても実行したプログラムのサイズが主記憶の容量を超えていたらロードができません。 これを可能にするような工夫がオーバレイ方式である。
この方式ではプログラムをセグメントという単位に分割しておいて、そのときに必要なセグメントだけを主記憶上にロードして実行される。
スワッピング方式
マルチプログラミングの環境では優先度の高いプログラムによる割り込みなどが発生した場合、現在実行中のものをいったん中断させ切り替えるが、このとき優先度の低いプログラムが使っていた主記憶領域の内容を補助記憶装置に丸ごと退避させて空き容量を作る。
退避させたプログラムに再びCPUの使用権が与えられるとき、退避させた内容は補助記憶装置から主記憶へロードしなおして、中断箇所から処理を再開する。この2つの処理(スワップアウトとスワップイン)を合わせた処理はスワッピングと呼ばれる。この処理が発生すると処理速度が極端に低下する。
2.1.5. プログラムの再配置性と4つの性質
再配置可能プログラムはプログラムがどこにロードしても実行に問題ないプログラムです。
再配置可能(リロケータブル)
主記憶上のどこに配置しても実行できるといる性質は再配置可能(リロケータブル)と呼ばれる。
再使用可能(リユーザブル)
主記憶上にロードされて処理を終えたプログラムを再ロードすることなく、繰り返し実行できる性質は再使用可能(リユーザブル)と呼ばれる。
再入可能(リエントラント)
再ロードすることなく繰り返し実行できる再使用可能なプログラムにおいて、複数のタスクから呼び出しても互いに干渉することなく同時実行できるという性質は再入可能(リエントラント)と呼ばれる。
再帰的(リカーシブ)
実行中に自分自身を呼び出すことができる性質は再帰的(リカーシブ)と言う。
2.1.6. 仮想記憶管理
仮想記憶は主記憶や補助記憶の存在を隠蔽し、広大なメモリ空間を自由に扱えるようにするもの。
実記憶上の配置のような物理的制約を意識する必要がないのが特徴。
また仮想アドレスから実アドレスへ変化する処理はメモリ交換ユニット(MMU)が行う。またこの仕組みは動的アドレス変換機構(DAT) と呼ばれる。
また仮想記憶に置かれたデータは主記憶装置を超えても補助記憶装置もメモリの一部として扱うことにより主記憶装置よりも大きなサイズの記憶空間を提供できる。
ページング方式
仮想記憶の実装方式には仮想アドレス空間を固定長の領域に区切って管理するページング方式と可変長の領域に区切って管理するセグメント方式がある。
ページング方式ではプログラムをページと呼ばれる単位で分割管理する。現在のOSでは実行に必要なページだけを実記憶に読み込ませる方式が主流である。
またこの方式では仮想記憶と実記憶の対応付けはページテーブルという表により管理され、これにより仮想記憶上と実記憶上のどのページが結びついている確認できる。
補助記憶から実記憶へのページ読み込みはページインと呼ばれます。またページインしようとしても実記憶がいっぱいの場合いずれかのページを補助記憶に追い出して空きを作る必要がある。実記憶から補助記憶へとページを追い出すことはページアウトと呼ばれる。
実記憶の容量が少ないとページの置き換えをする頻度が高くなりシステム利用効率が極端に低下する。この現象はスラッシングと呼ばれる。
ページの置き換えアルゴリズム
方式 | 説明 |
---|---|
FIFO | 最初にページインしたページを追い出し対象にする |
LIFO | 最後にページインしたページを追い出し対象にする |
LRU | 最も長い時間参照されていないページを追い出し対象にする |
LFU | 最も参照回数の少ないページを追い出し対象にする |
ページングとスワッピング
スワッピング ・・・ プロセス単位で領域の出し入れを行う
ページング ・・・ ページ単位で領域の出し入れを行う
2.2. ファイル管理
2.2.1. ファイルの正体
ファイルはデータを一つの集まりとして記録するための単位である。
2.2.1.1. データの種類と代表的なファイル形式
ファイル形式 | 説明 |
---|---|
テキスト形式 | 文字コードと改行やタブなど一部の制御文字のみで作られるファイル形式 |
CSV形式 | テキスト形式のファイルの一種で、個々のデータである機種やOSの種類のよらず文字や数字をカンマで区切り行と列を改行で区切ることで表形式のデータを保持することに特化したファイル形式。 |
画像が埋め込まれた書類をコンピュータの機種やOSの種類によらず、元の通りに再現して表示することができる電子文書のファイル形式。 |
画像用のファイル形式
種類 | 説明 |
---|---|
BMP | 画像を圧縮せずにそのまま保存するファイル形式 |
JPEG | 画像圧縮保存形式、フルカラーが扱え圧縮率が高く、不可逆圧縮なため画質が劣化する |
GIF | 画像圧縮保存形式、可逆圧縮であり、扱える色数が256色という制限がある |
PNG | 画像圧縮保存形式、フルカラーが扱え可逆圧縮であり画像の劣化もない、圧縮率はJPEGが良い |
音声用のファイル形式
種類 | 説明 |
---|---|
MP3 | 音声を圧縮し保存する形式、人に聞こえないレベルの音を削減するなどをして不可逆の圧縮を行う |
WAV | 録音したそのままの状態と同じ音質を保ったファイル形式、非圧縮 |
MIDI | デジタル楽器の演奏データを保存できるファイル形式 |
動画用のファイル形式
種類 | 説明 |
---|---|
MPEG | 不可逆圧縮で動画を保存するファイル形式、ビデオCDにはMPEG-1、DVDにはMPEG-2、コンテンツ配信にはMPEG-4が用いられる |
MP4 | MP4はMPEG4と音声のMP3を結合して格納しているファイルである |
2.2.1.2. マルチメディアデータの圧縮・伸張
画像や音声、動画等のマルチメディアデータはそのままであると膨大なデータ量となる。そのため通常は圧縮技術を用いてデータサイズを小さくし保存されるのが一般的である。
非可逆圧縮はデータを間引く形で圧縮したものであり、伸張しても元の同じデータになりません。逆に可逆圧縮は伸張したら元のデータに戻すことができる。
2.2.2. ディレクトリ
ディレクトリはファイルをグループ化して整理するものであり、補助記憶装置中はディレクトリで管理される。
2.2.2.1. ルートディレクトリとサブディレクトリ
ディレクトリ中にはファイルだけではなく他のディレクトリも入れられる。 補助記憶装置全体に階層構造を持たせて管理することが可能である。
- ルートディレクトリ ・・・ 階層の一番上位に位置するディレクトリ
- サブディレクトリ ・・・ 他のディレクトリに含まれるディレクトリ
2.2.2.2. カレントディレクトリ
コンピュータが現在開いて作業しているディレクトリはカレントディレクトリと呼ばれる。
また、カレントディレクトリの1階層上のディレクトリは親ディレクトリと呼ばれる。
2.2.3. ファイルの場所を示す手段
ファイルの場所はファイルパスを用いて示す。このファイルまでの場所を示す経路はパスと呼ばれる。 パスにはルートディレクトリからの経路を示す絶対パスとカレントディレクトリからの経路を示す相対パスが存在する。
2.2.3.1. 絶対パスの表記
- ルートディレクトリは「/」or「\」で表す
- ディレクトリの次の階層は「/」or「\」で区分する
2.2.3.2. 相対パスの表記
- ディレクトリの次の階層は「/」or「\」で区分する
- カレントディレクトリは「.」で表す
- 親ディレクトリは「..」で表す
2.2.4. 汎用コンピュータにおけるファイルの扱われ方
汎用コンピュータにとってのファイルは一連のデータをまとめたものであり、レコードの集合がファイルである。
汎用コンピュータのOSがどのようにレコードを格納するかを定義づけたファイル構成法をいくつか用意している。
2.2.4.1. ファイルへのアクセス方法
アクセス方式 | 説明 |
---|---|
順次アクセス | 先頭レコードから順番にアクセスする方法であり、シーケンシャルアクセスと呼ばれる。 |
直接アクセス | 任意のレコードに直接アクセスする方法であり、ランダムアクセスと呼ばれる。 |
動的アクセス | 順次アクセスと直接アクセスを組み合わせた方法で、任意のレコードに直接アクセスした後以降、順次アクセスで順番に処理する。 |
2.2.4.2. 順編成ファイル
先頭から順番にレコードを記録していくのが順編成ファイル。もっとも単純な編成法で順次アクセスのみが可能である。
2.2.4.3. 直接編成ファイル
レコード中のキーとなる値を利用することで任意のレコードを指定した直接アクセスを可能となる編成法。
直接アクセス方式と間接アクセス方式があり、キー値から格納アドレスを求める方法が異なる。
直接アクセス方式
キー値の内容をそのまま格納アドレスとして用いる方式。
間接アドレス方式
ハッシュ関数という計算式によりキー値から格納アドレスを算出して用いる方式。
またハッシュ関数での計算値が一致し異なるレコードが同じアドレスで衝突する現象はシノニムと呼ばれそれが起こるレコードはシノニムレコードと呼ばれる。
2.2.4.5. 索引編成ファイル
索引を格納する索引域とレコードを格納する基本データ域、そこからあふれたレコードを格納する溢れ域の3つの領域から構成される。
索引による直接アクセスと先頭からの順次アクセスに対応した編成法である。
2.2.4.6. 区分編成ファイル
メンバと呼ばれる順編成ファイルを複数持ち、それらを格納するメンバ域と各メンバのアドレスを管理するディレクトリ域で構成される編成法。
これはプログラムやライブラリを保存する用途によく使われる。