select()
where a process passes an "interest set" to the
kernel and the kernel returns the set of fds ready for service.
Issues:
sparse sets leading to kernel scan time
issue if kernel does not support per-thread select()
---thundering herd
poll()
where have a list of interest and ready fd structures. Better
if the list is sparse, worse if the list is dense.
Can use sigwaitinfo()
to make signal reception be synchronous. Can obtain
fd from siginfo structure (Figure 2).
An issue is that signal queue is finite. Can have overflow problem.