2017-06-19 18 views
1

システムコール、それらのモード、それらがどのモードで使用されているか、read()、getchar()、sqrt()がシステムコールを使用するかどうかについて質問されました。システムコール - カーネルで使用される関数

私はシステムコールがプロセスとOSの間のインタフェースを提供し、これらはカーネルモードで使用されると答えました。

私にとって気になるのは、私にとっては、それらの3つのシステムコールを使用する唯一の関数がread()です。

私は正しいですか? getchar()とsqrt()もシステムコールを使いますか?

(注:読み取り()unistd.h GETCHARから()stdio.hのとSQRTから()のmath.hから)

+1

'getchar()'はどのように文字を取得すると思いますか? – Stargateur

+1

(d)数学ライブラリも提供するシステムがあります。 – Olaf

+0

はい、私はそれについて考えましたが、システムコールを含む中間の関数ではありませんか? 編集:getchar()とsqrt()はそれらの中でシステムコールを使用するためです。どちらもシステムコールだと言えますか? –

答えて

2

システムと定期的なコールの間の差は、システムコールがなければならないということですオペレーティングシステムにトラップを発行しますが、通常の呼び出しでは別のユーザーレベルのサブルーチンが呼び出されます。違いは、呼び出しがどのモードで実行されているかということです。

Sqrtはシステムコールではありません。それは単純な計算を実行するだけです。私が正しく覚えていれば、read()とgetchar()の両方がシステムコールです。これは、オペレーティングシステムが入出力操作を処理するためです。

+0

ああ、read()は直接システムコールです。getchar()は関数内でシステムコールを使用するので、getchar()もシステムコールです。計算を実行するので、システムコールをisntする唯一の人はsqrt()ですか? –

+0

getchar()は必ずしもシステムコールを使用しているとは限りません。それは、標準入力ストリームの次の文字を取得することです。この入出力ストリームへのアクセスは、通常のプロセスがオペレーティングシステムなしでは行えないものです。そのため、getcharはシステムコールです。 –

関連する問題