matobaの学んだことスマートフォン用の表示で見るmatobaの学んだこととあるPythonエンジニアのブログ。ソフトウェア開発、執筆活動、ライフログ。技術記事Linuxのしくみ、と言う本を買って読んでるので、今日の学びのメモを公開します。どの本の話?買うきっかけどう?今日の読書メモCPUには動作モードがあるカーネルだけが特権モードを使えるカーネルへの依頼はシステムコールという本の面白いところ実際のシステムコールサンプルがあるスクリプト言語を使う人向けに書かれているPythonコードから出るシステムコールを確認できるPythonコードを変えて、システムコールを見る終わりどの本の話?この本です。見るAmazonで買いました。OSがどうやって動いているの?と言うのを説明しています。2018の発表を見たことです。www.youtube.comtell-k.github.ioこの発表の中で、Linuxのしくみと言う本がイイヨって紹介されてたので、買いました。そもそも、もっとLinuxのことを知りたかったと言うのもあります。発表で話していた内容は興味のある内容だったと言うのと、興味のある内容を深掘りした情報がこの本の中にあるんだろうと思ったので買いました。アフィリンクは見つかりませんでした。?まだ、全部読んでないのですが、わかりやすそうです。言うか、結構、しくみの前提の話から説明してくれるようなところがあって、初心者向けだと思いました。僕は初心者なのでありがたいです。(と言ってもまだ、1章と2章しか読んでませんが)Linuxの本でいうと、以下の本も興味があって目を通したことがあるのですが、こちらの本はLinuxの歴史的な経緯の話が多くて、今回読んでいる本とはテイストが少し違います。見る例えば、なぜ、ディストリビューションがいくつもあるのかとか、フォーマットがいくつもある理由とか、そういう話を書いています。合わせて読むと面白そうです。今日の読書メモ今日読んだところで、私が新しく学んだことを抜粋して書きます。CPUには動作モードがあるCPUには、動作モードがあるようです。動作モードによって、できることが違います。その二つは、特権モードとユーザーモードです。特権モードは、カーネルモードとか呼ばれることがあるみたいです。本の中では、カーネルモードと書いていました。この話を僕は理解できてなかったので、インターネットを調べました。コンピュータが各種デバイスを操作する命令は、CPUが出しますが、CPUが特権モードでないとデバイスの操作命令を出さないようになっているのだと思います。カーネルだけが特権モードを使えるように設計されているようです。本の外に出てインターネットを検索して調べていたところ、いろんなプロセスが特権モードを使ってデバイスを制御できる状況にあった時代もあったようです。それだと、アクセス権限の管理が大変だったし、複数プロセスを動かすのが大変だったから、カーネルと言うのを挟んで、特権はカーネルだけが使えるようにしているという話のようです。(多分)で、特権モードはカーネルしか使わないんだから、カーネルモードと読んでる状況かと思います(これも多分)カーネルへの依頼はシステムコールというカーネルしか特権モードを使えないようになっているので、デバイスを操作したいときはカーネルに依頼する必要があります。カーネルへの依頼をシステムコールと言います。本の面白いところ今日読んだ中で、面白かったところ、印象に残ったところを紹介します。実際のシステムコールサンプルがある実際に、Cのコードを書いて、コンパイルして実行したときに、どんなシステムコールが呼ばれるのかのサンプルが本の中にあります。僕も実際に実行してみました。ubuntuで実行できるサンプルです。実際に、システムコールを確認して見るのは面白いなあと思いました。(大学時代に、こんな講義あったのかな。あったかもしれないけど、忘れてしまった)スクリプト言語を使う人向けに書かれているC言語の話やカーネルの話が出てくるのですが、本の説明はおそらくスクリプト言語を書いている人に向けられたものです。スクリプト言語を使ってるんだけど、Linuxのしくみが知りたい人に必要最低限の知識を説明してくれているように思います。Pythonコードから出るシステムコールを確認できるPythonコードを動かした際に出力されるシステムコールも確認できます。いうか、そういうサンプルが本の中にありました。自分が普段書いている言語のシステムコールがどうなっているのかを知れると、すごく強くなった感じがします。(雑)あと、おそらく実際に確認することはないと思うのですが、どうやって動いているのかを知れるというのは、謎の安心感があります。Pythonコードを変えて、システムコールを見るPythonを実行した時にシステムコールのトレース方法がわかったので、Pythonコードを変えて、システムコールがどう変化するのかを見て見ました。straceコマンドを使ってPythonを実行して、ログを取得するPythonスクリプトをコピーして一部変更して、再度straceコマンドでログを取得する。出て来たシステムコールの呼び出しログをdiffして、何が変わったのかを見る。代入文とprintを追加しただけなので、それをざっと見て何が変わったか、というと以下のような処理が変わってました。ファイルを読み取る際の区切り位置が変わったのかはわからなかった。1行ずつストレージから読み取ってるのかと思ったけど、そうではなくて、なんかまとめて読み込んでるっぽい。試せたらいいけど、今日は疲れたので終わり。終わりひとまず、今日のこの本の読書は、ここまでです。そのうち続きを読んで、勉強したところとか、思ったことをかけたらいいなと思います。18:30Linuxのしくみを学んでいる話Tweet関連記事2019-01-04昨年の振り返りと2019年の抱負あけましておめでとうございます。気づけば2019年も4日目にな...2018-12-05僕がPythonのデバッグをするときによくやることこんにちは。Calenda...2018-06-15Pythonプロフェッショナルプログラミング第3版の執筆に関わりました。第3版(略して、PyPro...2018-04-04「それがぼくには楽しかったから」を読み終わったので感想を書く「それがぼくには楽しかったから」を読み終わった。思ったこと...2018-03-18GNU/Linuxってなに?を学んだ前に『GNU/Linuxってなんだろう?』と思っていた。(30)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。