I think I can see how to do this, but it's complicated, and I doubt I'll ever get anywhere. Switching processes is slow for the MMU, because you have to invalidate the TLB and let it refill. The pieces seem to be:
1. QNX-style message-passing, which lets a client call a server and get a response without the overhead of a pass through the task scheduler.
2. Single address space operating system, so you don't have to invalidate the cache or the TLB.
3. As a consequence of (2), memory protection information stored and enforced separately from the page table, so that it can be changed readily on a process switch. This likely makes processes something that are defined in the hardware architecture. The trick is doing this without adding lots of complexity.
no subject
Date: 2024-03-28 05:52 pm (UTC)1. QNX-style message-passing, which lets a client call a server and get a response without the overhead of a pass through the task scheduler.
2. Single address space operating system, so you don't have to invalidate the cache or the TLB.
3. As a consequence of (2), memory protection information stored and enforced separately from the page table, so that it can be changed readily on a process switch. This likely makes processes something that are defined in the hardware architecture. The trick is doing this without adding lots of complexity.