UI and Userspace ideas
Some good things to take from preexisting systems:
- /etc/alternatives
- gobo/rubyx style pkg directory layout
- gentoo style config merging
Misc
- In terms of preemption latency, an interrupt-model kernel can perform as well as an equivalently configured process-model kernel, but a fully-preemptible process-model kernel provides the lowest latency.
From Fluke
- NB Move to kernel-related section.
General operations on a kernel object over the low-level API:
- create
- create with hash
- destroy
- move from one va to another
- create a reference
- get state
- set state
The Fluke kernel directly supports nine primitive object types, listed in Table 2. All types support a common set of operations including create, destroy, “rename,” “point-a-reference-at,” “get objstate,” and “set objstate.” Obviously, each type also supports operations specific to its nature; for example, a Mutex supports lock and unlock operations (the complete API is documented in [15]). The majority of kernel operations are transparently restartable. For example, port reference, a “short” system call, takes a Port object and a Reference object and “points” the reference at the port. If either object is not currently mapped into memory, a page fault IPC will be generated by the kernel after which the reference extraction will be restarted. In all such cases page faults are generated very early in the system call, so little work is thrown away and redone.
Generic port-based IPC: [client: ipc_send_bla] --> client thread blocked --> [server portset] --> [server thread on port] --> [server thread serving request and sending ipc_ack to client] --> client thread woken up --> [client: receive ipc_reply]
Migrating threads based IPC: [client: ipc_request] --> client thread migrating to server PD --> client thread serving request --> client thread returning to client PD --> [client: receive results]
Edda - enhanced debugger and disassembler. Uses some techniques from IDA and similar to interactively and intellectually parse any chunks of code. Advanced stack checking - you can detect what the values on the stack are most likely pointing to / representing by pressing a single button. Graphical data structures relations representation.
Drag app window and drop to other box in Network Neighborhood to run it's UI there.
- derives from BeOS-inspired app separation to server part and UI part - the server part stays on local box, while UI can migrate.
- should be relatively easy to migrate server part as well.
Some ways to achieve userfriendlyness:
- No text mode
- Data persistence
- Rich, friendly UI. (some navigational bits of Archie would be good to have from grounds up)
- Component based architecture, allowing constructing system out of blocks by choosing the ones you like more.
- even connecting applications that would otherwise be command line utilies, using a graphical connection tool similar to CLAM makes it possible to create sophisticated and more flexible than unixish one-input - one-output command chaining. (a small toolbox icon on the main desktop, which opens this "tasklet" manager with a prepopulated set of ready-to-go tasklets)
Bootup
- boot screen tagline: "in the living memory of V2_OS"
bootup first line sexyness:
Vesper booting
vEsper booting
veSper booting
vesPer booting
vespEr booting
vespeR booting
(nothing else is shown when doind quiet boot until graphics start up)
Multiboot loader loads kernel and init image and jumps to kernel startup entry point.
Kernel and init image reside on a small ext2 partition to let grub find it.
Kernel sets up processor mode and memory protection and jumps to first instruction in the init component.
init (the first, root, nester) finds in the image and starts the following components:
- root memory manager,
- root filesystem mounter,
- hardware detector,
- root object manager,
- root security server,
- and root trader.
Once trader is started, components can be requested for and connected.
Metta has a strong focus. It is a graphical desktop operating system with focus in gaming, multimedia (video/audio) and [mobile] social communications.
On m-kernel construction
These notes are mostly obsolete. REFINEME
- Kernel API much like in L4?
- Kernel controls the following bits:
- Address-space (Container) manipulation: sigma0, grant, map, demap(flush).
- Threads - active entities executing in the address space (?migrating threads?) IP, SP, State (includes Address space sigmaT)
- IPC - cross-address-space (inter-task) communication.
- supervised IPC - FLASK for this?
Second-level cache and TLB hit rates can be improved by using a special pager that allocates memory beneficially for cache hit rates. Not in the kernel. (See how linux does this instead). In practice first-level TLB handlers are usually in hardware or inside m-kernel.
(to self) read about TLB operation in cpu books.
Also see L4's funky TLB-flush-cost-small-spaces address-space switcher. [Liedtke 1995]
Utah-Mach. [Ford and Lepreau 1994, thread-migrate.pdf] changed Mach IPC semantics to migrating RPC which is based on thread migration between address spaces, similar to the Clouds model [Bernabeu-Auban et al. 1988]. Substantial performance gain was achieved, a factor of 3 to 4.
Bernabeu-Auban, J. M., Hutto, P. W., and Khalidi, Y. A. 1988. The architecture of the Ra kernel. Tech. Rep. GIT-ICS-87/35 (Jan.), Georgia Institute of Technology, Atlanta, GA.
Appendix A: An Abstract Model of Address Spaces
Names
Names
- Metta - Loving kindness,good will, friendliness (thai/pali?) -- OS name
- Vesper - another old name, "evening star" -- kernel name
Other names:
- Nabu - babylonian god of wisdom and writing -- name for text editor
- Eir - (goddess of healing) "A breathe of Eir"
- Erin - One of three queens of the Tuatha De Danann. (?)
- Atta - self/ego (buddhist)
- Oxia
- Skuld (necessity, a norn)
- Hild (battle, a valkyrie)
- Olrun (One Knowing Ale Rune, a valkyrie)
- Bor (father of Odin, Vili and Ve)
- a language as OS father seems nice =)
- (btw, Balder can be (G)UI system then =) because Balder is son of Odin)
- so, Bor -- Odin -- Balder
- Bragi (god of poetry) - a poetic language?
- Jord (Earth goddes, mother of Thor and Frigg)
- Magni (son of Thor, will survive Ragnarok, name means "strong")
- Snotra (wise and gentle goddess)
- Vidar (son of Odin and Grid, will kill Fenris, will survive Ragnarok)
- Yggdrasil - the world tree
- Synergy
- Qismat - persian "fate" (kismet is very widely used in english) (-)
- Mana - mind, thinking faculty (+)
- Nilaya - abode in blue heaven
- There is a Japanese word for this approach: jojo. Slowly, gradually and steadily. [name for package/updates manager?:P]
