2017-12-05 14 views
0

私はこのOSの本を読んでいるので不思議ですI/Oのような命令はユーザーモードでどのように動作しますか?

"ユーザープログラムは常にユーザーモードで実行され、命令のサブセットのみを許可します[...]。 OSからサービスを取得するには、ユーザープログラムがシステムコールを作成し、カーネルにトラップしてOSを呼び出す必要があります。

一般的にユーザーモードでI/Oが許可されていないが、入力を求めるC++やJavaのプログラムがあるとしよう。あるいは、プログラム内の検索バーのようなものを言う。検索バーを選択すると(何かを書くことを意味する)、TRAP命令が呼び出されて(OSがカーネルで実行されているため)、I/O、つまりキーボードにアクセスできるようになります。私が正しく従うか、何がうまくいかないかはわかりません。

ユーザモードではI/Oは許可されていませんが、OSのアプリケーションには入力を使用します。また、OS自体にもキーボードコマンドがあります。キーボードコマンドを使用できる場合、OSはいつでもI/Oの準備ができていることを意味します。その後、ユーザーモードではI/O命令に関する原文は許可されません。

私の知らないことは申し訳なく思っていますが、私はこれらの用語とユーザーとカーネルの違いとちょっと混乱しています。私はOSがカーネルモードで動作し、アプリケーションがOSで動作することを知っているので、最終的にアプリケーションはI/Oにアクセスできます。

答えて

0

アプリケーションでI/Oを処理する必要はありませんか? 意味は、OSだけがそれらの種類のものを行う権限を持っています...

私は間違っていますか?

0

あなたの本をゴミに投げ捨てるか、それを使って猫の箱に入れてください。

あなたの見かけ上のパラドックスは、あなたがI/Oを行うには、カーネルモードであることを持っていると思うことですが、あなたの本はこう述べています。

「ユーザープログラムは常にのサブセットのみを許可するユーザーモードで実行します指示 "

あなたのパラドックスへの解決はあなたの本がナンセンスを吐くことです。

使用プログラムは常にユーザーモードで実行されるとは限りません。カーネルモードで頻繁に実行されます。オペレーティングシステムの基本機能の1つは、カーネルモードへの制御されたアクセスを提供する一連のカーネルモードシステムサービスを提供することです。

つまり、あなたの本能はあなたの混乱している本のテキストよりも優れています。

0

「ユーザーモード」と「カーネルモード」の意味を理解することが重要です。プロセスは、メモリレイアウトに応じて、ユーザ特権​​のメモリ領域にマップされます。
カーネルモードは基本的にスーパーバイザ特権メモリ領域にあるルーチンであり、プログラムによって呼び出されて目的の作業(I/O)を実行します。

関連する問題