|
Re: [ANNOUNCE] Introducing Codezero: msg#00015l4-hurd-gnu
olafBuddenhagen@xxxxxxx wrote: Hi, What I see in Hurd is a multi-server POSIX compatible OS core based around a truly microkernel design. I accept certain lacking parts, but by this definition my work is not that far from it. Especially that the non-trivial OS services are there (memory management and file management) its the protocol that lacks mostly on the Hurd design ideas, i.e. distributed path navigation & a dynamic security mechanism. But I can argue that L4 is the best candidate for a microkernel based This claim was probably made with many assumptions that narrowed down the example case to produce a negative result. In other words, perhaps the way it's design was anticipated was costly. I always think there can be a new perspective. Having all capabilities maintained by the microkernel will add policy to it and inflate it, so it will somewhat deviate from a rigorous microkernel design. If you believe that to be more appropriate for maintaining security, it may be a reasonable tradeoff for you. However, a significant goal in Codezero is to remain generic for building any OS core on top. In that respect, no OS specific policy is allowed inside. Keeping userspace capabilities in the kernel would be against that principle. I am currently implementing capabilities for kernel resources though. That is a generic necessity and it makes sense to have it. A user program is granted a capability as above from an authorization OK I have thought about this, and actually you have a point that checking in the kernel can be easily accounted to the client, since kernel execution is also part of that thread's timeslice. And then there is the overhead. I am not sure about the overhead. If the service possesses a copy of the capabilities to itself that its clients have, the checking is simply done in the server in the form of a function that would otherwise be placed in the kernel. Capabilities would be sent to the server during mounting of the server as a service or during open(). From that point on, each request is a single call to the server. But anyway before I get that far, I am currently implementing capabilities for the microkernel resources, first. EROS has proven that kernel-based capabilities can be implemented with Lack of capabilities is not the only problem with traditional L4. The It is trivial to implement asynchronous messaging in L4, and I agree that there are occasions where it is necessary. However, asynchronous programming is a bad programming practice, and if you think of making it a central part of your communication protocol this is a very very bad idea. In latest L4 designs (and in Codezero) the kernel does not allocate for userspace. I've implemented a complete pager with no relationship with the kernel on memory usage. Experience shows that microkernels are not really reusable, except for From this discussion I see that the only major difference is managing userspace capabilities inside the microkernel. I will look into that option by adding a capability extension on the ipc request type. Each ipc request number would be then subject to kernel's capability checking. I am interested in Hurd because originally my idea of building a solid microkernel-based OS closely relates to Hurd goals, even though some design ideas seem to be different. Hopefully Codezero may provide a viable alternative. Thanks, -- Bahadir Balban
|
|
||||||||||||||||||||||||||
| News | Mail Home | sitemap | FAQ | advertise |