|
Re: [ANNOUNCE] Introducing Codezero: msg#00014l4-hurd-gnu
olafBuddenhagen@xxxxxxx wrote: Not really. There *are* some similarities regarding the file system Obviously in a microkernel system, to provide the file-io interface certain core servers are not going to have this interface. I always meant file-io is only to be provided by services that are attached to the process namespace. But inside the namespace, file-io should be used as much as possible, instead of object-specific methods on every and each path component. > > - The Hurd is UNIX (POSIX) compatible - File systems are completely decentralized -- clients always talk to Could you please describe the sequence of events on how you could implement a POSIX system call using a decentralized model? (And perhaps the flexibility aspect of it) In my current (non-capability) implementation for example, here's what happens: Open: 1.) IPC to VFS service FS0, given the pathname, flags, mode args. 2.) FS0 checks the given validity of the path (single namespace) 3.) FS0 finds the right file, checks permissions, returns the file descriptor. Here, if file-based services were implemented, it would do the following: 2.) Check each path component for an fs-mount. 3.) Check permissions, call relevant service with that component for an open() 4.) Return service id and new fd 5.) User program then calls that service for further requests (i.e. with the fd, calling read, write etc.) In this model, FS0 takes the role of path navigation + authorization of each path component. In a decentralized model, how would you traverse each path component? Dividing duties into well-defined servers makes sense to me. - The system design allows users and applications to change almost all By limits I didn't mean fixed limits. I generally try not to design things using fixed limits. But you certainly should have limits to resources. These can dynamically change. In Linux, there are limits to how much while(1) fork(); you can do, which is useful for obvious reasons. Those limits can be changed by system calls. I think the question is how elegantly can you manage and dynamically change such limits. It seems this can be done using capabilities, and I don't think L4 is such a bad candidate for implementing them. Thanks, -- Bahadir Balban
|
|
||||||||||||||||||||||||||
|
|
|
| News | Mail Home | sitemap | FAQ | advertise |