OSの仕組みの絵本

OSの仕組みの絵本

OSの仕組みの絵本


Windows, Linux・・・仕事でいろいろなOSに触っているけれど、基本知識が理解できていないと感じることがあるので、浅く広くまず俯瞰する。


  • OSの勉強を始める前に
    • OS: Operating System: 基本ソフトウェア
      • プロセス管理、メモリ管理、ディスク管理、ネットワーク管理
    • BIOS
      • POST: Power On Self Test
  • 第1章 OSの機能
    • KEY
      • コンピュータ五大装置
        • 制御装置、演算装置、記憶装置、入力装置、出力装置
      • カーネル、シェル
      • 基本ソフトウェア、ミドルウェア、応用ソフトウェア
        • API: Application Programming Interface
    • パソコン起動
    • BIOS: Basic Input Output System
    • カーネル
      • ユーザからは不可視(シェルに包まれている)
        • ユーザ入力→シェル解釈、カーネルに処理依頼→カーネル処理
    • シェル
    • I/Oポート
      • I/Oアドレス空間: デバイスへの命令やデータ送受信に用いられるメモリ中の領域
      • I/Oアドレス方式: I/Oアドレス空間に命令やデータを書き込むことで、デバイスを制御する方式
        • デバイスコントローラのメモリとI/Oアドレス空間が同期していることを利用している
    • 記憶装置
      • レジスタ(小、速)
      • 内部記憶(中、並)
      • 外部記憶(大、遅)
      • 性能差緩和にキャッシュを用いている
    • プログラミング
  • 第2章 CPUとプロセス
    • KEY
      • プロセス: メモリ上に展開したプログラムのこと
        • 実行状態、実行可能状態、待機状態
          • 割込処理
      • RASIS
        • R: Reliability: 信頼性: 故障が起こりにくいこと
        • A: Availabilty: 可用性: 稼働率が高いこと
        • S: Serviceabilty: 保守性: 迅速に復旧できること
        • I: Integrity: 保全性: 壊れにくいこと
        • S: Security: 安全性: 機密保持ができること
          • ? 信頼性と保全性の違いがいまいちわからない: 「HW」と「運用」?
      • マルチタスク
    • ジョブとタスク
      • ジョブ: 人間から見た仕事単位。複数のプログラム実行を含む。
      • ジョブ管理: OSはジョブの順序や処理結果を管理する。
        • ジョブステップ: ジョブを小さく分けた処理単位
        • ジョブ制御言語: JCL: ジョブの実行方法を制御する言語
      • タスク: OSから見た作業単位。OSはジョブステップをタスクに分解してCPUに処理を依頼する。
      • ジョブ→ジョブステップ→タスク
    • スループット
      • レスポンスタイム: CPUの実処理時間
      • ターンアラウンドタイム: 処理条件の入力 + CPUの実処理時間 + 処理結果の出力時間
      • スプール: CPUから入出力装置への命令を高速な記録装置に一時保存すること。
        • プリンタでよく見るアレ。プリンタ遅い→CPU持ってるデータを先出しする必要性
    • 割り込み: interrupt
      • 内部割り込み: ソフトウェア割り込み
      • 外部割り込み: ハードウェア割り込み。OS外部からの割り込み。
        • 機械チェック割り込み: H/W障害時。最優先される割り込み。
        • タイマー割り込み: タスク処理が一定時間を越えたときに実施される割り込み。
        • 入出力割り込み: 周辺機器の状態が変化したときに行われる割り込み。
        • コンソール割り込み: ユーザ入力による割り込み。
    • プロセス
      • TSS: タイムシェアリングシステム
      • プロセス管理
        • ディスパッチ: CPU実行権割り当て
        • プリエンプション: 割り当て解除
    • マルチタスク
      • プリエンティブ: 実行可能状態のタスクに実行権を割り当て、タイムスライスごとに強制的に切り替えていく管理。現在の主流。
      • ノンプリエンティブ: タスクが終了するまで他のタスクにCPU実行権を譲らない管理。CPU解放しないタスクがいると、OS全体が停止する恐れあり。
    • プロセス制御
      • プログラム状態語: PSW: Program Status Word
        • 割り込みで中断したプログラム状態、演算の終了状態を保存しておくレジスタ。CPUの話。64bit程度(英単語程度)なので「語」と呼ぶ。
      • プロセス制御ブロック: PCB: Process Control Block
        • 各プロセスのCPU状態(コンテキスト)/プロセス状態を保存するメモリ領域のこと。メモリの話。
      • コンテキストスイッチ
        • OSが割り込みによってプロセスを切り替えるとき、OSがPCBにコンテキストを保存、復元する処理のこと
      • スケジューリング
        • ラウンドロビン方式
          • 一定時間ごとに各プロセスを回す。時間切れのプロセスは最後に回す。
        • 優先度方式
          • OSがプロセスの優先度を決めて、高い順に処理する。デッドロックの懸念あり。主流。
    • プロセスの分岐
      • fork: システムコールによってプロセスをコピーすること。コピー元: 親プロセス、コピー先: 子プロセス。
      • exec: 子プロセスで別のプログラムを実行するよう指示すること。
      • wait: 子プロセスの後処理用システムコール。子プロセスの処理終了→親プロセスにシグナル送信→waitシステムコール→子プロセスのPCB/メモリを消去。
        • 親プロセスは1つのwait処理が終了するまで、他の子プロセスの終了シグナルを受け付けない。
    • プロセスの同期
    • デッドロック: 2プロセスによる半永久的待ち状態のこと。が別々の共有資源をロックしたまま、相手のロックしている共有資源にアクセスしようとするときに発生。
    • プロセス間通信
      • メッセージキュー
      • パイプ: 複数プロセスの入出力をつなぐ。forkした親子プロセス間。
      • 名前つきパイプ: 親子プロセス以外でのパイプは紐付けのために名前が必要。
        • ? ll | wc -l ←この"|"は名前なしパイプであってる?
    • 共有メモリ: システムコールにより生成される複数プロセスで共有できるメモリ領域。
      • アタッチ: 共有メモリに接続すること
      • デタッチ: 共有メモリから切断すること
      • スレッド: プロセス内のプログラム実行の流れのこと。分岐が可能。マルチスレッド。
      • スレッドとプロセスの違い
        • プロセス: プロセス固有のメモリ空間。
        • スレッド: 同プロセスのスレッドは同じメモリ空間を参照。省メモリ。CPU占有の最小単位: ライトウエイトプロセス


以下未読

  • 第3章 メモリ管理
  • 第4章 ディスク管理
  • 第5章 ネットワーク管理
  • 第6章 Windows
  • 第8章 MacOSとその他OS
  • 付録