このプログラムで割り込みが起こっている部分はどこなのでしょうか。
-
青菜
このプログラムで割り込みが起こっている部分はどこなのでしょうか。
以下のプログラムで内部割り込みが起こっているのはどこなのでしょうか。システムコールを呼び出すexit(1)は
そうだと思うのですが、他にはあるでしょうか。
また、外部割り込みは標準入力をするscanfのみで合っているとおもうのでしょうがいかがでしょうか。
回答よろしくお願いします。
そうだと思うのですが、他にはあるでしょうか。
また、外部割り込みは標準入力をするscanfのみで合っているとおもうのでしょうがいかがでしょうか。
回答よろしくお願いします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
環境が書かれていないので何処で内部割り込み・外部割り込みが起こるかはC言語の実装によりますが、OS任せだとそんな事を意識する必要もないと思います。
あえて書くなら
入出力は、外部割り込みが関連する可能性が高いでしょう。
OSのコールは、入出力やexitやmain終了後に発生します。
あえて書くなら
入出力は、外部割り込みが関連する可能性が高いでしょう。
OSのコールは、入出力やexitやmain終了後に発生します。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
青菜
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
失礼しました、割り込みが起こっているところではなく、各々の割り込みを"呼び出す"部分でした。
環境はよくわかりません。
環境はよくわかりません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
環境を限定しないとこの話は、割り込み自体を想定できません。青菜 さんが書きました:失礼しました、割り込みが起こっているところではなく、各々の割り込みを"呼び出す"部分でした。
環境はよくわかりません。
マイコンなどでOSなしで動いている場合と、パソコンで動いている場合では動作がかなり違うからです。
あと、どのぐらいの知識があるかとか、どのぐらいの深さの話をしたいのか限定する必要もあります。
OSのスーパーバイザレベルとか、システムコールとかどの程度理解されていますか?
分かっているCPUやOSを説明してもらったほうが良いです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
青菜
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
softya(ソフト屋) さんが書きました:環境を限定しないとこの話は、割り込み自体を想定できません。青菜 さんが書きました:失礼しました、割り込みが起こっているところではなく、各々の割り込みを"呼び出す"部分でした。
環境はよくわかりません。
マイコンなどでOSなしで動いている場合と、パソコンで動いている場合では動作がかなり違うからです。
あと、どのぐらいの知識があるかとか、どのぐらいの深さの話をしたいのか限定する必要もあります。
OSのスーパーバイザレベルとか、システムコールとかどの程度理解されていますか?
分かっているCPUやOSを説明してもらったほうが良いです。
問題文には環境の点には触れていないので、私の学校で使っているものとします。
Linux 64bitのものを使用しています。
知識はあまりありません。
システムコールにはどんなものがあるかくらいの知識しかなく、スーパーバイザレベルなるものは全く知りません(学校でも確か触れていませんでした)。
定期テストで答えられるほどのレベルの話で、あまり深い内容まで入らなくても大丈夫です。
回答よろしくお願いします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
軽く説明するなら、上に書いたとおりです。softya(ソフト屋) さんが書きました:環境が書かれていないので何処で内部割り込み・外部割り込みが起こるかはC言語の実装によりますが、OS任せだとそんな事を意識する必要もないと思います。
あえて書くなら
入出力は、外部割り込みが関連する可能性が高いでしょう。
OSのコールは、入出力やexitやmain終了後に発生します。
もう少し細かく書けば、入出力の関数は外部割り込みと内部割り込みが発生する可能性があります。
ただし、OSによって管理されているので実際には外部割り込みは直接は発生しません。
OSに対してのシステムコール(内部割り込み)はexit()やmain終了後となります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
僕が知ってるLinuxの実装だと、有名なシステムコール open, close, read, write があります。
printfなどは、バッファが満杯になったときにwriteを呼び出すようになっていると思います。
exit(1)と書くと1章のexitと勘違いするかもしれません。
マニュアルの章立て
2章はシステムコール、3章はライブラリ関数なので、ライブラリ関数のexitなら
exit(3)
となります。
ちなみに
man 3 exit
というように、希望する章番号を渡せますので活用して下さい。
printfなどは、バッファが満杯になったときにwriteを呼び出すようになっていると思います。
Linux(というかUnix)の世界では、括弧の中にmanの章番号を書くことが多いので、青菜 さんが書きました:システムコールを呼び出すexit(1)はそうだと思う
exit(1)と書くと1章のexitと勘違いするかもしれません。
マニュアルの章立て
2章はシステムコール、3章はライブラリ関数なので、ライブラリ関数のexitなら
exit(3)
となります。
ちなみに
man 3 exit
というように、希望する章番号を渡せますので活用して下さい。
-
青菜
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
ということは結果的にprintfもシステムコールを呼び出すようになっているということですね!beatle さんが書きました:僕が知ってるLinuxの実装だと、有名なシステムコール open, close, read, write があります。
printfなどは、バッファが満杯になったときにwriteを呼び出すようになっていると思います。
初めて知りました。以後気をつけます。beatle さんが書きました: Linux(というかUnix)の世界では、括弧の中にmanの章番号を書くことが多いので、
exit(1)と書くと1章のexitと勘違いするかもしれません。
-
青菜
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
softya(ソフト屋) さんが書きました: OSに対してのシステムコール(内部割り込み)はexit()やmain終了後となります。
あれ、ということはやっぱりprintfはここでの解答”内部割り込みを呼び出す部分”にはならないのでしょうか。beatle さんが書きました:僕が知ってるLinuxの実装だと、有名なシステムコール open, close, read, write があります。
printfなどは、バッファが満杯になったときにwriteを呼び出すようになっていると思います。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
LinuxのC言語の標準関数の中をトレースしたことがないので断言できないことをお断りしておきます。
scanfの場合はシステムコール(内部割り込み)で情報を取得してこないと話しにならないのでシステムコールは確実です。
ただし、OSが管理しているキーボードの情報取得は外部割り込みが発生しますが、これとstdinのファイルディスクリプタが直接接続されているわけではない(OS内でバッファリングされる)ので答えとしては微妙です。
同様にprintfされた情報はバッファに貯められた後最終的にstdoutファイルディスクリプタを使ってシステムコールで書きだされますが、これもOS内でバッファリングされてビデオ表示回路に直接データが送られるわけではありません。なので外部込みを利用するか言われれば微妙です。
【追記】
安藤と青菜さんは同一の方ですよね?
名前の統一をお願いします。
scanfの場合はシステムコール(内部割り込み)で情報を取得してこないと話しにならないのでシステムコールは確実です。
ただし、OSが管理しているキーボードの情報取得は外部割り込みが発生しますが、これとstdinのファイルディスクリプタが直接接続されているわけではない(OS内でバッファリングされる)ので答えとしては微妙です。
同様にprintfされた情報はバッファに貯められた後最終的にstdoutファイルディスクリプタを使ってシステムコールで書きだされますが、これもOS内でバッファリングされてビデオ表示回路に直接データが送られるわけではありません。なので外部込みを利用するか言われれば微妙です。
【追記】
安藤と青菜さんは同一の方ですよね?
名前の統一をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
青菜
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
回答ありがとうございました。とても参考になりました。
何といいますか、安藤さんから聞かれた問題が恥ずかしながらわからなかったので安藤さんから
ここでいろいろ教えていただけると聞いてお互いのPCでごっちゃに質問を繰り返しているうちに混ざってしまったようです。
以後、安藤に統一します。
失礼しました。
青菜です。softya(ソフト屋) さんが書きました: 【追記】
安藤と青菜さんは同一の方ですよね?
名前の統一をお願いします。
何といいますか、安藤さんから聞かれた問題が恥ずかしながらわからなかったので安藤さんから
ここでいろいろ教えていただけると聞いてお互いのPCでごっちゃに質問を繰り返しているうちに混ざってしまったようです。
以後、安藤に統一します。
失礼しました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
ご学友という事なら違う名前で問題ないですから違う名前でご質問ください。
なお、解決した場合は投稿時に解決チェックをお願いします。
なお、解決した場合は投稿時に解決チェックをお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
青菜
Re: このプログラムで割り込みが起こっている部分はどこなのでしょうか。
わかりました。softya(ソフト屋) さんが書きました:ご学友という事なら違う名前で問題ないですから違う名前でご質問ください。
なお、解決した場合は投稿時に解決チェックをお願いします。
いろいろ教えていただきありがとうございました。