So che Java utilizza un meccanismo controllato per consentire ai thread di essere messi in pausa. Se ho capito bene, hanno messo una lettura da una pagina protetta alla fine di es. loop e cambia la protezione di quella pagina se vogliono che il thread sia messo in pausa.
Quello che non capisco è perché questo è necessario e se questo può anche funzionare. L'unica ragione per cui posso pensare di renderlo necessario è che non devi avere tutti i puntatori nell'heap e puoi anche averli semplicemente nei registri. Tuttavia, se utilizzassi il TSS, non avresti gli stessi dati?
Tuttavia, quello che trovo più interessante è il modo in cui gestiscono le chiamate di sistema. Cosa succede quando il thread sta eseguendo una lettura lenta di un file oltre, ad es. una rete? Il modo GC? Il GC rinuncia a una corsa e riprova un attimo dopo? Cosa succede quando la chiamata di sistema richiede molto tempo?