第6回 第7章 プロセスとその管理

7.1 プログラム実効制御とプロセス

1.プロセス=プログラムの実行単位
OSがプログラムに対して行う必要があること

  • 中断時の実行環境の退避と中断点から実行再開さきること
  • プログラムの状態管理
    • 実行中・I/O待ちetc.

2.プロセス=仮想マシン
各プログラムは論理的には自分専用のプロセッサが与えられるように見える
最近のOSでは、プロセスごとに自分専用のメモリ空間を持つ
3.プロセスによる並列処理
プロセスは論理的には並列に実行されている
実際はプロセッサ1つで同時に実行できるのは1つ

複数ユーザ向けのOSとシングルユーザ向けのOSが存在する。
まあ、それだけ

7.2 プロセスの実現

1.プロセスを構成するもの

  • プロセッサの実行環境*1
  • メモリ空間
  • 開かれているファイル*2
  • 親プロセスの情報・プロセスは別のプロセスによって生成される
  • 使用ユーザの情報

その他さまざまな情報をOSが管理しなければならない
2.プロセスの状態の管理

  • 実行中状態
  • レディ状態,実行可能状態
  • 待ち状態(実行できない状態)

レディから待ちに遷移することはなく、待ちから実行中に遷移することもない。それ以外はありうる。

7.3 プロセススケジューリング

いつ、どのプロセスを実行するかを決める。
プロセススケジューラの仕事

  • プロセスの状態を管理する
  • 実行するべきプロセスを選択する
  • 選択したプロセスにプロセッサの制御を渡す

基本的には将来のことを考えるのではなく、今何をすべきかを考えることでスケジュール処理を行う。

*1:プロセッサの実行情報:プログラムカウンタ・レジスタ

*2:fopen等で開く

第6回

第6章残り

MS-DOS Windowsのファイル管理
  • FAT:File Allocation Table
    • クラスタごとにエントリがある
    • クラスタ総数分のエントリをFATが持っている(ディスク全部のエントリがあるので足りなくなることがない)
    • ディレクトリ(UNIX同様、ファイルと同等の扱い)
      • ファイル名前、情報
      • 先頭のクラスタ番号が入っている
    • ルートディレクト
      • ボリューム上の固定位置にある
    • FATの二重化
      • FATが破損するとディスクへのアクセスが不能になるので、FATを多重化することで安全性を高めている。
ファイルスペースの割り当て方法
  • 固定長割り当て方式
    • 固定長のブロック単位で領域を割り当てる
    • 空きブロック―リストまたはビットマップを作って管理管
    • 利点
      • ファイルのサイズを変えるのが容易
      • ディスクの中に無駄な空き領域ができるのを防ぐ
    • 欠点
  • 中間的な方法(こっちを使う)
    • 固定長割り当て方式が基本
    • なるべく連続した領域に割り当てる→ボリュームが一杯に近づくと効率が落ちる

第4回

ε閉包

状態qからε入力でのみ行ける状態の集合

ε-NFA遷移関数の拡張

ε入力でいけるところはすべて同等の状態みたいな

NFAとε-NFAの等価変換

なんか必死で証明してたけど、なんでそんなに苦労するのかすら俺には意味不明だった

第4章 オペレーティングシステムの構成

4.1 OSのハードウェア構成

実行モード(jikko mode)

名前には非常にばらつきがある
基本的な概念

  • アプリケーションプログラムからできることを制限する
    • 非特権モード(ユーザモード、プロブレムモード、スレーブモード)
    • コンピュータ(プロセッサ)の一部の領域にアクセスできないモード
    • 一部の命令(特権命令)が実行できないようになっている
  • OSはなんでもできる
    • 特権*1モード(カーネルモード、スーパバイザモード、マスタモード)
割り込み(interrupt)と例外(exception)

現在の作業を一旦中止して別の作業に移るような機能の総称

  • 割り込み(外部割込み)
    • 現在プロセッサの実行しているプログラムとは無関係に行われる
    • 入出力割込み・タイマ割り込み
  • 例外(内部割込み)
    • 現在プロセッサの実行しているプログラムが例外的な状況になったというイベントによって発生する
    • 演算例外(0除算例外・オーバーフロー例外)・バスエラー・特権命令違反
    • カーネル呼び出し割り込み(一種の例外的状況)

割り込みの処理

  • 割り込みハンドラ
  • 割り込みサービスルーチン(ISR)
  • 割り込みハンドラは特権モードで実行

例外の処理

  • 例外ハンドラ
  • 例外ハンドラも特権モードで実行
  • カーネル呼び出し割り込み
    • スーパバイザコール
    • ソフトウェア割り込み
    • トラップ

割り込みマスク

  • 割り込みを禁止している状態のこと
  • 例外はマスクされたら困るのでマスクしたり禁止したりはできないのが普通

4.2 割込みとマルチプログラミング

そのまんま

4.3 OSの核:カーネル(kernel)

カーネルのつづりを入力していると頭の中でけーねになってしまう
一般的に特権モードで実行される

  • 実行するプログラムを切り替(換)える
  • 割り込みが起こったら対処する
  • 入出力装置への指令
  • カーネルのほとんどの動作は割り込み禁止モードで行われる。
    • 割り込み処理中に割り込みが発生することを防ぐことができる
プリエンプトカーネル
  • 横取り可能なカーネル(割り込み処理中に割り込みを発生させられる
  • 割り込み処理が遅くて処理が遅れることを防ぐことができる。

*1:privileged