Device drivers for the IBM 370 were simplified by IBM’s channel architecture that eliminated the real-time aspects of IO from even the kernel for all the devices that we needed. All drivers aware of the architecture of some particular device were outside the kernel except that our virtual memory support knew about real disks. Devices attached to more modern systems may go thru similar interfaces such as SCSI or USB either of which need kernel specific support. Displays are an undocumented mess.
The first three paragraphs of the index for architecture describes what they do and why they do it. It covers Keykos as well.
They go on to describe a tree of objects with a root at the bottom image wise. A ‘parent’ seems to create and control a child one node up in the tree. I don’t know if this is a convention or something enforced by kernel functionality. It is reminiscent of the Keykos big-bang but in Keykos some of the root domains cease any role early-on. I am not sure whether the tree is in fact a limitation. “The root capability is intended to be used and kept by the parent only.” The word “intended” leads me to believe that they are describing a conventional pattern rather than a kernel enforced rule.
I think that a node in this tree can serve in two sub-patterns:
They seem to consider CPU resources in the quota. More later.
This page describes interaction patterns that suggest to me that the tree structure is imposed by the kernel. There is no hint of a call mechanism between nodes and issues of kernel stack exhaustion. Still this explanation feels like a view from atop a run-time library that imposes its own style. At this point in the Keykos design documentation, one could do co-routines.
I presume that the “core node” is a user mode program that doles out RAM. No Keykos domain code deals directly with RAM. I do not complain.
From this I get the impression that capabilities (their word) are only to services, like Keykos ‘start keys’. Perhaps the limitation to tree structure is due to lack of RAM capabilities or resource capabilities.
Keykos | Genode |
facet | interface |
domain | node |
slot | slot |
general keys node | |