Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!purdue!tut.cis.ohio-state.edu!gem.mps.ohio-state.edu!apple!baum From: baum@Apple.COM (Allen J. Baum) Newsgroups: comp.arch Subject: Re: Instruction (dis)continuation ( Message-ID: <35186@apple.Apple.COM> Date: 2 Oct 89 17:53:06 GMT References: <2353@oakhill.UUCP> <261500010@S34.Prime.COM> <34701@apple.Apple.COM> <477@ctycal.UUCP> <2255@munnari.oz.au> Reply-To: baum@apple.UUCP (Allen Baum) Organization: Apple Computer, Inc. Lines: 26 [] >In article <2255@munnari.oz.au> ok@cs.mu.oz.au (Richard O'Keefe) writes: > Imagine a memory-mapped scheme where each >device has all its registers in a different page of I/O space, and where >the operating system is running a "virtual machine" scheme. All I/O >pages would initially be mapped out of a process's address space. Touching >an I/O page would cause a page fault, at which time the O/S would check >whether the process had permission to access that device, and if so would >map the page in. If the O/S needed to seize control of the device back, >it would map the page out again. > >Whether such a scheme is useful or not is another matter. This is very similar to the HP "Spectrum" ..er.. Precision's IO scheme. All I/O devices are mapped onto two pages. Data registers are mapped to one, and control registers to the other (generally). The idea is that you can keep control of a device, and still let programs have access to the data. Really, there is no reason not to let a user have direct access to his/her own serial port; it can't affect security. You may not want to give them access to the control registers, especially if they affect more than one line. Direct access for the common stuff means a LOT lower overhead. You can get a keystroke with a "Load" instruction in one cycle, instead of a system call that is likely to cost you a millisecond. -- baum@apple.com (408)974-3385 {decwrl,hplabs}!amdahl!apple!baum