(toppers-users 666) Re: config.txt について

Naoki Saito saito @ nmiri.city.nagoya.jp
2002年 12月 2日 (月) 14:53:45 JST


斉藤@名古屋市工研です.

お返事が遅くなりまして申し訳ありません.
# なんだか重箱の隅をつつくような話になってしまい恐縮ですが...

> 「CPUロック状態で呼び出さなければならない」でもいいとは思いますが(そ
> こまで深く考えてコメントを書いていません...)、厳密ではありません。そ
> のプロセッサ依存部の dispatch が、本当に、CPUロック状態で呼び出さなけ
> ればならないとするなら、この記述が正しいわけですが、割込み禁止であるこ
> としか要求していなければ、書きすぎということになります。

確かに仰る通りなのですが,
「TOPPERS/JSPカーネルはCPUロック状態で呼び出すこととしている(後述)」
ということであれば全てのプロセッサ依存部がCPUロック状態で呼び出されることに
なると理解しています.

上記の様に仰るということは
現実には, 「プロセッサ依存部の実装上, 別の条件での呼び出しをする場合もありうる」
とでも考えれば良いのでしょうか ?

> とあります。マスタモードというのは、m68k の用語ですので、このコメント
> は、プロセッサレベルで記述してあります。そのために、CPUロック状態とい
> う用語を使わなかったと思います。

はい. 
m68kについては詳しくは存じ上げませんが
「(m68kの実装における)CPUロック状態」=「割込み禁止状態」
なのでどちらの書き方でも良いが, 
プロセッサレベルで記述したため後者の書き方になった,
と理解しました.

> 例えば、CPUロック状態を、割込みを禁止することに加えて、ある変数をセッ
> トするような実装が考えられます。このような場合、「割込み禁止で呼ばれる」
> と書いてあれば、その変数がどうなっているかは保証されません。よって、
> dispatch はそれに依存しないように実装しなければなりません。それに対し
> て、「CPUロック状態で呼ばれる」と書いてあれば、その変数がセットされて
> いることも保証されます。

これは「CPUロック状態で呼ばれること」が前提としてあるからこそ,
「割り込み禁止で呼ばれる」では(CPUロック状態の実装の仕方によって)
正しくなったり正しくなくなったりするということと理解しました.

> これも、こういうプロセッサ依存部がなければ、無意味な議論なのですが...

はい.
# 無意味に抽象的な議論になってしまわないよう気をつけたいところです.

> > (2) 「dispatch() をどのような状態で呼び出すかはカーネルの実装者に任せられた話で,
> >     TOPPERS/JSPカーネルでは CPUロック状態で呼ぶこととしている」からなのか,
> > (3) 「サービスコール処理はその大半を CPUロック状態で処理しているので
> >     (その流れで)dispatch()を呼び出す時にはCPUロック状態で呼ばれることになる」からなのか.
(略)
> (2) です。もちろん、その背景には (3) があります。

はい.
1. dispatchの実装の仕方は一概に「CPUロック状態で」とは限らず,
そうでない実装の仕方もあり得るということ.
2. その中で TOPPERS/JSPカーネルではサービスコール処理の多くを
CPUロック状態で処理することになっていて,
dispatch もその方針に沿い CPUロック状態で呼び出すことにしている.
と理解しました.

以上でなんとなくですが, dispatch関連についての
一連の疑問が理解できたような気がします.

# まだ十分でないとは思いますが...

高田先生, 若林さんには色々とコメントいただきまして
どうもありがとうございました.