基本情報技術者試験

よく聞くOSってなに?

ぼく

こんにちは、まさとです。

ぼく

CPUをも支配してしまうOSについて
解説していきます!

ぼく

OSって聞いたことありますか?

悩む人

なんかスマホとかで
OSアップデートあるよね

ぼく

そうですね、
Android、IOSなどスマートフォンに
使われているものもあります。

そもそもOSとは

1番基本的なところにあるもの
普遍的な機能を提供します。


例えば

CPUをどんなふうに使うか、
どんなふうにデータを保存するのか、


などです。


例としてはよく聞く
Windows/Mac/UNIXなどがあります。


みなさんが使っているスマートフォンにも
Android/IOSといったOSが搭載されています。


またOSの核となるカーネルという考え方があります。
カーネルとはOSの1番中心的な仕事をします。

OSのお仕事

CPUを有効に活用するにはどうすればいいか。
どのような順番でタスクを実行すべきか。
どのようにタスクを切り替えるか。
限られたメモリ領域をどのように使うか。


他にもたくさんありますが
上記を考えるのがOSのお仕事です。

タスク状態遷移

私たちがなんらかの働きかけをして
タスクが生成されると
実行可能状態になります。

すると、ディスパッチャという部分が
このタスクを実行してねと割り当てをしてくれ、
実行中になります。

実行中で終わればタスク消滅でいいんですが
一つのタスクだけをやるということは少ないです。

例えばYouTubeみながらレポート書きたいですよね。
あれはいくつかのタスクを同時に実行しています。

ただ本来はいくつかの計算しか同時にできません。

ハードウェアさんからしたら
YouTubeとレポート一緒に書くなんて
パンクしちゃうよくらいの気持ちです。

ただそこにCPUが入って
指示出ししてくれることにより
タスクをうまく分割しています。

お前はここで待っとけ、
この方が作業するんだから的な
事を高速でやってくれているので

僕たちの目には同時に
行われているように見えるんですね。

タスクの切り替え方

悩む人

状態遷移は分かったけど
それをどうやって切り替えてるの??

ぼく

タスクを切り替えるには二つ方法があるので
一つずつ見ていきましょう。

イベントドリブン(割り込み)

状態変化を起点にして
タスクの切り替えを行うものです。

例えばパソコンからPDFを印刷したいとします。

印刷したいという処理を
パソコンに渡してそれをプリンタに
パソコンが渡してくれます。

ただ、プリンタというのは
実行速度が非常に遅いため
終わるのを待っていられません。

プリンタに命令を投げたら
そのタスクを待ち状態にして
違う処理に取り掛かります。

プリンタの実行が終わったところで
またその処理に戻ってくるというわけです。

つまり実行中でも途中やめして
他のタスクに移れるということです。

悩む人

なんて浮気者なんだ!

これをプリエンティブ
スケジューリング方式と言います。

タイムスライシング

名前の通り時間で区切って
タスクを実行する方法です

10秒経ったら次のタスクといった感じで
タスクが終わってなくても問答無用で
次に行ってしまいます。

つまり一度実行すると
最後までやり遂げるということですね。

悩む人

プリエンティブのやつと違って
男らしいぜ!

これをノンプリエンティブ
スケジューリング方式と言います。

今のOSは上二つの
イベントドリブンとタイムスライシングを
組み合わせて構成されています。

割り込みの種類

上記の浮気者であるイベントドリブンの浮気の仕方
つまり、割り込みするための
トリガーもいくつかあるので
そちらを解説しますね。

割り込みというのは
実行しているタスクに対して
「あー、ちょっとまって」と
違うプログラムが言ってきたり


実行しているプログラム自身が
エラー発生したから「ちょい待ち」
と言ってきたりすることを言います。

外部割り込み

タイマ割り込み

時間制限による割り込み

実行に対してタイムスライシングのように
時間制限をかけて実行するときに
時間が来たら「もう終わりですよー」と
言ってくれるのがタイマ割り込みです。

機械チェック割り込み

ハードウェアの異常による割り込み

機械になんらかの異常が出てしまったときに
起こる割り込みです。

機械が壊れたので「ちょっと待ってねー」
と言って実行を止めることをいいます。

入出力割り込み

言葉の通り使っている人が入力したり
出力処理が終わったときに
割り込むことです。

処理途中に中断というボタンを
押したりしたら処理が止まりますよね。

それが入出力割り込みです。

内部割り込み

スーパーバイザコール割り込み

OSに対してお願いをする割り込みです。

これだけプログラム自身が意図して行う割り込みです。

上司に対してこれやっていいですか。
と許可をとる感じで
OSに対してこの処理やっていいですかと聞いているんですね。

ページフォールト割り込み

簡単にいうと
目的データがちょうどいいところになかったので
探してくるのでちょっと待ってねというのが
このページフォルト割り込みです。

プログラム割り込み

プログラム自体にエラーが発生したときに
実行できないので発生するのが
プログラム割り込みです。

最後に

いかがだったでしょうか。

今回の内容をまとめます。

✔️本記事のまとめ
  • OSのお仕事とは
  • タスクの状態遷移
  • タスク切り替えの方法
  • 割り込みの種類
ぼく

お疲れ様でした。

悩む人

OSってのがいい仕事してやがるな

ぼく

CPUが最強と思っていたのに
それを支配している
裏ボス的な存在ですね。

今回はOSとはどういうものか
ということを解説してきました!

まだまだOSにはタスクスケジューリングなど
覚えることはいっぱいなのですが
それはまた次の記事で、、、

ぼく

以上、まさとでした。