Why Operating Systems are Obsolete gauge, 2001 Modern operating systems are expected to provide the user with several services, including networking support, filesystems, drivers for various peripheral devices, graphics libraries, multitasking, memory management, virtual memory, and sometimes even graphical user interfaces. Naturally, with all this complexity one might wonder which of these services are really necessary for the actual operation of the computer and which are really "user features". Indeed, to this end it is important to consider what an operating system is supposed to do and what an operating system should not do.
Looking back at operating systems like CP/M and DOS, one notices that the main purposes of the operating system then was to provide a layer of abstraction over the hardware so that programs did not have to have their own drivers, and to manage memory to some extent so that well behaved programs would not have to clean up after themselves.
Support for multiple users in UNIX systems demanded that the operating systems be able to manage memory in a way that prevented applications which were sharing the cpu from running over each other in memory. Indeed, UNIX took the revolutionary step of building abstraction directly into the operating system so that applications had to access all system resources through the abstract interfaces provided by the operating system. UNIX and DOS both had their own filesystems built into the basic behavior of the operating system, abstracting away that part of the machine's operation as well. Early protection measures for memory extended to protecting against not only accidental instances of applications violating eachothers' spaces but also malicious attacks.
From the above discussion it is easy to see that operating systems have traditionally focused on two tasks: abstracting away the hardware so that applications could be portable, and...