OSとアプリケーションの関係の部分を読んだ。

printf()とかのOSが提供する機能を呼び出すことをシステムコールと呼ぶらしい。
コンパイルする時に、該当するOSのシステムコール利用するネイティブコードに変換する仕組みになってるそうな。
要するに、Printf()をWindows環境でコンパイルしてもLinux環境でコンパイルしてもちゃんと動きますと。なぜかというと、それぞれのOSがそのPrintf()に該当するアクションをしてくれるから。
そう考えると、普段何気なく書いてるプログラムって、OSに向けて書いてる機能がほとんどで、OSが色々吸収してくれてるんだなぁと感心。(メモリ管理とかも、具体的にこの番地を確保してくれーとか書かなくていいしなー)


Windowsってファイル単位でテクスチャだったりとかmp3とか色々扱うけど、あれってそれぞれ内部的にはセクターで区切られた物理的なディスク媒体に書き込まれてて、OSがうまいこと隠してくれてるからあんな便利に扱える。
いや、知識としては知ってたつもりだったけど、改めて考えるとこの仕組み考えた人すごいなぁと感動。普段プログラム書く時もこの辺りを意識しながら誰でも扱いやすい物を作っていこと思った。