私は過去4年間、アプリケーション開発者として(主にCで)* nix環境に取り組んできました。
* nixの内部知識を向上させるために、いくつかの本/ブログなどを提案してください。
私は過去4年間、アプリケーション開発者として(主にCで)* nix環境に取り組んできました。
* nixの内部知識を向上させるために、いくつかの本/ブログなどを提案してください。
回答:
Unixの「精神」を理解する方法に関するいくつかの提案と、以前の投稿で行われたすばらしい推奨事項を以下に示します。
KernighanとPikeによる「The Unix Programming Environment」:古い本ですが、Unix環境の本質を示しています。また、効果的なシェルユーザーになるのにも役立ちます。
「短気のためのUnix」は、Unix環境をナビゲートすることを学ぶのに役立つリソースです。私のお気に入りの一つ。
あなたがパワーユーザーになりたいなら、Unixの専門家から集められたヒントとコツからなるO'Reillyの「Unix Power Tools」に勝るものはありません。
私が見たことのない楽しいライトと教育読書である別の本は、「オペレーティングシステム、設計および実装」です。
あなたは間違いなくStevensによるUnix環境での高度なプログラミングを読みたいです。高度なタイトルに驚かないでください。非常に読みやすいです。
頻繁に使用している書籍/サイト/マニュアル:
The Linux Kernel:この本は、TLDP(The Linux Documentation Project)の一部としてオンラインで公開されています。これは最新のものではなく、内部のマニュアルではありませんが、カーネルの原理とメカニズムに関する有用な情報と入門資料を提供します。
Linuxカーネルの理解:私見、これはオペレーティングシステムの設計と概念についての背景を持つ初心者向けの最高の本です。最新として受け入れられ、カーネルのバージョン2.6をカバーします。この本のHTMLバージョンはウェブ上にありますが、おそらくたぶん警告だと思います。
Linuxカーネルの内部を勉強するとき、通常、ハードウェアがどのように機能し、どのハードウェアが抽象的な方法で提供するかを学ぶ必要があります。Intelにはこれに関する優れたマニュアルがあります。
Intel 80386プログラマーズリファレンスマニュアル:これは少し古いことは知っていますが、このマニュアルから多くのことを学びました。
オペレーティングシステムの設計と概念について学習する必要がある場合は、次の本をお勧めします。 オペレーティングシステムの概念。
O'REILLY Linux Kernel in a Nutshell
およびO'REILLY Linux Device Drivers
Linux Systems ProgrammingまたはRobert Loveによる他の本(これらはすべてO'Reillyの本です):
私は他のすべての人に同意し、スティーブンスのAPUE(私は第2版を持っています)は古典だと言わなければなりません。また、Eric RaymondのThe Art of UNIX Programmingが私のリストのStevensにランクインしていることを付け加えます。
さて、BSDユニックスについては、4.4BSDオペレーティングシステムの設計と実装があります。その一部は、http://www.freebsd.org/doc/en/books/design-44bsd/で無料で入手できるようです。
Linuxデバイスドライバーも別の優れたリソースです。それはあなたに内部の仕組みに入るための別の方法を与えるでしょう。序文から:
これは、表面上は、Linuxシステム用のデバイスドライバーの作成に関する本です。もちろん、それは価値のある目標です。新しいハードウェア製品の流れはすぐに遅くなる可能性は低く、誰かがこれらの新しいガジェットをすべてLinuxで動作させる必要があります。しかし、この本はまた、Linuxカーネルがどのように機能し、その動作をあなたのニーズや興味に適応させる方法についても書かれています。Linuxはオープンシステムです。この本では、よりオープンで、より大きな開発者コミュニティがアクセスできることを願っています。
カーネルがサポートする理由と意味を理解するには、Eric RaymondによるThe Art of Unix Programmingを参照してください。それはかなり高い、哲学的なレベルで物事を取りますが、それは他の本の核心の詳細とうまく行くでしょう。
(他の本に加えて)以下の2冊の本もお勧めします:
最初のものを広範囲に紹介しました(記憶力があり、時間があれば、今よりも多くのことを知っているでしょうが、それは別の話です)。私は現在2番目のものを読んでいます。