4 ms·
Long ago, we in the Newton project at Apple had that idea. We (in conjunction with ARM) were defining the first ARM MMU, so we took the opportunity to implement
by wrs 5y ago
Long ago, we in the Newton project at Apple had that idea. We (in conjunction with ARM) were defining the first ARM MMU, so we took the opportunity to implement “domains” of memory protection mappings that could be quickly swapped at a context switch. So you get multiple threads in the same address space, but with independent R/W permission mappings.
I think a few other ARM customers were intrigued by the security possibilities, but the vast majority were more like “what is this bizarre thing, I just want to run Unix”, so the feature disappeared eventually.
Here’s some ARM documentation if you want to pull this thread: https://developer.arm.com/documentation/dui0056'/latest/'caches-and-tightly-coupled-memories/memory-management-units/memory-access-permissions-and-domains https://developer.arm.com/documentation/dui0056'/latest/'cac...
- wrs 5y agoToo late to edit, but here's a documentation link that works better: https://developer.arm.com/documentation/dui0056/d/caches-and-tightly-coupled-memories/memory-management-units/memory-access-permissions-and-domains?lang=en https://developer.arm.com/documentation/dui0056/d/caches-and...
- StillBored 5y agoIts similar to the original macOS, which used handles to track/access/etc memory requested from the OS and swap them to disk as needed. First you request the space, then you request access, which pinned it into ram. PalmOS was another one that worked similarly. https://www.fuw.edu.pl/~michalj/palmos/Memory.html https://www.fuw.edu.pl/~michalj/palmos/Memory.html