3 ms·
I can’t speak to this particular solution, but the problem is, in fact, complicated for two interrelated reasons: - Modern UNIXes usually can’t communicate, an
by mananaysiempre 5y ago
I can’t speak to this particular solution, but the problem is, in fact, complicated for two interrelated reasons:
- Modern UNIXes usually can’t communicate, and modern applications usually can’t handle, out of memory conditions, because of overcommit, necessary due to pervasive use of fork(), which is ingenious and easy to use but lends itself poorly to resource accounting. Compare with Symbian, which was very awkward to program in, but was resilient enough to run the radio stack and user apps on the same processor.
- While the monolithic-kernel ideal is to put all caches and other discretionary memory consumers in the kernel, that is of course impossible to achieve. Everything on your system has buffers, caches, or un-garbage-collected memory it could afford to lose, but the system can’t communicate or cooperate with itself to actually make use of that. Cooperating resource usage of untrusted processes which have different ideas of how important things are is a hard and mostly unsolved problem.