---
# System prepended metadata

title: オペレーティングシステム

---

# オペレーティングシステム

## 第一回

### OS とは何か？

* hardware -> software (OS -> User interface program -> Usermode)
* OS は Kernel mode で動いている。（ユーザの権限で変更できない）
  * User mode はユーザの権限で変更できる。（上位）
* 機能1. 機器の抽象化
  * 接続されるデバイスを簡単に扱う interface を提供する。
    * Ugly interface of hardware -> OS -> Beautiful interface
* 機能2. リソースの管理
  * 並行で実行されている program などのリソースが不必要に干渉しないようにする。
* BIOS -> boot loader -> OS の流れで起動。
  * HDD の先頭にある MBR (Master Boot Record) を読み込む -> OS の Kernel を読み込む。

### OS の歴史

* 第一世代(1945~55): Vaccum Tubes
  * OS もプログラミング言語すらもない時代。
  * 機械語や電気回路をつかってプログラミングしていた。
  * 例：世界最初の計算機 ENIAC
    * 真空管を使って配線。真空管の故障率が高くてクソ。加熱も必要だし面積も取るクソ。(寿命 2000 時間 -> 週に 2, 3 本まで下げたが)
* 第二世代(1955~65): Transistors and Batch Systems
  * 電圧をつかってバイナリを表現。
  * 真空管の代わりにトランジスタを採用。熱もそこまで出ないし軽い。ただ高価。
  * 商用コンピュータが出現。でも高価だしプログラムはユーザが開発しなければならない無能。
  * バッチ処理　＋　ジョブ管理　が登場。世界初の OS も登場。
    * バッチ処理：複数のプログラムに対し実行順序を定義し，その順番で自動的に実行していく。
    * 実行したいプログラムを紙テープや磁気テープにまとめて書き込むことによって，複数のプログラムをまとめて処理することが可能になった。-> 出力結果も実行順にまとめて出力できるようになった。
* 第三世代(1965-80): ICs and Multiprogramming
  * トランジスタの小型化から他部品の小型化へ。
    * 一つの回路全体を半導体で作り込むようになった。（集積回路）
  * マルチプログラミング登場
    * 複数プログラムをメモリに書き込んでおき，OS が管理 -> 同時に複数プログラム実行可能に。
      * ある処理をしている際に CPU の空き時間が発生すれば（IO 待ちとか）他の処理を割り込ませたりすることができる。
  * タイムシェアリング登場
    * コンピュータシステム占有時間を細かく分け，複数ユーザに割り振る。
    * 各ユーザがタスクを投げたときにすぐに処理されるようになった。
* 第四世代(1980-present): Personal Computers
  * 計算機が個人に一台に。
  * さまざまな OS が出現。
* 第五世代(1990-present): Mobile Computers
  * スマホに入ってるやつなども出現。

### コンピュータハードウェア

* コンピュータ周辺機器

  * CPU + memory, monitor, keyboard, usb printer, hard disk drive
    * それぞれがコントローラーを持ち，コントローラーは Bus を通じてそれぞれが接続されている。

* CPU

  * コアが多いと並列できるプログラムの数が多くなる。
  * 情報を保持する 1, 2 次キャッシュ（cf: コンピュータアーキ）も存在。
    * 1 次キャッシュは 16 kB, 2 次キャッシュは数 MB が普通。
    * 二次キャッシュの場合は各コアが共有する/しないの 2 通り。
      * intel は共有，AMD は個別。

  * パイプライン（cf: コンピュータアーキ）を使って高速に処理。
    * 命令はFetch, Decode, Data Fetch, Execute, Writebackの５つのステップでできている。
    * 前の命令が終わるのを待たずにFetchを実行するので、プログラムの終了が早くなる。
 
* コントローラ

  * ハードウェアであり，デバイスのインターフェースを提供。
  * ドライバーと呼ばれるソフトウェアを使って対話できる。
