This is one of my very favorite rants. And it is one that generally has traction with people that just want to use computers, and has no traction with people that have been sucked into the way we build and define software.
I am not saying we don’t bundle up software and call that software an Operating System.
I am saying what we call an Operating System is nothing more than discription given to a bundle of software.
The main feature of an OS is that it provides a way to distribute applications and run them without requiring each and every application to provide software for running a file system, driving printers, driving displays, etc.
However, other applications provide the same abstractions. The Java Virtual Machine (JVM) provides the same kind of abstractions for Java programs even though the JVM isn’t usually considered an Operating System.
VMWare provides software to virtualized a computer, allowing one to install an operating system and run applications even though the VMWare Virtual Machine is really just an application running on another operating system.
This all makes sense if you go back to the only formal mathematical model of computation, the Turing Machine. The only thing you will find in the formalization of a Turing Machine is computation. A Turing Machine has no place to put an Operating System.
There is no spoon.
Software cannot tell if it is running on a real machine or a virtual machine. And thus Operating Systems are simply software.
But that isn’t what will really kill Operating Systems as we know them today. What is going to kill them is the death of the Von Neumann Architecture. Operating Systems make sense when the goal is to provide applications access to memory, the cpu, storage, and I/O. In a system where you only have one CPU or you can pretend you only have one CPU, managing the resources in such a system is very important.
Consider the computer of tomorrow. It is going to be a system where the number of CPUs is vast, i.e. greater than 100, and it will grow from there over time. Each of these CPUs (or Cores ) will have access to memory spaces of several Gigabytes and grow from there. Bandwidth to non-volatile storage is going to be very, very high, or the number of paths to storage is very, very high (equivalent to having more than 100 hard drives of a terabyte or more each) and they will grow from there. The number of displays will be dynamic and may even be accessed from many other systems. The bandwidth between CPUS will be very, very high, and will get faster over time.
In a system like this, it is not hard to imagine that one will be able to run many of what we would call Operating Systems of various times all at the same time. At that point of time, why run an OS at all? Instead, the problem will shift from asking “How do we acquire the resources needed by an Application” to becoming “How do we configure a portion of the hardware to run an Application”.
The Von Neumann Architecture is not so much going to die as it is going to replicate itself so many times it is going to force us to consider other, more simple and basic ways to configure and run these things we call computers.
Thursday, November 16, 2006
Subscribe to:
Post Comments (Atom)
2 comments:
You have my attention, and my complete agreement that the Von Neumann is too much of a hard limit. The question of the day is... What can substitute? Is there anything waiting in the wings? This is not a rhetorical question. Got anything?
I'll give my thoughts on what this will be in another post. It is rather complex to put into a reply.
But here is the hint: "Less is more". If you toss most of the abstractions in use today, and simply link together what functions you need, you are nearly there. As I have noticed so many times in the last 20 years, the solution to many a software problem can be found in the delete key.
Post a Comment