The kernel provides a set of system calls to allow
various types of requests, such as access to hardware,
access to networking, access to "the" file tree,
The kernel additionally exposes logical filesystems for
so that applications can use open(2), read(2), and
write(2) to view and modify kernel state.
Various libraries can also be mmap(2)'ed so that code can
be executed by an application.
Linux/Unix uses a single "file tree" starting at "/", with
the idea of "mount(2)'ing" filesystems on the file tree.
Most devices are accessed via special files created with
mknod(2). The exception here is access to networking
devices, which use dedicated system calls.
Daemons (persistent processes) provide services that are
logical fits in userland.
Windows is much more complex, reminiscent of operating system designs from the 1970s. Following the excellent sixth edition of Russinovich's "Windows Internals", here's a description of Windows gross architecture:
Like Linux/Unix, there is a split between userland and kernel
mode activity.
However, the kernel mode is split into five main components:
The Windows "executive", which presents the base view of most
of the kernel to userland.
Below the "executive", there is what is called "kernel" and
there are "device drivers".
Below the "kernel" and "device drivers", there is a "hardware
abstraction layer" (HAL).
Parallel to the above components sit the "windowing and
graphics" component.
Userland is also similarly complex:
"System support processes" are independent and not controlled by the
service control manager (an example would be the logon process.) These
usually interact directly with kernel mode.
"Service processes" provide Windows services and are independent from
logon and related processes. These use subsystem DLLs to request
kernel mode activities.
"User applications" are, well, "user applications". These also use
subsystem DLLs to request kernel mode activities.
"Environment subsystem server processes". In modern systems, these provide
a POSIX-like environment for processes called "SUA" (Subsystem for Unix-based
Applications.)