Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

Some articles say that modules/drivers belong to kernel space as it take part in forming the kernel; (reference: http://www.freesoftwaremagazine.com/articles/drivers_linux)

While others say that only Ring0(directly interact with hardware)can be called kernel space(excluded modules/drivers as they are at Ring2). (reference:http://jaseywang.me/2011/01/04/vfs-kernel-space-user-space-2/ )

Could anybody tell me which point of view is correct?

share|improve this question
    
There isn't any distinction in the kernel API other than that between kernel and user space. I suppose abstractly you could call the rules and functionality of the API a barrier between ring 0 and ring 1 or 2, but since a "ring 0" "ring 1" "ring whatever" nomenclature is not used by the kernel devs or in the kernel source or documentation, it really is not meaningful. Drivers are part of kernel space, applications are part of user space. If you want to number them as rings, I guess that is 0 and 3; there is no 1 or 2. –  goldilocks Apr 22 '13 at 16:02

2 Answers 2

up vote 4 down vote accepted

On AMD64 and clones, and ix86, Linux uses only ring 0 and 3. No other common architecture has the "rings" anyway, so using them fully would be totally non-portable. Besides, Linux is monolithic. The whole ring idea is to be able to run the microkernel on ring 0, and have service processes run on higher rings so they can't mess up the microkernel, and finally have userspace run in the highest ring, where it can't do much damage.

share|improve this answer
    
Actually, the whole ring idea is about providing Multi-Level Security, with gates being the only access between different privilege levels, as in Multics. –  ninjalj Jul 30 '13 at 12:26

Would you be able to provide a reference? I'm assuming you're talking about Linux, which (to my knowledge) only uses Rings 0 (kernel) and 3 (user).

EDIT:

I think it depends on operating system design. You might use the inner rings in say, a microkernel architecture. Are you asking about a specific system (e.g. Linux)? I believe it's only possible to answer this question for a specific OS. However, in most cases, x86 based OSes only use "kernel" (0) and "user" (3).

share|improve this answer
    
reference added –  California_desert Apr 22 '13 at 15:20

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.