No.3ベストアンサー
- 回答日時:
用語をご説明します。
・「リエントラント」 ・・・再入可能
あるサブルーチンを考えます。そのサブルーチンを実行中に「割り込み」が入り、そのサブルーチンが再び呼び出される場合、「リエントラント」でなくてはなりません。前に実行した中間結果が破壊されてはこまるからです。FORTANはリエントラントではありません。最近の言語はほぼすべてリエントラントに記述可能です。ただし、グローバル変数を多用するとこのかぎりではありません。
具体的には、そのサブルーチンで確保される変数など(コンテキストといいます)がスタック上、または独立した領域に実行単位ごとに確保されなければなりません。C言語では、static宣言した変数が使われるとリロケータブルではなくなります。
・ マルチスレッド
「スレッド」とはOSで制御される「最小限の実行単位」(数ミリ秒)のことです。複数のスレッドでプロセスまたはタスクが構成されることもあります。マルチスレッドでも、「再入」がなければリエントラントである必要はありません。そのプログラム(AP、OSをとわず)の制御構造に依存します。
「スレッド」はOSのプロセス制御方法に関することで、アドレスに関することではありません。
・ forkによるプロセス生成
forkで作成したプロセスは親プロセスのコピーですので、OSで管理されるヘッダをのぞき、親プロセスと同一になります。非リエントラント部分はそのままコピーされます。
問題になるのはカーネル部分で、実アドレスに依存するようなケースがあります。別プロセスとはいっても、OSでは同一コンテキストで制御され、リエントラントである必要が多いです。
・リロケータブル
生成された機械語が配置されるアドレスがどこのアドレス(仮想、実をとわず)にも置ける場合、「リロケータブル」といいます。通常、コンパイラの生成するオブジェクトはリロケータブル(先頭アドレスからの相対アドレスで記述)ですが、実行ファイル(EXE)を作成する際にはなんらかの方法でアドレスを決定する必要があります。「リロケータブルでない」場合、実行するアドレスは固定(例えば:1000番地)でなくてはなりません。しかし、最近のCPUは仮想アドレスで管理され、実アドレスを意識する必要がほとんどないため、リロケータブルかどうかは昔ほど重要でなくなりました。しかし仮想アドレスとはいっても配置されるアドレスが固定というのは非常に制限がきつく、仮想アドレスではリロケータブル、というのが普通です。
・ Win、UNIX上のアプリケーション
基本的にリロケータブルです。デバイスドライバは応答性能面の理由・制御の容易さの理由からリロケータブルでない場合があります。OSによって状況は異なります。
一般的にAPに近いほどリロケータブル、OSのカーネルに近いほど「非リロケータブル」の可能性がある、と考えてください。
・ リユーザブル
「再利用可能」と訳されますが、この用語はソフトウェア工学の用語です。「リロケータブル」、「リエントラント」とは趣が異なります。
プログラムは再利用が可能なのは当たり前であり、1回しか使えないプログラムは意味を持ちません。ただし、前回の実行状況に依存して次回の実行結果がかわる・そのモジュールがグローバルな状態遷移を持つ、というのは別次元の議論です。情報処理技術者試験のテキストをあまりみたことないので、すみません。
No.2
- 回答日時:
1の方の補足です。
Windowsアプリケーションは基本的にリロケータブルです。
ただしデバイスドライバなど一部のアプリケーションはリロケータブルではありません。
No.1
- 回答日時:
1 それでいいです。
2 forkで作られたプロセスは、もとからコピーされたまったく別個のメモリ空間をもちます。ですから同一のメモリをアクセスすることはなく、リエントラントである必要はありません。
3 Windowsは知りません。UNIXの通常のアプリケーション本体はリロケータブルではありません。グローバル変数や関数は絶対番地で参照されます。ただしダイナミックリンクされるライブラリのオブジェクトはリロケータブルに作られています。
4 情処的な再使用可能という意味では、リエントラントの簡易版ということになるでしょう。外部変数や静的変数を使わない関数はすべてリユーザブルでありリロケータブルです。それらを使っているとしても、実行後あるいは実行前に初期状態にもどすなら、リユーザブルです。atoiはリユーザブルですが、strtokはリユーザブルではありません。printfは・・・微妙ですね。実用上はあまり使わない概念だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 弁護士・行政書士・司法書士・社会保険労務士 行政書士試験 行政行為に該当しないものについて 3 2023/01/02 19:42
- その他(悩み相談・人生相談) 自分の行動を変えるための具体策が思いつきません。 自分は「自分本位であること」「物事のやり忘れがおお 3 2023/07/06 08:57
- その他(パソコン・スマホ・電化製品) 人間の長期記憶に関するモデルについて。 下記の内容をもとに、一番下の質問の具体例が思いつく方いたら具 1 2023/06/30 18:21
- JavaScript ブックマークレットについて 2 2022/10/09 11:48
- その他(教育・科学・学問) シンプルと複雑の違い 1 2022/08/12 13:31
- その他(教育・科学・学問) 真面目な質問です。ぜひ教えてください。 仕事や試験が上手くいく時、自分の頭の中に具体的な成功がイメー 2 2022/06/18 10:28
- 警察・消防 警察が考える不審者と我々市民が考える不審者って、違うんですか? 俺も消防団活動の一環で近所の神社の前 5 2023/02/28 12:29
- 数学 極限が無理数とか有理数になる 5 2023/02/19 04:07
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- 介護福祉士・ケアマネージャー・社会福祉士 介護関係者の方に真面目な相談です!! 大変悩んでます…。。 介護専門学生ですが訪問介護に3日実習いき 1 2022/05/23 16:56
関連するカテゴリからQ&Aを探す
医師・看護師・助産師
薬剤師・登録販売者・MR
医療事務・調剤薬局事務
歯科衛生士・歯科助手
臨床検査技師・臨床工学技士
理学療法士・作業療法士・言語聴覚士
臨床心理士・心理カウンセラー・ソーシャルワーカー
介護福祉士・ケアマネージャー・社会福祉士
弁護士・行政書士・司法書士・社会保険労務士
フィナンシャルプランナー(FP)
中小企業診断士
公認会計士・税理士
簿記検定・漢字検定・秘書検定
情報処理技術者・Microsoft認定資格
TOEFL・TOEIC・英語検定
建築士
インテリアコーディネーター
宅地建物取引主任者(宅建)
不動産鑑定士・土地家屋調査士
マンション管理士
電気工事士
美容師・理容師
調理師・管理栄養士・パティシエ
シェフ
保育士・幼稚園教諭
教師・教員
国家公務員・地方公務員
警察官・消防士
その他(職業・資格)
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【電気】フリッカー回路ってな...
-
ミキサの原理
-
セレン整流器は金属のセレンが...
-
RS-FF回路について
-
リユーザブル,リエントラント...
-
ソフトウェア開発技術者~タス...
-
主記憶装置からの動的割り当て
-
プログラムの規模を表す単位「k...
-
パソコンでインターネット接続...
-
hdmiはパラレル?シリアル?
-
ubuntuで デイスク/deb/loopと...
-
ライン数とステップ数の違いに...
-
ゆゆにゃ。
-
エラー?メッセージ
-
命令口調について
-
ブラインドタッチ
-
ワープロ検定の勉強法について。
-
Excelでの統計処理(合計点、平...
-
最大スタックサイズを大きくす...
-
固定電話機のパソコンとの連動
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ic-PcAn はどこのこと?
-
ページ置き換え LRU方式
-
コンパクションとガーベジコレ...
-
SP領域とはなんですか?
-
リユーザブル,リエントラント...
-
アイソレータとはなんですか?
-
【電気】フリッカー回路ってな...
-
ミキサの原理
-
知識があまりありませんので説...
-
人類の農業まで
-
電子回路と電気回路の違いを教...
-
第一級陸上特殊無線技士
-
半導体の前工程と後工程について
-
セレン整流器は金属のセレンが...
-
DMAチャネルの劣る点とは?
-
[病院関係者の方] 人工呼吸器回...
-
ソフトウェア開発技術者~タス...
-
パソコンでインターネット接続...
-
プログラムの規模を表す単位「k...
-
ubuntuで デイスク/deb/loopと...
おすすめ情報