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".
- A.P.
--
"One World, one Web, one Program" - Microsoft promotional ad
"Remember when the U.S. had a drug problem, and then we declared a War On Drugs, and now you can't buy drugs anymore?"
>Since XFree86 is effectiely the device driver for
>the monitor, it could be argued that XFree86 is
>part of the operating system. And I think
>personally that it is. But only while you're
>actually using it.
Even tho it doesn't run in kernel space? I'm
not sure I agree with you on at least this point.
The definition of an OS is a very murky and grey thing. A look at seperable componants would be in order here.
In some systems, various items above are combined into one (for better or worse), or an item may become mostly a stub. It is also possable to have more than one of some of the items stacked together such as bash->X->WindowMaker or xdm->X->WindowMaker.
In an embedded systym, some custom program replaces init and provides every layer above the kernel.
Some systems violate the layering by sprinkling callbacks all over the place or through inconsistant policy wrt. what handles what (*cough* Windows *cough*) That doesn't make the model go away (as much as MS's legal department wants it to), it just makes a system ill-defined and kludgy. Even those systems can (with herculian effort) be seperated. Win '95 HAS been run on top of DR DOS (I don't have the references handy) and the browser HAS been split out of Win '98 (with great difficulty).
It IS vaguely possable to split the 'window manager' out of Win '95 and insert another though MS certainly goes out of it's way to make that hard to do. You can boot Win '95 into 'DOS mode' which is actually a conglomerate of DOS itself, and a few 32 bit extensions from Windows itself.
A well integrated system doesn't have to be sloppy like Windows. For example, I consider O2 with IRIX and 4dwm to be a well integrated system, but it is quite easy to replace the system utilities and shell with parts of the GNU system, and still have a nice, well integrated system. It's also possable to use a different window manager if for some odd reason you don't like 4dwm.
Now that we;ve defined a few basic terms, we get to decide which of the basic componants make up an Operating System. Personally, I would call it kernel + init + system libraries +system utilities. That does NOT include the shell! (be it text or GUI).
I'm done rambling now.
>I would define Operating System to be everything
:)
>that is needed to bring the System into an
>Operattional state,
So for windows, a small army of tech support folks are part of the operating system?
In strict computer science terms, the kernel is the OS.
However, the common use of the phrase seems to include all the basic tools.
Therefore, the "OS" of the average Linux box could be said to include the kernel, the shell, the basic shell and text utils, filesystem utils etc.
This is why RMS harps on about "GNU/Linux", since the FSF wrote all the GNU stuff to be part of the "GNU Operating System", and it's all in almost every Linux distribution.
IMHO, X, Window managers etc are a bit of a grey area. You *could* say they were part of the OS, but it's pushing it a bit.
As far as Windows is concerned, I the boundaries are harder to see -- isn't the GUI part of the kernel? Whatever, notepad.exe is on the CD, and that is not part of the OS.
--
An Operating System is the name given to a collection, consisting of one or more programs, which:
For Multi-Processing OS', the additional are also required:
For Parallel Processing OS', a further set of requirement is present:
Exactly how any of these are implemented, or the exact interpretation, depends on what exactly the OS is trying to do, and how it's written.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
As others have posted, the OS, in technical terms, is really only the kernel and a few libraries. The "marketing" definition is quite a bit more expansive. I think the correct terminology would be as follows: the Kernel is the OS. The Kernel plus the bundled applications, default configurations, server daemons, etc. is the "operating environment". Sun uses this terminology when talking about Solaris, and I think they have a point. So, the Windows OS would be nothing but the kernel (not much really). The Windows Operating Environment would included the Kernel, IE, all the Win32 API's for everything from telephony to directx, Notepad, wordpad, etc. A decent argument could even be made for a definition of the Windows Operating Environment that included Office, since its so damned common. Remember, originally operating systems were nothing but a bunch of libraries that abstracted access to the hardware. The thing is that, today, the libraries bundled have gone /far/ beyond just abstracting the hardware.
-- Slashdot sucks.
I think there's a reason that it's called an operating system. It's more than just one thing. An OS, as I see it, has three tasks to fulfill. It is a mediator between the hardware, the other software, and the user.
As such, an OS has three parts to it. The drivers deal with the hardware. The kernel deals with the software. And lastly, the interfaces deal with the user.
To my mind, something is part if the operating system if, by removing it, the machine becomes unusable. Remove the drivers, and your machine won't boot. I'd certainly love to see someone here boot Linux without a kernel. And if you remove X and all of the shells, the OS is still unusable.
Where does Linux fit in? I don't see the kernel as a total operating system. I see Linux itself as highly modular, where interfaces, kernels, and even drivers can be mixed and matched almost at will. But it still takes all three, at least in some form or another, to truly make an OS. It's a system in the truest sense of the word: many programs combine to handle mediation tasks, rather than one large program (as with MacOS or PalmOS or WinCE).
"Operating System" is what Operating System makers deliver.
The concept varies widely with time. In a time, the disk system was not part of the OS. In some OSes, the graphic system or the communications is.
--
__
Men with no respect for life must never be allowed to control the ultimate instruments of death.
GW Bu
Now, that's just the functional part of the OS proper. When I refer to Linux, I usually refer to a relatively complete operating environment - namely, the operating system and the parts that make Linux Linux, such as fvwm2 and esd and so forth, and maybe even for the more directly-used programs such as Netscape and GIMP. It also includes unique characteristics of the sum total Linux experience; you can have a Linux system without gcc/g++, but then you can't compile all that wonderful free software (though I rarely do anyway, being a die-hard Debian user with a serious apt habit).
I know, it's a very vague definition, but it's a very vague concept. That and it's 6:20 AM and my sleep schedule is fscked lately. :)
---
"'Is not a quine' is not a quine" is a quine.
"'Is not a quine' is not a quine" is a quine.
Quine "quine?
Well, isn't that what an X server does? It communicates with your graphics card and makes it work. Thus, X11 (maybe I should have been more specific and said 'the X11 server') is part of the OS.
Of course, even for windows, things like drivers etc, are part of the OS. But something like explorer is not, because it allready is high enough level to do things you don't specifically tell it to do. Application that take away action/control from the end-user, are exactly that, applications and no part of the OS.
Well, XFree86 is mostly a collection of large drivers, in the form of X11 servers. :) As far as taking away action or control from the end user, mmap() takes control away from me - I can't specify which pages are loaded into memory at any given time, for example; it's an abstraction of the low-level paging code. Also, doesn't sh and ls take away my complete control? They both identify inodes and content of files and deal with them in appropriate ways, rather than allowing me to specify what happens with the bits. :)
So the OS basically entails in my definition: The runtime system, drivers and a shell to communicate with the user.
Your definition is even wider than mine, then; explorer.exe is a shell, albeit a graphical one. I classify that as part of the operating environment, the part which makes an OS useful.
---
"'Is not a quine' is not a quine" is a quine.
"'Is not a quine' is not a quine" is a quine.
Quine "quine?
I used to like Apple's term of "System Software" in reference to their Mac operating system. (although now it's MacOS; go figure ;-)
But I still like to think of the OS as something akin to the Tannenbaum definition (kernel, modules, and a subset of daemons). But something like a Linux distribution, which includes so much more, I prefer to think of as "System Software".
I really cringe when I see an article that says something like "RedHat Linux OS"; that just ain't so. The "OS" in RH distro is arguably the same one in Suse or Debian or Slackware, etc. It's all the "extras" and configurations that set the distros apart from eachother.
So maybe it would be neat to see something like "Debian distribution featuring Linux OS and GNU system software."
???
A utility, even one you might consider to be critical, is not necessarilly a part of the operating system. If it were, we wouldn't refer to it as a utility at all.
Of course, Microsoft will define anything it finds legally convinient as part of the OS, but lets face it, an OS such as Linux can perform a large number of tasks quite well without even a shell, much less such useful utilities as "ls". Of course, maintenance is more difficult in those situations, but programs designed to make our adminstrative tasks easier (or even possible) are not necessarilly a part of the operating system itself.
Perhaps the clearest example of this are some embedded systems, where one may have to boot off of a DOS disk to run a flash utility to perform maintenance or upgrades, yet these utilities (even the DOS program loader) are quite often not a part of the embedded operating system the device runs when performing day to day tasks. An external utility to allow an engineer to perform needed tasks on an as-needed basis, but having nothing to do with the OS proper.
The Future of Human Evolution: Autonomy
I would define Operating System to be everything that is needed to bring the System into an Operattional state
:-)
A reasonable definition. That would mean the number of lines of Win2k that are part of the operating system equal to either NaN or 0. After all, even if you execute all 40,000,000 lines of code, you still don't have a operational system. Unless one cosiders a frozen error dump on a blue background operational.
The Future of Human Evolution: Autonomy
Ths arguments I've seen about browsers and such being "part" of an operation system are completely idiotic. The "operating system" of a computer is the software that acts as a buffer between the machine's hardware and the software that is going to be run on that hardware. A definition of operating system would be the kernel, device drivers, and APIs. Without a kernel every piece of software on your system would need all of its own hardware controls and functions programmed in. This is how things like Furbys are programmed, they don't have a kernel yet run a program through the processor. Everything else that comes on your floppies and CDs is superflous to the actual operation of the computer, it merely gives the silison something to do. This second layer is the environment. Shells, windowing systems, applications, ect. are all part of this second layer. Many people will classify X or shells as part of the operating system but if I choose a hash or c shell on a Linux kernel I'm still using Linux, if I use AccelX rather than FreeX86 I'm still using Linux. The stuff that comes in an environment can be classified as programs, scripts, shells, sources, and files for the most part. Programs are compiled binary instructions that perform a function or more than one function, scripts on the other hand aren't compiled and require and interpreter (or just run on the kernel like a shell script) in order to work. We all should know what sources are and shells provide users with shortcuts to system commands. Files are the output of programs.
I personally think that calling Windows 98 and Linux operating systems is a misnomer. Sun gets it right by calling Solaris an operating environment. Win98 and Linux should also be called environments because they contain much more than a kernel and device drivers. The system on which they operate is respective to their kernel but the interface layer is the environment you're using. Thats my take on it.
I'm a loner Dottie, a Rebel.
You want to know what an Operating System is? Here's the definitive definition, from Judge Jackson:
All you software engineers can now sit down. You don't count.Yes, of course you do. The operating system is everything else.
---
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
There are no hard and fast rules. OS-type software deals with hardware and exposes APIs for other programs. Thic includes drivers and daemons. Application programs use exposed APIs and interact with users.
Some utilities are typically delivered with operating ststems. These utilities are basic user programs that either configure the system or allow the user to manage operating system-managed objects like files and permissions.
Middleware like Java is in between these as it exposes APIs but dosn't interact with users.
OS-like
kernel and drivers and X
Java and window managers
utilities
browsers (like IE) and games
Application-like
I have discovered a truly marvelous sig, unfortunately the sig limit is too small to contain i
The reason why anyone would copy the i386 directory is for flexibility. I may never use a matrox video card in my machine, but, i may have one in a machine that i'm working on that appears to not be working. To verify that it doesn't work, i'd put it in my machine and try it out. I now know that i'll have drivers for it. maybe it's an old card out of a 486 i want to try... I won't use the card for more than 30 minutes, but i need the drivers. who knows what else i might put in my machine to verify that it works. Right now, i can't see using scanner drivers, but if i'm working on a scanner and am not sure if it's a problem with the scanner itself, or the machine it's connected to, i'd plug it into my machine to check it out. all that is there with good reason.
-Dan
So W2K will only be 30 million lines of code?
Gates' Law: Every 18 months, the speed of software halves.
I don't think even RMS argues that s/linux/GNU\/Linux/imgo. Rather, he uses the correct definition. Linux is the kernel, and because much of the software is part of the GNU project (to provide a free software Unix (that isn't Unix)), the entire system is GNU/Linux, or a Linux-based GNU system.
The problem is that much of the software on your average distro CD is not GNU software. GNU shouldn't get credit for all the non-kernel software in the distro. That's why I say "Linux" or "Linux distribution", depending on whether the person(s) I'm speaking to understands the difference between the operating system and the distribution.
Gates' Law: Every 18 months, the speed of software halves.
Operating system concepts (dinosaur book...) by Silberschatz Galvin says:
and
How about the Java VM? Is that an operating system? It loads applications, it handles everything outside the program that is needed for it to interact with the rest of the computer.
/bin/sh, what about other stuff that usually goes along with it like INIT, the login/authentication system, even inetd, is there really a line that can be drawn?
How about kernel modules? Are they part of the operating system? Even if they just add nifty features to the computer and don't actually deal with hardware?
And to the guy that said only the kernel and a
I remember back in high-school they taught about 'application software' and 'system software' but it's a very fuzzy line and I don't think I've ever heard a definition that satisfies..
Opinions are like...well, you've all heard that one. ;-) Here's mine.
Several posters have already tried to make a distinction between "kernel" and "OS", and I think this distinction is becoming more and more accepted in the computing community. In five years it seems likely that nobody but dinosaurs will consider the two terms interchangeable.
To me, an OS is the set of software that makes hardware suitable for its intended application(s). This makes the definition very relative to what the hardware's intended applications actually are. Some examples:
- For an embedded hard-realtime control system, there might be little or no OS to speak of. The hardware is already adequate for its "application" which consists of hardware-specific monitoring and control code.
- For a "softer" kind of embedded system such as a touch-screen ATM, the OS consists of some hardware abstraction and some tools to write a very limited class of applications.
- For a general-purpose workstation or PC, the OS has to provide a very high level of abstraction and functionality to support a very broad class of applications.
Since nobody here ever seems to care about or even recognize the existence of computers that aren't on the desktop, I'll expand a little on that last example. I think a desktop OS can and should include things like libraries for GUI and sophisticated IPC functionality, because those are now elements of the dominant application paradigm for that class of devices. Some might think that something like a JVM is also included, but I don't agree...not for a couple more years. Editors, compilers, etc. are definitely _not_ part of the OS in my opinion; they are the applications that define what an OS for that platform is or should be. Think of it as a tree formed by application dependencies on libraries or services, library dependencies on kernels or other libraries, etc., with the hardware as the root. That part of the tree extending from the root and required by the majority of leaves is what I'd call the OS.Defining kernel is another problem. The standard definition is "code that runs in a privileged processor mode". This definition has a few weaknesses - it would make everything in our hard-realtime example "part of the kernel" and it doesn't distinguish between loadable and permanent code - but overall it's pretty good. Perhaps a slightly more accurate though more cumbersome definition would be "the privileged monolithic code which maps between the actual hardware and a set of well-defined abstractions of that hardware [e.g. virtual memory and device driver interfaces]".
Slashdot - News for Herds. Stuff that Splatters.
I will take a linear algebra analogy. Suppose you want to define a two dimensional space (a plane), two vectors are necessary and sufficient: every other vector is a linear combination of these two (unit) vectors. Let the cost of implementing a vector be sum of the absolute value of the coefficients. For example, (5,6)=5*(1,0)+6*(0,1): so the cost is 11=5+6. But this would be a minimilistic implementation. Suppose I observe the vector (7,43) is a useful one, I would be tempted to include (7,43) along with the unit vectors (0,1) and (1,0). This would of course bring down the cost of implementing many vectors. And in this way, we can keep adding vectors because we want to make it easy for the linear algebraist.
Mathematics stops here and engineering takes over: it turns out that implementing (7,43) costs more than one unit in the kernel; but instead of costing 50 units, it costs only 46 units to implement it within the kernel. This is a good reason as any to include it there. Over time, we find Finally, we have the vectors (0,1) (1,0) (7,43) (34, 78) (1001,590) (12347,34578) with varying costs 1,2,46,90,1200 and 40000. Now we need to implement (1023455,21314324). What is the "best way" of doing this with the current set of primitives? OK, we can solve a linear program here; but that is complex! You see, for a long, long time nobody knew that linear programming can be solved efficiently!! (No, simplex takes exponetial time.)
Do we want a browser in the OS? Do we want (1023455,21314324) as one of our primitive vectors? In the long run, this sort of ad-hoc add-ons only make a programmers life miserable.
Of course, there is a cause for adding a set of vectors into the basis in a planned fashion. For example, (1,0) (2,0) (4,0) (8,0) (0,1) (0,2) etc.. would make a nice set and allows a progrmmer to be productive.
So if Windows 2000 has 40 million lines of code, how can we react except pray...
Operating Systems are those programs that provide, and control, access to a computer's resources.
;)
;)
Editors, file managers, and browsers are nice to have, but are not part of the OS proper. An operating system doesn't imply any particular type of usage -- such as interactive human control. An OS that controls an embedded system, for example, is no less an OS than the OS that controls the interactive sessions on a graphical workstation. An application program is just as valid a user to the OS whether or not it has a human behind it.
The proper definition of OS is the one that matches all instances of an OS -- without extensions and exceptions. The proper definition also draws a consistent line between applications and the OS. Otherwise we can dispense with the redundant terms.
I would suggest that what marketing calls an "operating system" today is more properly called a "distribution" of applications and an operating system. Further, if the strict definition of "controlling and providing access to resources" is used, some so-called operating systems don't actually qualify for the term. I don't consider that a problem. After all, we must have some standards.
Geeky modern art T-shirts
Think about Linux distros for a second, they sell as "Operating Systems", right?
Now, how much software is included with the full version of SuSE 6.2? The answer is 4 CDs worth, plus source.
If SuSE gets to include all that stuff as part of their O/S, then why shouldn't Microsoft fill their one measily CD?
Throwing in free apps with an O/S helps the consumer, as long as those apps are *optional* and *replacable*.
-- The act of censorship is always worse than whatever is being censored. Always.
According to Operating Systems Concepts (by Addison-Wesley) :
What is an Operating System?
A program that acts as an intermediary between a user of a computer and the computer hardware.
Operating system goals:
- Execute user programs and make solving user problems easier.
- Make the computer system convenient to use.
Use the computer hardware in an efficient manner.
In general there are two definitions:
1) an OS is what makes the hardware useable
2) the OS is the environment and API in which programs are able to run
In practice it is typically both (although different components do different things within).
It's 10 PM. Do you know if you're un-American?
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.
Hmmm... I think that's about half right. Litestep replaces the shell, but the windows and menus are still drawn the same way, etc. Maybe it's just that Litestep doesn't replace those parts. But you're right, the Windows GUI is largely replacable. I have a friend who's been using Litestep for quite some time now, and he absolutely loves it.
I admit I know nothing about the PalmOS, but I'm not so sure about that. If the operating system is designed from the ground up to be graphical, I'd call the GUI part of the OS. I have an ancient PDA (the Tandy Zoomer if anyone's interested) that has a decent GUI (GEOS), but it appears to run on top of DOS. In this case, the GUI definitely is not part of the OS.
Palms may be different, though, and if someone who knows about these things reads this comment, I'd be interested to know what the reality is. I'd think, however, that the PalmOS has nothing underneath the GUI, in which case the GUI is most definitely part of the OS.
Just remember that "Operating system" doesn't always mean "command line based." They can be graphical. And if you really wanted to, I'm sure you could create an OS based on voice recognition and speech synthesis.
--
"I personal[ly] think Unix is "superior" because on LSD it tastes like Blue." -- jbarnett
Maybe I should clarify: If you delete gcc, yes, you'll have trouble adding some applications. Why? Well, they're distributed in source form, for the most part. If you get binaries, you'll have no problem at all adding new apps without having gcc available. Therefore, gcc is not part of the OS.
But it doesn't require the compiler, does it? Just get everything in binary form and you're all set.
That, of course, isn't the point, though. Sure, it might be no good for development, but what if I want a simple little box to play MP3s for me in the car? (And maybe do a little RC5 cracking with it's spare cycles.) I don't need gcc... or vi, or emacs, or telnet, or most if any of the daemons... but it's still unarguably a linux box, isn't it?
I don't think that anybody will ever reach an agreement on this topic. The definition of "operating system" is really a pretty fuzzy one. There are some things that, no matter where you stand, you can see are not part of the OS, though, and I think gcc is one of those.
--
"I personal[ly] think Unix is "superior" because on LSD it tastes like Blue." -- jbarnett
I think that "operating system," as clear-cut as it may once have been, is now a really, really fuzzy term. Let's look at two examples you'll know:
First off, Windows (booo, hisssss). With all of it's features, graphics showoff-ness, 40 million lines of code, and everything else... is it an operating system or an application?
I say it's both. The sad truth is, they're far too closely integrated. The actual operating system part is, basically, the MS-DOS leftovers. Those are the parts integral to the operation of the computer. It's easier to define what's *not* the operating system, though.
The OS is not the GUI. They may be tied to each other in some sort of unholy union, but it's not necessary. Anyone who's booted to DOS mode will know that. The GUI is not having menus fade in when you click them (yes, Win2K does that). The GUI is not Internet Explorer, no matter how deep in the bed they are with each other. The operating system is not "Scandisk is now checking your drive for errors. To avoid seeing this message in the future, please choose Shut Down from the Start menu" -- even when that's what I did. And in the case of Micros~1, the OS is *not* where I want to go today.
Now for Linux. Some people have said that things like vi and the gcc compiler are part of linux. On the same note, some people have claimed programs like edlin are part of DOS.
Let me ask you this -- go to your linux box, delete vi and gcc, and reboot. Does it still work? Of course it does. Might you have trouble configuring things or adding new applications? Yes, but that's not the point. Minimal linux configurations can be (I believe) stored on a single floppy disk. In other words, the OS is the kernel and the shell. I say the shell because if the OS stops working, the shell is kinda necessary to make it work again. Likewise in DOS (and not the DOS-behind-Windows), the OS is comprised of msdos.sys, io.sys, and command.com. Nothing more, and certainly nothing less.
Of couse, there are exceptions. The MacOS and PalmOS were designed from the ground up with the GUI as an integral part of it. Unlike Windows, where the GUI is really more of an afterthought than anything else, these operating systems rely on the GUI -- there's no command line (yes, there technically is on Macs... but it's nothing like DOS or bash), no other pieces that the GUI sits on top of.
So that's my take on operating systems, take it or leave it. And I admit I don't know everything, so if I've made a glaring error here, please don't flame me. A nice, friendly correction would be appreciated, though.
--
"I personal[ly] think Unix is "superior" because on LSD it tastes like Blue." -- jbarnett
I would have to say that the operating system itself is very minimalistic; in its strictest sense it would be the pieces that insulate the code from the unpleasant job of being aware of the hardware.
On top of that we have everything else: GUIs, toolkits, APIs for "system services", etc; and these are the platform that an application developer expects to be in place so he can say "xxx application runs on The Foo Platform(TM)".
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).
When the vendor comes to your office with ``the operating system'', or sells it to you in a shop, all the vendor cares about is the fact that there is an OS in all that software which they hand over. They don't care about the fact that there's heaps of other stuff there too.
In the technical sense of an operating system, things like compilers, text editors, image editors, word processors, and so forth, are not part of the operating system. The operating system is quite simply the memory resident software which controls access to system resources such as
- CPU
- RAM
- monitor, keyboard, mouse
- disk drives, CD-ROM drives
- tape drives, printers and other peripherals and ports
- network access.
Most importantly, the operating system has the function of loading software into RAM and running, while giving that software access to the above resources. This has been true for decades. There was a time before operating systems, when each set of punch-cards or roll of punch-tape had to have its own instructions to perform all system functions. But it became obvious after a while that it would be better to first load in some general purpose software which would stay resident during the days jobs. This resident operating software developed into the operating systems of today.The only real point of ambiguity here is the question of whether a device driver (or kernel module) is part of the operating system. In fact, it is easy to answer this. A kernel module (or device driver) is part of the operating system as long as it is loaded into the kernel.
A consequence of this is that linux is not GNU/linux. You can only argue that if you use the marketing definition of an OS.
Since XFree86 is effectiely the device driver for the monitor, it could be argued that XFree86 is part of the operating system. And I think personally that it is. But only while you're actually using it.
According to the book "Operating systems - design and implementation" by Andrew S. Tanenbaum and Albert S. Woodhull and operating system is both an extended- or virtual machine (that is easier to program than the underlying hardware) and a resource manager (Hardware, Files, Memory, users, etc). In the linux context that would mean the kernel and the modules.
1) operating the computer
2) frustrating users with BSOD
3) smiling paper clips
4) APIs that shift like quick-sand
5) showing the micros~1 logo during 15 min reboot.
So, like a girlfriend with herpes, an Operating System can be a joy and be defined many ways, but you just can't get rid of it. :)
I think what Microsoft considers "operating system" is anything that shows up on the "Windows Setup" tab of the "Add/Remove Programs" control panel and any hardware drivers.
= -=-=-=-=-=-=-=-
Considering how much those categories (Accessories, Communication, System Tools, etc) have grown over the various versions, and considering that Windows continues to support obsolete hardware, I have no doubt that they have stuff 40 million lines worth of stuff into Windows 2000.
To mean, the definition of an operating system is the code that must execute on a day-to-day basis to perform the tasks I request. This would exclude networking code (since the system could easily be standalone) and especially most of the driver code (since I have, at most, six or seven hardware vendors). I mean, Windows still has drivers for 9-pin dot matrix printers, and when was the last time you saw one of those? I counted at least 50MB worth of DLLs in Windows NT 4.0 that I'll never use, simply because my only printer is an HP.
As much as I admire the goal of hardware detection, I would at least like to be able to prune the drive list. I may not know WHICH S3 chipset I have installed, but I know it's not Cirrus Logic or Matrox or Diamond...so what the hell am I doing warehousing those never-to-be-used DLLs?
Most people (unless they are insanely addicted to digging around for installation CDs) are going to put a copy of the i386 directory on the local drive. With NT4, this cost you 150MB or so. What's it cost now for Win2000? 500MB? I think there is 120MB of stuff that is only there to provide foreign language support I NEVER plan to use.
All I want is the amount of code necessary to boot the system, log me in, and give me VGA mode. I can install the specific drivers I need myself, as well as better versions of any program Microsoft is going to include for free.
- JoeShmoe
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-- I wonder which will go down in history as the bigger failure: the War on Drugs or the War on Filesharing
here are a two definitions of what an operating system actually is:
whatis.com's definition of an operating system
foldoc's definition of an operating system
Ner lbh sebz gur HFN? Gura lbh'ir whfg ivbyngrq gur QZPN!
What some of these posts have but many do not is a proper context for the definition. Most of us here seem to agree that the definition of an operating system is something like a kernel, a shell, some services and libraries, or basically whatever bare minimum it takes to start a program. Now, in the context of DOS, it may be just 3 files (io.sys and msdos.sys, and command.com). For Linux, it may be the kernel, a few kernel modules, a shell, and some init scripts to get the ball rolling. However, in the context of Win2k, all that code may well, in this context at least, fall under the definition of the bare minimum it takes. Therefore, if you stop looking at the definition of an OS as a static definition, but rather one that changes with context (as all definitions of all words do), it will become clear that all of that code does indeed fall under the definition of an OS
I would define Operating System to be everything that is needed to bring the System into an Operattional state, obviously for Microsoft, and their bloatware, 40 million lines of code seems about right, but I do not think that the misc text editors etc are part of the OS, but the browser, seeing as it is now built in, probably is.
On the other hand the kernel is the small core that essentially brings it up from the bios, so that hardware can be accessed.
Crispin
Many people seem to forget that DOS means Disk Operating System. It is a subset of Operating System, which is whatever is required to make the system work, software-wise.
For that, the MS-DOS is a great DOS example. It doesn't manage memory, it doesn't do caching, it doesn't manage software (only to the extent of one tool).
In Windows, I'd guess the DOS section would be only the VFAT.VXD (if I remember well...).
If you want to compare physical space a DOS take, compare MS-DOS 6's COMMAND.COM, IO.SYS and MSDOS.SYS to the Windows VFAT.*, IO.SYS and MSDOS.SYS. Forget the COMMAND.COM, it can be bypassed completely (although really not recommended).
If you want user interaction, please add EXPLORER.* to that list since with only the driver, you couldn't do a lot of things.
In these cases, you can say that the Windows DOS is not too fat.
Now let's go more in depth with OS comparaison. A Operating System contains all the tools required to make the hardware work for you. So the barest components of Windows with the drivers are what you could say is a OS. A fair comparaison would be the Mac OS or a UNIX brand (only the kernel and drivers).
Everything else is candy. Sometimes, necessary candies but it's candy nonetheless and if it rot your Hard Disk's free space, it's not their problem.
And think about it, it's not to the advantage of Micro$oft to remove all the candy coatings from Windows. If they didn't put WordPad, people would be less enclined to buy the full version "Word". If they didn't put Outlook Express, users wouldn't get the habit of using their E-Mail technologies and they wouldn't buy Outlook (full)... not mentionning that it's ripping the competition off Netscape. Putting DOS for legacy support rips the other OSes businesses (for example DR-DOS which was quite nice) and even if they don't require it's base anymore as they could use a Win-NT like loader, they still keep it and make it virtually impossible to remove.
Their defense is to say "users asked for it". Yeah, you'd ask a user and he'd say "put everything you can fit inside for the same prize please".
... then with that way of thinking, I wonder why they don't integrate Office directly inside Windows for the same price. Weird huh? [$$$] Are they refusing something a user ask them?
Have a nice day
Mike
Has anyone considered what part of the HURD is the "operating system"? Is only the microkernel the OS, or do you also consider the interfaces that run on top of it part of the OS too? What about the daemons that run on top of the interfaces? If we consider the interfaces and daemons as part of the OS, what would we consider a new interface that a user has built and started up?
Just something to think about... AFAIK the original designers of Mach considered the microkernel as the "OS", (and I tend to take that view as well), but it seems the distinction is rather blur when you talk about GNU/HURD which runs a UNIX interface(?)/OS(?) on top of Mach.
mikre he sophia he tou Mikrosophou.