オペレーティングシステムの仕組み memo

オペレーティングシステムについてもう少しちゃんとやりたいという欲求があり、適当に”Operating system begginner"とググった。そこでOSdev(https://wiki.osdev.org/Main_Page)へ辿り着き、全く私のレベルに沿っていない内容に打ちのめされ、とりあえず別のものを探した。

そこで行き着いたのがこのリンク。

dev.to

そして紹介されていたものがこの本(埋め込もうとするとアフィリエイトになってしまう仕様っぽい。やめたい)。

オペレーティングシステムの仕組み (情報科学こんせぷつ)

オペレーティングシステムの仕組み (情報科学こんせぷつ)

自宅最寄りの図書館にあったのでさっそく借りて読んでみている。

#レベル

各論は細部まで深追いせず、分量が多くならないようにされています。 また逆に、浅すぎて事実の羅列になったりせず、仕組みを理解できるくらいには具体的に書かれています。

この紹介文通り、細かすぎず浅すぎず、それでいてOSの機能についてしっかりと理解できる良い本だと思う。

ただし、ある程度の前提知識が必要。ハードウェアの領域にいくらか踏み込んで話すのと、コーディング用語、open()みたいなシステムコールの名前などが出てくるため、非情報系の人がいきなり読むのにはきついだろう。

ISerに関して言うなら、「計算機構成論」「オペレーティングシステム」さらに「システムプログラミング実験(の前半)」をやった後(つまり3S後の夏休みとか)に読むと、OSに対してよりしっかりとした理解が身につく。私は3Sの途中でリタイアして休学中なわけだが、幸い計算機構成論とオペレーティングシステムは単位を取れるくらいには全体像を理解できていて、あとシステムコールもシスプロで触ってはいたので運が良かった。

OSは深いところでハードウェアとも関わっているが、「オペレーティングシステム」の講義ではハードウェアの領域まで踏み込まないためにどうしても表面的な用語の解説で終わってしまったように思える。この本を読んでいくと、基本的には「あっ、この用語は『オペレーティングシステム』でやった」→(プロセッサやシステムコールなどにも踏み込みながらの解説)→「おお、よくわかる」という流れになる。まだ30ページぐらいしか読んでないけど。

メモ

なお、gdbなどのデバッガではソースコードとの対応を取りながらデバッグできるようになっている。これはシンボル情報を利用しているからである。デバッガを使うときは、機械語命令とソースコード上の位置を対応付けるため、通常よりもずっと多くのシンボル情報を必要とする。

シンボル情報(シンボルテーブル)の使われ方を理解していないためここがわからない。いまちょうどBinary Hacksの方でELFをやっているから、もしかしたらそこで分かるかもしれない。

誰か助けてください

stripコマンドで「unstrippedなコマンドからシンボル情報を取り除いて、ファイルサイズが小さくなるところを見てみよう」という箇所があり、unstrippedな例としてcatが挙げられている。ところが私のUbuntu 14.04 LTSではcatはstrippedなので、これを確認できない。一通り主要コマンドでfileしてみたが、すべてstrippedだった。

誰かunstrippedなコマンドを知っている方がいれば教えていただけるとありがたいです。