L4 Memory Management
Posted: Wed Aug 12, 2009 2:32 am
I'm extremely interested in replacing the kernel in my OS with L4::Pistachio primarily for it's speed. I'm still int he planning stages of this operation, and I have a few questions.
Firstly, from what I understand sigma0 is the first user-task, and on bootup it has all physical memory and IO ports mapped to it, and other tasks (or just the root task?) request memory from it. Also what is the purpose of sigma1 (a clone of sigma0?) and an example of when you would need it?
Secondly, a core concept in my OS is assigning names to processes so you can look up the PIDs of servers and the like. This was in the kernel in my previous microkernel, so I'll now have to implement it in a Process Server, which will also be in charge of associating processes with users and their permission levels (most likely this will be the root task in L4 terms). A core feature of this is knowing when a process terminates, the most obvious way is the process sends an message to the Process Server telling it to terminate. But, what if a process terminates it's own threads, or terminates due to an exception? Does L4 have a mechanism for capturing these events?
Thirdly, how do privilege and priority levels work? I understand that the root task begins as a privilege process, and it is the only privileged process there is?
Thanks in advance.
Firstly, from what I understand sigma0 is the first user-task, and on bootup it has all physical memory and IO ports mapped to it, and other tasks (or just the root task?) request memory from it. Also what is the purpose of sigma1 (a clone of sigma0?) and an example of when you would need it?
Secondly, a core concept in my OS is assigning names to processes so you can look up the PIDs of servers and the like. This was in the kernel in my previous microkernel, so I'll now have to implement it in a Process Server, which will also be in charge of associating processes with users and their permission levels (most likely this will be the root task in L4 terms). A core feature of this is knowing when a process terminates, the most obvious way is the process sends an message to the Process Server telling it to terminate. But, what if a process terminates it's own threads, or terminates due to an exception? Does L4 have a mechanism for capturing these events?
Thirdly, how do privilege and priority levels work? I understand that the root task begins as a privilege process, and it is the only privileged process there is?
Thanks in advance.