Do you understand your operating system?
kbob: There are some things I understand.  I've written parts of Unix/Linux virtual memory, network stacks, process management, threads, interrupt handlers, synchronization primitives, TTY line disciplines, various kinds of device drivers.  I've debugged parts of block I/O systems, file systems, NFS client and server, CPU schedulers.  I feel like I understand those.There are things I don't understand.  I don't know the I/O architecture of a PC nor how the OS integrates with the BIOS.  I don't know how the subdirectories of linux/drivers/ are organized, even at the first level.  I've never designed a filesystem, and suspect there are subtleties I don't appreciate.I never bought Bill Gates' testimony during US vs Microsoft that an operating system includes its web browser.  In my arrogant opinion, an OS starts and ends with the kernel.  So the next question is, how much do I understand about the rest of the platform?  It varies.I do know how the X11 protocol works, how the classic X server worked, how Xt intrinsics work.  Do understand the classic Unix utilities and libc and their modern GNU reimplementations.Don't know how an RDBMS works inside.  Haven't kept up to date with compiler optimizations.  Don't know how debug info is stored in object file and executables or even exactly what it is.  Don't have any idea how that huge pile of libraries in GNOME (or KDE) is organized.  Have only a vague idea of how the current X server is organized.Even though the last (and first) time I implemented a page fault handler was 1986, I feel like I understand what they have to do, why, and what data structures they need.  I'm sure the specifics are very different in any of today's OSes than they were in 4.3BSD, but I don't think that matters.  OTOH, I think most of my graphics knowledge is obsolete.So, in sum, I partly understand my OS. (-: