Hi,
Can someone briefly explain the basic differences between the current Fiasco kernel API and the Pistachio X2 API?
Thanks
Daniel Waddington
On 01/26/2011 11:09 PM, Daniel Waddington - SISA wrote:
Hi,
Can someone briefly explain the basic differences between the current Fiasco kernel API and the Pistachio X2 API?
The current version of Fiasco is Fiasco.OC, which is no longer based on the extended V2 API: http://os.inf.tu-dresden.de/fiasco/features.html
The corresponding Pistachio feature list is available here: http://os.ibds.kit.edu/1956.php
Fiasco.OC is a capability based kernel meaning all kernel objects (including IPC "channels") are addressed via mappable capabilities, which reside in a task's address space. Pistachio X.2 works with a global namespace for all kernel objects, which means to avoid existence leaks you have to globally partition the thread namespace. Both Fiasco.OC and Pistachio implement UTCBs as the main mechanism for data exchange between user-level threads and the kernel, which effectively gives you a 32+ word register IPC. OC supports a quota-like kernel memory management mechanism, which as far as I know is still missing in Pistachio X.2. Otherwise, both kernels provide pretty much the same functionality (HW virtualization included).
Does this answer your question?
Best regards
Marcus
Hi,
On Wed Jan 26, 2011 at 14:09:18 -0800, Daniel Waddington - SISA wrote:
Can someone briefly explain the basic differences between the current Fiasco kernel API and the Pistachio X2 API?
The API of Fiasco.OC cannot be associated with V2 anymore. It's (completely) different, that's also why we gave it the 'OC' suffix. The main difference is likely that Fiasco (and L4Re) use objects throughout the system and use capabilities to address those. For the kernel objects are, for example, tasks (address spaces) and threads, which you can create through factories (another object). User-level programs have (or have not) capabilities on those objects, and they can pass capabilities to other tasks. Objects can also be implemented in user-level while the kernel provides communication channels. The whole system on top is built upon those mechanisms.
Adam
l4-hackers@os.inf.tu-dresden.de