Re: Would a car buyer complain about the space the engine takes up?
"Charles - logical and virtual partitioning is fine, but a physical partition, or one that is fixed at system compile time (or SYSGENs as this horrible mechanism was called on IBM) is a very bad idea. Modern computing moved on from that. You mean Android really goes backwards and does that (aside from Dalvik making registers visible to programmers - a really bad, but common idea)."
Yes, they do, for security reasons. Mainly, /system, under normal operation, is mounted read-only. This is one of the chief reasons hacks need root access: to be able to remount /system read/write so as to make the necessary changes. As for moving on, we haven't. A physical partition is still limited to the size of the media. Now, logical partitions can work around it, but that normally takes level of sophistication not present (or needed) in your average mobile device.
"Partitioning is static and is known to waste resources, particularly memory. Customers aren't happy when their disk space runs out and there is heaps of free wasted space because the OS can't make use of it."
Then you should've heard some of the howls of protest when the S4 came out. Take mine: a baseline 16GB. About 2.5GB of it is partitioned /system, some of it /data, /cache, etc. Leaving us about 9GB free. I get around it with an SDXC card, but Apple users don't have that luxury. Basically, partitioning, especially on mobile devices, is a necessary evil. Trying to monkey with them is considered high-risk since the architectures involved are rather sensitive to where things are stored. So, if you have to partition to fixed sizes, why not segregate the OS onto another chip with additional safeguards and so on? To Android and the system at large, it shouldn't be able to tell the difference.
"Your PS is confusing two things. Programs are loaded into the same RAM memory as data. This is the von Neumann model. However, a program should not be treated as data itself which can be overwritten (except in a virtual environment like LISP and descendants).
If a program can overwrite program code, that results in all sorts of security breaches."
It's also sometimes the only way to achieve some kinds of speed optimizations. Treating programs as data is the basic remit of the compiler, and for a JIT compiler, it has to be able to compile it and then run it in the same context. Sure, there's the risk of security breaches, but that's the tradeoff of using self-modifying code.
I'm simply saying that the von Neumann argument isn't part of the discussion. We're discussing partitioning and the reservation of OS space such that it's not included as part of the advertised space, not the segregation of code and data.