How are blocking syscall handled in a two-level system?
> Martin Cracauer wrote: > > > > In a thread system that has both user threads and LWPs like Solaris, > > how are blocking syscall handled? > > Well, do you mean “like Solaris”, or do you mean “Solaris”? There’s no > one answer for all systems. LWP, by the way, isn’t a very general term. > Lately I’ve been using the more cumbersome, but generic and relatively > meaningful “kernel execution contexts”. A process is a KEC, an LWP is a > KEC, a “virtual processor” is a KEC, a Mach thread is a KEC, an IRIX > sproc is a KEC, etc. > > > By exchanging blocking syscalls to nonblocking like in a > > pure-userlevel thread implementation? > > Generally, only “pure user-mode” implementations, without any kernel > support at all, resort to turning I/O into “nonblocking”. It’s just not > an effective mechanism — there are too many limitations to the UNIX > nonblocking I/O model. > > > Or by making sure a thread that calls a blocking syscall is on its own > > LWP (the kernel is enterend anyway, so wh