Messages in this thread |  | | Subject | Re: Good point of Linux over Windows NT | From | stephen farrell <> | Date | 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...
|  |