|
|
Subscribe / Log in / New account

Not part of the operating system?

Not part of the operating system?

Posted Mar 17, 2009 18:31 UTC (Tue) by flewellyn (subscriber, #5047)
In reply to: Not part of the operating system? by nye
Parent article: How the Linux kernel works (TuxRadar)

That's an interesting question to ponder, yes. When I was studying operating systems theory in college, one of the things I noticed was the tendency in the literature to use "operating system" and "kernel" almost interchangeably. In Andrew Tannenbaum's "Operating Systems: Design and Implementation", for instance, I recall reading a number of references to "the operating system" versus "user libraries", treating libc as the latter in many cases. It seemed one of the main distinctions (hardly the only one!) was where the code lived in memory: a single, unified kernel address space, or one of many userspace virtual memory mappings? Using this distinction, "the operating system" was really just the portion that lived in "kernel space".

But then the book and the professor both went on to break that distinction by talking about microkernels; our edition of the book at the time didn't talk about exokernels, since they were too new, but our professor did mention them as well.

In the case of a microkernel or exokernel system, of course, you really can't do much of anything without libraries; an exokernel in particular provides absolutely no abstraction over the hardware, only performing arbitration of resources. So "the operating system" in this case was a small (in the case of exokernels, VERY small) chunk of code, and everything else, even traditionally "OS-level" services, was actually library code or daemons living in userspace.

Given that fact, my professor in that class encouraged us to consider "the operating system" as the kernel AND the collection of libraries and/or daemons that implemented the basic "OS-level" services: if the library or daemon was exporting functions that looked like POSIX system calls, that was the "boundary" of the OS.

But Linux is a monolithic kernel that contains a great deal of abstraction and provides a lot of services in its single kernel address space. The system calls it provides as its "entry points" ARE the POSIX system calls, plus some extras. In the case of Linux, it makes sense to consider the kernel as "the operating system", at least in some contexts.

To make a long story short (too late!), I would say "no, Android isn't a different operating system, it just has a different userspace".


to post comments


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds