08/22/83 Allocation Storage The Multics system uses several areas (in the PL/I sense) for storage of data by both system and user programs. A certain class of problems can be avoided by specifying which area is to be used for allocations of a particular type. In order to understand how to use the tools to help avoid this class of problems, the following table is given listing the various areas managed by the system and the type of allocations done in each. AREA ALLOCATIONS Combined Linkage linkage sections reference names LOT/ISOT Combined Static static sections (separate static only) System Free users of get_system_free_area_ User Free control tables for external variables pl1 allocations with no "in" clause pl1 controlled variables pl1 external variables without $ in the name fortran common blocks cobol data callers of get_user_free_area_ These areas are found via pointers in the stack header. Initially, all pointers point to the same extensible area--one or more segments in the process_dir named [unique].area.linker. Hence, user allocations and system allocations are made in the same area. This is done to minimize paging and process directory segments. However, if a user program has a bug such that it references beyond the end of an allocated block (or references a block it has freed, etc.), it is possible for the program to damage system data and, in particular, the control data of the area manager. The system data that can be damaged falls into four basic categories-- 1) links and linkage sections in general 2) static storage of system programs 3) allocated storage of system programs 4) area control info (stored in the area itself) If data in one of the first three classes is overwritten, fairly random and unexpected behavior results; a new proc (or hangup) is the only way out. If the area control info is overwritten, the condition "bad_area_format" is signaled the next time an allocation is attempted. In this case, the area_status command might be used to determine which part of the area has been destroyed. If it is suspected that the area has been damaged due to user program bugs, the set_user_storage command can be used to force user data to be allocated in a different area thereby probably protecting system data so that the normal debugging tools could be used. The easiest way to do this is probably in the start_up.ec by first creating an area (with the create_area command) and then telling the system to use this area for user allocations (with the set_user_storage command). This usually protects all system data from random user program bugs. Note that it is convenient to create the user area in a nonprocess directory segment so that it can be examined in the case of a process termination. ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved