Managing request queues

Some programmers will write more sophisticated device drivers which must handle requests from several tasks, and manage a queue of requests.

In time sharing systems the kernel handles the request queue, and this involves dynamic memory allocation or pre-allocation of large buffers by the kernel. In a small-footprint real-time operating system, this queue management should be done by user tasks and not by the kernel, which is why in the next chapter we propose a formalism for Input Output Request Blocks (IORBs), in which a user task prepares a request block (with all space allocated) and passes it to the device driver API.