以下の基本情報処理問題の解答を見ても理解し切れません。
ご助言お願いします。
【問22】割込みが発生すると,あるアドレスが退避され,割込み処理が実行される。割込み処理が完了すると,退避されていたアドレスが復帰され,割込み直前に実行していたプログラムの実行が再開される。退避されていたアドレスはどれか。
ア 割込みが発生したときに実行していた命令のアドレス
イ 割込みが発生したときに実行していた命令の次の命令のアドレス
ウ 割込み処理の最後の命令のアドレス
エ 割込み処理の先頭の命令のアドレス
【答】イ
割込みが発生すると実行されていたプログラムが中断され、割込み処理が実行される。
割込み処理が完了すると退避されていたアドレスが復帰され、割込み直前に実行していた元のプログラムの実行が再開される。
その場合、割込みが発生したときに実行していた命令の次の命令のアドレスが実行される。
【コメント】
下のような流れになると思っています。
なぜ「次の命令のアドレス」が出てくるのか、教えて頂けませんか。
(1)処理実行中
(2)割り込み発生
(3)(1)を中断し、どこかに退避
(4)(2)を実行
(5)(2)が完了したので、(1)を元に戻す
(6)(1)を実行(割り込み前に戻る)
No.6ベストアンサー
- 回答日時:
「命令処理の中断」ではなく「(命令の塊としての)プログラムの処理がが中断」という意味なので合ってはいますけど,確かに分かりにくい表現でしょう。
CPUの動きを複数の人でやっている流れ作業みたいなのにたとえて考えると良いと思います。
流れ作業をしているときに「ちょっとこれをお願い!」と言われて,もし今やっている処理をいきなり中断させようとしたら,全員の「やりかけ」のものを退避するか,全部やりかけ前の状態に戻さなくてはなりません。
でも,全員のやりかけ状態を退避したり、「全員がやりかけ前に戻す」っていうのは非常に面倒くさいですよね?
そこで流れ作業の先頭からプログラムの続きを読み込ませるのをやめて「今やってるのが終わったらこれをお願い!」とするわけです。これでCPU設計が格段に楽になります。
したがって流れ作業の先頭が今処理にかかった命令・・つまり今まさに実行しようとしている命令と次の命令の間に割込み処理が挟まるような動きになるわけですね。
遅くなりました、ご回答ありがとうございます。
まさに私が勘違いしていた部分です。
「命令の中断」ではなく、その命令を含んだ「プログラムの中断」なんですね。
>今まさに実行しようとしている命令と次の命令の間に割込み処理が挟まるような動き
「プログラムA→プログラム割→プログラムB」ではなく、
「命令1→命令2→命令3→「プログラム割」→命令4→命令5…」となるイメージですね。
イメージし易い例をありがとうございます。
ご回答締め切らせて頂きます。
No.7
- 回答日時:
PICマイコンのプログラミングでも時々間違えるんですよね~
割り込みをかける場所。
プログラム実行させて割り込みがかかった時だけ誤動作・フリーズが起こる。
まだまだ私もプログラミングは素人という事でしょうか・・・
No.5
- 回答日時:
>そうなると、解答にある
>「割込みが発生すると実行されていたプログラムが『中断』され」と
>「割込み『直前』に実行していた元のプログラムの実行が再開され
>る」は誤った表現なんでしょうか
実行中の命令を中断ではなくプログラムを中断と書かれているので間違いではありません。
割り込み要求が来た場合、新たな命令の発行を止め、現在実行中の命令(パイプライン処理をしていれば、複数命令あるのが普通)を全て終了させてCPUを「静か」な状態にしてから、割り込みハンドラに飛びます。このときに退避されるPCは、次に発行される命令を指していますから、割り込みから戻ってプログラムを再開すると、割り込み発生時に実行中であった最後の命令の次の命令から実行が再開されます。
遅くなりました、ご回答ありがとうございます。
根本的に「命令」と「プログラム」を同じものだと読み違えていました。
的確なご指摘ありがとうございます。
割り込み発生時に実行していた命令は、「完全に終わらせる」事がポイントですね。
No.4
- 回答日時:
自己訂正
誤
プログラム3実行中に割り込みが発生したとする。(割)
正
アドレス3実行中に割り込みが発生したとする。(割)
遅くなりました、ご回答ありがとうございます。
皆さんのご回答を何度読んでも、いまいちスッキリしなかったのですが、
自己訂正された事で、ようやく食い違いに気付けました。
No.3
- 回答日時:
情報処理は分かりませんが、、、
>解説の表現が悪いのでしょうか。
表現に引っかけじみた事も書いてないです。
プログラム実行
12345678
プログラム3実行中に割り込みが発生したとする。(割)
123割45678
っとなる。
よって実行していたアドレス3で、
実行していた命令の次の命令のアドレス4ですから、
答えはイ
遅くなりました、ご回答ありがとうございます。
自己訂正して頂いた事が理解につながりました。
プログラムA(12345678)
プログラムB(一二三四五六七八)
プログラムZ(壱弐参…)
プログラムAの3で割り込み発生した場合
・割込み発生時、『中断』されるのは「プログラムA」
・退避されるのは、「プログラム単位」ではなく「命令4(のアドレス)」 ←勘違いポイント
・「割り込み直前に実行していた元のプログラム再開」は、「命令4」(広義でPGA)の実行を指している
・「プログラムA→割→B」ではなく、1→2→3→「プログラムZ」→4→5… となる
「プログラム」と、その中にある「命令」がごっちゃになってました。
ありがとうございました。
No.1
- 回答日時:
退避していた時の命令は割込発生時点では終了しているので、退避していたアドレスに戻って、再度実行して今うと、2回実行してしまうからです。
たとえば、
CPUが
1
2
3
と実行したときに割込が発生し、一通り実行し終わって戻った時には、3からではなく、4から実行したいからです。
ご回答ありがとうございます。
なるほど、割り込み発生時に実行してる処理は完了させるのですね。
そうなると、解答にある
「割込みが発生すると実行されていたプログラムが『中断』され」と
「割込み『直前』に実行していた元のプログラムの実行が再開される」は誤った表現なんでしょうか
公式ではないサイトからの引用ですので
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム CPUの問題について 2 2022/07/09 12:04
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- その他(自然科学) 論文のまとめに関して(小論文)添削お願いします。 6 2023/07/16 14:24
- その他(プログラミング・Web制作) パイプラインに詳しい方 5 2022/07/04 16:47
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- 世界情勢 イーロン・マスク君が、アメリカの大統領になれば、アメリカはどのように変わると思われますか 2 2022/11/26 21:59
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- 情報処理技術者・Microsoft認定資格 (パイプライン処理)基本情報技術者の演習問題について 1 2023/03/11 17:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
COM1(RS232C)とUSB仮想COMポー...
-
MIPS と クロック周波数の換算方法
-
組み込みCプログラムで実数型
-
命令網羅率の計算問題です
-
VBAでのコントロール操作
-
Pentium 4とPentium Mの性能差...
-
KBとMB
-
【有効数字について】 授業で、...
-
実行計画の「COST」と「BYTE」...
-
2ビット、3ビット、4ビットのグ...
-
携帯電話の略語であるMBって英...
-
SSDのデータがビット落ちにより...
-
8進数 8進数の47+32の答えを 8...
-
EXCELでの16進数取り出し、上...
-
1Mバイトって何バイト?
-
16bitはダイナミックレンジが97...
-
1TBHDDに音楽ファイルは何ア...
-
もしコンピューターが2進数か...
-
Oracle AL32UTF8でのバイトサイ...
-
かけ算(わり算)と足し算(引き算...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラム言語FortranとCの違...
-
組み込みCプログラムで実数型
-
VBAでのコントロール操作
-
COM1(RS232C)とUSB仮想COMポー...
-
命令網羅率の計算問題です
-
VBSとVBA
-
PICマイコンのプログラムについ...
-
+=と÷=の処理速度の謎を教え...
-
arduino
-
任天堂64の64 CPUの仕...
-
64ビット化による処理速度低下...
-
CPUのHTについて教えてください。
-
MIPS と クロック周波数の換算方法
-
なぜ、i++なのか?(ものすごく...
-
CPU、Z80からステート数から...
-
H8Sで割り込み発生時の飛び先ア...
-
ステート数とは
-
Pentium 4とPentium Mの性能差...
-
処理時間の計算 PICアセンブラ
-
応用情報技術者試験問題の解き...
おすすめ情報