Here is a nexus on determinism that informs this page.
Computers once strove for determinism; run the same code with the same input twice and you get the same answers.
Computers still mostly strive to provide means where some programs can achieve determinism.
I was and still am of the opinion that pseudo random number generators suffice for Monte Carlo which seem predicated on non deterministic behavior.
I am sceptical of any system’s ability to generate a large set of quality RSA key pairs.
I see a growing set of demands for imposing determinism on code.
The tools to do so might support programs that volunteer for determinism.
This page is primarily about OS support of imposed determinism.
The “meta code” phrase in the nexus is to emphasize that this facility is in code that runs on a sufficiently powerful platform.
Perhaps Keykos on some ISA suffices as a platform.
Keykos tries to deliver to some guests the complete power of the underlying hardware and today that means delivering random behavior.
I think perhaps Keykos plus some meta code outside the kernel can deliver deterministic behavior on some ISA’s while still including multi programming.
Categories of Demand
If a program arrives from an untrusted source and you have reason to run it and it claims to be a pure function, then you should be able to impose determinism on it, provide what ever information it wants that you feel you should give it, and run it deterministically.
- to thwart Spectre, Meltdown and other exploits of non determinism.
- Rerun database transactions.