• ベストアンサー

継ぎ接ぎの様な質問文で畏れ入ります。

(プロセス・スレッドではなく、)タスクによって 再入可能プログラムは別の記憶領域へ呼び出されていて、 其の各記憶領域の峻別の為に、 個別の局所変数が割り当てられるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.3

すみません。前の回答は、シングルスレッドOSの場合の話でした。 マルチスレッドOSの場合は、割り込んだ処理が終わらないうちも、元の処理の変数が変わらない必要があるので、たぶん個別の変数を割り当てる方法しかないと思います。 個別に割り当てる必要があるのは、処理の途中で値が変わるものだけなので、 ・プログラムのコード ・参照するだけで、値の書き込みをしない変数 については、個別に割り当てる必要はありません。

littlekids
質問者

補足

有り難う御座います。 変数の値を混同させずに同一のプログラムを共用する為に、 こんな工夫が盛り込まれたのですね。

その他の回答 (2)

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.2

>再入可能プログラムは別の記憶領域へ呼び出されていて、 プログラムのコードは、必ずしもそうとは限りません。(そうでないのが普通です) >個別の局所変数が割り当てられるのでしょうか? 普通は、そうです。 再入可能プログラムとは、実行の途中で、別の(あるいは自分自身の)プロセス、スレッド、タスクによって割り込んで呼び出されても、それが終了した後、元の処理には影響なく処理が引き継がれるものを言います。 そのためには、割り込んで実行されたときに変更された変数の内容が、割り込んだ処理が終了したときには、元に戻っている必要があります。 その方法の一つが個別の局所変数の割り当てです。しかし、変数をもとにもどす方法が別にあれば(たとえば処理の計算とは逆の計算を行って元の値に戻す)個別の局所変数を割り当てる必要はありません。 なお、自分自身から呼び出される場合は、再帰呼び出し可能プログラムと呼びます。再入可能プログラムは必ず再帰呼び出し可能プログラムですが、逆は言えません。

littlekids
質問者

補足

有り難う御座います。 他のアプリケーション群が同一の再入可能プログラムを呼び出した際には、個別の値を当該変数に割り当てませんと、 違うアプリケーション群の挙動に悪影響が及びますので、 其の展開を避ける為に、 当該変数をグローバル化させ得なくしているのですね。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

この書き込みは質問に対する直接の回答ではありません。 > (プロセス・スレッドではなく、)タスクによって とのことですが,タスクという用語は状況によって異なる概念を指すことがあります。回答する上で,プロセス・スレッド・タスクというものを質問者がどう捉えているかを明らかにしてほしいです。 http://ja.wikipedia.org/wiki/%E3%82%BF%E3%82%B9%E3%82%AF > 別の記憶領域へ呼び出されていて、 という箇所も,質問者はまず何をイメージしており,その何かから見て別の記憶領域だと捉えていらっしゃるのかを明らかにしてほしいです。

littlekids
質問者

お礼

畏れ入りますが、 下記のページでも御教授を賜れませんでしょうか? http://okwave.jp/qa/q7738054.html

littlekids
質問者

補足

有り難う御座います。 スレッド群がプロセスを構成していて、 更にプロセス群はタスクの部分集合になっている、 という図面を私は某雑誌で見掛けました。 そこで、其の内容を印象付ける為に、 私は此の質問文を纏めてみたのですが、御指摘の通りに、 タスク・プロセス・スレッドは同義を指しているのですね。 そして、更に、次のURLのページの内容を読みまして、 此処での質問に到りました。 http://www.k4.dion.ne.jp/~type_f/22A_L3/22A_L3_08.html 従いまして、自分の理解度の確認を意図しまして、 敢えてそれ等の用語を組み合わせておりますから、 度々で大変に畏れ入りますが、下記のページの内容と共に、 此処での回答を賜れませんでしょうか? http://okwave.jp/qa/q7737766.html

関連するQ&A