参考になる書籍part2

1名無しさん@お腹いっぱい。
垢版 |
NGNG
UNIXの関連書籍について話すスレ

前スレ
http://pc.2ch.net/test/read.cgi/unix/941565661/
05/02/19 23:27:17
覚えがあるなあ。本棚から探してきた。
古典的な論文
"The Evolution of the UNIX Time-sharing System"
D.M.Ritchie
に載ってる話だな。
「UNIXタイムシェアリング・システムの発展」という記事として
「UNIX原典」(パーソナルメディア)ISBN4-89362-014-2
に和訳が収録されてる。
05/02/19 23:28:28
今読み直してみたんだが、その記憶はちょっと間違いで、
最初の頃は fork がなくて、シェルのコマンド呼び出しは、
1. シェルが exec もどきを実行してコマンドを呼び出す。
 シェルは fork しないというか、そもそも fork 機能が
 ないので、シェルとシェルから呼び出されるコマンドは、
 同一のプロセスになる。
2. コマンドが完了すると、カーネルが exec もどきを
 実行して、そのプロセスをシェルに戻す。
という風に動いていたから、chdir が外部プロセスでも
ちゃんと動作した。しかし、fork の機能が追加されて、
シェルとシェルから呼ばれるコマンドが別プロセスに
なったら chdir が動かなくなってしまった…
っていう話だったよ。

今読み直してみたが、誤植はひどいし、訳も駄目駄目だなあ。
でも中身は今読んでもおもろい。
05/02/19 23:38:58
ググってみたが、原文は
ttp://cm.bell-labs.com/cm/cs/who/dmr/hist.html
にあるな。
この中の「Process control」の項がその話。

The most memorable of these became evident soon after
the new system came up and apparently worked. In the
midst of our jubilation, it was discovered that the
chdir (change current directory) command had stopped
working. There was much reading of code and anxious
introspection about how the addition of fork could
have broken the chdir call. Finally the truth dawned:
in the old system chdir was an ordinary command; it
adjusted the current directory of the (unique) process
attached to the terminal. Under the new system, the
chdir command correctly changed the current directory
of the process created to execute it, but this process
promptly terminated and had no effect whatsoever on
its parent shell! It was necessary to make chdir a
special command, executed internally within the shell.

jubilation は大喜びとか祝祭って意味ね。
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況