Ok I'm not sure if this is the correct place to post this. It is more of a 'why not' question than a 'how to' one (assumption is that it isn't/can't be done).
Why don't we allow RAM to be partitioned into 2 (or more) blocks that can be used for separate types of processes? The main motivation here is from being near to 100% used RAM, and freezes happen while (I assume) RAM is swapped onto the disk. Most of the time, this is due to some memory leak and fixed by killing and restarting the process. This can be done in a few commands, but you have to wait until the machine becomes 'unstuck'. If there was some notion of partitioned RAM, you could have a priority set up, e.g. system/util + non-system(with overflow allowing for system RAM) partitions. Then instead on a 'freeze' (application memory leak), you could easily fix the problem.
With my rusty knowledge of memory architecture, you would not need to change much (or anything) on hardware, instead paging/virtual memory could be extended in software to support an additional flag and a coordination manager.
There is clearly an issue with the above, either technically or just not practical. I am just interested in WHY not.