home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 June / SIMTEL_0692.cdr / msdos / dskutl / emmcache.arc / EMC110.DOC < prev    next >
Text File  |  1987-08-03  |  16KB  |  331 lines

  1.  
  2.  
  3.                             EXPANDED MEMORY DISK CACHE 1.10
  4.  
  5.  
  6.  
  7.   1. Introduction.
  8.  
  9.        EMC110.COM is a program designed to cache IBM-XT/AT hard disks in LIM
  10.   (Lotus-Intel-Microsoft) expanded memory; it will not cache floppies, nor will
  11.   it cache in DOS memory or AT extended memory.  It should work with any system
  12.   which has a LIM-spec expanded memory board and software, a disk system which is
  13.   IBM-XT/AT-compatible at the ROM-BIOS level, and NO OTHER STORAGE DEVICES.  If
  14.   your system does not clearly fit this description --- in particular, if you
  15.   have a hard disk system which exceeds the 32-meg DOS limit, or if you have any
  16.   removable-media storage devices other than standard floppies --- you should NOT
  17.   use this program without first reading the 'Technical Notes' section below.
  18.  
  19.  
  20.   2. Installing the Cache.
  21.  
  22.        The cache can be installed by typing
  23.  
  24.                                 EMC110 [max [min]]
  25.  
  26.   at the DOS prompt, where the optional parameters 'max' and 'min' are the
  27.   maximum and minimum number of expanded memory pages you wish to use for the
  28.   cache (each page is 16K).  If 'max' is not specified it defaults to 512.  The
  29.   point of specifying 'max' is to prevent the cache from consuming all available
  30.   expanded memory.  If 'min' is not specified it defaults to 1.  The point of
  31.   specifying 'min' is to prevent the installation of a cache which is too small
  32.   to be effective.  Note that the parameters are positional: if you want to
  33.   specify 'min', you must specify 'max' first.
  34.  
  35.        If at least 'min' pages of expanded memory are available, EMC110 installs
  36.   itself as a resident program which, subject to the constraint of 'max', uses as
  37.   much expanded memory as possible and up to 64K of DOS memory.  Specifically,
  38.   the program requires approximately 3K plus 128 bytes per expanded memory page
  39.   used.  Thus a 1-meg cache uses about 11K of DOS memory and, if you have enough
  40.   expanded memory, a cache of nearly 8 meg should be possible.
  41.  
  42.  
  43.   3. Changing the Cache Size.
  44.  
  45.        If EMC110 is already installed, the cache size can be dynamically changed
  46.   by typing
  47.  
  48.                                 EMC110 [max [min]]
  49.  
  50.   at the DOS prompt, where 'max' and 'min' have the same significance as for the
  51.   initial installation.  The result is that the cache is purged, all expanded
  52.   memory being used by the cache is released, a new allocation of expanded memory
  53.   of the appropriate size is obtained, and the cache is reinitialized.  Since no
  54.   reallocation of DOS memory or manipulation of interrupts is involved, the cache
  55.   can be resized under circumstances which would not permit removing it and
  56.   reinstalling it.  However, since the cache retains its original allocation of
  57.   DOS memory, this imposes an additional constraint on the maximum cache size in
  58.   addition to 'max' and the amount of expanded memory available: the new size can
  59.   never exceed the size of the original installation.
  60.  
  61.  
  62.  
  63.  
  64.                                      Page 1 of 5
  65.  
  66.  
  67.  
  68.  
  69.                             EXPANDED MEMORY DISK CACHE 1.10
  70.  
  71.  
  72.   4. Disabling the Cache.
  73.  
  74.        If EMC110 is installed, it can be disabled by typing
  75.  
  76.                                      EMC110 X
  77.  
  78.   at the DOS prompt.  The result is that the cache is purged, all expanded memory
  79.   being used by the cache is released, and subsequent BIOS disk interrupts are
  80.   immediately passed on to the prior interrupt handler.  However, the cache
  81.   maintains its allocation of DOS memory and its position in the BIOS disk
  82.   interrupt chain, so it can be reactivated as described under 'Changing the
  83.   Cache Size' above.
  84.  
  85.  
  86.   5. Uninstalling the Cache.
  87.  
  88.        If EMC110 is installed, it may be possible to uninstall it (i.e., remove
  89.   it from memory entirely) by typing
  90.  
  91.                                      EMC110 XX
  92.   or
  93.                                      EMC110 XXX
  94.  
  95.   at the DOS prompt.  The 'XX' variant will complete the uninstallation only if
  96.   it can be done without fragmenting DOS memory.  The 'XXX' variant will complete
  97.   the uninstallation whenever possible.  If EMC110 was not the last program to
  98.   insert itself in the BIOS disk interrupt chain, then the uninstallation will
  99.   not be possible.  If the uninstallation is not completed, then the cache will
  100.   be left in the disabled state.
  101.  
  102.  
  103.   6. Querying the Cache.
  104.  
  105.        The status of the cache can be determined by typing
  106.  
  107.                                      EMC110 ?
  108.  
  109.   at the DOS prompt.  The result, in addition to an identifying banner, will be
  110.   the display of either
  111.  
  112.                                 Cache not installed
  113.   or
  114.                              xx page cache installed.
  115.  
  116.   If the cache is installed, but has been disabled or resized to less than its
  117.   original installed size, then either
  118.  
  119.                                  Cache is disabled
  120.   or
  121.                               xx page cache is active
  122.  
  123.   will also be displayed.  In addition, if any disk read, disk write, or expanded
  124.   memory errors have occurred, further lines will be displayed detailing these
  125.   errors.  Note that the error counts are not reset by resizing or disabling the
  126.   cache.  Moreover, only errors which arise from disk or expanded memory requests
  127.   issued by the cache itself are counted.
  128.  
  129.  
  130.                                      Page 2 of 5
  131.  
  132.  
  133.  
  134.  
  135.                             EXPANDED MEMORY DISK CACHE 1.10
  136.  
  137.  
  138.  
  139.        The display described above is also produced by all other calls to EMC110
  140.   which don't result in removing the cache from memory entirely.  The difference
  141.   is that, whereas the other calls result in the cache's being reinitialized, the
  142.   '?' variant leaves the cache intact.
  143.  
  144.  
  145.   7. Compatibility with Resident Program Managers.
  146.  
  147.        EMC110 should not be used with any program which claims to be able to
  148.   suspend and later reactivate resident programs.  All disk caches work by
  149.   keeping copies of disk sectors in memory.  If a cache is suspended and later
  150.   reactivated by another program, the cache has no way of knowing that its
  151.   contents may no longer be correct.  The results could be disastrous.
  152.  
  153.        EMC110 may also be incompatible with programs which merely uninstall
  154.   resident programs.  Such programs presumably work by recording the computer's
  155.   state before a resident program is installed, and restore that state when
  156.   uninstalling it.  If you use such a program to uninstall EMC110, or if you
  157.   never use EMC110 to resize, disable or uninstall itself, this technique should
  158.   work.  But consider the following scenario: first you install EMC110, then you
  159.   install resident program 'A', then you disable EMC110, then you install
  160.   resident program 'B' which allocates some expanded memory, then you reactivate
  161.   EMC110.  At this point the expanded memory owned by EMC110 is probably not the
  162.   same as it was when 'A' was installed, so simply removing 'A' and 'B' from
  163.   memory and restoring the computer's state to what it was when 'A' was installed
  164.   will not work.  Admittedly this scenario is unlikely, and some resident program
  165.   managers may even be clever enough to cope with it, but the integrity of your
  166.   hard disk is at stake.  If want to use both EMC110 and a resident program
  167.   manager, the safe way is never to use EMC110 to resize, disable or uninstall
  168.   itself.
  169.  
  170.  
  171.   8. Compatibility with Multitasking Programs.
  172.  
  173.        EMC110 doesn't work with DoubleDOS 4.0.  It does appear to work with both
  174.   Microsoft Windows 1.03 and Desqview 1.3 and 2.0.  In fact the resize and
  175.   disable features work in a Desqview window.  But note that EMC110 must be
  176.   installed BEFORE you invoke Windows or Desqview; you should NEVER install
  177.   EMC110 in a window.
  178.  
  179.  
  180.   9. Operational Notes.
  181.  
  182.        EMC110 is a pure write-through cache.  Both reads and writes are cached in
  183.   the sense that, whenever an actual disk read or write occurs, copies of the
  184.   sectors involved are placed in the cache.  But whereas read requests are
  185.   serviced from the cache contents rather than the disk whenever possible, write
  186.   requests are always passed on to the prior interrupt handler.  Unlike most
  187.   commercial caches, EMC110 doesn't try to avoid writing to disk by checking if
  188.   the data to be written agrees with the cache contents.
  189.  
  190.        A cache performs like an automatic RAM-disk.  A cache is more convenient
  191.   than a RAM-disk in that you don't have to copy files to it, you don't have to
  192.   delete old files to make room for new ones, and you don't have to remember to
  193.  
  194.  
  195.  
  196.                                      Page 3 of 5
  197.  
  198.  
  199.  
  200.  
  201.                             EXPANDED MEMORY DISK CACHE 1.10
  202.  
  203.  
  204.   copy updated files back to disk.  On the other hand, a cache is slower than a
  205.   RAM-disk, and writing temporary files to disk is a waste of time.
  206.  
  207.        Both caches and RAM-disks provide increased performance by decreasing the
  208.   time required to locate data (the seek time) and the time required to transfer
  209.   it.  Whether there is a significant improvement in transfer time is highly
  210.   system dependent; on a system with a slow processor and a fast disk system
  211.   there may be no improvement at all.  But RAM-disks eliminate seek time
  212.   entirely, and caches usually reduce it dramatically.  Whether there is a
  213.   significant improvement in overall system performance depends on what you're
  214.   doing.  If your primary activity is word-processing, all you'll get is a
  215.   psychological lift from seeing the program load faster.  But for disk-intensive
  216.   activities like sorting a huge fragmented database, the improvement should be
  217.   significant and, if the files involved are too large to fit in a RAM-disk, a
  218.   cache is your only choice.
  219.  
  220.        One factor in the performance of a cache is its size.  The smaller the
  221.   cache the less likely it is that a read request can be serviced from the cache
  222.   contents.  If the cache is too small, then the time spent copying each newly
  223.   accessed sector into the cache (replacing previously accessed sectors) may
  224.   exceed the time saved by occasionally finding the desired sector in the cache.
  225.   The result will be a degradation rather than an improvement in performance.  On
  226.   the other hand, the larger the cache the longer it may take to find a sector in
  227.   it.  Ideally the cache should be just large enough to contain all the sectors
  228.   that are currently being accessed, but using an unnecessarily large cache is
  229.   preferable to using one that is too small.
  230.  
  231.        As you use EMC110, you may find that the cache doesn't always contain
  232.   everything that you think it should.  There are two reasons why such behavior
  233.   may be consistent with correct operation of the program.  First, the cache may
  234.   be too small.  Second, EMC110 organizes cached sectors into groups, and its
  235.   response to any error or unexpected condition is to purge either the group
  236.   involved or the entire cache.  So a disk error may result in seemingly
  237.   unrelated sectors being purged from the cache, even though the sector causing
  238.   the error may get into the cache on a retry.  Similarly, since EMC110 treats
  239.   any request except read, write or status as an "unexpected condition", any such
  240.   request will cause the entire cache to be purged.
  241.  
  242.  
  243.   10. Technical Notes.
  244.  
  245.        EMC110 works by intercepting calls to interrupt 13h.  It assumes that the
  246.   calls it intercepts and passes on can be interpreted as calls to the IBM-XT
  247.   hard disk BIOS, i.e., that the contents of the processor registers have the
  248.   significance described in the IBM-XT Technical Reference Manual.  In particular
  249.   it assumes that if the high bit of register DL is 1 then the call is directed
  250.   to a hard disk.  It also makes three assumptions that are not explicit in the
  251.   Technical Reference Manual description, namely that all hard disks have non-
  252.   removable media, that all hard disks have 512-byte sectors, and that multi-
  253.   sector requests are serviced by incrementing the sector number, the head number
  254.   and the cylinder number, in that order.  If your system contains storage
  255.   devices other than standard XT/AT hard disks and floppies, you must determine
  256.   whether their operation involves interrupt 13h and, if so, whether the above
  257.   assumptions are valid.  If they're not, the use of EMC110 will produce
  258.   disastrous results.
  259.  
  260.  
  261.  
  262.                                      Page 4 of 5
  263.  
  264.  
  265.  
  266.  
  267.                             EXPANDED MEMORY DISK CACHE 1.10
  268.  
  269.  
  270.        EMC110 also uses the drive-parameters subfunction (AH = 8) of interrupt
  271.   13h for two purposes of its own.  First, it uses this subfunction at
  272.   installation time to determine how many sectors per track and how many heads
  273.   each hard disk has; it will not cache hard disks which are not reported by this
  274.   subfunction.  Second, communication with an installed copy of EMC110 is
  275.   implemented in part by requesting parameters for a non-existent hard disk.  If
  276.   EMC110 is not installed the result should be an error return.  If your hard-
  277.   disk BIOS is willing to return parameters for a non-existent disk, no harm
  278.   should be done; EMC110 will simply refuse to install itself.
  279.  
  280.        Except for this non-standard use of the drive-parameters subfunction,
  281.   EMC110 expects requests for only three subfunctions of interrupt 13h: status
  282.   request (AH = 1), read sectors (AH = 2), and write sectors (AH = 3).  A request
  283.   for any other subfunction is handled by purging the cache and passing the
  284.   request on.
  285.  
  286.        EMC110 is not re-entrant.  Its correct operation depends upon the fact
  287.   that, since the IBM disk BIOS is not re-entrant, no operating system, multi-
  288.   tasking program, or interrupt-driven program dare permit two concurrent calls
  289.   to interrupt 13h.  This fact is also the reason for implementing communication
  290.   with an installed copy of EMC110 by making non-standard use of interrupt 13h
  291.   rather than by using a more respectable method.
  292.  
  293.  
  294.   11. Copyright, Disclaimer, etc.
  295.  
  296.        EMC110 is copyrighted by the author.  However, the author hereby grants
  297.   permission for anyone to use this program, and to distribute it freely in
  298.   unmodified form along with this documentation for no more than a nominal media
  299.   charge.
  300.  
  301.        The author makes no claim about this program except that he has done
  302.   everything he could think of to ensure that it is error-free, and that he's
  303.   using it himself.  If you use EMC110, you do so with the understanding that
  304.   even the most carefully written program may contain subtle errors that appear
  305.   only after prolonged use, that any resident program is subject to corruption by
  306.   other ill-behaved programs, and that either of these eventualities could result
  307.   in loss of data stored on your disks.
  308.  
  309.        I'm interested in any comments and suggestions you have to make.  Even if
  310.   you don't have any comments or suggestions, it's encouraging to hear from
  311.   people who find EMC110 useful.  I'm also interested in reports of systems and
  312.   software with which EMC110 doesn't work, but it's unlikely that I'll be able to
  313.   help.  While you might be willing to send me copies of the software,
  314.   duplicating your hardware would almost certainly be impossible.  I don't return
  315.   long distance calls, but I do make an effort to answer all letters that require
  316.   a reply.  Please address any correspondence to:
  317.  
  318.  
  319.                          Frank Lozier
  320.                          Department of Mathematics
  321.                          The Cleveland State University
  322.                          Euclid Avenue at East 24th Street
  323.                          Cleveland, Ohio 44115
  324.  
  325.  
  326.  
  327.  
  328.                                      Page 5 of 5
  329.  
  330.  
  331.