Analog Kid said:
It's interesting though how quickly we can name those limited resources-- because we've got to think about them all the time.
Do you ever run out of CPU time-- no, things just take longer. You will run out of Flash storage though. CPU Time is essentially divided evenly among running applications-- should we partition persistent storage evenly among all applications on the system?
CPU time is absolutely exhaustable. Sometimes things taking longer is not acceptable, because it impacts usability, or because applications have deadlines. If your music player cannot get sufficient cpu time to decode then the music will break up, which is generally considered undesirable. In other arenas missed deadlines can result in data loss or malfunction. An assembly line robot that misses its deadline is not acceptable. A medicine pump program that misses the shutoff deadline can kill people.
Granted there are some applications in which CPU time exhaustion is not a problem, but it still occurs, and the operating system must contend with the problem and continue to allocate CPU time to necessary system functions to keep the system working correctly in the face of the exhaustion.
Depending upon what facilities the flash storage is provided for, some form of allocation will be possible that will work for most use cases. As a fancy os-controlled cache, exhaustion won't be catastrophic. As a fixed allocation structure, a failure to acquire the desired allocation may be handled by the program, or may not resulting in failure. These problems _already_ apply to memory and disk allocation. No big new problem here.
Your claims that ram and disk are limitless are factually untrue. I certainly have dealt with real production machines which have exhausted either or both. It has been interesting noting which applications fail and which continue to work correctly in the face of exhaustion.
Caching through flash is useless-- it's slow for one thing, and since a cache is transient by definition there's no reason to use Flash rather than DRAM.
Flash transfer rates for read can easily outpace fixed disks. For write I don't know what the numbers are, but as I pointed out in another post, flash has no seeks, which can matter a lot for some loads and not much for others. Microsoft is seeing wins by prefetching data to flash devices _over USB_, so surely it must be possible to achieve wins on flash devices with more robust access paths.
For cache purposes, the reason to use Flash over DRAM is that per-megabyte the cost of Flash is lower, and Flash takes no power to leave programmed. This may not be sufficient to make it worth it to add per dollar, but those are the advantages.