'sqr'atch-note

ちりはつもれど ちりぬるを

ファイルをクリックしたら何が起こるか

jp.quora.com

  • アメリカだと「Good question!」って言われそうな質問だ、しらんけど。
  • GUIでテキストファイルをクリックしてエディタでテキストが表示される流れは、LinuxでもWindowsでも基本的には動きは変わらない気がして、超ざっくりだけど、親プロセス(Windowsならエクスプローラー)から子プロセスが作られてから、例えばnotepad.exeが実行されて、ファイルをメモリに展開して・・・っていう流れだと思う。テキストファイルをクリックしたら、どのアプリが起動するかは、ファイルの拡張子とアプリケーションのヒモ付である関連付けという仕組みが働いてるはず。
  • Windowsでのそのあたりの処理について詳しく知りたいのであれば、『インサイドWindows』が適切だと思うし、もっと気軽に実行ファイルがクリックされた時の動きをサクッと概要を知りたいのであれば、次の同人誌が適度にまとめてくれていて良いと思う。
  • プログラムを実行するにあたってLinuxカーネルが何を提供しているか知るには『Linuxのしくみ』が良い気がする。
    • この本は、Linuxカーネルがプロセスの実行のために提供するプロセススケジューリング、メモリ管理、ファイルシステムについて、どう動いているか実験しながら解説してくれていて、説明も非常に分かりやすいしオススメ。プロセスが出来る仕組み、コンテキストスイッチの仕組みあたりが分かるようになると思う。最近第二版が出てフルカラーになり、紙面で利用する言語もPythonになってたりするので親しみやすくなったと思う(初版はC言語だった)。
  • より深くOSを知るためには、OSを作ってみるのが手っ取り早い気がするし、みかん本と呼ばれる『ゼロからのOS自作入門』、もしくは『作って理解するOS』などがあって、みかん本は使用する言語がC++だったし、内容もぼくには難しかった。でも、OS自作を始めるにあたってまず当たるべき令和時代での教科書的位置づけな本と思ってる。
    • 『作って理解するOS』は、アセンブラを使ってマルチタスクなOSを作ろうって内容で、みかん本より取っ付きにくそうな内容だけど、半分以上のページ数を割いてOSが何なのかをしっかり丁寧に説明してくれてるので、初めに読んでも良いかもしれない。
  • CPUでプログラムが処理される部分を知りたい場合は、最近発売された『プログラマーのためのCPU入門』、または『CPUの作り方10講』のようなCPU自作本でも良いと思う。
  • CPUまではいかずとも、もうちょっと手前でプログラム実行について知りたいときは『ハロー“Hello,World"OSと標準ライブラリのシゴトとしくみ』も、結構面白くて良いかもしれない。この本は、大抵みんなはじめに作るHello Worldを表示させるだけのC言語で書いたプログラムに着目して、標準ライブラリのstdio.hが何をしているかニーモニックを読みながら理解していくという面白いスタイルの本。
  • 最初の質問に戻って「コンピュータの仕組みを知りたい」っていう観点だと、コンピュータアーキテクチャという分野の話になるだろうし、分かりやすい本ではgihyoから出てる『コンピュータアーキテクチャ技術入門』がある。もっと理論的な本だと『コンピュータアーキテクチャのエッセンス』っていう本があるけど、これは情報系大学でテキストになってそうな本格的な理論本な雰囲気だったから、ぼくは読んでない。
  • ファイルをクリックして表示させるってだけのことだけど、その処理の流れをしっかり知ろうとすると、1冊の本ではカバーしきれないほどの領域を知る必要があって結構根気がいる気がする。
    • ぼくがこの辺に興味が湧いて調べ始めてから2〜3年経ったけども、TCP/IPといったレイヤーから、Webブラウザまでのレイヤーまでいろいろ寄り道して中途半端に手を出しながらやってるからか、全体をぼんやりと分かってきた気はするけど、ちゃんとは分かってない。でも、昔よりもコンピュータがどう動くのか何となくわかるようになって面白くなったと感じてる。
    • とはいえ、要領のいい人とかだったら1年くらいで大体わかってしまうのかなと、他の人のブログとかを見ていると思ってたりもする。