One of my many frustrations with Windows has been that over time, the entire operating system slows down considerably. This is possibly due to user profiles, or registry and file-system fragmentation. Whatever the case, it's quite sad that on an older system, the old adage about going to grab a cup of coffee while the system loads still holds true. This complaint has been going on for over a decade, yet it still exists. (sidenote: btw, this is one of the many reasons why I no longer run Windows, leaving the dark side completely.)
But I'm not here to bash Microsoft, or any other OS manufacture for that matter. Maybe there's a completely legitimate reason why systems slow down, although I've never experienced this with OS X or Linux. What I do know is that in the early 80's my Commodore 64 would turn on and it would be ready, just waiting for me to type in code into its Basic interpreter. Why did this happen? Let's see, no moving parts (i.e.: hard drives), smaller operating system, OS loaded in ROM, the list goes on.
So what if we could have a similar user experience (minus the Basic interpreter thing) today? I think it's possible but it would require the participation of both hardware and software vendors to agree on a spec. What spec? I'll tell you... A three stage flash memory spec.
Three Stage Memory
First off, let me express that i'm not an engineer, nor am I up-to-date on any of the latest memory advances. But what i do know is that the current way of doing things whether it's booting from a hard disk or a SSD, isn't working. Essentially what currently happens is that the operating system, applications and preferences are stored on medium and read into RAM where the processor fetches the instructions and executes them. Every time you turn on your computer the same thing happens, even if nothing has changed. This seems rather silly to me.
The Three Stage or TSM contains three separate flash memory banks, Base, Preferred, and Running.
Base-Stage Memory
The contents of this memory is written by the computer manufacture and contains the operating system in a running state and drivers for the hardware that shipped with the system. The content of this memory does not change and is similar to ROM.
Preferred-Stage Memory
This memory is reserved for the preferred state of the machine upon boot. This will be the delta of the Base-Stage Memory. That is, whatever has changed since the Base-Stage will be stored on the Preferred-Stage. This stage can be changed by the end user by a hardware selection located near the power and reset buttons on the front of the computer. By pressing the button, a user creates a new Preferred-Stage Memory configuration. The next time the user boots their machine, it will load to this new state. If the state ever becomes corrupted, the Base-Stage will take precedence. In this regard, the computer will always have an OS and drivers available to it.
Running-Stage Memory
This is the equivalent of today's RAM. This memory is ever changing but is not involved in the bootup sequence at all. If the computer gets infected by malware or viruses, it only affects the Running-Stage Memory. The next time the computer boots, the Running-Stage Memory is erased and the contents of Base and Preferred are loaded.
Bootup Sequence
After POST the BIOS would load the contents of Base-Stage Memory. This is a running operating system and drivers for the hardware that shipped with the system. This is a nearly instantaneous process, after which the Preferred-Stage Memory is loaded. Again, this is nearly instantaneous. At this point, a running operating system, drivers, and preferences have been loaded. Whatever changes have occurred since the load of the Preferred-Stage is loaded by the Running-Stage. Launching applications, etc, take place in this memory space.
Changes Required
This type of architecture has so many advantages in both security, reliability and in enhancing the user experience. But it's not something that could be pulled off overnight. Hardware specs would need to be created with the help and support of the OS manufactures. Changes to the OS would be required including storing preferences, removing the need for journals, etc.
What Do You Think?
Are there any systems out there that implement this type of approach? Has this design been thought of before? I don't know. But it seems to me that this approach is far better than what we have now.