Skip to content

Commit

Permalink
Refac: refactoring chapter-0 Real-World
Browse files Browse the repository at this point in the history
  • Loading branch information
i4kimura committed Jun 26, 2016
1 parent 85d2ef8 commit e749dbd
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions chapter0.md
Original file line number Diff line number Diff line change
Expand Up @@ -413,14 +413,23 @@ xv6では、ファイルシステムのためのコマンドは`mkdir,ln,rm`な
一つの例外がcdであり、これはシェルに内蔵されている(8516行目)。
cdは現在のワーキングディレクトリをシェル自身が変更しなければならない。
もしcdコマンドを通常のコマンドとして実行すると、シェルが子プロセスをforkし、子プロセスがcdを実行してcdは「子プロセスの」ワーキングディレクトリを変更するだけで終わってしまう。
親プロセス(例えば、シェルそのもの)のワーキングディレクトリは変更されない。
親プロセス(例えば、シェルそのもの)のワーキングディレクトリは変更されない。
# 現実の世界
Unixにおいて、「標準的な」ファイルディスクリプタ、パイプ、そして便利な文法を活用することにより、汎用的で再利用可能なプログロムを書くことができるのは大きな強みである。スパークした、「ソフトウェアツール」の全体的な文化のアイデアはUnixの力と人気によるものであり(xxx)、シェルは、いわゆる最初の「スクリプト言語」であった。UnixのシステムコールのインタフェースはBSD,Linux,Mac OS x などでも利用されている。
Unixにおいて、「標準的な」ファイルディスクリプタ、パイプ、そして便利な文法を活用することにより、汎用的で再利用可能なプログロムを書くことができるのは大きな強みである。
スパークした「ソフトウェアツール」の全体的な文化のアイデアはUnixの力と人気によるものであり、シェルは、いわゆる最初の「スクリプト言語」であった。
UnixのシステムコールのインタフェースはBSD,Linux,Mac OS X などでも利用されている。
現代のカーネルでは、xv6よりもはるかに多くのシステムコールやカーネルサービスを提供している。殆どの部分であ、現代のUnixから派生したオペレーティングシステムは、デバイスを特殊ファイルとして見せるような初期のUnixのモデルを踏襲しておらず、先に議論したコンソールのようなデバイスファイルとして表現されている(xxx)。Unixの開発者達はPlan 9をビルドし続けているため、現代の装置や、ネットワークの表現や、グラフィックスや他の資源の操作をファイルやファイルツリーの操作として実現しており、「資源はファイルである」という方針を続けている。
現代のカーネルでは、xv6よりもはるかに多くのシステムコールやカーネルサービスを提供している。
現代のUnixから派生したオペレーティングシステムの殆どの部分では、デバイスを特殊ファイルとして見せるような初期のUnixのモデルを踏襲しておらず、先に議論したコンソールのようなデバイスファイルとして表現されている。
Unixの開発者達はPlan 9をビルドし続けているため、現代の装置や、ネットワークの表現や、グラフィックスや他の資源の操作をファイルやファイルツリーの操作として実現しており、「資源はファイルである」という方針を続けている。
ファイルシステムの抽象化は強力なアイデアであり、World Wide Webのような現代の殆どのネットワーク資源にも適応されている。それでも、オペレーティングシステムのインタフェースとして他のモデルも存在する。MulticsのようなUnixよりも前のシステムではファイルストレージをメモリのように抽象化し、全く異なるインタフェースを作り出していた。Multicsの設計の複雑性はUnixの設計者達にも直接影響を与え、彼等はなるべく全てをシンプルに作ろうとした。
ファイルシステムの抽象化は強力なアイデアであり、World Wide Webのような現代の殆どのネットワーク資源にも適応されている。
それでも、オペレーティングシステムのインタフェースとして他のモデルも存在する。
MulticsのようなUnixよりも前のシステムではファイルストレージをメモリのように抽象化し、全く異なるインタフェースを作り出していた。
Multicsの設計の複雑性はUnixの設計者達にも直接影響を与え、彼等はなるべく全てをシンプルに作ろうとした。
本書はxv6をUnix系のインタフェースインタフェーウとして実装する方法について述べるが、アイデアと概念はUnixだけに適用されるものではない。多くのオペレーティングシステムは内部のハードウェアの上で複数のプロセスが走っており、各プロセスが独立して動作しプロセス間の通信を行う機構が提供されている。xv6を学んだあとは、読者はより複雑なオペレーティングシステムを学ぶことによって、xv6の内部の考え方がそれらのシステムにも同様に存在していることを見ることができるだろう。
本書はxv6をUnix系のインタフェースとして実装する方法について述べるが、アイデアと概念はUnixだけに適用されるものではない。
多くのオペレーティングシステムは内部のハードウェアの上で複数のプロセスが走っており、各プロセスが独立して動作しプロセス間の通信を行う機構が提供されている。
xv6を学んだあとは、読者はより複雑なオペレーティングシステムを学ぶことによって、xv6の内部の考え方がそれらのシステムにも同様に存在していることを見ることができるだろう。

0 comments on commit e749dbd

Please sign in to comment.