Skip to content

nommu のスロット方式を、アリーナ方式と再配置可能な WAX に置き換える #175

Closed

Description

@src3453

V(Extension V)のない CPU でのユーザーメモリ管理を、固定スロット(1 プロセス 1 スロット)から、nommu Linux のような方式に置き換える。

方針

  • カーネルがページ(4 KiB)アロケータを持ち、プロセスごとに連続したアリーナを 1 つ割り当てる。アリーナにブロック、WAL、スタック、ヒープが入る。
  • 実行形式は再配置可能な WAX v3(FLAT 形式に相当、--pie)。ロード時に再配置し、同じ画像を別の場所に同時に置ける。固定アドレスの画像(v2、--protected)もそのまま動く(競合時は FND_E_ADDRESS_CONFLICT)。
  • 保護は Extension P の 8 領域(MPU)。Extension V のある CPU は従来どおりページ表。
  • mem_grow は nommu の brk と同じで、アリーナを動かさず、末尾が空いているときだけ伸ばす。--heap-hint で最初に大きなヒープを求められる。

作業

  • WAX v3 に RELOCATABLE(flags bit 2)、relocation table、heap_hint を追加(doc/spec_WAX_v3.md §3.1)。
  • tools/llvm-src32 に --pie、--heap-hint。2 回リンクの差分から relocation を作る。
  • カーネルの mm/proc/wax をアリーナ方式に変更。FND_MM_SLOT_ONLY を FND_MM_NOMMU_ONLY に改名(FND_MM=nommu)。
  • Foundation の全プログラムを --pie でビルド。
  • 仕様(doc/spec_Foundation.md §5)、README、テストを更新。

関連: #90(再配置可能 WAX の設計)、#170(BusyBox。nommu 前提)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions