【OSの管理機能】プロセス・記憶・ファイル・入出力の全管理機能を解説!

【OSの管理機能】プロセス・記憶・ファイル・入出力の全管理機能を解説!
ハテオ君

OSの具体的な機能についてしっかりりかいしたいな。でも全くりかいできない...。

今回はこの悩みを解決します!

今回の記事テーマ

OSの管理機能と全種類の特徴をわかりやすく徹底解説!

コンピュータは五大装置で構成されています。その五大装置を管理しているソフトウェアがOSになります。

そんなOSの管理機能では様々な機能と方式を使い効率よく各装置を管理しています。

コンピュターを使うことが当たり前になった現代では、OSに関しての知識を身に付けておくべきだと思いますので、今回の記事を参考にOSの管理機能を身に付けていきましょう。

本日の記事内容

記事の最後には、今回の内容に関しての確認問題も用意していますので、インプットとアウトプットとしても是非活用してみてください。

元中卒の自分が、誰でも理解できるように開設していきます。

それでは早速見ていきましょう。

黄島 成

OSの管理機能

OSの管理機能

コンピュターは、五大装置によって構成されており、この五大装置を管理しているのが「OS」になります。

それではまず、五大装置とOSの関係性から解説していきます。

五大装置とOSの関係性

コンピューターの五大装置は、OSによって管理されています。

五大装置とOSの管理図

OSの管理機能

  • プロセス管理
  • 記憶管理
  • ファイル管理
  • 入出力管理

それぞれ順番に詳しく見ていきましょう。

①:プロセス管理

1.プロセス管理

プロセス管理は、コンピュータと内部処理と入出力処理を管理する役割を担当します。

例えば、目的の料理を完成させるには様々な工程(プロセス)が必要です。

コンピュータも一緒で、利用するユーザーの目的を達成するために様々な方式を使って情報を処理します。

ジョブ管理とタスク管理

基本ソフトウェア(OS)は、ハードウェアとソフトウェアの仲介役としての役割を担当しています。

基本ソフトウェア(OS)の機能

  • ジョブ管理
  • タスク管理

上記2つの単位でOSは情報を処理していきます。

ジョブ管理とタスク管理の図
  • ジョブ=人間がOSに与える仕事の単位
  • タスク=OSが内部で行う仕事の単位

タスクは別名「プロセス」とも呼ばれます。

プロセス管理の目的

プロセス管理は、処理効率向上を目的としてCPUと入出力装置を管理をしています。

プロセス管理の目的

  • 処理速度の向上
  • 平均応答時間の短縮
  • タスク間の公平な資源の割り当て
  • 応答時間が予測可能性を上げる

この目的を果たすために、「スプーリング」と呼ばれる機能が活躍します。

スプーリング

スプーリングとは、入力装置やCPUなどの処理効率向上を図るための機能です。

具体的には、入出力データを一時的に補助記憶装置に蓄え、CPUや出力装置の空き時間に処理する機能のことを指す。

CPUと入力装置では処理速度に大きな差があります。

  • CPU=処理速度が早い
  • 入出力装置=処理速度が遅い
スプーリング図

例えば、仕事の場面で考えてみましょう。

  • パターンA
    上司が仕事を依頼→部下は仕事が一杯
  • パターンB
    上司が仕事を依頼→リーダーが仲介し順番に仕事を依頼→部下が順番に仕事を行う

どちらの方が効率よく仕事を行えますか?もちろん後者の方だと思います。

このように、CPUが低速の入出力装置の処理速度に合わせてしまうと、遊び時間が増え処理速度が落ちてしまいます。

そのため、その処理速度を落とさず処理効率を上げるために「スプーリング」が存在します。

スプーリング=「タスクを一旦磁気ディスクなどに預けて処理速度を効率化する」

タスクの状況遷移

タスク管理において、タスクは生成されてから様々な状態へと遷移します。

  • 実行可能状態(Ready)
    CPUの使用権が与えられるのを待ってる状態
  • 実行状態(Run)
    CPUの使用権が与えられ、実行している状態
  • 待ち状態(Wait)
    他のタスクが入出力装置を使用しているので、終了するのを待っている状態

上記の3つの状態を移り変わりながら実行され、最後に消滅します。以下図を参考に。

タスクの状況遷移

タスクの流れ

  • タスクが生産されまず実行可能状態になり、使用権が与えられると実行状態へ移動
  • 実行中に別の優先順位が高いタスクが実行可能状態になると、割り込みが発生し優先順位の高いタスクにCPUの使用権が与えられ、現在実行状態のタスクは実行可能状態へ移動
  • また、実行状態中の入出力待ちが生じた場合、入出力処理が終了するまで待ち状態となる
  • 入出力が終了すれば実行可能状態に移動

ディスパッチャ

タスク管理の機能では、実行可能状態にあるタスクの中から次に実行すべきタスクにCPUの使用権を与えて、実行状態にします。

この流れを担当するプログラムを「ディスパッチ」と呼ぶ。また、実行可能状態にすることを「ディスパッチャ」と呼ぶ。

ディスパッチャとディスパッチ図

ディスパッチとデスパッチャ

ディスパッチ=実行可能状態から実行状態にすること

ディスパッチャ=実行可能状態にするプログラム

複数のタスクの中からどのタスクにCPUの使用権を与えるかを決める方式として以下方式が使われます。

  • 優先度方式
  • ラウンドロビン方式

優先度方式

優先度方式は、優先度の高いタスクからCPUの使用権を与える方式です。別名「プライオリティー方式」とも呼ばれる。

優先度方式(プライオリティー方式)図

ラウンドロビン方式

ラウンドロビン方式は、CPUの処理時間を細分割し、一定の時間が経過すると順番にCPUの使用権を与えていく方式です。

ラウンドロビン方式図

マルチプログラミング(多重プログラミング)

マルチプログラミングとは、プログラム実行中にCPUが待ち状態の時、CPUをほかのプログラム実行に割り当てる方式です。別名「マルチタスク」とも呼ばれています。

一言で言えば、CPUの無駄なく有効活用する方式です。

「あの人はマルチタスクに仕事ができるから優秀だな!」と、マルチタスクという言葉は仕事の場面でも使われますよね。

つまり「複数のことが同時にできる」と意味を持っています。

それでは、CPUとプリンターの処理の例題で考えてみましょう。

例題

AとBの2つのプログラムがあります。

それぞれを単体で実行した時のCPUとプリンターの占有時間を以下の図の通りです。

プログラムA、B図

プログラムA、Bを1台のCPUで同時に起動した時、プログラムBが終了するのは何ミリ秒後となるでしょうか?

ここでのプログラム実行などの条件は以下通りです。

  • プログラム実行優先度はAのほうがBより強い プログラムA、Bは同一の入出力装置を使用
  • CPU処理を実行中のプログラムは、入出力処理を開始するまでは実行を中断されない
  • プリンターも入出力処理が終了するまで実行を中断されない
  • CPU処理の切り替え(タスクスイッチ)に必要な時間は無視できる

この例題の場合はまず、優先度が高いプログラムAから考えていきます。

プログラムAが単体の場合は実行終了までに120ミリ秒かかります。

マルチプログラミング(多重プログラミング)図①

プリンターが処理を行っている間はCPUに待ち時間となります。この時間を「アイドルタイム」と呼ぶ。

このままCPUを待たせると効率が悪いので、その間にプログラムBを実行させます。

マルチプログラミング(多重プログラミング)図②

つまり答えは、プログラムBが終了するのは起動の160ミリ秒後となります。

ここでは理解しやすくするために個別で考えましたが、実際にはあたかも同時に実行しているかのよう並行しながら処理を行っています。

そのためマルチプログラミングとは、見かけ上複数のタスクを並行に実行しCPUの有効活用をする処理方式です。

ちなみにマルチプログラミングには以下2種類の方式があります。

  • プリエンティブ
  • ノンプリエンティブ

プリエンティブ

プリエンティブとは、OSがタスクにCPUの使用権を与える方式です。

このプリエンティブが現在主流となっています。

プリエンティブ図

優先度の高いタスクと実行状態のタスクを入れ替える方式です。

ノンプリエンティブ

ノンプリエンティブとは、タスクが自発的に使用後のCPUを開放する方式です。 

ノンプリエンティブ図

デスパッチャを利用する方式を「プリエンティブ」利用しない方式を「ノンプリエンティブ」と覚えておきましょう!

割り込み処理

割り込みとは、実行中のプログラムを一時中断し、優先される別の処理に切り替える処理です。

  • 割り込みが発生した場合
    実行していた次の命令アドレスが退避され、割り込み処理が実行される。
  • 割り込み処理が完了した場合
    退避されていたアドレスが復帰され、割り込み直前のプログラムが再開される。

例えば、読書をしている時に電話がかかってきた読書を一旦中断しないといけないですよね。

読書中に電話が鳴った場合

  • 一旦読しおりを挟む
  • 電話に出る
  • 要件を話し電話を切る
  • しおりを挟んでいた箇所から読書を再開

この様に何かをやっている時に邪魔が入ることを割り込み」と言います。

上記と同じように、実行中のプログラムに割り込みが発生した場合は以下流れになります。

  • 割り込みが発生
  • 実行中のアドレスを退避
  • プログラム再開

割り込みが発生した場合は上記の流れでプログラムを処理していきます。

ちなみに割り込みには、主に以下2種類の原因があります。

  • 内部割り込み
  • 外部割り込み

内部割り込み

内部割り込みは、実行中のプログラムが原因で起こる割り込み

具体的には、プログラムの処理やエラーによって発生します。

内部割り込みの種類一覧

割り込み概要
プログラム割り込みゼロによる助産、桁あふれ(オーバーフロー)、ページのアクセス、不正な命令実行、などが発生した時に起こる割り込み。
SVC(スーパーバイザコール)割り込みアプリケーションがOSに入出力を要求した時などに起こる割り込み。

※スクロール可

外部割り込み

外部割り込みは、実行中のプログラムに関係なく起こる割り込み。

具体的には、周辺機器やプログラム以外によって発生します。別名「ハードウェア割り込み」とも呼ばれる。

外部割り込みの種類一覧

割り込み概要
機械チェック割り込み主記憶装置の障害、電源の異常、ハードウェアの故障などが起こる割り込み。
入出力割り込み入出力動作が終了したときに起きる割り込み。
タイマ割り込みプログラムの実行時間が設定時間を超過した時に起きる割り込み。
コンソール割り込みオペレータが介入したときに起こる割り込み。

※スクロール可能

②:記憶管理(実記憶と仮想記憶)

2.記憶管理(実記憶と仮想記憶)

記憶管理では、CPUと主記憶装置を管理する役割を担当しています。

プログラムをCPUが実行するためには、「命令・データ」をCPUがすぐに取り出せる場所に置いておく必要があります。

そのために、すぐ取り出せる場所として存在するのが主記憶装置(メモリ)です。 

CPUと主記憶装置図

CPUとOSは、主記憶装置(メモリ)を効率よく管理するために様々な方式を利用しています。

それでは記憶管理について詳しくみていきましょう。

実記憶管理

実記憶管理では、主記憶装置(メモリ)にあるプログラムを効率的に配置し、メモリを有効に利用する機能を担当しています。

別名「プログラム記憶方式・プログラム内蔵方式」とも呼ばます。

実記憶管理の機能

  • ロード プログラムは磁気ディスクなどの補助記憶に保存され、実行時に主記憶上に読み込まれる。
  • 主記憶の解放 プログラムの実行が完了すると主記憶装置にあるプログラムを削除する。
  • 複数のロード マルチプログラミングでは、複数のプログラムを読み込む。
  • プログラムの割り当て 容量内でプログラムを、とある場所と様々な方式を使って割り当てる。
実記憶管理図

実記憶管理で使われる方式

  • リスト
  • 固定区画方式
  • 可変区画方式
  • スワッピング方式
  • オーバーレイ方式

順番に見ていきましょう。

固定区画方式

固定区画方式は、主記憶を予め一定の大きさも区画に分割して、各プログラムは収まる大きさの区画に読み込む方式です。

プログラムの読み込み後、区画の余った領域は使用されないです。

固定区画方式

この固定区画方式では、読み込むプログラムの数に応じて以下2つの方式に分かれます。

  • 単一区画方式
  • 多重区画方式

単一区画方式

単一区画方式は、メモリを1つの区画とし、その区画にプログラムを読み込む方式です。

単一区画方式

特徴としては、1つのプログラムしか読み込まれないため、複数のプログラムの読み込みは不可能。

多重区画方式

多重区画方式は、メモリを一定の大きさの区画に分割して、区画ごとにプログラムを読み込む方式です。

多重区画方式

特徴としては、均等なサイズとは限らず様々な組み合わせが可能。

しかし区画よりも大きなプログラムを読み込み実行することは不可能です。

可変区画方式

可変区画方式は、各プログラムが必要とする大きさの区画に応じて、メモリ上の区画を変えることでメモリを有効活用する方式です。

可変区画方式図

区画は可変になり、余った領域を使用することが可能になります。しかし、この方式では「フラグメンテーション」と呼ばれる問題が発生します。

ここフラグメンテーション=メモリの断片化

具体的には、可変区画方式はプログラムが必要とするサイズがそれぞれ異なるため、OSが主記憶領域の獲得と解放を繰り返します。

その繰り返しにより細切れの未使用領域が多数発生します。

この現象をフラグメンテーションと呼びます。

フラグメンテーション図

このフラグメンテーションにより、主記憶装置(メモリ)の空き領域が十分あったとしても、以下2点の問題が発生します

  • 記憶領域の連続した空きスペースの不足
  • 新たにプログラムを読み込むことが不可能

フラグメンテーションを解消するためには「ガページコレクション」という処理が必要となります。

ガページコレクション(メモリコンパクション)

フラグメンテーションを解消するためには、読み込まれたプログラムを再配置し、記憶領域の連続した空きスペースの確保が必要。

この処理を担当するのがガページコレクションです。別名「メモリコンパクション」とも呼ばれます。

ガページコレクションは、メモリ断片化の未使用領域を連続した1つの領域にまとめ、再び利用可能にする処理を行います。

ガページコレクションとメモリコンパクション図

また、アプリケーションやOSのバグなどが原因で、動作中に確保した主記憶が解放されないことがあります。
これを「メモリリーク」と呼びます。

メモリリーク図

メモリリークが発生すると、主記憶中の利用できる部分が減少します。

メモリリークを解消するためには、ガベージコレクションを行うか、再起動をする必要があります。

最近は、スマートフォンでも「メモリリーク」はよく多発していますね。

オーバーレイ方式

オーバーレイ方式とは、プログラムを同時に実行しない複数の部分(セグメント単位)に分割し、実行時に必要な部分だけを主記憶装置(メモリ)に読み込む式です。

一言で言えば、必要なものだけ呼び出すイメージです。

例:以下のセグメントA~Cがあるとします。

  • セグメントA=必要な部分
  • セグメントB=必要な部分
  • セグメントC=必要な部分
  • セグメントD=必要ない部分
オーバーレイ方式図

プログラム全体を主記憶上にロードすると32Mバイト必要です。しかし、主記憶の記憶容量は27Mバイトなので全てをロードできません。

この時に、ロードするプログラムをセグメント単位に分けておくことで、必要のないDを残して必要なA、B、Cを27Mバイトでロードすることが可能です。

つまりオーバーレイ方式は、大きなプログラムを小容量の主記憶上で実行させる技術。

家電製品等に組み込まれて動作するプログラムでよく利用されています。

仮想記憶管理

仮想記憶管理とは、実際の容量より大きな記憶空間(仮想記憶)を作り出し、見かけ上高速で大容量のアドレス空間を作り出す仕組みです。

具体的には、高速で小容量の主記憶装置(実記憶)に比べ、低速で大容量の磁気ディスク(仮想記憶)を組み合わせることで大容量のデータを使用できるようになります。

簡単に言えば、主記憶と補助記憶を合わせて巨大なスペースを作るイメージです。

現代のOSはほとんどこの仮想管理システムを採用しています。

仮想記憶管理図

仮想記憶システムは、アドレスが仮想アドレスで扱われるため、主記憶上(実記憶)へロードするときに実アドレスへの変換が必要になります。

この変換には『動的アドレス変換機構(DTM)』と呼ばれるハードウェアで行います。

仮想記憶管理システムでは、以下2つの方式を使い仮想記憶管理を行います。

  • ページング方式
  • ページ置き換えアルゴリズム

ページング方式

ページング方式では、プログラムをページと呼ばれる固定長に分割し、仮想記憶と実記憶に効率的に配置する方式です。

仮想記憶管理では最も代表的なものです。

ページング方式の概念としては大きなプログラム実行でも、ごく短い時間を見れば必要なのはほとんど1部のみである」を利用したものです。

ページング方式でのプログラム実行の流れ

  • 主記憶とプログラムをページ単位に分割。
  • 実行に必要なページを補助記憶から主記憶にロード。(ページイン)
  • 必要なページが主記憶上にない場合、ページ不在の割り込み(ページフォルト)が発生。
  • 補助記憶から主記憶上の空きスペースにロード。(ページイン)
  • どんどんロードしていくと、主記憶に空きスペース不足が発生。
  • ページ置き換えアルゴリズムに従い、置き換え対象のページを決定。
  • 実行に必要のないページを補助記憶に退避。(ページアウト)
  • 実行に必要なページを主記憶上にロード。(ページイン)

ページング方式図

ページインとページアウトを総じて『ページング(スワッピング)』と呼びます。

また、ページング方式では、ページの置き換えの発生頻度が高くなり、システムの処理能力が急激に低下することがあります。

このような重くなってしまう現象を「スラッシング」と呼びます。

ちなみに、スワッピングは主記憶と補助記憶の内容の入れ替えの意味で広く使われることもあります。

ページ置き換えアルゴリズム

ページ置き換えアルゴリズムとは、不要なページと必要なページを置き換える処理を行う方式です。

このようにページを置き換えることを「ページリプレースメント」と呼びます。

不要なページを決定する方法には、以下のようなものがあります。

  • 一番古くから存在するページを置き換える方式
  • 最後に参照されてからの経過時間が最も長いページを置き換える方式
  • 参照回数が最も少ないページを置き換える方式

それでは例題で考えてみましょう。主記憶の状態は以下通りだと仮定します。

  • ページ枠(実記憶のページ数)は3
  • まだ何も読み込まれていない状態

【プログラムの参照順序】

  • 1→2→2→1→3→1→4

最後の4のページを参照されるとして考えてみましょう。

ページ置き換えアルゴリズム図

FIFO方式の場合

一番古くから存在するページを置き換えるので、追い出されるページは「1」となります。

LRU方式の場合

最後に参照されてからの経過時間が最も長いページを置き換えるので、追い出されるページは「2」となります。

LFU方式の場合

参照回数が最も少ないページを入れ替えるので、追い出されるページは「3」となります。

③:ファイル管理

3.ファイル管理

ファイル管理では、HDDなどの大容量の補助記憶装置を効率的に使うための管理システムです。 

プログラムやデータをコンピューターで使う場合、どこかに保存をしておかないといけません。

保存先は「HDD・USB・CD」といった補助記憶装置(RAM)が利用されます。

ファイル管理の目的

  • データの整理整頓
  • 効率的な保存
  • 効率的な取り出し

ファイル管理は、上記3つを目的とし効率的にデータとプログラムを管理していきます。

それでは、ファイル管理について詳しく見ていきましょう。

ディレクトリ

コンピューターに保存されているデータやプログラムは、ファイル形式で管理されています。このファイルが管理されていることを「ディレクトリ」と呼びます。

ディレクトリ図

上記のように、ディレクトリは階層構造になっており、この構造を「ディレクトリツリー」と呼びます。

ちなみ、WindowsやMac OSの場合ディレクトリは「フォルダ」と呼ばれます。

MS-DOSやUNIXのOSは、プログラムやデータをファイル単位で格納し、さらにファイルをディレクトリの階層構造で管理しています。

ディレクトリの種類

  • ルートテディレクトリ
  • サブディレクトリ
  • カレントディレクトリ

ルートディレクトリ

ルートディレクトリは、改装構造の最上位にあるディレクトリを指します。

ルートディレクトリ図

サブディレクトリ

サブディレクトリは、ディレクトリの下位に作成されたディレクトリを指します。

サブディレクトリ図

カレントディレクトリ

カレントディレクトリは、現在操作対象としているディレクトリを指します。

カレントディレクトリ図

パス指定

目的とするサブディレクトリやファイルまでの道筋を「パス」と言います。

目的ファイルを参照したい場合「どのディレクトリに保存されているか?」「ファイル名は何か?」を指定する必要があります。

目的のファイルの位置を指定する方法として、ファイル管理では「パス指定」を採用しています。

パス指定の種類

  • 絶対パス指定
  • 相対パス指定

絶対パス指定

絶対パス指定とは、ルートディレクトリを起点としたパス指定です。

例えば、ルートディレクトリから目的ファイルの「革命.html」までの道筋を絶対パス指定で表すと、下記図の通りです。

絶対パス指定図

パス名の先頭に『/』がある場合、ルートディレクトリとなっています。

中間に『/』がある場合、ディレクトリ名またはファイル名の区切りを表しています。

また、OSによっては『/』ではなく『\』を用いる場合もあります。

相対パス指定

相対パス指定とは、現在操作しているディレクトリ(カレントディレクトリ)を起点としたパス指定です。

カレントディレクトリを『next』とすると、目的ファイルの『革命.html』までの道筋の相対パス指定は下記図の通りです。

相対パス指定図

カレントディレクトリを『child』とし、目的ファイルを『研修.html』にすると、相対パス指定は以下記図の通りです。

相対パス指定図②

ここで1階層上のディレクトリに移動するときは『...』で表します。

④:入出力管理

4.入出力管理

入出力装置管理とは、コンピュータ本体と入出力装置との間の入出力の管理の事を指します。

入出力方式には「OS全体での標準的な入出力方式」「装置ごとの固有の処理を仲介する方式」があります。

装置ごとの固有の処理のアダプタとなるプログラムを「デバイスドライバ」といいます呼ぶ。

入出力管理図

データの入出力2つの機能

  • バッファリング(buffering)
  • スプーリング(spooling)

バッファリング(buffering)

バッファリング(buffering)とは、バッファを経由させることによって、コンピュータ本体と入出力装置を並行処理させて性能を向上させる方法です。

バッファ(buffer:保存領域)とは入出力のためのメモリ上に確保される領域の事です。

スプーリング(spooling)

スプーリング(spooling)とは、プリンタなどの低速な装置の入出力データを、高速な外部記憶装置を経由させることによって性能を向上させる方法です。

入出力制御方式

各種の入出力装置を効率よく動作させる方式として以下3つの方式が使われます。

  • プログラム制御方式
  • DMA(Direct Memory Access)方式
  • チャネル制御方式

プログラム制御方式

プログラム制御方式では以下の流れで処理を行います。

  • プログラム中の入出力命令を実行
  • レジスタを経由
  • メモリと入出力装置間でデータをやり取り

低速な入出力処理の間、CPUが待機されます。

DMA(Direct Memory Access)方式

DMA方式とはプログラムが入出力命令を実行した際、DMAコントローラという専用のハードウェアが「メモリ 」「入出力装置」 間のデータをやり取りします。

CPUと入出力装置が並行処理されます。

チャネル制御方式

チャネル制御方式では、チャネル制御装置という専用のプロセッサが以下の処理を行います。

  • メモリ上のチャネルプログラムを解読
  • 一連の入出力命令とCPUを並行処理

チャネル=入出力や通信のためのデータの通路のことです。

今回のまとめ&確認問題

【図解】OSの管理機能を徹底解説!タスク|記憶|ファイル|入出力|【中級編⑨】まとめ

OSの管理機能については上記内容で以上となります。

それではまず今回の内容をまとめていきましょう。

まとめ

  • OSは、コンピュータの五大装置を管理する機能を担当する
  • タスク管理では、コンピュータと内部処理と入出力処理を管理する役割を担当
  • 記憶管理では、メモリにプログラムを効率的に配置しメモリの有効活用を担当
  • ファイル管理では、「データの整理整頓・効率的な保存・効率的な取り出し」を担当
  • 入出力管理では、コンピュータ本体と入出力装置との間の入出力の管理を担当

今回の確認問題「アウトプット用」

確認問題

ソフトウェア確認問題②

「次へ」で問題スタート!

①解説

【問題①】

スプーリング機能の説明として、適切なものはどれか。

:あるタスクを実行しているときに、入出力命令の実行によってCPUが遊休(アイドル)状態になると、ほかのタスクにCPUを割り当てる。
不正解× マルチタスクの説明
:実行中のプログラムを一時中断して、制御プログラムに制御を移す。
不正解× 割込みの説明
:主記憶装置と低速の入出力装置との間のデータ転送を、補助記憶装置を介して行うことによって、システム全体の処理能力を高める。
正解○
:多数のバッファからなるバッファプールを用意し、主記憶にあるバッファにアクセスする確率を上げることによって、補助記憶装置のアクセス時間を短縮する。
不正解× ディスクキャッシュの説明

【解説】

スプーリングとは、入力装置やCPUなどの処理効率向上を図るための機能です。

具体的には、入出力データを一時的に補助記憶装置に蓄え、CPUや出力装置の空き時間に処理する機能のことを指す。

つまり答えは「」となる。

②解説

【問題②】

優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで、二つのタスクA、Bをスケジューリングする。Aの方がBより優先度が高い場合にリアルタイムOSが行う動作のうち、適切なものはどれか。

:Aの実行中にBに起動がかかると、Aを実行可能状態にしてBを実行する。
不正解× Aの実行が継続される
:Aの実行中にBに起動がかかると、Aを待ち状態にしてBを実行する。
不正解× Aの実行が継続される
:Bの実行中にAに起動がかかると、Bを実行可能状態にしてAを実行する。
正解○
:Bの実行中にAに起動がかかると、Bを待ち状態にしてAを実行する。
不正解× Bは実行可能状態に移される

【解説】

プリエンティブとは、OSがタスクにCPUの使用権を与える方法で、現在主流の主流の処理方式となっています。

具体的には、優先度の高いタスクと実行状態のタスクを入れ替える方式です。

つまり答えは「」となる。

③解説

【問題③】

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

ジョブ実行時間印刷時間
A5050
B3040
C2030
D4020

:100
:160
:190
:280

【解説】

CPU  :A(50)→B(30)→C(20)→D(40)
プリンタ:    A(50)→B(40)→C(30)→D(20)

設問の条件に従い、時間の経過に伴うCPUとプリンタの占有状態を分析すると上記のようになります。

問題ではプリンタの印刷が完了するまでの時間を問われている為以下の計算になる。

50(CPUのA)+50(プリンタのA)+40(..B)+30(..C)+20(..D)=190

つまり全ての印刷が完了するのは開始から190秒後の「」という答えになります。

最後まで読んでいただきありがとうございました!

今回の内容が、役に立ったな!と思ったらシェア&ブクマ登録よろしくお願いします。

また、質問や問い合わせに関しては、コメント欄かお問い合わせフォームを活用ください。

それではまたお会いしましょう。

黄島 成

-ソフトウェア
-