私はCでオペレーティングシステムを開発していますが、私はページングに苦労しています。カーネルヒープをループでテストしています。メモリを割り当て、物理ページ割り当てと仮想ページ割り当てを処理する低レベルのメモリ割り当て出力を出力します。ページフォールト後の再起動の指示
PDE 0
、すべてがページ0-1023
のための素晴らしい作品が、私は別の物理アドレスから割り当て開始した場合、すぐPDE 1
に割り当て移動すると、ページフォルトがあまりにも存在フラグのセット、そして時にはrw
フラグを上げています。
cr2
からフォールディングするアドレスを取得し、PDE
にマップし、それが属しているページを3に設定する必要がありますか?その後、私は指示を再開する必要がありますが、どうすればいいですか?助言がありますか?
私は最初の質問であなたが何を求めているのか分かりません。あなたはすでに障害の原因となっているアドレスと何をすべきかを知っているようですね?戻るとき:ページフォールトは他の割り込みと同じです - ページフォルトハンドラが呼び出される前に、EIP/RIP(この場合は*ページフォールトを引き起こした命令*を指す)がスタックに保存されます。 – pmdj
ご返信ありがとうございます。ページフォルトは、誤って機能している物理フレームアロケータが、すでに割り当てられたフレームを偶発的に割り当てたために発生しました。また、ページ境界を超えたバイトのkmallocingは問題でした。しかし、すべて解決されました。ありがとう! –