Re: Good point of Linux over Windows NT

stephen farrell (sfarrell@healthquiz.com)
21 Jan 1997 16:16:39 -0600


"David S. Miller" <davem@jenolan.rutgers.edu> writes:

>
> Date: Mon, 20 Jan 1997 21:37:04 -0500 (EST)
> From: "Richard B. Johnson" <root@analogic.com>
>
> Look at the code. It isn't spinning. It schedules. The CPU time
> isn't wasted. Linux is a Unix variant. Unix does Async like
> this. VAVen do ASTs (Asynchronous system Trap), NT (borrowed from
> VAX/VMS) does the same thing but with another name. Neither is
> BETTER.
>
> Kernel level support for async-IO is something that should be at least
> thought about. From the UNIX's that I've heard actually do it, they
> limit you to one outstanding async-IO request per task/thread. This
> seems to suggest it is not a trivial problem to solve at all.

well, the deal with async io is that it allows a process to keep
running while it's waiting for io. typically, the process will get
some signal to tell it that it can pick up the data when it's ready.
(this, i guess, is why you can't have multiple outstanding requests,
since each one would need a different signal). the problem withdoing
this in unix is it's against the basic model where a process goes into
kernel mode when it's doing io (and other stuff), and is stuck there
until the kernel is done with whatever its doing.

one solution in linux is to just launch off another thread to do the
io which'll get stuck in kernel mode, not the whole process. but this
is kind of cheesy, and has the overhead of creating a new thread.

so basically what you need is for a kernel thread to be created to
handle the async io, and signal (or otherwise...) the process that the
request is done. i'm not sure about what the barriers are here for
linux in particular. solaris, for example, has a heavily threaded
kernel, so this sort of feature is supported.

>
> From what I've heard NT allows numerous (unlimited?) outstanding
> async-IO requests to be queued to the system, and programmers love
> this. Can someone validate this? It's what I've heard, I want to
> know if it is true.
>

i dunno. i wonder how the kernel informs the threads that the io is
done. perhaps there is a more flexible system in NT for signalling
than in linux...