linuxの勉強を始めたばかりの初心者です。
OSとカーネルの関係がよくわかっていなかったのですが、本を読んでいたところ、「OSを構成するプログラムのうちカーネルモードで動作するプログラムの総称がカーネル」という意味のことが書いてありました。
なるほど!と思ったのですが、では、ユーザモードでCPUが動いている時にはカーネルは動いていないという解釈で良いでしょうか。「カーネルが動く」という表現をしばしば目にしますが、「カーネルが動く」=「カーネルモードでCPUが動作している」と解釈しています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
ユーザモードでCPUが動いている時にはカーネルは動いていないという解釈で良いでしょうか。
いいえ。捉え方次第なところはあると思いますが、Linuxのようなマルチタスク、マルチユーザー、プリエンプティブなOSでは各プロセスの実行時間の配分に時分割(タイムスライス)も行います。ユーザーモードでプログラムが動いていてもタイマー割込み等やディスク、ネットワークアダプターなど他のデバイスからのI/Oで起動する割込みハンドラー、デバイスドライバーの実行で、カーネルモードのプログラムも実質的に常時、動いているかたちです。そうでないとマルチタスクが実現できないし、非同期に割り込んでくる外部デバイスからのデータの送受にも対応できません。
余談ですが、過去にはマイクロソフトWindows 3.x というノンプリエンプティブなGUI OSがありました。これなどはほとんどユーザーモードのプログラムで動いていますが、そのプログラムが明示的にCPUの利用権を手放さないと他のプログラムが動かないかたちでした。それでもマウス入力やネットワーク、ディスクI/Oなどはあるので、やはりカーネルモードでWindowsカーネルが強制的に動作する部分はあるものです。
完全にユーザーモードだけで動くOSだと、そのユーザーモードで動いているプログラムが暴走したときに対処できなくなるので、それを制御できるカーネルモードでのプログラムは消えることなく常に存在し、稼働し続けます。
投稿2021/09/20 03:03
総合スコア9256
0
カーネルは動いています。
その管理下でユーザーモードのプログラムが動きます
大雑把にいえば、、、
投稿2021/09/20 02:57
総合スコア23567
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
CPUのカーネルモードのことであれば、
・マルチコアCPUにおいては、ある瞬間において1つのコアがユーザーモードであっても、同じ瞬間に別のコアがカーネルモードということは普通のことでしょう。
・特定の1つのコアに注目した場合、ある瞬間においてユーザ-モードのプログラムが動いているのであれば、同じ瞬間にはカーネルモードのプログラムが動いていないことは明かでしょう。
という自明のことを聞いているのでは無いと思いますので、質問ポイントを整理された方が良いと思います。
あるいは、上記の前者があり得るかという意図の質問でしょうか?
投稿2021/09/20 04:38
総合スコア85901
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/21 03:05
2021/09/21 04:03
2021/09/21 15:33
2021/09/22 00:16
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/20 03:11
2021/09/20 03:46
2021/09/20 04:06
2021/09/20 04:28