home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / demos / proart24 / Virtualise / Docs / Module < prev    next >
Text File  |  1996-08-08  |  6KB  |  136 lines

  1. File        : Module
  2. Date        : 08-Aug-96
  3. Author      : © A.Thoukydides, 1995, 1996
  4. Description : Details about using and controlling the "Virtualise" module
  5.               without the front-end. This also includes some technical details
  6.               about how the virtual memory operates.
  7.  
  8.  
  9. INTRODUCTION
  10.  
  11. The "Virtualise" may be used independently of the front-end to implement
  12. virtual memory for Risc PC dynamic areas. It is not necessary to read this
  13. file to use virtual memory with software written by other author's, but it
  14. does give a better understanding of how the virtual memory system operates.
  15.  
  16. The main interface to this module is through the SWIs described in the "SWIs"
  17. file. However, there is another technique that can be utilised to get
  18. existing applications to use virtual memory without modification which is
  19. described in the "SYSTEM VARIABLES" section below. There are also a couple of
  20. *commands which are covered in the "COMMAND LINE INTERFACE" section.
  21.  
  22.  
  23. RESTRICTIONS
  24.  
  25. Swapping of memory to/from disc will only occur for instructions executed in
  26. USR26 or SVC26 modes. In addition, reentrant behaviour is not available. If
  27. any of these conditions are not met then the previous Data abort handler will
  28. be called.
  29.  
  30. If it is necessary to access the virtual memory in one of these situations
  31. (such as an interrupt routine) then the relevant section must be locked
  32. whilst in either USR26 or SVC26 mode. This includes access from code that may
  33. be called externally under unpredictable circumstances, e.g. SWIs.
  34.  
  35. The main reason for these apparently limiting restrictions is due to the fact
  36. that FileCore (which most RISC OS filing systems are based on) is not
  37. re-entrant. This prevents pages being swapped to/from disc during another
  38. file system operation. Under the excluded conditions described above it is
  39. not possible to guarantee that it will not be necessary to swap data
  40. to/from disc during a foreground file operation.
  41.  
  42. In practice these restrictions are rarely a problem; very few programs access
  43. data in dynamic areas from any on these situations.
  44.  
  45.  
  46. SYSTEM VARIABLES
  47.  
  48. When a dynamic area is created, and bit 31 of the area flags is not set, a
  49. system variable called "Virtualise$Area_<area name>" is checked, where
  50. "<area name>" is the name of the dynamic area being created with the
  51. characters " ", "#" and "*" replaced by "_". If the variable exists, and it
  52. is numeric (created with *SetEval), then virtual memory is automatically
  53. enabled for the area and the maximum area size is set to the specified value
  54. in megabytes.
  55.  
  56. The location of the swap files is specified by the "Virtualise$SwapDir"
  57. system variable. This defaults to the macro "<Wimp$ScrapDir>.Virtualise.",
  58. but may be changed at any time. A new value only affects areas which have
  59. virtual memory enabled after the change; existing swap files are not moved.
  60. In addition, this value is only used if a filename is not specified to
  61. Virtualise_Start when virtual memory is enabled.
  62.  
  63. The configuration files are accessed via the variable "Virtualise$ConfigDir".
  64. By default this is set to "<Choices$Write>.Virtualise", but it may be useful
  65. to change this when using Virtualise over a network.
  66.  
  67. Finally, it is possible to change the "Messages" file used by the Virtualise
  68. module by changing the value of "Virtualise$Path". The default message file
  69. is stored within the module and installed in
  70. "Resources:$.Resources.Virtualise". If a new file is used then the system
  71. variable must be set before the Virtualise module is loaded, and exactly the
  72. same tokens must be defined (although the order does not matter).
  73.  
  74.  
  75. ERRORS
  76.  
  77. The Virtualise module uses the Acorn allocated error chunk starting at
  78. &80E100. However, the actual error numbers used within this range has not
  79. been fixed; they are likely to change in future releases of the module. If
  80. your software uses the error numbers produced then please contact Clares to
  81. ensure that the values you use become fixed.
  82.  
  83.  
  84. COMMAND LINE INTERFACE
  85.  
  86. *VirtualStats
  87.  
  88.     No arguments are allowed. This displays some statistics about the current
  89.     state and past behaviour of the virtual memory system.
  90.     
  91.     Note that if a floating point emulator is being used then page faults
  92.     caused by the coprocessor data transfer instructions will actually be
  93.     generated by the normal processor instructions contained in the emulator
  94.     code.
  95.     
  96.     This command could (safely) abort prematurely if used in a taskwindow.
  97.     
  98.  
  99. *VirtualPages
  100.  
  101.     No arguments are allowed. This lists details of all the physical pages
  102.     currently assigned to this module. The columns of data are:
  103.     
  104.         Index       Internal page number.
  105.         Page        Physical page number.
  106.         Area        Dynamic area number if page is used for virtual memory.
  107.         Offset      Page offset if page is used for virtual memory.
  108.         Locks       Number of times page locked.
  109.         Original    Original address of page.
  110.         Current     Current address of page.
  111.         Prot        Access protection of page.
  112.         Accesses    A measure of how frequently the page has been accessed.
  113.  
  114.     The interpretation of the access count depends upon the requirements of
  115.     the page replacement policy being used.
  116.     
  117.     Note that this can be an extremely long list, and is unlikely to be of
  118.     interest to most people.
  119.     
  120.     This command could (safely) abort prematurely if used in a taskwindow.
  121.  
  122.  
  123. *VirtualCheck
  124.  
  125.     No arguments are allowed. This performs a comprehensive consistency
  126.     check of the internal Virtualise data structure, and reports the
  127.     result.
  128.     
  129.     This command can be useful after an application has crashed to ensure
  130.     that the virtual memory system is reliable.
  131.  
  132.  
  133. *Desktop_Virtualise
  134.  
  135.     This is for the internal use of the "!Virtualis" front-end, and should
  136.     not be used.