はじめに
基本情報の勉強に伴い、学習した部分(ソフトウエア_OS)の内容となります。
OSについて
コンピュータのデバイスを管理・制御するソフトウエア
ハードウェア上にOS→API・ミドルウェア→アプリケーション・ソフトウェアの順番に乗っているイメージとなる
アプリケーション・ソフトウエア:様々な機能を提供する
API・ミドルウェア:アプリケーションソフトウエアとOSをつなぐ役割
OS:機能(入出力管理・ファイル管理・タスク管理・メモリ管理・周辺機器管理)を提供する(OS例:Windows、MAC、UNIX等)※カーネルという中枢部分あり
タスク管理
OSの重要な役割として、タスク管理がある
CPUやメモリなどのハードウェアに対し、リソースに空きができないように効率的にタスクの割り当てを実施する
タスク状態遷移
タスクは以下3つの状態で管理する
実行可能:タスク生成時になる状態、CPU割り当て・解放を実行する
実行中:タスクを実行する(終われば消滅)、平行して止めておく必要のあるものは「wait命令」をする
待ち状態:タスクを止めている状態、SIGNAL命令がくると、実行可能に変わる※割込み発生時もこの状態になる
割り込み種類
実行プログラムに処理を一旦止めてもらうことを割り込みという
以下種類あり
・外部割り込み(ハードウェア側)
タイマ割込み:タイムアウト時
機械チェック割込み:機械エラー時の割込み
入出力割込み:入出力時の割込み
・内部割り込み(プログラム側)
スーパーバイザーコール割込み:OSへのお願い割込み
プログラム割込み:プログラムエラー時に発生する割込み
タスクスケジューリング
OSは複数のタスクをどのような順番で処理するかをスケジューリングする
手法は以下の通り
到着順方式:到着した順番でタスクを処理す方法
優先順位方式:優先度が高いものから処理をしていく方法※スタベーションを防ぐ仕組みが必要
ラウンドロビン方式:処理時間を決めて、順番にタスクを処理していく方法
※スタベーション:優先度が低いタスクが永遠に処理されない状態
スプーリング
CPUと入出力装置では処理時間に差が発生してしまう(CPUがかなり速い)
そのため、一時的に記憶装置にCPUが処理した結果を保存し、
徐々に入出力装置で処理していく方法
※処理高速化を図るもの
マルチプログラミング(マルチタスク)
プログラムを複数組み合わせて実行することで高速化を図るもの
※コンピュータは複数の作業を同時に実施している
仮想記憶管理
仮想的に記憶領域を扱うことで、効率的に処理を実行できる
実記憶領域:実際の主記憶装置の領域
仮想記憶領域:補助記憶装置+主記憶装置の合わせた領域
また、仮想記憶管理の方法として、以下種類あり
固定区画方式(スワッピング有):初めから区画を分けておく※スワッピング無より結果返答が短い
固定区画方式(スワッピング無):初めから区画を分けておく※最も制約が強い
可変区画方式(動的割り当て):プログラムに応じて調整する※メモリコンパクションを行うことで、常に最適な領域を確保可能
可変区画方式(固定割り当て):プログラムに応じて調整する※割り当てアルゴリズムを適切に通用する必要あり
※スワッピング:主記憶装置の容量不足の際、補助記憶装置へ優先度が低いプログラムを一時退避すること
※メモリコンパクション:フラグメンテーションをなくす処理ができる
ページング
物理的な配置可能領域より大きなプログラムをロードするための仕組み
※ページフォールトをなるべく避ける必要あり
ページ書き換えアルゴリズム
FIFO:最初にページインしたものから順番にページアウトしていく
LIFO:最後にページインしたものがページアウトされる
LRU:長い間参照されないページがページアウトされる
LFU:参照回数が少ないページがページアウトされる
※ページフォールト:物理メモリ上に存在しないページにアクセスしたときに起きる割込み
参考文献
https://www.udemy.com/course/lerning-fe/learn/lecture/22742379#overview
https://shikaku-dou.com/fe-lesson-21/
https://nlab-notebook.com/entry/typical-os-type-part1
https://www.foresight.jp/fe/column/role-os/
https://www.momoyama-usagi.com/entry/info-calc-sys17#google_vignette
https://medium-company.com/%E5%9F%BA%E6%9C%AC%E6%83%85%E5%A0%B1-%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0%E6%96%B9%E5%BC%8F/
https://medium-company.com/%e3%83%9a%e3%83%bc%e3%82%b8%e3%83%95%e3%82%a9%e3%83%bc%e3%83%ab%e3%83%88/
https://shikaku.pepenoheya.blog/basic-information-frequent-memory/
おわりに
ソフトウエア_OS部分を各サイトを閲覧しながら、学んでいきました。
本日もありがとうございました。