home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / BEEHIVE / OS / CONIX2.LBR / CHAPTER4.DQC / CHAPTER4.DOC
Text File  |  2000-06-30  |  16KB  |  529 lines

  1.  
  2.  
  3.  
  4.  
  5.               Chapter 4 - Memory Management
  6.  
  7.  
  8.     The  amount  of     memory     used  by  ConIX,  internal  machine  code
  9.     organization,  how  ConIX manages memory usage,    freeing    memory for
  10.     program    usage, overall system memory layout,  and  the    way  ConIX
  11.     treats memory from the user's standpoint.
  12.  
  13.  
  14.                    - CONTENTS -
  15.     __________________________________________________________________
  16.  
  17.  
  18.       4.  Memory Management......................................  4-1
  19.  
  20.         4.1     Management Levels...................................  4-2
  21.  
  22.         4.2     ConIX System Memory Map.............................  4-4
  23.  
  24.         4.3     Memory    Usage Rules..................................  4-6
  25.  
  26.         4.4     Notes...............................................  4-7
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.                       -    i -
  63.  
  64.  
  65.  
  66.  
  67.  
  68.     ConIX Operating    System                 Memory    Management
  69.  
  70.     4.  Memory Management
  71.  
  72.     ConIX is very small considering    the number of features it
  73.     provides.  However, its    approximate 25K    size is    enough to take a
  74.     sizable    chunk out of the memory    available in any micro.     The
  75.     crunch can be most harshly felt    in the reduced workspace for
  76.     programs, such as text editors,    which need as much memory as they
  77.     can get.  Some programs    make you pay in    memory for their features.
  78.     Not ConIX!
  79.  
  80.     The test of time proves    any program's usability.  If a program is
  81.     cumbersome to use, it will simply fall into oblivion on    some dusty
  82.     shelf.    To prevent such    a dreary destiny for our program, we have
  83.     devoted    much time to making ConIX be more of a benefit to the
  84.     user, rather than a detriment.    The environment    it provides is
  85.     extremely powerful and useful, while it    has many features and
  86.     settings designed to make sure it will not get in the way of what
  87.     you want to accomplish.     Memory    Management is one of those
  88.     features.
  89.  
  90.     Simply defined,    Memory Management is the process by which ConIX
  91.     manages    the amount of TPA memory it occupies in    your system.  The
  92.     time when you usually need as much memory as possible is when
  93.     running    a program, so that more    data can be kept in active
  94.     workspace.  It is at this point    that you can select the    amount of
  95.     memory allocated for use by ConIX.
  96.  
  97.     There are eight    different levels of Memory Management which can    be
  98.     set by the user, depending upon    how much memory    is needed.  Each
  99.     level corresponds to a segment of the ConIX machine code which is
  100.     actively stored    in memory.  Set    at its highest level (8), ConIX
  101.     will take up as    little as (12K of TPA memory!  Such a small amount
  102.     of memory will definitely go unnoticed when you're running any of
  103.     your CP/M programs.
  104.  
  105.     The first is the lowest    level of Memory    Management.  When set at
  106.     this segment, no management takes place    and ConIX occupies the
  107.     maximum    amount of memory which it needs    to reside, in its
  108.     entirety, in your system.  Every time you move up one level, all
  109.     previous levels    get thrown out of memory before    the execution of a
  110.     disk-based command.  The space occupied    by the discarded levels    is
  111.     then made available for    use by the running program.
  112.  
  113.     Once the program finishes execution, ConIX automatically reloads
  114.     only as    much of    itself as is needed to process your commands (to
  115.     level 5).  If you request a built-in command from a segment of
  116.     ConIX which is not currently in    memory,    then only that segment
  117.     will be    loaded.     All reloading is done from the    original CONIX.COM
  118.     file, which was    used by    CP/M to    bring ConIX into your system
  119.     initially.  The    memory manager will look for this file in the
  120.     default    directory which    was set    when the initial CP/M load took
  121.     place.    This location may be changed with the OPT +CX internal
  122.     command.
  123.  
  124.  
  125.  
  126.  
  127.  
  128.                        4-1
  129.  
  130.  
  131.  
  132.  
  133.  
  134.     Memory Management                ConIX Operating System
  135.  
  136.     The Memory Management level can    be set by using    the OPT    +/-MM
  137.     internal command, as:
  138.  
  139.         <A:00> opt +mm <#level>
  140.  
  141.     The specified level number will    be the default each time a disk-
  142.     based program is executed.  For    example, typing:
  143.  
  144.         <A:00> opt +mm 5
  145.  
  146.     will set ConIX to invoke Memory    Management and remove code from
  147.     level 1    to 4 each time a command is loaded from    disk.
  148.  
  149.     Execution of an    internal command can only increase the amount of
  150.     memory being used by ConIX since the command may lie in    a segment
  151.     which had been managed out of memory.  However,    this increase is
  152.     only temporary as these    segments will again be freed when another
  153.     .COM program is    executed.
  154.  
  155.     The Memory Management level may    also be    modified for a single
  156.     program    by typing:
  157.  
  158.         <A:00> [m=<#level>]  command  (arg(s))
  159.  
  160.     This change is only temporary as the default level set by OPT +MM
  161.     will once again    be used    for all    following commands, unless
  162.     respecified.
  163.  
  164.     Memory Management is a fast and    efficient means    by which you can
  165.     allocate space for program execution.  With this feature, you can
  166.     be sure    that ConIX will    never get in your way!
  167.  
  168.  
  169.     4.1  Management    Levels
  170.  
  171.     The eight levels of Memory Management serve to group the ConIX
  172.     internal machine-code segments by different functions.    These
  173.     segments, and the functions contained within them, are described
  174.     below.
  175.  
  176.     Level 1: Programming Functions
  177.  
  178.       This is the topmost level of ConIX (where the    top is the
  179.       beginning and    the bottom is the end of the ConIX machine code).
  180.       It contains data manipulation    commands which are most    often used
  181.       only within a    Command    Language program.
  182.  
  183.     Level 2: XCC Commands
  184.  
  185.       This is the segment which contains the instructions necessary
  186.       for the execution of Command Language    programs.  It is,
  187.       therefore, only used when such a program is running.
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.                        4-2
  195.  
  196.  
  197.  
  198.  
  199.  
  200.     ConIX Operating    System                 Memory    Management
  201.  
  202.  
  203.     Level 3: General Utilities
  204.  
  205.       The commands within this segment are used more often than those
  206.       in the first segment,    but not    as often as those in the fourth.
  207.       It is    an in-between group, mainly intended to    break up the size
  208.       of the entire    Utilities code section.     Most of the commands
  209.       stored here are used for manipulating    memory.
  210.  
  211.     Level 4: Utilities
  212.  
  213.       These    are the    most often used    commands or utilities.    You are
  214.       most likely to access    this segment more often    during the course
  215.       of using your    system than any    other level above it.  For
  216.       example, the DIR and ERA commands reside here.
  217.  
  218.     Level 5: Command Line Setup
  219.  
  220.       This segment is significantly    larger than any    of the previous
  221.       ones.     It contains the Command Line Processor, or parser, which
  222.       performs all the command line    setup such as decoding arguments
  223.       and variables.  It also contains the loader, which searches
  224.       internally and on disk for the commands you enter.  After the
  225.       command is found, the    selected redirection buffers and routines
  226.       are activated    within this segment.
  227.  
  228.       Needless to say, this    section    must be    around in order    to process
  229.       your commands.  Therefore, if    Memory Management is set to a
  230.       higher level (above 5), this section and everything which is
  231.       ``managed out'' below    it, must always    be reloaded after the
  232.       execution of a disk-based program.
  233.  
  234.       To prevent delays after running programs, we recommend that
  235.       Memory Management be set by default (using the OPT +MM internal
  236.       command) to this level, namely 5.  If    you must occasionally
  237.       execute a program that requires more memory, specify a higher
  238.       level    of management using the    [M] Command Line Option.
  239.  
  240.       If you run programs that need    a lot of memory    more often than
  241.       not, then specify the    default    level to be higher than    5.  When
  242.       you run a command that does not need that much memory, specify a
  243.       lower    level of management using [M], to prevent memory from
  244.       being    freed unnecessarily.
  245.  
  246.     Level 6: Redirection and SysCall Decoder
  247.  
  248.       This is the most important segment of    ConIX because it contains
  249.       all of the run-time features which programs might utilize during
  250.       their    execution.  For    example, Redirection, Print Spooling, and
  251.       Function Keys    are included within this section.
  252.  
  253.       When Memory Management is set    to level 6 or lower, you will lose
  254.       absolutely nothing as    far as features    are concerned.    ConIX will
  255.       handle itself    properly knowing the memory usage restrictions
  256.       imposed upon it by the user and no functionality will    be lost
  257.  
  258.  
  259.  
  260.                        4-3
  261.  
  262.  
  263.  
  264.  
  265.  
  266.     Memory Management                ConIX Operating System
  267.  
  268.       because of this.  However, if    this section is    managed    out
  269.       (management level set    above 6), a program will run exactly as    it
  270.       would    under regular CP/M, which means    that all the ConIX
  271.       features would be lost during    execution.  The    features will, of
  272.       course, return for use by the    built-in commands, but they will
  273.       be inaccessible to disk-based    software.  Therefore, whenever
  274.       possible, this level should not be managed out, so as    to prevent
  275.       such a drastic loss from occurring.
  276.  
  277.     Level 7: Permanent Data    Storage
  278.  
  279.       This is the section where the    ConIX ``internal'' data    values are
  280.       stored.  All the changes and customizations of features which
  281.       were made during the course of using ConIX are recorded in this
  282.       section.  If it is managed out (i.e.,    management level set to
  283.       8), the data stored in this section (about 4K) must be saved so
  284.       that the user's changes will remain when ConIX returns.  This    is
  285.       done by writing the permanent    data area to a disk file,
  286.       CONIX.DAT, stored in the default directory which was externally
  287.       set when ConIX was first loaded from CP/M.  If CONIX.DAT already
  288.       exists and is    set to R/O, it will not    be overwritten and the
  289.       file CONIX.DA$ will be used instead.    In any case, the temporary
  290.       file will be created with its    SYS attribute set and deleted once
  291.       ConIX    is reloaded.  The OPT +CD internal command may be used to
  292.       change the directory which will hold this file.
  293.  
  294.     Level 8: System    Loader
  295.  
  296.       This is the highest possible level of    Memory Management.  All    of
  297.       ConIX    is gone    except for a very small    loader which reloads the
  298.       permanent storage section (level 7) from the temporary file
  299.       CONIX.DAT/$.    Level 7    also contains the Memory Management code
  300.       which    is then    used to    reload ConIX to    level 5    so that    additional
  301.       commands can be processed.
  302.  
  303.  
  304.  
  305.     4.2  ConIX System Memory Map
  306.  
  307.     When running ConIX, your system's memory will be organized in the
  308.     following way:
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.                        4-4
  327.  
  328.  
  329.  
  330.  
  331.  
  332.     ConIX Operating    System                 Memory    Management
  333.  
  334.                ___________________________
  335.                |                 |
  336.                |        Page 0         |
  337.                | Reserved for System Use |
  338.                |                 |
  339.                ---------------------------
  340.                |                 |
  341.                | Transient Program Area  |
  342.                |                 |
  343.                ---------------------------
  344.                |                 |
  345.                | Transient Program Area  |
  346.                |       and ConIX         |
  347.                |                 |
  348.                ---------------------------
  349.                |                 |
  350.                |      ConIX    Loader         |
  351.                |                 |
  352.                ---------------------------
  353.                |                 |
  354.                |       CP/M    BDOS         |
  355.                |                 |
  356.                ---------------------------
  357.                |                 |
  358.                |          BIOS         |
  359.                |                 |
  360.                ---------------------------
  361.  
  362.     The first block    of memory is page zero which starts at location
  363.     0000h and is reserved for certain system functions, such as:
  364.  
  365.         0000h    Warm Boot
  366.         0001h    BIOS Address
  367.         0005h    BDOS SysCalls
  368.         0006h    End of TPA + 1
  369.         005Ch    Default    FCB (36    bytes)
  370.         0080h    Default    DMA (128 bytes)
  371.  
  372.     The next area in system    memory is the TPA, which is active memory
  373.     used to    store and execute disk-based (.COM) programs.  ConIX
  374.     occupies part of the TPA memory, the amount of which depends upon
  375.     the Memory Management level in effect.    This is    also the area
  376.     where the CCP resided before ConIX took    its place.  Following
  377.     ConIX is the loader segment which is a small (12K byte program
  378.     that reloads ConIX when    it is entirely managed out (level was set
  379.     to 8).
  380.  
  381.     Finally, comes CP/M itself and the BIOS    system-dependent
  382.     functions.  These segments might not always be resident    in this
  383.     area of    memory if your system is running a CP/M    emulator, or
  384.     implements memory bank-switching.  Consult your    system manuals for
  385.     more information about the particulars of your CP/M
  386.     implementation.
  387.  
  388.  
  389.  
  390.  
  391.  
  392.                        4-5
  393.  
  394.  
  395.  
  396.  
  397.  
  398.     Memory Management                ConIX Operating System
  399.  
  400.     4.3  Memory Usage Rules
  401.  
  402.     It is quite obvious that a disk    can hold much more data    than
  403.     active computer    memory,    as most    disks can store    more than the 64K
  404.     bytes of memory    that an    8-bit processor    can address.  Therefore,
  405.     it would seem logical to use the disk for operations which would
  406.     not fit    into memory.  Most programs operate as such if they must
  407.     handle data which can vary either small    or large, as a program for
  408.     a compiler, or a text file for an editor.
  409.  
  410.     If such    a program is to    be efficient, it will try to use as much
  411.     memory as possible before going    to disk    for the    remainder of the
  412.     data.  This is the fastest method, as memory is    electronic and not
  413.     mechanical like    a disk,    and should be used instead of disk
  414.     whenever possible.  ConIX internally does exactly that by managing
  415.     how much memory    is actually needed at one time.     But there is
  416.     actually more that the user can    do with    memory than ConIX can do
  417.     for itself automatically.
  418.  
  419.     A great    deal of    the flexibility, speed and convenience offered by
  420.     ConIX lies in its attitude towards the way memory is to    be used.
  421.     ConIX contains many functions which allow you to specify the areas
  422.     of memory in which certain operations are to take place.  You are
  423.     given the freedom to use any part of memory that you like.  It is
  424.     entirely left up to the    user to    specify    memory which will not
  425.     interfere with the data    storage    and functions of ConIX itself.
  426.  
  427.     The user should    be aware that all memory is volatile, and may be
  428.     changed    at any time by a running program, or by    ConIX itself.  The
  429.     operation of ConIX is most definitely predictable, as you can
  430.     always determine its start address with    the TOP    internal command.
  431.     Any memory between location 100h and this address may be utilized
  432.     for memory functions.  This area is called the Transient Program
  433.     Area, or just TPA.
  434.  
  435.     Many disk programs use only a set, or at least predictable amount
  436.     of memory.  You    can usually figure out how much    memory is
  437.     available for holding some more    permanent data.     Generally, most
  438.     ConIX internal commands    do not break into the TPA, so if you don't
  439.     run a program off disk,    you can    pretty much be assured that this
  440.     memory will remain untouched.  If an internal command will modify
  441.     the TPA    segment    of memory, then    it will    be clearly mentioned in
  442.     this manual.
  443.  
  444.     Memory is highly recommended for use with data which is    small
  445.     enough to be stored without any    loss.  If you specify a    segment    of
  446.     memory which is    not large enough to hold the given data, ConIX is
  447.     smart enough not to exceed its bounds and simply excludes the
  448.     remainder.  Although levity in assigning memory    can be quite
  449.     fatal, if used carefully, you can achieve execution speeds which
  450.     rival the larger minis.
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.                        4-6
  459.  
  460.  
  461.  
  462.  
  463.  
  464.     ConIX Operating    System                 Memory    Management
  465.  
  466.     4.4  Notes
  467.  
  468.     The amount of memory required by a program is usually dependent
  469.     upon its size and the amount of    space required for storing run-
  470.     time data.  If a program is too    large to be loaded into    available
  471.     memory,    ConIX will print an appropriate    error message and abort.
  472.     At this    time, you should keep setting a    higher Memory Management
  473.     level until the    program    can load.
  474.  
  475.     Once the program is loaded, it may not execute or run properly due
  476.     to a lack of memory.  If this is the case, you should try an even
  477.     higher level.  But remember, once you pass level 6, programs can
  478.     no longer take advantage of ConIX features.  We    have found
  479.     programs like WordStar and dBase II to run fine    at level 6.  (The
  480.     command    line option string we use is [m=6,f,o].)
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.                        4-7
  525.  
  526.  
  527.  
  528.  
  529. >-σHAPTER7DOC NÇσHAPTER7DOC ^-σHAPTER8DOC dÇ: