Can someone provide me with a very clear and practical example of a "windowing system"? I was reading on Linux, and although I've always known that it's a kernel, I didn't really know what a kernel is because I haven't taken an OS class yet. My understanding of it is that it's basically the layer between hardware and software. Would that be correct? Now the Linux distros everyone uses is combination of GNU/Linux/X Window System. I think I got the Linux kernel part, but what is a windowing system and what is GNU? Wikipedia says GNU is an OS, but then that would mean Linux distros are composed of another OS. Can someone clear this up for me?
GNU (Gnu is Not Unix) is an Operative System, created by Richard M. Stallman. You can use this operative system with different kernel: such as Linux kernel, Hurd kernel, Darwin kernel, etc.
The X Window System (common on Unix like system) is just the basic layer for a GUI environment.
Every Linux distribution is a GNU operative system with a Linux kernel and an X Window System; on top of X Windows, you have the window manager (GUI) such as Xfce, Gnome, or KDE that lets you easily use your system.
A windowing system is a software system that realises a windowing model (that is, an abstract graphical model suitable for writing GUI software) on top of a more basic display layer, such as framebuffers. To be a windowing model, the graphical model will generally have to support concepts like windows, selections, decorations, menus, etc., but it does not need to be very sophisticated.
Most desktop UNIX systems use X11 as their main windowing system, where the X implementation also implements the display server; the most prominent exception is Mac OSX which uses Apple's proprietary Quartz Compositor display server and windowing system (Cocoa does support the X11 interface through special software, allowing X applications to be run on top of Quartz Compositor). There are also free rivals to X such as Wayland, which like X11 names both the windowing system and the display server.
You can have a windowing system without framebuffers and the like: ncurses is a pure text library that supports simple windowing abstractions that are widely seen in text-mode Linux installers, for instance.