next up previous contents
Next: Management of Titles Up: Packages Previous: EXTRACT   Contents

ZEBRA

ZEBRA was developed to address the single most serious fault of FORTRAN 77: its lack of any dynamic data structuring facility. During ZEBRA initialisation the user passes it one or more standard, fixed length FORTRAN COMMONs. These form the basis for all dynamic memory allocation. Application software requiring storage passes a request to ZEBRA specifying the size and the memory required. ZEBRA creates a bank, which is simply a contiguous set of words in a memory array and returns a link (i.e. an array address) to this bank to the caller who can then fill it with whatever data is required. A bank may contain links to other banks and in this way a data structure of arbitrary complexity can be developed. The size of the bank can be extended or reduced, or the bank deleted altogether thereby allowing its space to be reused. Creating and deleting banks asynchronously usually leads to memory fragmentation, so the system includes a garbage collector to move banks together, squeezing out all dead space back into a single pool ready for further memory requests. Garbage collection is relatively time consuming so ZEBRA also allows memory wiping; a fast way to erase an entire data structure from memory.

Along with dynamic memory allocation, ZEBRA provides a wide range of support facilities. These include data structure I/O which can be machine independent to allow the data to cross machine boundaries. There is even a clear text format that allows the data to be transported over a network. There are a range of utilities to search, edit and display a data structure and provide debugging services. ZEBRA also contains a general purpose error recovery system that considerably simplifies the code needed to manage error conditions.

ZEBRA has developed a number of concepts from several earlier memory management systems. It is more powerful and sophisticated than any of its predecessors but is, necessarily, more complex. Having said that, all the average user really needs to understand is the concept of a bank plus an appreciation that ZEBRA must be kept informed of the whereabouts of all bank links at all times so that it can update them during memory management.

A complete description of ZEBRA can be found in a set of ZEBRA reference manuals available from CERN. For most needs, the following will suffice:-

ZEBRA User Guide.

ZEBRA Reference Manual TZ Title Handling.


next up previous contents
Next: Management of Titles Up: Packages Previous: EXTRACT   Contents
sno Guest Acct 2009-09-09