Re:The Rust standard library no longer has any scheduling ba...
by qznc on Sunday December 29, 2013 @05:42AM
(#6979148)
Why is syscall blocking the central problem? More precisely, what kind of problem is it?
Re:The Rust standard library no longer has any scheduling ba...
by dschatz on Sunday December 29, 2013 @06:08AM
(#6979209)
Because if I use M:N threading then logically one of my user threads blocked and a different one should run during my timeslice. The kernel however is unaware of how I use the kernel thread and will block, believing that I cannot proceed.
1:1 threading lacks this problem but operations such as creating threads or deleting them require syscalls and are therefore relatively expensive.
If operating systems supported something like scheduler activations (a 20 year old technique), then this becomes less of a problem. The gist of it is that every time the kernel thread would block, or gets scheduled, instead of returning back to where it was executing, it upcalls into a user level scheduler which can then choose to schedule user threads. Its a shame that this technique isn't more common.