Help with 4.3 mod to kill uninteruptable procs.

Y. Rock Lee rock at cbnews.att.com
Wed Feb 27 14:11:20 AEST 1991


In article <1991Feb25.184853.10487 at cimage.com> dbc at dgsi.UUCP (David Caswell) writes:
>It's the character devices that are doing the DMA transfer.  Normal I/O
>even if it is character-at-a-time is block I/O.

I "browsed" through a disk driver over the weekend. The followings are what 
I've learned. Please comment if you see anything wrong.

Normal block I/O uses the system buffer pool. Inside the disk strategy 
routine, the physical address of the granted system buffer is given to 
the disk controller for DMA data trnasfer. Since the kernel is not pageable,
there is no need to lock this buffer in memory (does BSD have a pageable
kernel?).

The character disk driver, on the other hand, uses the address pointed to
by the u_base directly. Since this user page may be paged out, the disk
read/write routine goes through a physical I/O function to lock this user
page in memory and uses its physical address for the DMA tranfer followed. 
"Raw disk I/O" is the common term used for this driver interface.


Y. Rock Lee, att!cblph!rock
             rock at cblph.ATT.COM



More information about the Comp.unix.internals mailing list