kernel thread as real threads..
julian at elischer.org
Mon Jan 23 18:35:05 PST 2006
Peter Jeremy wrote:
>On Mon, 2006-Jan-23 16:02:01 -0800, Julian Elischer wrote:
>>>And any others I don't remember. We may find we need to perform an
>>>aio drain wait there if we switch to doing AIO in the process context.
>>I don't think so..
>>IO is really 2 stage:
>>for read, data is read into the cache by standard async kernel code.
>>then the thread wakes up and writes it to the user space.
>>if the thread has died the async request is still allowed to complete.
>Is this done as a one-off event, or will data be copied from kernel
>to userland as the data arrives in the kernel? The former implies
>that the userland buffer is (pretty much) atomically updated - it is
>unchanged until all the available data arrives, at which point it is
>all copied into userland and the aio flagged as complete. The latter
>implies that parts of the userland buffer will update gradually. The
>difference primarily affects large requests (and the latter approach
>implies that less kernel resources will be tied up by the I/O).
I sugest reading the code.. I don't know the answer.. But I'm interested
to hear the answer.
I believe it's done in (largeish) chunks but I may be wrong.
>What about the write case?
I believe it's symetrical with read.,
In either case. If the requestor is not around at completion of the
it is not much of a problem.
More information about the freebsd-current