this post was submitted on 24 Oct 2024
35 points (94.9% liked)
Linux
48220 readers
816 users here now
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
NT is a hybrid kernel that is nearly monolithic.
Also you don't seem to understand what the difference between a microkernel and a monolithic kernel is. The defining difference is what mode and address space drivers and non-core kernel subsystems run in. If they run in the higher half in a privileged CPU mode like the base kernel then you have a monolithic kernel. If they run in userspace as one or more programs then you have a microkernel. If some run in kernel space and others run in userspace you have a hybrid kernel. And if your kernel exposes hardware interfaces directly to application programs providing only protection and multiplexing of them between programs and shared libraries are used to interact with those interfaces then you have an exokernel. If the kernel mimics the underlying hardware to each program running on top of it and let's them think they're running on the hardware directly then you don't have a kernel at all you have a type II hypervisor.
Indeed, gaps are present in my knowledge. I understand what you wrote, in theory, but vaguely based on my reading from a forum on kernel architectures several years ago. I'm most familiar with the user experience of configuring a custom Linux kernel with Gentoo versus needing a WiFi driver that I need WiFi access to source.
Since you are touching on a gap in my knowledge, perhaps a more recent issue and curiosity will help me ground this a little better if you do not mind responding. What is the deal with secure boot and Windows drivers? How are they able to run some random driver from the internet that has DMA?
Secureboot and DMA are two different and AFAIK unrelated things. Secureboot primarily exists to ensure that only trusted OS kernels are run on a particular device. Otherwise someone could just boot their own OS installation from wherever and then have it access your storage and other devices and thus compromise your machine. I am not entirely sure how it works but I think it uses cryptographic signatures for kernels and drivers that aren't built into a kernel. I know that on Linux with Secureboot on if you want to use certain dynamically loaded drivers then they have to be signed. I prefer not to deal with all that so I just disable it in the firmware because no cyber criminal has physical access to my PC anyway.
DMA is just a way to get data from peripherals without CPU intervention. Without DMA every time a peripheral wanted to send your machine data it would have to trigger an interrupt (or be polled continuously) which the OS would catch and then read the data from the device. This isn't really super practical with modern hardware hence DMA allows peripheral devices to write directly to the system's main memory without the CPU (or the OS that runs on it) being involved at all. Then the kernel can read that data from memory whenever it sees fit to do so.