カニゲーム攻略日記ブログ

beatmaniaIIDXやハースストーンなどのゲーム攻略日記。主にまったり勢。2016年にIIDX皆伝になった

プログラムはなぜ動くのか  第9章 OSとアプリケーションの関係

メモ

目次

OSの役割とアプリケーションからOSの機能を利用する

OSの歴史

  1. OSがない。マシン語で記述。めんどい
  2. OSの原型(モニタープログラム)が登場。プログラムのロードと実行のみ行う
  3. 初期のOSの誕生。基本的な入出力プログラムを搭載+モニタープログラム
  4. 現在のOSの誕生。複数のプログラムを集合。例えば、制御プログラム(ハードウェア制御、プログラム実行制御)、言語プロセッサ(アセンブラコンパイラインタプリタ)、ユーティリティ(テキストエディタ、デバッガ、ダンプ)

OSを意識する

プログラマ
↓ OSの機能を利用(プログラマはOSを意識する必要がある)
OS
↓ 制御(プログラマはハードウェアをあまり意識しなくていい)※
ハードウェア

※ただし一人前のプログラマになるためにはハードウェアの理解も必要

例:時計を表示するプログラムを動作させる場合

アプリケーション
↓ OSの機能を利用(時刻取得関数とディスプレイ表示関数を使う)
OSの基本的な入出力プログラム
↓ ハードウェア制御(時計ICやディスプレイI/Oを制御)
リアルタイムクロック + ディスプレイI/O

システムコール

OS(システム)の機能を呼ぶ(コール)

printf関数などは内部的にシステムコールを使っている

graph LR
    C言語でprintfを使用 -->|Windowsでコンパイル| Windowsのシステムコール
    C言語でprintfを使用 -->|Linuxでコンパイル| Linuxのシステムコール

直接、Windowsシステムコールを使うと
Linuxで動作しなくなっちゃうから
移植性が悪い

ハードウェアを抽象化

ハードウェアの詳細を知らなくても使える

  • ファイル:OSが物理ディスクを抽象化したもの
  • メモリ :OSが物理メモリを抽象化したもの