Xref: utzoo comp.unix.sysv286:169 comp.unix.sysv386:8534 comp.unix.xenix.misc:231 comp.unix.xenix.sco:2637 comp.unix.wizards:25785 Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!think.com!zaphod.mps.ohio-state.edu!swrinde!elroy.jpl.nasa.gov!decwrl!mejac!orchard.la.locus.com!fafnir.la.locus.com!richard From: richard@locus.com (Richard M. Mathews) Newsgroups: comp.unix.sysv286,comp.unix.sysv386,comp.unix.xenix.misc,comp.unix.xenix.sco,comp.unix.wizards Subject: Re: Kernel Definition Message-ID: <1991May29.201432.1803695@locus.com> Date: 29 May 91 20:14:32 GMT References: <1423@necis.UUCP> <1991May24.065316.27331@thunder.mcrcim.mcgill.edu> <19332@rpp386.cactus.org> Organization: Locus Computing Corporation, Los Angeles, California Lines: 29 jfh@rpp386.cactus.org (John F Haugh II) writes: >The AIX v3 kernel is pagable. And AIX V3 isn't the only pagable Unix kernel, and I suspect this is going to get common soon. This is wandering off the subject a bit, but I thought I'd mention some of the fun involved in making Unix pagable since it sounds like most of the "wizards" out there haven't played with this at all. There are many, many places where Unix kernel code assumes that there are only 3 ways that something can magically change: an interrupt can change things; hardware registers can change; and anything can change if we allow a context switch. If you know that the first 2 don't happen or are irrelevant, then all you have to do is avoid calling swtch() (or something that calls it, most obviously sleep()); and then you know that you have complete control. If, however, you can take page faults in the kernel, then you can get context switched on any line of code. You better hunt out each place where such assumptions are made, and either temporarily pin down the pages you need or get a lock for the appropiate resource. And then you better think about deadlock and performance implications of keeping things pinned or locked. It's a lot of fun! Note, by the way, that the work to make a kernel pagable is similar to the work needed to make it work with multiple processors. Richard M. Mathews Freedom for Lithuania richard@locus.com Laisve! lcc!richard@seas.ucla.edu ...!{uunet|ucla-se|turnkey}!lcc!richard