私は、オペレーティングシステムのコアが実行され、そのサービスを提供するメモリセクションを知っています。ユーザースペースは、ユーザープログラムを実行する場所です。また、プロセスには、そのアドレス空間に独自のスタック、ヒープ、データ、およびテキストセクションがあることもわかります。しかし、私はユーザースタックとカーネルスタックの概念と混同しています。私の質問は次のとおりです。
カーネルスペースとカーネルスタックの関係は何ですか?
- は、私が前に述べたプロセスのスタックはユーザスタックとカーネルスタックで構成されていますか?
- カーネルスタックはカーネルスペースの一部ですか?
- 2つのスタックはプロセスの仮想メモリアドレスで区切られていますか?
- コードセグメント:
void main(){user_mode_call(); system_call()}
2つの呼び出しのスタックフレームはそれぞれユーザースタックとカーネルスタックにありますか?
あなたのお時間をいただき、ありがとうございます。関連する文献やリンクも参考になります。
(私の質問は純粋ではないかもしれませんが、もっとプロフェッショナルな方法で入力するとすぐに更新していきます)
答えには本が必要です。 [* Operating Systems:Three Easy Pieces *](http://pages.cs.wisc.edu/~remzi/OSTEP/)をお読みください。あなたの質問は広すぎます。あなたのビジョン[仮想アドレス空間](https://en.wikipedia。org/wiki/Virtual_address_space)はあまりにも素朴です:端末で 'cat/proc/$$/maps'を試してみてください。[proc(5)](http://man7.org/linux/man-pages/man5/proc .5.html) –