XEROX EXTENDEDVMEM 2 4 1 EXTENDEDVMEM 1 4 By: Nick Briggs (Briggs.pa@Xerox.com) This document last edited on November 17, 1987 INTRODUCTION The ExtendedVmem module allows the Dorado user to make use of more than one partition for their Lisp virtual memory (backing store) file. This means that with a total of three partitions the Dorado user can allocate backing store for the full 32Mb of virtual memory addressable by Xerox Lisp. A Lisp virtual memory, which previously consisted of a Lisp.VirtualMem file on a single partition, can now be composed of a primary partition with a Lisp.VirtualMem file, and 0, 1, or 2 secondary partitions containing Lisp.XVirtualMem files. The ExtendedVmem module consists of two parts; a replacement for the Lisp.run and Lisp.syms (BCPL) code, and a small piece of Lisp code. Terminology The primary partition in an extended virtual memory system is that partition which contains the Lisp.run file, and the Lisp.VirtualMem file. You may have more than one primary partition. They may be any partitions: 1 ÿÿï$ÿ 5 or 1 ÿÿï$ÿ 19, depending on the size of disk. The secondary partition(s) are those which contain the Lisp.XVirtualMem files. These must be selected from partitions 1 ÿÿï$ÿ 7. INSTALLATION AND USE Preparing the primary partition On a primary partition replace the Lisp.run and Lisp.syms files with the Lisp.run and Lisp.syms provided with this module (you may use FTP to retrieve them from the Lispusers directory, renaming them from ExtendedVmem-Lisp.* to Lisp.*). There is no need to make any change to the Lisp.VirtualMem file on a primary partition, although you may choose to erase and rebuild the partition to ensure that the virtual memory file is allocated in the minimum number of page runs, as fragmentation adversely affects the performance. In a system with 2 secondary partitions the maximum size for the Lisp.VirtualMem file should be 20333 pages. Selecting a secondary partition The secondary partitions must be selected from partitions 1 ÿÿï$ÿ 7. You may use either one or two secondary partitions in conjunction with a primary partition. Each secondary partition can serve as an extension to exactly one primary partition. Each secondary partition may contribute up to 22600 (less any bad pages) to the total size of a Lisp virtual memory, with a combined (primary and secondary partitions) limit of 65533 pages. There is no advantage to be gained in selecting secondary partitions that are "near" each other or the primary partition: the disk layout already guarantees pessimal access times. Preparing a secondary partition The secondary partitions should be prepared using DiEx and BFSTest (normally available from the Network Executive). With DiEx you should InitLabels for a dual Mod-44 disk, and then use BFSTest to Certify the partition (at least 200 passes, 2.5 hrs, are recommended on an untested partition), Erase it, and then Create a file named Lisp.XVirtualMem of up to 22600 pages. >BFSTest *Certify 200 *Erase *Createfile Lisp.XVirtualMem 22600 There is no need to install an operating system (NewOS) as you will not need to boot this partition. However, it will not interfere, except to reduce the available space, should you decide to do so. Linking primary and secondary partitions After preparing the primary and secondary partitions you must indicate to Lisp how they are to be linked together. To indicate that partitions "n" and "m" (numbers between 1 and 7) should be linked to the primary partition (with partition "n" used before partition "m"), and that the Lisp sysout "[host]lisp.sysout" should be loaded, (the program) Lisp.run should be invoked as follows: >Lisp n/X m/X [host]lisp.sysout If you have only one secondary partition, omit one of the /X options. Note that you may specify the /X option to add partition(s) even if you are not fetching a fresh sysout. Activating the extended virtual memory feature Once Lisp has started, in order to make use of the extended virtual memory, you must activate it for the first time by loading the EXTENDEDVMEM Lisp module, and calling (INSTALL-EXTENDED-VIRTUAL-MEMORY) [Function] which will return T if the extended virtual memory has been properly installed. This function needs to be called only once in a sysout, however it will do no harm if called more often. If you make a sysout (MAKESYS, or SYSOUT) from a system with the extended virtual memory activated then subsequent loading of this sysout on a Dorado with the correct Lisp.run and secondary partition(s) will automatically activate the extended virtual memory feature. See note "Restrictions on the making of sysouts." Describing your virtual memory state To determine what the state of the virtual memory is you can call the function (DESCRIBE-VIRTUAL-MEMORY) [Function] which will describe the configuration as accurately as it can. Resuming after exiting Lisp There is no change to the manner in which you re-enter Lisp following a LOGOUT. Type >Lisp to resume Lisp at the point where you left off. Reusing an extended virtual memory Once you have prepared and linked an extended virtual memory file it will continue to be used in the extended mode on subsequent "sysins", providing that you activate the feature as described above. You need not specify the /X option in this situation, and therefore you would invoke Lisp with a new sysout "[host]foo.sysout"by typing >Lisp [host]foo.sysout and would then load the EXTENDEDVMEM Lisp module, and call INSTALL-EXTENDED-VIRTUAL-MEMORY. Rebuilding partitions If you have occasion to erase and rebuild any of the partitions involved in your extended virtual memory, simply reissue the appropriate /X commands next time you start Lisp in order to link the primary and secondary partitions again. Of course, you must be performing a sysin at the same time, unless the rebuilt partition was not an active part of your virtual memory at the time you last logged out. If you forget to give the /X command, Lisp will bounce you back to the Alto exec with a message that either it couldn't open Lisp.XVirtualmem, or that the secondary partition is not linked to your primary partition. Simply give the correct /X command(s) to get going. Unlinking primary and secondary partitions Should you decide that it is no longer necessary to have the secondary partitions linked to the primary partition you can specify this to Lisp by using the option "-/X". Thus you might type >Lisp -/X To unlink only the third partition, use n/X exactly once, i.e., the set of partitions specified by the one or two instances of /X should completely specify the configuration you wish your vmem to be in. Should you later decide to relink the secondary partitions you have only to mention the numbers in the /X option ÿÿï%ÿ see "Linking primary and secondary partitions". Note that Lisp does not check that the partitions you are unlinking are not in use by your saved virtual memory image. Unlinking a secondary partition that is in use will result in Lisp exiting to Raid, with a fatal error, indicating that a page is not in the ISF map. Of course, it is always safe to use the -/X command when you are performing a sysin. RESTRICTIONS Restrictions on the reuse of partitions In order to deter the user from accidentally destroying a virtual memory image by attempting to change partitions in midstream, or link the same secondary partition to more than one primary partition, the Lisp program verifies when given the n/X option that (a) the primary partition is not already using a different set of secondary partition(s) than you specified, and (b) the Lisp.XVirtualMem file(s) on the secondary partition(s) are not in use by any other primary partition. If you believe that what you are doing is correct (e.g., you have destroyed the "other" primary partition and wish to reuse the secondary partitions without erasing and recreating the Lisp.XVirtualMem files), you can override this warning by specifying the /O (letter O) switch along with the n/X switch(es). Should the secondary partitions be damaged in any way (erasing, disk error) Lisp will report an error when you attempt to (re)start using that partition. Restrictions on the making of sysouts It is not possible to construct a sysout (MAKESYS, or SYSOUT) from a Lisp system in which the virtual memory size has exceeded the size of the primary partition. Restrictions on state of virtual memory before installing extended virtual memory You may not install the extended virtual memory module in the situation where your Lisp.VirtualMem file has been expanded by the system because you ran out of backing file pages. The installation function INSTALL-EXTENDED-VIRTUAL-MEMORY will warn you of the situation and will not do the installation in this case. It is wise to install the extended virtual memory module either in your init file or as soon after starting a sysout as is practical (if it is not already in the sysout.) Using sysouts made with extended virtual memory Should you make a sysout with the extended virtual memory in your system (see "Restrictions on the making of sysouts") this sysout will operate normally (non-extended virtual memory) on non-Dorado systems, and on Dorados which do not have the extended virtual memory version of Lisp.run installed. If this sysout is used on a machine which has the extended virtual memory version of Lisp.run installed then it will make use of the full virtual memory allocated to it. Deinstalling while "under way" Don't even think about trying to remove this module once you have it installed in a sysout. Wait until you can safely LOGOUT, and then start fresh. (LIST ((PAGE NIL (PAPERSIZE LETTER STARTINGPAGE# 82) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO NIL) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE NIL . LETTER) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO NIL) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE NIL . LETTER) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO NIL) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))))).ÈÈ(È(È(ŠŠ8(ŠŠ8DÈÈ PAGEHEADING RUNNINGHEAD TERMINAL MODERNMODERN  HELVETICA MODERN MODERN MODERN MODERNMODERN LOGO   HRULE.GETFNMODERN  HRULE.GETFNMODERN  HRULE.GETFNMODERN   HRULE.GETFNMODERN  HRULE.GETFNMODERN (/ ‰ Ð & l {<7@¶ ‰   Y  5EÇ(  :+K/ª! r 3>%O ?V0#áR #\‰$Õ+¤ (TJg3*'òÑ e ª"ž&¢Ré0Õ  …&äzº