CbC による OS の実装(仮)

Taiki Taira / 03,July,2012

研究目的

OS を構成する CPU 等の機器に多少の障害が起きてもすぐに切られることがないようにする。
故障や部品交換等でOSそのものが止まるような箇所をなくす。
CbC で動作し、Cerium の Task Manager をのせる。 code segment, data segment を意識した設計にする。
shared library を減らす。

その他現行OSへの不満

CPU 消費によって硬直する、重くなる
起動、停止が遅い
multi task とは

設計

Cerium の Task Mangaer を載せ、OS に渡される処理を並列化する。

compiler を OS に載せるのかどうか

InCompiler

小さいサイズを実装するのが最善

今週の作業 [~ 2012/07/03 ]

Multiboot specifiction version 1.6 を読んで、grub2 でのプログラムの動かし方を学ぶ。

今後やること

END

Multiboot Specification

Multiboot Specification で規定された少量の規定を満たせばこの企画に準拠したブートローダー(ex. grub) から起動できる。
Multiboot Specification2 が作られており、grub2 (gurb の最新 grub1.99 )が対応しているため、Multiboot Specification2 に対応させる必要がある。

Physical Address Extension (PAE)

物理アドレス拡張。
32bit CPU で 4GiB以上のメモリを扱う技術。
AMD の AMD 64 アーキテクチャと Interl 64 アーキテクチャでは PAE のページテーブルエントリ構造を保ったまま512エントリをもった4段のページテーブル構造にすることで仮想アドレス空間を48、物理アドレス空間を52bit まで拡張。
IA-32 の PAE 互換を使用する場合物理アドレス空間の範囲は64bit mode で使った場合と同様。

Intel x86 architectures --- Segment Descripter

Enable long mode

最初にCPUのIDを確認し、Long mode が使用可能かチェックする。

linux kernel 3.3

arch/x86/boot/compressed/head_64.S で protect mode からlong mode へ移行するアセンブラが記述してある。
64bit の GDT (Global Descripter Table) や PAE (Physical Address Extension) などもこのソースで用意している。

END