1

are there any (at least on plan or theoretical level) that drivers will be/are/would be separated in general? ex.:

  • touchpad drivers shouldn't have to do anything with network access
  • wireless drivers shouldn't be able to touch anything from ex.: /home
  • graphics/wireless/sound/disk/etc. drivers shouldn't be able to get anything from keyboards
  • microphones shouldn't have to do anything with network access
  • and so on.

or is this only a dream or bad concept that separation needed "inside kernel level"?

1

The whole idea of microkernels revolves around such separation. That concept is now easily 40 to50 years old, and there are plenty of OSes that use micro or hybrid kernels. Your research into OS architectures can't have been overly deep if you haven't heard of that! For reference: https://en.wikipedia.org/wiki/Microkernel#Device_drivers

1

Google "user-space drivers" and "microkernel architecture".

There is a nice old debate/flame war between A. Tanenbaum and Linus Torvalds about microkernels vs monolithic kernels which you can still find on the internet.

They both agree that microkernel design is much nicer than monolithic kernels, and obviously microkernels can be better protected from security flaws in drivers. But Linus argues that microkernels are much less efficient than monolithic kernels because they have to spend lots and lots of time doing privileged task switches and waste time on doing message passing between the kernel and the various drivers.

Microkernels do exist, such as the Mach kernel or GNU Hurd, which is based on Mach, I think - but GNU Hurd wasn't anywhere near ready for production when Linux came along and I don't know whether anyone uses GNU Hurd for anything productive.

If I'm not mistaken, Apple's OS X is based on the Mach microkernel.

  • There are plenty of microkernels that are in use and popular. L4 (whether OKL4 or seL4) is present on almost all modern Android basebands. QNX is common for embedded and handheld devices. MINIX is present on CSMEv11 (Intel ME). iOS uses a microkernel. A variety of common embedded devices that one tends to forget about use microkernels (e.g. smart meters and refrigerators, which often use extremely small microkernels/picokernels such as FreeRTOS). – forest Feb 20 '18 at 2:52
  • macOS/OSX uses XNU which is a hybrid kernel, not Mach. While XNU was based on Mach, XNU is pretty much monolithic compared to other actual microkernels. – Lie Ryan Feb 20 '18 at 10:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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