[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:19032] Re: システムコールの追加



水原というものです。

debian には全然関係のない質問ですが、興味を引かれたので返事します。

At Wed, 17 Nov 1999 16:54:25 +0900,
Akihito Hayashi <akihito@xxxxxxxxxxxxxxxxx> wrote:
> 
> 林といいます。只今、slinkでカーネル2.2.12を使っています。
> システムコールを追加する段階で只今迷っています。
> 追加しようとしているシステムコールの内容は、
> 
> まず普通にユーザーモードで3つのプロセスを動かします。
> これをP1,P2,P3として話をさせて頂きます。
> P1,P2はただmallocをして数値を入れ、その後スリープさせておきます。
> 問題のシステムコールを呼び出すのはP3で引数はP1,P2のプロセスIDと
> mallocでとったそれぞれのアドレスの4つを引数にし、
> P1でmallocをして代入された値をP2でmallocした値にコピーする
> といったものです。

まず、いったいどうしてこんなことをする必要があるのか、それが分かりません。
また、なぜシステムコールを追加する必要があるんでしょうか。

P1 で pipe1 に write して、
P2 で pipe2 を read して、
P3 で pipe1 を read して pipe2 に write すればいいのでは。

FIFO を使うとか、共有メモリを使うとか、他にもいろいろと方法はあると
思うんですが。わざわざシステムコールを追加するほどのことでしょうか。

まあ、頭の体操としてはおもしろいかもしれませんがねえ。

> いろいろと悩んでカーネルの仮想メモリ付近を読んでいるのですが、
> いまいち力不足で見えてきません。カーネルからP1の値をよみこんで
> P2の値に書きこむなんてことをするのか(できるの??)、または、
> P1のページをカーネルに持ってきて何かするのか・・・・・

プロセス間通信ってものを理解してます?
というか、Unix 系の OS てものを基本的に理解してます?

> カーネルよりユーザーのメモリを扱うというのが目標です。
> どうか宜しくお願いします。

そりゃできますとも。

ただ、ユーザープロセスから別のプロセスのメモリを書き換える、なんて
システムコールが必要だと思いますか?
----
水原@表千家