How do you Define "Operating System"?
Sambo asks: "I read somewhere that the Windows 2000 operating system will have around 40 million lines of code. That seems like a lot. How is the term "Operating System" defined these days? Does it just mean any application that will fit on the CD-ROM? Do web browsers, media players, games or even the GUI itself fall under the definition?" I've always defined the operating system as "the set of services and routines needed to load and execute applications". The trickier question is deciding what is and is not an "application".
Another way to look at it is that whatever your vendor includes with the base "system" release is the operating system. That means things like /bin/cat become the operating system, but at least on some system, /usr/bin/cc does not, because it's an "optional" product. If you get one CD from the vendor that says Base O/S, and another that says Development Tools, and still another that says User Contributed Software, you're probably going to end up thinking that the first CD comprises the operating system, but the other two do not. Of course, if you look carefully, you'll find that the first one contains /usr/games/rogue and /usr/games/fortune, but hey, your vendor put them on the O/S CD, so O/S they must be, eh? :-)
One more way to think of this, and one no doubt that the Evil Empire would appreciate, is that if you cannot remove it and have the system still run ok, then it's part of the O/S. If it can be removed without hurting anything, you're not talking the operating system. For example, if you wipe /dev, your system won't run anymore, so those files must be pieces of the operating system. If you remove /etc/rc* and /bin/sh and /sbin/init, you'll have problems booting, so they must be part of the operating system.
But this is really a fuzzy thing. If I remove emacs, which the system did not come with, then the O/S still runs fine, but I've got one user who would just flip. Likewise KDE.
I think most users would consider anything in the system directories to be part of the operating system, even when these programs aren't executing in kernel space. Of course, a kernel hacker isn't going to be so quick say that. He's likely to tell you that if it's in kernel mode, it's the kernel, and that's all there is. He'll run commands like:
And say that those are part of the O/S. A sysadmin will cat outSo the answer to "what's an operating system" really varies dramatically depending on the purpose of the querent and the background of the queried. I'm not trying to say that truth is relative, but rather that perspective and intent count for a lot here. You'll never convince your grandmother that that solitaire program her computer came with isn't part of the (operating) system she bought, but you'll never convince a kernel hacker that xbill is the operating system.
It might be more useful to stop thinking in terms of "operating systems" and consider instead terms such as "platform" or "environment". Why? Well, that way you can distinguish between a system with say, an a.out and libc environment and one with an elf and glibc environment, despite the fact that they might both run the same kernels. It's a useful distinction, but it's not something uname is going to tell you about.
I mean, operating systems have always been considered something more than just the kernel. They're also at least a set of APIs and some utils. DOS had edit for example.
However, you meantioned windwos 2000. Windows 2000 is MORE than an OS. Just like Solaris is MORE than an OS and REDHAT Linux is MORE than an OS. But when I say OS there I mean the meaning i defined above.
Without being an idiot about things just to help the DOJ beat Microsoft, I think it's safe to say that now days almost everyone considers an OS to be the OS and support applications.
Windows 2000 wouldn't be much of an OS without Explorer (an Application), IIS (an application), COM (an API), IE (an API that explorer uses) etc.
With COM, microsoft has melded the line between APIs and applications. IE itself is really just an ActiveX control - an applet if you will. However, with a small 200k exe they can make a browser out of it, add a few more plugins and they can make it explore the filesystem, and tada you have the new Windows Shell.
Remeber, OSs are targetted at end users (well, Microsoft OSs at least) and someone else mentioned that an OS is the bare minimun you need to start/run an application. An the end user can't do much with a kernel and an assembler.
Now days in the internet age, we may even need to consider a bit beyond that. Noone in their right mind would consider any OS an Internet OS without TCP/IP support etc. (you see where I'm getting at).