Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!spool.mu.edu!uwm.edu!linac!att!cbnews!rock From: rock@cbnews.att.com (Y. Rock Lee) Newsgroups: comp.unix.internals Subject: Re: Help with 4.3 mod to kill uninteruptable procs. Message-ID: <1991Feb27.031120.25156@cbnews.att.com> Date: 27 Feb 91 03:11:20 GMT References: <19065@rpp386.cactus.org> <1991Feb21.145705.27763@cbnews.att.com> <1991Feb25.184853.10487@cimage.com> Organization: AT&T Bell Laboratories Lines: 22 In article <1991Feb25.184853.10487@cimage.com> dbc@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@cblph.ATT.COM Brought to you by Super Global Mega Corp .com