Path: utzoo!utgpu!news-server.csri.toronto.edu!bonnie.concordia.ca!uunet!cs.utexas.edu!yale!cmcl2!lanl!jlg From: jlg@lanl.gov (Jim Giles) Newsgroups: comp.arch Subject: Re: How wrong is MS-DOS? Message-ID: <10813@lanl.gov> Date: 9 Jan 91 19:59:43 GMT References: Organization: Los Alamos Natl Lab, Los Alamos, N.M. Lines: 62 I realize this is probably not the proper newsgroup for this discussion, but there is no comp.sys.misc and this is where the issue came up. If anyone can think of a better venue, let me know. ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University) writes: > [...] > Consider what an operating system is supposed to do. Different > people have lots of different ideas on this, but among the most > important design principles that I can think of are: > > 1) Shield the application program from hardware dependencies, > and variations in system configurations. > 2) Provide a standard interface to services that allow > transfer of information between applications. > [...] The most important operating system features are these: A) Intercept and authenticate all requests for resources. This is a security issue and should be _the_ primary concern of an operating system (even a single user system - after all, how can someone protect himself from viruses if there is no security mechanism in the system?). MS-DOS has no capability in this respect _at_all_. UNIX is little better. Having said this about UNIX, I expect a flurry of UNIX cultists to flame about how UNIX really is secure after all. That is one of the flaws about UNIX - it _pretends_ to have security and many people believe the pretense. B) For all resource requests that have been authenticated, schedule the resource to satisfy the request. Again, MS-DOS doesn't have multi-processing so scheduling isn't done at all. UNIX (and most other operating systems) have an advantage here. But, the versions of UNIX that I've seen are pretty poor at scheduling. The things you mention are important, but are less so than the two just given. In particular, most of the features you mention should probably not even be in the system kernel itself. Device drivers, for example should be thought of as server processes that can be swapped out of memory entirely if the device has no active requests against it. > [...] > 3) Implement other useful services that application programmers > find themselves reinventing. I delayed this discussion because, of all the things on your list, this is the one I'm not sure should be done by the operating system _at_all_. There are, for example, many systems in which all I/O is (normally) done through a feature-rich "record manager". This provides many file and record types which are very useful to database type applications, etc.. Unfortunately, they are so feature-rich that they slow I/O down considerably when you use them. But, since it's usually _very_ hard to get around the record manager, you're stuck with it. Personally, I think the operating system should provide simple, fast, low-level functionality and the "useful services" that you are talking about should be done as servers and/or utilities and libraries. In other words, the user who doesn't need or use these features shouldn't give up system performance because of their presence. J. Giles