Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Most processors only have 2 rings, intel x86 processors beyond 286 have 4.
Ring 0 : Most privileged, mostly used for system code
Ring 1: Mostly used for driver code
Ring 2: Mostly used for system libraries
Ring 3: Least privileged, mostly used for user applications
2 level processors can be equate to only having a ring 0 and ring 3. Some OS (Eg Linux afaik) only use ring 0 and ring 3 even on x86 architecture for portability reasons.
What this means. A processor operating in ring 3 can't access ring 0 code/data without passing through a call gate, etc. Basically most of the hardware protection hangs off the protection level the code is currently running in.
The intel docs give a pretty good explanation of how these work, so have a read of those if you're confused.
In a distributed OS, you usually don't know where the services like display, database, applications and filesystems are running on the network, and you don't want the applications to see the difference between opening a local file or a remote file.
You don't want either the application to see whether the display is remote or local, etc.
In that way, most communications will use a message-based approach (because you can hardly rely on shared memory in the case of distributed OSes :-/ ), which is usually available in micro-kernels and widely used.
So i would say micro-kernels are better suited to Distributed OSes ... though other people could tell you that Unix+X-Window+NFS looks like a distributed system and that it has monolithic kernel ...