← Back to context

Comment by astrange

5 months ago

> How much memory could a single system thread handling the audio use?

It's not "use" but "ever potentially access", so it's unbounded unless they were careful. (Audio playback to speakers itself is bounded, but mixing isn't, and wireless headphones get complicated.)

> Forgive my ignorance I don't deeply understand OS level memory management but I thought, much like the task scheduler has priority understanding for CPU resource management, the memory manager had an idea of "these pages are important find some other page to evict".

It's difficult to know what the most important pages in memory are, because you'd have to observe every single memory access, and that's not worth the overhead.

Basically there's two ways it uses:

1. a program can tell the OS to keep something in memory (either by hinting it or forcing it, called mlock or wiring).

2. every so often, the OS will disconnect some pages such that accessing them faults (called "moving to the inactive queue"). If there's a fault, it know it's being used and moves it to active again. Eventually, if there aren't any for long enough, it gets to the end of the inactive queue and is paged out.