RX/286

From Ruud Koot

Revision as of 12:52, 15 February 2009 by Ruud Koot (Talk | contribs)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)
Jump to:navigation, search

RX/286 is a microkernel designed around the Intel 80286's 16-bit segmented protected virtual address mode.

Contents

[edit] Design

[edit] Memory management

Keep track of physical memory in circular doubly linked lists for block sizes of 2k aligned on 2k boundaries (for 8 ≤ k ≤ 16; e.g. blocks from 256 bytes through 65536 bytes.) Pointers are stored in the unallocated physical memory.

The full 16 MB address space is divided into 216 256 B pages. As segments are never larger than 64 kB it is not useful to track larger contagious regions of physical memory.

allocate takes O(1), although with a higher constant if:

free takes O(1). Contagious smaller pages are not consolidated. This could be done by using a red-black tree instead of a linked list, but would increase the runtime of free to O(log n).

Memory can still get fragmented, so a defragmentation process and additional allocation heuristics would be useful.

It might be necessary to keep track of different regions of memory (memory below 1 MB, memory above 1 MB) and different kinds of memory (regular memory, device memory which should not be reallocatable if freed) and support for bank switched memory (like expanded memory and possible a swap file).

[edit] Protection

Ring 0 Hypervisor
Ring 1 Supervisor
Ring 2 Drivers
Ring 3 Applications

[edit] Task management

[edit] File system

[edit] Other operating systems

For you
For me
Web 2.0
Wikis
Toolbox