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