MULTICS DESIGN DOCUMENT MDD-003 To: MDD Distribution From: W. Olin Sibert Date: July 1, 1975 Subject: Overview of the Multics TCB Abstract: Overview of the Multics Virtual Memory System, Metering, and the Supervisor. Revisions: REVISION DATE AUTHOR initial 85-07-01 W. Olin Sibert _________________________________________________________________ Multics Design Documents are the official design descriptions of the Multics Trusted Computing Base. They are internal documents, which may be released outside of Multics System Development only with the approval of the Director. i MDD-003 Overview of the Multics TCB CONTENTS Page Topic I Multics Design Philosophy . . . . . . . . . 1-1 Major Design Goals . . . . . . . . . . . 1-1 Virtual Memory Organization . . . . . . 1-3 Selective, Controlled Sharing . . . . . 1-5 Security. . . . . . . . . . . . . . . .. 1-6 Open-Ended, Modular System. . . . . . . 1-10 Decentralized Administration. . . . . . 1-11 Flexible User Interfaces.. . . . . . . . 1-13 Continuous Operation.. . . . . . . . . . 1-14 Reliable File System.. . . . . . . . . . 1-15 Remote Access .. . . . . . . . . . . . . 1-16 Efficient Service to Large/Small Users . 1-17 Topic II Overview of the Operating System.. . . . . . 2-1 Structure of the Operating System .. . . 2-1 What is the Multics Supervisor.. . . . . 2-3 The Major Supervisor Subsystems .. . . . 2-5 Name Space/Address Space Management .. . 2-9 Directory Control .. . . . . . . . . . . 2-13 Volume Management .. . . . . . . . . . . 2-15 Segment Control .. . . . . . . . . . . . 2-19 Page Control.. . . . . . . . . . . . . . 2-21 Traffic Control .. . . . . . . . . . . . 2-27 Fault and Interrupt Handling.. . . . . . 2-28 System Initialization .. . . . . . . . . 2-31 File System Salvagers .. . . . . . . . . 2-34 Metering & Tuning .. . . . . . . . . . . 2-37 Initializer.SysDaemon .. . . . . . . . . 2-39 Topic III The Multics Environment .. . . . . . . . . . 3-1 What is a Process .. . . . . . . . . . . 3-1 Cooperating Processes .. . . . . . . . . 3-4 The PL/I Operators.. . . . . . . . . . . 3-7 Interfaces to System Modules.. . . . . . 3-9 Deadlock Prevention .. . . . . . . . . . 3-10 Types of Locks.. . . . . . . . . . . . . 3-16 Topic IV Name Space and Address Space Management .. . 4-1 Name/Address Space Overview .. . . . . . 4-1 Name/Address Space Terminology.. . . . . 4-5 Name/Address Space Concepts .. . . . . . 4-7 Name/Address Space Data Bases .. . . . . 4-12 Reference Name Table (RNT).. . . . . 4-12 Known Segment Table (KST) .. . . . . 4-13 Descriptor Segment (DSEG) .. . . . . 4-14 ii MDD-003 Overview of the Multics TCB MDD-003 Typical Address Space .. . . . . . . . . 4-16 Name/Address Space Meters .. . . . . . . 4-32 system_link_meters.. . . . . . . . . 4-32 link_meters .. . . . . . . . . . . . 4-33 Name/Address Space Commands .. . . . . . 4-34 display_kst_entry .. . . . . . . . . 4-34 Topic V Directory Control .. . . . . . . . . . . . . 5-1 Directory Control Overview.. . . . . . . 5-1 Directory Control Terminology .. . . . . 5-3 Directory Control Data Bases.. . . . . . 5-6 Directory Segments.. . . . . . . . . 5-6 Directory Header.. . . . . . . . . . 5-9 Directory Entries .. . . . . . . . . 5-12 Directory Control Commands.. . . . . . . 5-16 display_branch.. . . . . . . . . . . 5-16 Topic VI Volume Management .. . . . . . . . . . . . . 6-1 Volume Management Overview.. . . . . . . 6-1 The New Storage System.. . . . . . . . . 6-4 Volume Management Terminology .. . . . . 6-13 Volume Management Data Bases.. . . . . . 6-16 Volume Label.. . . . . . . . . . . . 6-16 Volume Map.. . . . . . . . . . . . . 6-20 Dumper Bit Map.. . . . . . . . . . . 6-23 VTOC Map.. . . . . . . . . . . . . . 6-25 Physical Volume Table (PVT) .. . . . 6-26 Logical Volume Table (LVT).. . . . . 6-29 Physical Volume Hold Table.. . . . . 6-32 Volume Management Operations.. . . . . . 6-34 Acceptance of Physical Volumes.. . . 6-35 Demounting of Physical Volumes.. . . 6-37 Logical Volume Management .. . . . . 6-39 Volume Management Commands.. . . . . . . 6-40 print_configuration_deck.. . . . . . 6-40 list_vols .. . . . . . . . . . . . . 6-42 display_label .. . . . . . . . . . . 6-44 display_pvte.. . . . . . . . . . . . 6-46 Volume Management Meters.. . . . . . . . 6-48 disk_meters .. . . . . . . . . . . . 6-48 device_meters .. . . . . . . . . . . 6-49 disk_queue.. . . . . . . . . . . . . 6-50 Topic VII Segment Control .. . . . . . . . . . . . . . 7-1 Segment Control Overview.. . . . . . . . 7-1 Segment Control Terminology .. . . . . . 7-4 Segment Control Data Bases.. . . . . . . 7-5 Volume Table of Contents (VTOC) .. . 7-5 Active Segment Table (AST).. . . . . 7-11 iii MDD-003 MDD-003 Overview of the Multics TCB Services of Segment Control .. . . . . . 7-25 Creating Segments .. . . . . . . . . 7-25 Segment Fault .. . . . . . . . . . . 7-28 Segment Activation.. . . . . . . . . 7-29 Segment Trailers.. . . . . . . . . . 7-30 Boundsfault Handling.. . . . . . . . 7-32 Segment Deactivation.. . . . . . . . 7-35 Summary of Major Services .. . . . . 7-37 Encacheability.. . . . . . . . . . . 7-38 Truncating Segments .. . . . . . . . 7-38 Deleting Segments .. . . . . . . . . 7-40 Other Services.. . . . . . . . . . . 7-42 Segment Control Meters.. . . . . . . . . 7-44 file_system_meters.. . . . . . . . . 7-44 vtoc_buffer_meters.. . . . . . . . . 7-46 Segment Control Commands.. . . . . . . . 7-47 print_aste_ptp.. . . . . . . . . . . 7-47 dump_vtoce.. . . . . . . . . . . . . 7-48 Topic VIII Page Control.. . . . . . . . . . . . . . . . 8-1 Page Control Overview .. . . . . . . . . 8-1 Page Control Terminology.. . . . . . . . 8-5 Page Control Data Bases .. . . . . . . . 8-6 Page Tables .. . . . . . . . . . . . 8-6 Core Map.. . . . . . . . . . . . . . 8-9 System Segment Table (SST) Header .. 8-11 Other Data Bases.. . . . . . . . . . 8-13 Services of Page Control.. . . . . . . . 8-15 Page Fault Handling .. . . . . . . . 8-15 Post Purging.. . . . . . . . . . . . 8-27 Page Control Meters .. . . . . . . . . . 8-28 file_system_meters.. . . . . . . . . 8-28 Topic IX Traffic Control .. . . . . . . . . . . . . . 9-1 Traffic Control Overview.. . . . . . . . 9-1 Traffic Control Terminology .. . . . . . 9-3 Traffic Control Data Bases.. . . . . . . 9-5 tc_data .. . . . . . . . . . . . . . 9-5 Services of Traffic Control .. . . . . . 9-8 Wait Locks.. . . . . . . . . . . . . 9-8 Processor Multiplexing.. . . . . . . 9-9 Traffic Control Meters.. . . . . . . . . 9-18 total_time_meters .. . . . . . . . . 9-18 traffic_control_meters.. . . . . . . 9-19 traffic_control_queue .. . . . . . . 9-21 work_class_meters .. . . . . . . . . 9-23 respons_meters.. . . . . . . . . . . 9-24 post_purge_meters .. . . . . . . . . 9-26 iv MDD-003 Overview of the Multics TCB MDD-003 Traffic Control Commands.. . . . . . . . 9-27 print_tuning_parameters .. . . . . . 9-27 print_apt_entry .. . . . . . . . . . 9-28 Topic X Fault and Interrupt Handling.. . . . . . . . 10-1 Fault and Interrupt Handling Overview .. 10-1 Fault and Interrupt Data Bases.. . . . . 10-4 Fault and Interrupt Vectors .. . . . 10-4 Fault Data Save Areas .. . . . . . . 10-6 Important Types of Faults .. . . . . 10-8 Fault/Interrupt Meters.. . . . . . . . . 10-13 fim_meters.. . . . . . . . . . . . . 10-13 interrupt_meters.. . . . . . . . . . 10-14 Topic XI System Initialization/Shutdown.. . . . . . . 11-1 System Initialization Overview.. . . . . 11-1 System Initialization Terminology .. . . 11-4 Initialization Data Bases .. . . . . . . 11-7 Environment Passed to Initialization.. . 11-10 Collection 0.. . . . . . . . . . . . . . 11-11 Collection 1.. . . . . . . . . . . . . . 11-12 Collection 2.. . . . . . . . . . . . . . 11-14 Collection 3.. . . . . . . . . . . . . . 11-16 Normal Shutdown .. . . . . . . . . . . . 11-17 File System Shutdown.. . . . . . . . . . 11-18 Emergency Shutdown.. . . . . . . . . . . 11-20 Topic XII File System Salvagers .. . . . . . . . . . . 12-1 Overview of Salvagers .. . . . . . . . . 12-1 Directory Salvager.. . . . . . . . . . . 12-4 Quota Salvaging .. . . . . . . . . . . . 12-7 Physical Volume Scavenger .. . . . . . . 12-9 Physical Volume Salvager.. . . . . . . . 12-11 sweep_pv.. . . . . . . . . . . . . . . . 12-12 Topic XIII The Initializer.SysDaemon Process .. . . . . 13-1 Initializer Overview . . . . . . . . . . 13-1 Services of Initializer .. . . . . . . . 13-3 Topic XIV Metering and Tuning .. . . . . . . . . . . . 14-1 Meter and Tuning Overview .. . . . . . . 14-1 Analyzing Performance Problems.. . . . . 14-3 Detailed Problem Analysis .. . . . . . . 14-6 Output From Metering Commands .. . . . . 14-8 total_time_meters .. . . . . . . . . 14-8 interrupt_meters.. . . . . . . . . . 14-9 file_system_meters.. . . . . . . . . 14-10 v MDD-003 MDD-003 Overview of the Multics TCB file_system_meters.. . . . . . . . . 14-12 device_meters .. . . . . . . . . . . 14-14 disk_meters .. . . . . . . . . . . . 14-15 disk_queue.. . . . . . . . . . . . . 14-16 print_configuration_deck.. . . . . . 14-17 list_vols .. . . . . . . . . . . . . 14-19 traffic_control_queue .. . . . . . . 14-21 traffic_control_meters.. . . . . . . 14-23 print_tuning_parameters .. . . . . . 14-25 work_class_meters .. . . . . . . . . 14-26 respons_meters.. . . . . . . . . . . 14-27 system_performance_graph.. . . . . . 14-29 meter_gate.. . . . . . . . . . . . . 14-31 Topic XV Evolution of Memory Addressing/Management .. 15-1 Conventional Memory .. . . . . . . . . . 15-1 Structure .. . . . . . . . . . . . . 15-1 Address Formation .. . . . . . . . . 15-1 Characteristics .. . . . . . . . . . 15-2 Problems.. . . . . . . . . . . . . . 15-4 Single Virtual Memory .. . . . . . . . . 15-7 Structure .. . . . . . . . . . . . . 15-7 Address Formation .. . . . . . . . . 15-7 Characteristics .. . . . . . . . . . 15-7 Solved Problems .. . . . . . . . . . 15-9 Problems.. . . . . . . . . . . . . . 15-11 Multiple Virtual Memories .. . . . . . . 15-12 Structure .. . . . . . . . . . . . . 15-12 Address Formation .. . . . . . . . . 15-11 Characteristics .. . . . . . . . . . 15-13 Solved Problems .. . . . . . . . . . 15-14 Problems.. . . . . . . . . . . . . . 15-15 Multics Virtual Memory.. . . . . . . . . 15-16 Structure .. . . . . . . . . . . . . 15-16 Address Formation .. . . . . . . . . 15-16 Characteristics .. . . . . . . . . . 15-17 Solved Problems .. . . . . . . . . . 15-18 Problems.. . . . . . . . . . . . . . 15-20 vi MDD-003 Overview of the Multics TCB MDD-003 TOPIC I Multics Design Philosophy Page Major Design Goals. . . . . . . . . . . . . . 1-1 Virtual Memory Organization . . . . . . . . . 1-3 Selective, Controlled Sharing . . . . . . . . 1-5 Security. . . . . . . . . . . . . . . . . . . 1-6 Open-Ended, Modular System. . . . . . . . . . 1-10 Decentralized Administration. . . . . . . . . 1-11 Flexible User Interfaces. . . . . . . . . . . 1-13 Continuous Operation. . . . . . . . . . . . . 1-14 Reliable File System. . . . . . . . . . . . . 1-15 Remote Access . . . . . . . . . . . . . . . . 1-16 Efficient Service to Large or Small Users . . 1-17 1-i MDD-003 . _M_A_J_O_R__D_E_S_I_G_N__G_O_A_L_S ox _M_U_L_T_IPLEXED _INFORMATION AND _COMPUTING _SERVICE (MULTICS) ox MULTICS WAS ONE OF THE FIRST OPERATING SYSTEMS TO BE THOROUGHLY DESIGNED FROM THE TOP DOWN. THE DEVELOPERS: [] STARTED WITH A SET OF GOALS [] CREATED A SYSTEM WHICH WOULD SATISFY THESE GOALS [] DEVELOPED GENERAL SOLUTIONS INSTEAD OF SPECIFIC SOLUTIONS (MAKING THE PRODUCT EXTENDABLE) [] PRODUCED A VIABLE AND MARKETABLE PRODUCT Not To Be Reproduced 1-1 MDD-003 _M_A_J_O_R__D_E_S_I_G_N__G_O_A_L_S ox THESE GOALS WERE CAREFULLY CHOSEN TO CHARACTERIZE A 'UTILITY-GRADE' COMPUTER SYSTEM, AND ARE OUTLINED BELOW: [] VIRTUAL MEMORY ORGANIZATION [] SELECTIVE, CONTROLLED SHARING [] SECURITY [] OPEN-ENDED, MODULAR SYSTEM [] DECENTRALIZED ADMINISTRATION [] FLEXIBLE USER INTERFACES, END-USER ORIENTATION [] CONTINUOUS OPERATION [] RELIABLE FILE SYSTEM [] REMOTE ACCESS [] EFFICIENT SERVICE TO LARGE AND SMALL USER Not To Be Reproduced 1-2 MDD-003 _V_I_R_T_U_A_L__M_E_M_O_R_Y__O_R_G_A_N_I_Z_A_T_I_O_N ox MOTIVATION [] INFORMATION STORED ON-LINE IN LARGE INFORMATION UTILITIES OFTEN EXCEEDS THE SIZE OF AVAILABLE MAIN MEMORY [] THIS INFORMATION SHOULD BE DIRECTLY (AND CONTINUOUSLY) ACCESSIBLE BY THE USER COMMUNITY [] THE SIZE OF MAIN MEMORY SHOULD ONLY AFFECT PROCESSING TIME, NOT PROCESSING CAPABILITY [] MAIN MEMORY MANAGEMENT SHOULD BE A TASK FOR THE OPERATING SYSTEM, NOT THE PROGRAMMER ox IMPLEMENTATION [] ALL ON-LINE INFORMATION IS _P_R_O_C_E_S_S_O_R__A_D_D_R_E_S_S_A_B_L_E [] _A_L_L INFORMATION (PROCEDURE AND DATA) IS COMPARTMENTALIZED INTO UNITS CALLED "SEGMENTS" ALLOWING THE ASSOCIATION OF ATTRIBUTES WITH EACH SEGMENT(1) ______________________________________________________________________ (1) THROUGHOUT THIS DOCUMENT, GENERIC REFERENCES TO "SEGMENTS" INCLUDE DIRECTORIES AS WELL, SINCE DIRECTORIES ARE SIMPLY A SPECIAL KIND OF SEGMENT Not To Be Reproduced 1-3 MDD-003 _V_I_R_T_U_A_L__M_E_M_O_R_Y__O_R_G_A_N_I_Z_A_T_I_O_N [] SEGMENTS ARE MADE _P_R_O_C_E_S_S _A_D_D_R_E_S_S_A_B_L_E AS THEY ARE REFERENCED [] ALL SEGMENTS ARE DIVIDED INTO AN INTEGRAL NUMBER OF 1024 WORD PAGES. THESE PAGES ARE BROUGHT INTO MAIN MEMORY IF AND ONLY IF THEY ARE REFERENCED (NEEDED)-AT THE TIME THEY ARE REFERENCED BY ANY PROCESS [] THE MULTICS HARDWARE INTERPRETS ALL ADDRESSES AS OFFSETS WITHIN A SPECIFIED SEGMENT (SEGNO|OFFSET) [] THE HARDWARE MAKES NO DISTINCTION BETWEEN PROCEDURE AND DATA SEGMENTS. BOTH ARE PAGED IN THE SAME MANNER, BOTH ARE ADDRESSED IN THE SAME MANNER [] ALL COMPILERS PRODUCE LOAD MODULES - _N_O MODIFICATION IS REQUIRED TO EXECUTE PROCEDURE CODE Not To Be Reproduced 1-4 MDD-003 _S_E_L_E_C_T_I_V_E_,__C_O_N_T_R_O_L_L_E_D__S_H_A_R_I_N_G ox MOTIVATION [] USERS SHOULD BE ABLE TO USE COMMON PROCEDURE AND DATA SEGMENTS DIRECTLY (NOT COPIES) [] USERS SHOULD BE ABLE TO SHARE PRIVATE CODE IN A SELECTIVE MANNER ox IMPLEMENTATION [] PURE, REENTRANT CODE IS ALWAYS GENERATED BY THE COMPILERS (ALLOWING SHARING OF PROCEDURE CODE IN A MULTI-PROCESS ENVIRONMENT) [] EVERYTHING THE USER TOUCHES (EXECUTE OR REFERENCE) WILL BE A SEGMENT HAVING ITS OWN ATTRIBUTES [] THE ACCESS ATTRIBUTES OF EACH SEGMENT ARE ESTABLISHED BY THE OWNER OF THAT SEGMENT Not To Be Reproduced 1-5 MDD-003 _S_E_C_U_R_I_T_Y ox MOTIVATION [] IN AN ENVIRONMENT OF SEVERAL COEXISTING PROCESSES, USERS MUST BE PROTECTED FROM ACCIDENTALLY OR INTENTIONALLY INTERFERING WITH EACH OTHER [] THE SUPERVISOR MUST BE PROTECTED FROM DAMAGE BY USERS [] CHANGES IN ACCESS TO INFORMATION MUST BE IMMEDIATELY EFFECTIVE [] DISCLOSURE OF INFORMATION SHOULD BE ALLOWED IN A SELECTIVE AND CONTROLLED MANNER (VERSUS ALL-OR-NONE APPROACH) [] UNWARRANTED DENIAL OF ACCESS TO INFORMATION MUST BE PROHIBITED ox IMPLEMENTATION [] PER-SEGMENT ACCESS CONTROL LIST (ACL) - SPECIFYING BY WHOM AND HOW THE SEGMENT MAY BE ACCESSED [] RING PROTECTION MECHANISM - ISOLATES SEGMENTS AND PROCESSES [] ACCESS ISOLATION MECHANISM (AIM) - ISOLATES SEGMENTS ACCORDING TO CATEGORIES AND SECURITY LEVELS Not To Be Reproduced 1-6 MDD-003 _S_E_C_U_R_I_T_Y [] PASSWORDS AND AUDIT TRAILS Not To Be Reproduced 1-7 MDD-003 _S_E_C_U_R_I_T_Y ================================== INSERT Access Control DIAGRAM HERE ================================== Not To Be Reproduced 1-8 MDD-003 _O_P_E_N_-_E_N_D_E_D_,__M_O_D_U_L_A_R__S_Y_S_T_E_M ox MOTIVATION [] SOFTWARE SHOULD BE EASY TO MODIFY AND EXTEND [] THE OPERATING SYSTEM SHOULD BE MODULAR, AND THE MODULES SHOULD BE COMPREHENSIBLE ox IMPLEMENTATION [] MODULAR DESIGN OF OPERATING SYSTEM AND USER PROGRAMS (COMPILERS, PROGRAMMING ENVIRONMENT ENCOURAGE MODULAR DESIGN) [] UNIFORM PROGRAMMING CONVENTIONS ARE FOLLOWED THROUGHOUT MOST SYSTEM CODE [] MORE THAN 92% OF THE OPERATING SYSTEM OBJECT CODE ORIGINATED FROM PL/I SOURCE [] DYNAMIC LINKING (ELIMINATES RE-COMPILING, RE-EDITING WHEN UN-BOUND MODULES ARE REPLACED) [] ON-LINE MODIFICATION, TESTING AND INSTALLATION OF SYSTEM MODULES (MULTICS INSTALLATION FACILITY - MIS) [] PATCH-FREE SYSTEM Not To Be Reproduced 1-9 MDD-003 _O_P_E_N_-_E_N_D_E_D_,__M_O_D_U_L_A_R__S_Y_S_T_E_M [] LIBRARY MANAGEMENT TOOLS AND LIBRARY CONVENTIONS Not To Be Reproduced 1-10 MDD-003 _D_E_C_E_N_T_R_A_L_I_Z_E_D__A_D_M_I_N_I_S_T_R_A_T_I_O_N ox MOTIVATION [] SYSTEM RESOURCES MUST BE EFFECTIVELY ADMINISTERED [] RESOURCE ALLOCATION, ACCOUNTING, REGISTRATION, BILLING, ETC, IS TOO MUCH FOR SINGLE INDIVIDUAL [] DIFFERENT GROUPS OF USERS HAVE DIFFERENT ADMINISTRATIVE NEEDS ox IMPLEMENTATION [] GROUPING OF USERS, BY FUNCTION OR MANAGEMENT, INTO PROJECTS [] THREE-LEVEL HIERARCHY OF ADMINISTRATION [] SYSTEM ADMINISTRATOR: DISTRIBUTES RESOURCES AND ASSIGNS ATTRIBUTES TO PROJECTS [] PROJECT ADMINISTRATORS: DISTRIBUTES RESOURCES AND ASSIGNS ATTRIBUTES TO USERS [] USERS: HAS FULL CONTROL OVER ALLOCATED RESOURCES, MODIFIED BY ASSIGNED ATTRIBUTES [] THE PROJECT ADMINISTRATOR MAY PASS DOWNWARD ONLY THOSE RESOURCES AND ATTRIBUTES THAT HAVE BEEN GIVEN TO THE PROJECT Not To Be Reproduced 1-11 MDD-003 _D_E_C_E_N_T_R_A_L_I_Z_E_D__A_D_M_I_N_I_S_T_R_A_T_I_O_N =========================== INSERT SAT/PDT DIAGRAM HERE =========================== Not To Be Reproduced 1-12 MDD-003 _F_L_E_X_I_B_L_E__U_S_E_R__I_N_T_E_R_F_A_C_E_S ox MOTIVATION [] THE STANDARD USER ENVIRONMENT SHOULD BE EXTENSIVELY USER-MODIFIABLE [] THE CAPABILITY SHOULD EXIST TO DEVELOP AND IMPOSE CLOSED SUBSYSTEMS WHICH CAN PROVIDE ANY DESIRED ENVIRONMENT ox IMPLEMENTATION [] USER HAS ABILITY TO CHANGE OR REPLACE CONTROL PROGRAMS IN THE USER'S RING [] PROJECT ADMINISTRATOR CAN IMPOSE A CLOSED SUBSYSTEM ENVIRONMENT OR A DIFFERENT process_overseer ON USERS [] start_up.ec, ABBREV PROCESSOR, general_ready, ready_off, add_search_rules, CONDITION HANDLING, ETC. [] OTHER TOOLS PROVIDE SIMULATION, ENCAPSULATION CAPABILITY (enter_lss, project_start_up_) [] STANDARD INTERFACE FOR INTERACTIVE SUBSYSTEMS (ssu_) ENCOURAGES UNIFORM, FAMILIAR BEHAVIOUR OF USER SUBSYSTEMS. Not To Be Reproduced 1-13 MDD-003 _C_O_N_T_I_N_U_O_U_S__O_P_E_R_A_T_I_O_N ox MOTIVATION [] UTILITY CONCEPT: SYSTEM SHOULD BE AVAILABLE ON DEMAND AT ALL TIMES ox IMPLEMENTATION [] ON-LINE SOFTWARE INSTALLATION [] ON-LINE MAINTENANCE: MOVE MORE AND MORE BOS CAPABILITY INTO MULTICS (EG: RE-BOOT FNP FROM MULTICS) [] ON-LINE FILE BACKUP AND RECOVERY [] ON-LINE ACCOUNTING AND BILLING [] DYNAMIC RECONFIGURATION [] DYNAMIC FAILSOFT DECONFIGURATION OF FAILING HARDWARE [] UNATTENDED SERVICE [] AUTOMATIC REBOOT Not To Be Reproduced 1-14 MDD-003 _R_E_L_I_A_B_L_E__F_I_L_E__S_Y_S_T_E_M ox MOTIVATION [] MUST PROVIDE USERS SOME ASSURANCE THAT THEIR ON-LINE INFORMATION IS SAFE [] MUST PROVIDE CHECKPOINT CAPABILITY FOR RECOVERY FROM USER ERROR OR SYSTEM DISASTER ox IMPLEMENTATION [] AUTOMATIC BACKUP/RETRIEVAL FACILITY [] CONSOLIDATED STORAGE SYSTEM DUMPS [] PHYSICAL AND LOGICAL SAVE/RESTORE [] ALL STORAGE SYSTEM RECOVERY PROCEDURES RUN WHILE SYSTEM IS UP [] DAMAGE RECOVERY RUN AUTOMATICALLY FOLLOWING SYSTEM FAILURE Not To Be Reproduced 1-15 MDD-003 _R_E_M_O_T_E__A_C_C_E_S_S ox MOTIVATION [] UTILITY CONCEPT: FULL ACCESS FROM ANY PHONE IN THE WORLD VIA ANY REMOTE DEVICE [] WISH TO PROVIDE _O_N_E "COMMAND LANGUAGE", TO SERVE ALL USERS, WHETHER LOCAL OR REMOTE, INTERACTIVE OR BATCH ox IMPLEMENTATION [] MULTICS COMMUNICATION SYSTEM (MCS) [] _I_N__P_R_I_N_C_I_P_L_E, ANY REMOTE DEVICE/TERMINAL IS CONNECTABLE [] SINGLE COMMAND LANGUAGE [] REMOTE JOB ENTRY (RJE) AND BULK I/O CAPABILITIES [] DIRECT ATTACHMENTS TO PUBLIC DATA NETWORKS VIA X.25 Not To Be Reproduced 1-16 MDD-003 _E_F_F_I_C_I_E_N_T__S_E_R_V_I_C_E__T_O__L_A_R_G_E__O_R__S_M_A_L_L__U_S_E_R_S ox MOTIVATION [] UTILITY CONCEPT: SYSTEM SHOULD BE AVAILABLE FOR, AND CAPABLE OF, ANY SIZE TASK [] RUNNING BOTH LARGE AND SMALL TASKS TOGETHER SHOULD NOT IMPACT THE EFFICIENCY OF EITHER ox IMPLEMENTATION [] DYNAMIC RESOURCE ALLOCATION (DON'T HAVE TO PRE-ALLOCATE OR GUESS-TIMATE RESOURCES REQUIRED) [] SERVICE ON DEMAND [] DYNAMIC SYSTEM TUNING TO ACCOMMODATE CHANGING SYSTEM WORKLOADS Not To Be Reproduced 1-17 MDD-003 _E_F_F_I_C_I_E_N_T__S_E_R_V_I_C_E__T_O__L_A_R_G_E__O_R__S_M_A_L_L__U_S_E_R_S TOPIC II Overview of the Operating System Page Structure of the Operating System . . . . . . 2-1 What is the Multics Supervisor. . . . . . . . 2-3 The Major Supervisor Subsystems . . . . . . . 2-5 Name Space/Address Space Management . . . . . 2-9 Directory Control . . . . . . . . . . . . . . 2-13 Volume Management . . . . . . . . . . . . . . 2-15 Segment Control . . . . . . . . . . . . . . . 2-19 Page Control. . . . . . . . . . . . . . . . . 2-21 Traffic Control . . . . . . . . . . . . . . . 2-27 Fault and Interrupt Handling. . . . . . . . . 2-28 System Initialization . . . . . . . . . . . . 2-31 File System Salvagers . . . . . . . . . . . . 2-34 Metering & Tuning . . . . . . . . . . . . . . 2-37 Initializer.SysDaemon . . . . . . . . . . . . 2-39 2-i MDD-003 _S_T_R_U_C_T_U_R_E__O_F__T_H_E__O_P_E_R_A_T_I_N_G__S_Y_S_T_E_M ox THE MULTICS OPERATING SYSTEM IS A HIGHLY STRUCTURED COLLECTION OF SOME 5050 MODULES SUMMING TO MORE THAN SIX MILLION WORDS OF OBJECT CODE [] MORE THAN 92% OF THIS OBJECT CODE ORIGINATED FROM PL/I SOURCE (1,930,000 LINES) [] THE REMAINDER IS WRITTEN IN MULTICS ASSEMBLER LANGUAGE, ALM (310,000 LINES) ox THE MULTICS OPERATING SYSTEM CONSISTS OF THE FOLLOWING MAJOR COMPONENTS: [] THE SUPERVISOR (THE PRINCIPAL TARGET OF THIS COURSE) [] FREQUENTLY CALLED "HARDCORE" - BUT DOES NOT NECESSARILY IMPLY WIRED IN CORE. IF MULTICS WAS NOT A VIRTUAL SYSTEM, THEN THE TERM "HARDCORE" WOULD PROPERLY DEFINE THE SUPERVISOR [] CONSIST OF MORE THAN 750 SEGMENTS AND USES MORE THAN 380 INCLUDE FILES [] USER COMMANDS AND ACTIVE FUNCTIONS (600) [] DESCRIBED IN THE MPM MANUAL "Multics Commands and Active Functions" (AG92) Not To Be Reproduced 2-1 MDD-003 _S_T_R_U_C_T_U_R_E__O_F__T_H_E__O_P_E_R_A_T_I_N_G__S_Y_S_T_E_M [] SUBROUTINES (550) [] DESCRIBED IN THE MPM MANUALS "Multics Subroutines" (AG93) AND "Subsystems Writer's Guide" (OFTEN ABBREVIATED AS "SWG") (AK92) [] TOOLS (220) [] DESCRIBED IN THE MPM MANUAL "Multics Commands and Active Functions" (AG92) [] ADMINISTRATIVE ROUTINES (200) [] DESCRIBED IN THE MAM MANUALS "System Administrator" (AK50), "Registration & Accounting Administrator" (AS68), "Project Administrator" (AK51) [] OPERATOR COMMANDS (150) [] DESCRIBED IN THE MANUAL "Operator's Handbook" (AM81) Not To Be Reproduced 2-2 MDD-003 _W_H_A_T__I_S__T_H_E__M_U_L_T_I_C_S__S_U_P_E_R_V_I_S_O_R ox WHAT IS THE MULTICS SUPERVISOR? [] A COLLECTION OF MANY LOGICAL SUBSYSTEMS WHICH IMPLEMENT THE FUNCTIONS OF MULTICS [] THE PRIMARY PURPOSE OF MULTICS IS TO RUN PROGRAMS, WHICH ACCESS DATA, AND THUS THE MAJOR PURPOSE OF THE MULTICS SUPERVISOR IS TO MAKE THAT DATA ACCESSIBLE [] THESE SUBSYSTEMS FALL INTO FOUR MAJOR GROUPS: [] THE FILE SYSTEM [] SUPPORT SERVICES FOR THE FILE SYSTEM [] MISCELLANEOUS SUPERVISOR SERVICES [] SUBSYSTEMS RELATED TO, BUT NOT STRICTLY PART OF THE SUPERVISOR [] THESE DIVISIONS ARE SOMEWHAT ARTIFICIAL, BECAUSE THE SUBSYSTEMS ARE ALL INTIMATELY RELATED TO EACH OTHER. THE DIVISIONS REPRESENT A PARTICULAR VIEWPOINT OF SYSTEM FUNCTION. [] A MULTICS SUBSYSTEM IS A SET OF PROGRAMS PERFORMING A SPECIFIC SERVICE FOR THE USER COMMUNITY - AND FOR THE OPERATING SYSTEM ITSELF [] TOGETHER, ALL THESE SUBSYSTEMS IMPLEMENT THE FUNCTIONS DESCRIBED Not To Be Reproduced 2-3 MDD-003 _W_H_A_T__I_S__T_H_E__M_U_L_T_I_C_S__S_U_P_E_R_V_I_S_O_R IN THE MPM SUBROUTINES AND SWG MANUALS, (ESSENTIALLY hcs_ AND THE VIRTUALS MEMORY). Not To Be Reproduced 2-4 MDD-003 _T_H_E__M_A_J_O_R__S_U_P_E_R_V_I_S_O_R__S_U_B_S_Y_S_T_E_M_S ox MAJOR MULTICS SUPERVISOR SUBSYSTEMS: FOUR GROUPS OF ABOUT FOUR SUBSYSTEMS EACH [] THE FILE SYSTEM - THOSE SUBSYSTEMS WHICH ARE CONCERNED WITH STORING DATA, MANAGING DATA, AND MAKING IT AVAILABLE TO USERS. FIVE MAJOR COMPONENTS: [] NAME SPACE / ADDRESS SPACE CONTROL [] DIRECTORY CONTROL [] VOLUME MANAGEMENT [] SEGMENT CONTROL [] PAGE CONTROL [] SERVICES TO SUPPORT THE FILE SYSTEM, WHICH MULTIPLEX ITS FACILITIES BETWEEN DIFFERENT USERS, AND ENSURE ITS RELIABILITY. FOUR MAJOR COMPONENTS: [] TRAFFIC CONTROL [] FAULT AND INTERRUPT HANDLING [] SYSTEM INITIALIZATION [] THE FILE SYSTEM SALVAGERS Not To Be Reproduced 2-5 MDD-003 _T_H_E__M_A_J_O_R__S_U_P_E_R_V_I_S_O_R__S_U_B_S_Y_S_T_E_M_S [] MISCELLANEOUS SUPERVISOR SERVICES - THESE ARE THINGS DONE IN THE SUPERVISOR FOR REASONS OF ACCESS CONTROL AND SHARING, BUT NOT DIRECTLY RELATED TO THE FILE SYSTEM [] BECAUSE THEY ARE NOT DIRECTLY RELATED, THEY WILL NOT BE COVERED IN ANY DETAIL [] MULTICS COMMUNICATIONS SYSTEM [] RESOURCE CONTROL [] USER DEVICE I/O - ioi_ [] LOW LEVEL SUPERVISOR I/O [] RECONFIGURATION [] SYSTEM ERROR HANDLING (syserr / verify_lock) [] RELATED SUBSYSTEMS - THESE ARE NOT ACTUALLY PART OF THE SUPERVISOR, BUT ARE CLOSELY RELATED [] METERING AND TUNING [] THE Initializer.SysDaemon ox THE MULTICS SUPERVISOR IS DESIGNED AROUND THE "LAYERED MACHINE" CONCEPT Not To Be Reproduced 2-6 MDD-003 _T_H_E__M_A_J_O_R__S_U_P_E_R_V_I_S_O_R__S_U_B_S_Y_S_T_E_M_S [] CONSTRUCT A SIMPLE SET OF OPERATIONS CALLED A "KERNEL" WHICH IMPLEMENTS THE MOST FUNDAMENTAL (PRIMITIVE) OPERATIONS REQUIRED [] CONSTRUCT A SLIGHTLY MORE SOPHISTICATED SET OF OPERATIONS WHICH ASSUMES AND RELIES ON THE CORRECT FUNCTIONING OF THE KERNEL - ANOTHER "LAYER" [] CONSTRUCT A MORE SOPHISTICATED LAYER WHICH ASSUMES AND RELIES ON THE CORRECT FUNCTIONING OF THE PREVIOUS MACHINES [] ETC ox THE "LAYERS" OF THE MULTICS SUPERVISOR PARTIALLY MAP INTO THE ABOVE SUBSYSTEMS ox THE FOLLOWING DIAGRAM REPRESENTS THIS MAPPING: Not To Be Reproduced 2-7 MDD-003 _T_H_E__M_A_J_O_R__S_U_P_E_R_V_I_S_O_R__S_U_B_S_Y_S_T_E_M_S ====================================== INSERT Multics Supervisor DIAGRAM HERE ====================================== Not To Be Reproduced 2-8 MDD-003 _N_A_M_E__S_P_A_C_E_/_A_D_D_R_E_S_S__S_P_A_C_E__M_A_N_A_G_E_M_E_N_T ox FUNCTION [] IMPLEMENT THE PER PROCESS VIRTUAL MEMORY ox BASIC PHILOSOPHY [] AS A NEWLY LOGGED IN USER ATTEMPTS TO TOUCH VARIOUS SEGMENTS A CONSIDERABLE AMOUNT OF MANAGEMENT INFORMATION MUST BE (TRANSPARENTLY) FOUND AND/OR COMPUTED BEFORE THE USER'S REFERENCE IS ACTUALLY ACCOMPLISHED [] FOR EVERY SEGMENT REFERENCED BY THE USER, THE SUPERVISOR: [] ASSIGNS A SEGMENT NUMBER (FOR REASON OF HARDWARE ADDRESSING), AND [] RECORDS (REMEMBERS) THE MANAGEMENT INFORMATION (FOR REASON OF SOFTWARE EFFICIENCY AND CONTROL) [] SUCH SEGMENTS ARE SAID TO BE "KNOWN TO THE PROCESS" [] THE MANAGEMENT INFORMATION IS MAINTAINED ON A PER PROCESS BASIS Not To Be Reproduced 2-9 MDD-003 _N_A_M_E__S_P_A_C_E_/_A_D_D_R_E_S_S__S_P_A_C_E__M_A_N_A_G_E_M_E_N_T IN THREE COMPLEMENTING AREAS: DSEG, KST, AND RNT [] MANAGES TWO DISTINCT SETS OF INFORMATION: [] ADDRESS SPACE - CORRESPONDENCE BETWEEN SEGMENT NUMBERS AND THE SEGMENTS THEMSELVES [] NAME SPACE - CORRESPONDENCE BETWEEN SEGMENT NUMBERS AND NAMES THE USER REFERS TO THEM BY [] CALLS DIRECTORY CONTROL TO LOCATE SEGMENTS INITIALLY [] NAME SPACE / ADDRESS SPACE MANAGEMENT IS INVOKED BY SUBROUTINE CALLS, AND BY LINKAGE FAULTS (THE "DYNAMIC LINKER") ox PRINCIPAL USER INTERFACES [] COMMAND LEVEL [] initiate, terminate, terminate_segno, terminate_ref_name, terminate_single_ref_name, list_ref_name [] THE COMMAND PROCESSOR ITSELF - WHICH USES THESE SERVICES TO LOCATE COMMANDS [] SUBROUTINE LEVEL [] hcs_$initiate, hcs_$initiate_count_, hcs_$terminate_file, hcs_$terminate_seg, hcs_$terminate_name, hcs_$terminate_noname, term_ Not To Be Reproduced 2-10 MDD-003 _N_A_M_E__S_P_A_C_E_/_A_D_D_R_E_S_S__S_P_A_C_E__M_A_N_A_G_E_M_E_N_T ox MAJOR DATA BASES [] DESCRIPTOR SEGMENT (DSEG) - ONE PER PROCESS [] SEGMENT DESCRIPTOR WORD (SDW) - ONE PER KNOWN SEGMENT [] DEFINES THE USER'S ADDRESS SPACE TO THE HARDWARE [] KNOWN SEGMENT TABLE (KST) - ONE PER PROCESS [] KNOWN SEGMENT TABLE ENTRY (KSTE) - ONE PER KNOWN SEGMENT (EXCEPT SUPERVISOR SEGMENTS) [] DEFINES THE USER'S ADDRESS SPACE TO THE SUPERVISOR AND THE USER [] EACH KSTE ASSOCIATES A USER'S SEGMENT NUMBER WITH THE SEGMENT CONTROL ATTRIBUTES OF THAT SEGMENT [] THE SEARCH FOR AN AVAILABLE KSTE DETERMINES A SEGMENT'S NUMBER [] REFERENCE NAME TABLE (RNT) - ONE PER EACH RING IN EACH PROCESS [] NOT A SEGMENT - KEPT AS A REGION ALLOCATED IN THE "LINKAGE AREA" FOR EACH RING [] REFERENCE NAME TABLE ENTRY (RNTE) - ONE PER REFERENCE NAME Not To Be Reproduced 2-11 MDD-003 _N_A_M_E__S_P_A_C_E_/_A_D_D_R_E_S_S__S_P_A_C_E__M_A_N_A_G_E_M_E_N_T [] USED BY THE DYNAMIC LINKER TO IMPLEMENT THE "initiated_segments" SEARCH RULE [] DEFINES THE USER'S NAME SPACE TO THE USER [] NAME SPACE MAY BE DIFFERENT IN DIFFERENT RINGS OF THE SAME PROCESS Not To Be Reproduced 2-12 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L ox FUNCTION [] DIRECTORY CONTROL IS A SET OF HARDCORE MODULES RESPONSIBLE FOR THE MAINTENANCE OF THE MULTICS DIRECTORY STRUCTURE -- IE: THE HIERARCHY [] ITS TASKS INCLUDE CREATING, MANIPULATING AND INTERPRETING THE CONTENTS OF DIRECTORY SEGMENTS, TO INCLUDE: [] ACCESS CONTROL LISTS (ACL'S), NAMES, AND VTOCE POINTERS OF ENTRIES DESCRIBED THEREIN [] ONLY DIRECTORY CONTROL IS ALLOWED TO ALTER THE CONTENTS OF DIRECTORY SEGMENTS [] DIRECTORY CONTROL IMPLICITLY RELIES UPON THE SERVICES OF OTHER SUBSYSTEMS SUCH AS SEGMENT CONTROL AND PAGE CONTROL, AND ALSO INVOKES THEM DIRECTLY BY SUBROUTINE CALL [] DIRECTORIES ARE SIMPLY SEGMENTS TO THESE SUBSYSTEMS [] DIRECTORY CONTROL IS INVOKED ONLY BY SUBROUTINE CALLS ox PRINCIPAL USER INTERFACES Not To Be Reproduced 2-13 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L [] COMMAND LEVEL [] create, create_dir, link, set_acl, delete_acl, status, list, add_name, rename [] SUBROUTINE LEVEL [] hcs_$append_branch, hcs_$add_acl_entries, hcs_$append_link, hcs_$delete_acl_entries, hcs_$status_, hcs_$chname_file ox MAJOR DATA BASES [] DIRECTORY SEGMENTS [] CONTAIN THE ATTRIBUTES AND OTHER INFORMATION ABOUT THEIR SEGMENTS (NEEDED TO FIND SEGMENTS, RETURN STATUS INFORMATION, AND BUILD VTOCE'S AT SEGMENT CREATION) [] THE DIRLOCKT_SEG [] SEGMENT WHERE DIRECTORY LOCKING IS MANAGED Not To Be Reproduced 2-14 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T ox FUNCTION [] VOLUME MANAGEMENT IS RESPONSIBLE FOR THE MANAGEMENT OF PHYSICAL AND LOGICAL VOLUMES [] ITS TASKS INCLUDE: [] ACCEPTANCE AND DEMOUNTING OF PHYSICAL VOLUMES [] MAINTAINING THE ASSOCIATION BETWEEN PHYSICAL VOLUMES, LOGICAL VOLUMES, AND DISK DRIVES [] ENSURING THE INTEGRITY OF VOLUME CONTENTS [] MAKING VOLUME CONTENTS ACCESSABLE TO PAGE CONTROL (PAGES) AND SEGMENT CONTROL (VTOC ENTRIES) [] Not To Be Reproduced 2-15 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T VOLUME MANAGEMENT IS INVOKED ONLY BY SUBROUTINE CALLS ox MAJOR DATA BASES [] PHYSICAL VOLUME TABLE (PVT) - ONE PER SYSTEM [] PHYSICAL VOLUME TABLE ENTRY (PVTE) - ONE PER DISK DRIVE KNOWN TO THE SYSTEM [] EACH PVTE IDENTIFIES A DRIVE'S DEVICE NUMBER, SUBSYSTEM NAME, DEVICE TYPE, AND INFORMATION ABOUT THE PHYSICAL VOLUME CURRENTLY MOUNTED [] USED TO MAP REFERENCES TO PAGES OF SEGMENTS INTO AN I/O REQUEST TO THE CORRECT DISK DRIVE [] LOGICAL VOLUME TABLE (LVT) - ONE PER SYSTEM [] LOGICAL VOLUME TABLE ENTRY (LVTE) - ONE PER MOUNTED LOGICAL VOLUME [] EACH LVTE CONTAINS THE LOGICAL VOLUME ID, POINTERS TO MEMBER PVTE'S, AIM CLASS LIMITS, ETC. [] USED TO DETERMINE A USER'S ACCESS TO A LOGICAL VOLUME (PRIVATE OR PUBLIC) AND TO LOCATE MEMBER PHYSICAL VOLUMES [] VOLUME HEADER - ONE PER PACK [] VOLUME LABEL (REGISTRATION AND ACCEPTANCE INFORMATION) Not To Be Reproduced 2-16 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T [] VOLUME MAP (OCCUPIED/VACANT INFORMATION FOR VOLUME CONTENTS) [] RECORD STOCKS - ONE PER MOUNTED VOLUME [] ONLINE CACHE OF INFORMATION ABOUT USED / UNUSED RECORDS ON THE VOLUME [] THIS INFORMATION IS DERIVED FROM THE VOLUME MAP, BUT KEPT ONLINE TO AVOID THE NECESSITY OF REFERRING TO THE VOLUME MAP ON DISK EVERY TIME A RECORD IS ALLOCATED OR FREED [] WHEN THE CACHE BECOMES COMPLETELY EMPTY OR COMPLETELY FULL, IT MUST BE UPDATED FROM/TO DISK - A PROTOCOL ENSURES THAT THE COPY ON DISK IS ALWAYS CONSISTENT [] PROVIDED BY VOLUME MANAGEMENT, BUT USED BY PAGE CONTROL [] VTOCE STOCKS - ONE PER VOLUME [] SIMILAR TO RECORD STOCKS, BUT MAINTAINS INFORMATION ABOUT USED / UNUSED VTOC ENTRIES ON THE VOLUME [] PROVIDED BY VOLUME MANAGEMENT, BUT USED BY SEGMENT CONTROL [] PHYSICAL VOLUME HOLD TABLE (PVHT) - ONE PER SYSTEM [] RECORDS THE COMMENCEMENT OF COMPOUND I/O OPERATIONS UPON A PHYSICAL VOLUME [] THIS INFORMATION PREVENTS A VOLUME FROM BEING DEMOUNTED WHILE SUCH AN OPERATION IS IN PROGRESS Not To Be Reproduced 2-17 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L ox FUNCTION [] SEGMENT CONTROL IS RESPONSIBLE FOR THE MANAGEMENT OF _L_O_G_I_C_A_L _M_E_M_O_R_Y [] ITS TASKS INCLUDE: [] MAINTAINING THE DISK RESIDENT MAPS OF SEGMENTS (IE: THEIR VTOCE'S) [] SEGMENT CREATION, TRUNCATION AND DELETION [] SEGMENT ACTIVATION AND DEACTIVATION (ASTE MULTIPLEXING) [] SEGMENT CONTROL CAN BE INVOKED EITHER BY SUBROUTINE CALLS OR BY SEGMENT FAULTS ox BASIC PHILOSOPHY OF ACTIVATION/DEACTIVATION [] OF ALL SEGMENTS RESIDENT WITHIN THE SYSTEM'S MOUNTED PHYSICAL VOLUMES, ONLY A SMALL SUBSET WILL REQUIRE ACCESSING AT ANY ONE TIME. SUCH SEGMENTS WILL BE CALLED "ACTIVE SEGMENTS" [] A PART OF MAIN MEMORY, CALLED THE "ACTIVE SEGMENT TABLE" (AST), WILL BE RESERVED TO HOLD MANAGEMENT INFORMATION FOR THESE ACTIVE SEGMENTS (IDENTITY, PVT INDEX, LOCATION OF PAGES, ETC.) Not To Be Reproduced 2-18 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L [] AS SEGMENTS FALL INTO DISUSE, THEIR "MANAGEMENT INFORMATION" IN THE AST WILL BE REPLACED WITH INFORMATION OF OTHER SEGMENTS REQUIRING ACTIVATION ox USER INTERFACE [] COMMAND LEVEL [] create, delete, truncate, etc. [] SUBROUTINE LEVEL [] hcs_$append_branch, hcs_$append_branchx, hcs_$delentry_seg, hcs_$delentry_file, hcs_$truncate_seg, hcs_$truncate_file, hcs_$force_write, etc ox MAJOR DATA BASES [] SYSTEM SEGMENT TABLE (SST) - ONE PER SYSTEM, SHARED WITH PAGE CONTROL. ONE MAJOR COMPONENT IS "OWNED" BY SEGMENT CONTROL: [] ACTIVE SEGMENT TABLE (AST) - ONE PER SYSTEM [] THE AST IS A LIST OF ACTIVE (CURRENTLY BEING USED) SEGMENTS [] ACTIVE SEGMENT TABLE ENTRY (ASTE) - ONE PER ACTIVE SEGMENT [] ASTES CONTAIN PHYSICAL VOLUME ID'S (PVID'S) AND VTOC Not To Be Reproduced 2-19 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L INDEX'S (VTOCX'S) OF SEGMENTS. NEEDED BY SEGMENT CONTROL TO FIND THE SEGMENT ON DISK (HARDWARE) [] AST HASH TABLE [] ALLOWS EFFICIENT SEARCHING OF ASTE'S [] LOGICALLY PART OF THE AST, BUT ELSEWHERE FOR HISTORICAL REASONS [] DIRECTORY SEGMENTS [] CONTAIN LOCATIONS AND ATTRIBUTES OF SEGMENTS. LOCATION INFORMATION FROM DIRECTORY SEGMENTS IS PROVIDED TO SEGMENT CONTROL BY DIRECTORY CONTROL [] VOLUME TABLE OF CONTENTS (VTOC) - ONE PER PHYSICAL VOLUME [] VOLUME TABLE OF CONTENTS ENTRY (VTOCE) - ONE PER DISK-RESIDENT SEGMENT [] EACH VTOCE CONTAINS THE SEGMENT'S UNIQUE ID, CURRENT LENGTH, FILE MAP, ETC (NEED TO BUILD ASTE'S AND PT'S) [] VTOCES ARE READ AND WRITTEN ONLY BY SEGMENT CONTROL [] VTOCE STOCKS - FROM VOLUME MANAGEMENT [] USED WHEN CREATING AND DELETING VTOCES FOR SEGMENTS Not To Be Reproduced 2-20 MDD-003 _P_A_G_E__C_O_N_T_R_O_L ox FUNCTION [] PAGE CONTROL IS RESPONSIBLE FOR THE MANAGEMENT OF _P_H_Y_S_I_C_A_L _M_E_M_O_R_Y TO INCLUDE THE MULTIPLEXING OF MAIN MEMORY FRAMES, AND THE MANAGEMENT OF DISK STORAGE [] ITS TASKS INCLUDE: [] TRANSFERRING THE PAGES OF SEGMENTS BETWEEN THE MEMORY DEVICES, AND RECORDING THE LOCATION OF "THE" COPY OF THESE PAGES [] REPORTING THE STATUS AND FILE MAPS OF SEGMENTS TO SEGMENT CONTROL [] PAGE CONTROL IS LARGELY CODED IN MULTICS ASSEMBLER LANGUAGE (ALM) [] PAGE CONTROL CAN BE INVOKED EITHER BY SUBROUTINE CALLS OR BY PAGE FAULTS [] Not To Be Reproduced 2-21 MDD-003 _P_A_G_E__C_O_N_T_R_O_L THERE ARE NO EXPLICIT USER INTERFACES TO PAGE CONTROL ox BASIC PHILOSOPHY [] OF ALL THE SEGMENTS ACTIVE AT A GIVEN TIME, ONLY A SMALL SUBSET OF THEIR TOTAL PAGES WILL BE REQUIRED FOR ACCESSING [] PAGES WILL BE READ INTO MAIN MEMORY AS THEY ARE REQUIRED [] THE READING OF A PAGE INTO MAIN MEMORY WILL (PROBABLY) REQUIRE THE EVICTION OF A PREVIOUSLY REQUIRED PAGE [] THE CHOICE OF A PAGE FOR EVICTION WILL BE BASED ESSENTIALLY UPON A "LEAST RECENTLY USED" CRITERIA [] AN EVICTED PAGE NEED BE WRITTEN BACK TO DISK _O_N_L_Y IF IT WAS MODIFIED DURING ITS RESIDENCY IN MAIN MEMORY ox MAJOR DATA BASES [] PHYSICAL VOLUME TABLE (PVT) - ONE PER SYSTEM. PROVIDED BY VOLUME MANAGEMENT [] PHYSICAL VOLUME TABLE ENTRY (PVTE) - ONE PER DISK DRIVE CONFIGURED [] EACH PVTE CONTAINS: Not To Be Reproduced 2-22 MDD-003 _P_A_G_E__C_O_N_T_R_O_L [] THE DEVICE ID (DISK DRIVE ID) AND THE ID OF THE PHYSICAL VOLUME (DISK PACK) CURRENTLY MOUNTED [] THE NUMBER OF RECORDS LEFT UNALLOCATED ON THE PHYSICAL VOLUME, POINTER TO THE RECORD STOCK, ETC [] RECORD STOCKS - ONE PER MOUNTED PHYSICAL VOLUME, PROVIDED BY VOLUME MANAGEMENT [] CONTAINS AN IN-MEMORY CACHE OF THE IN-USE STATUS OF RECORDS ON THE VOLUME, FROM THE VOLUME MAP, USED WHEN ALLOCATING OR FREEING PAGES [] ACCESSED BY A COMPLEX MECHANISM WHICH USES NORMAL PAGE I/O BUT HAS A PROTOCOL TO ENSURE SYNCHRONIZATION OF DISK CONTENTS AND RECORD STOCK CONTENTS [] SYSTEM SEGMENT TABLE (SST) - ONE PER SYSTEM. SHARED WITH SEGMENT CONTROL. CONTAINS THE FOLLOWING FIVE DATA BASES USED BY PAGE CONTROL: [] SYSTEM SEGMENT TABLE (SST) HEADER - ONE PER SYSTEM [] CONTAINS A LARGE NUMBER OF COUNTERS AND POINTERS VITAL TO THE MAINTENANCE AND METERING OF THE STORAGE SYSTEM [] CONTAINS LOCKWORDS USED TO SYNCHRONIZE PAGE CONTROL AND SEGMENT CONTROL OPERATIONS [] CORE MAP - THE core_map SEGMENT - ONE PER SYSTEM [] CORE MAP ENTRY (CME) - ONE PER FRAME (1024 WORDS) OF CONFIGURED MAIN MEMORY [] EACH CME REPRESENTS A FRAME OF MAIN MEMORY AND IDENTIFIES THE CURRENT OCCUPANT OF THAT FRAME [] Not To Be Reproduced 2-23 MDD-003 _P_A_G_E__C_O_N_T_R_O_L NOT PART OF THE SST SEGMENT ANY MORE, BUT LOGICALLY PART OF THE SST [] ACTIVE SEGMENT TABLE (AST) - ONE PER SYSTEM [] ACTIVE SEGMENT TABLE ENTRY (ASTE) - ONE PER ACTIVE SEGMENT [] LIST OF ACTIVE (CURRENTLY BEING USED) SEGMENTS [] PAGE TABLES (PT) - ONE PER ACTIVE SEGMENT, THE OTHER HALF OF EACH ASTE [] PAGE TABLE WORD (PAGE PTW) - EITHER 4, 16, 64, OR 256 PER PAGE TABLE [] EACH PTW DEFINES THE CURRENT LOCATION OF A PAGE OF THE SEGMENT: DISK, MAIN MEMORY ADDRESS, OR NULL Not To Be Reproduced 2-24 MDD-003 _P_A_G_E__C_O_N_T_R_O_L =============================== INSERT File System DIAGRAM HERE =============================== Not To Be Reproduced 2-25 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L ox FUNCTION [] TRAFFIC CONTROL (OR THE "TRAFFIC CONTROLLER") IS RESPONSIBLE FOR MANAGING THE ASSIGNMENT OF PHYSICAL PROCESSORS TO MULTICS PROCESSES AND IMPLEMENTING THE SYSTEM'S WAIT/NOTIFY AND INTERPROCESS COMMUNICATION PRIMITIVES [] THE FUNCTIONS ASSUMED BY THE TRAFFIC CONTROLLER ARE KNOWN AS MULTIPROGRAMMING, MULTIPROCESSING, SCHEDULING, DISPATCHING, PROCESSOR MANAGEMENT, AND INTERPROCESS COMMUNICATION. [] ITS MAJOR FUNCTION IS ALLOWING PROCESSES TO AWAIT THE COMPLETION OF FILE SYSTEM OPERATIONS, SUCH AS PAGE I/O [] TRAFFIC CONTROL CAN BE INVOKED BY SUBROUTINE CALLS AND INTERRUPTS [] THERE ARE NO IMPORTANT USER SUBROUTINE INTERFACES, BUT THERE ARE PRIVILEGED SUBROUTINE INTERFACES FOR PROCESS CREATION, ADJUSTMENT OF SCHEDULING PARAMETERS, ETC. ox MAJOR DATA BASES [] TC_DATA SEGMENT - ONE PER SYSTEM. CONTAINS THE FOLLOWING FOUR DATA BASES: [] TC_DATA HEADER - ONE PER SYSTEM Not To Be Reproduced 2-26 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L [] CONTAINS VARIOUS METERS, COUNTERS AND POINTERS USED BY THE TRAFFIC CONTROLLER [] ACTIVE PROCESS TABLE (APT) - ONE PER SYSTEM [] ACTIVE PROCESS TABLE ENTRY (APTE) - ONE OCCUPIED PER ACTIVE PROCESS (TOTAL NUMBER IS DETERMINED BY CONFIG DECK) [] EACH APTE CONTAINS VARIOUS ATTRIBUTES OF AN ACTIVE PROCESS INCLUDING THE PROCESS ID, STATE, THE VALUE OF ITS DESCRIPTOR BASE REGISTER (DBR), SCHEDULING PARAMETERS, AND A POINTER TO THE PROCESS'S ITT ENTRIES [] THE APTE CONTAINS ALL INFORMATION THE SUPERVISOR NEEDS TO KNOW ABOUT A PROCESS WHEN THE PROCESS IS NOT RUNNING [] INTERPROCESS TRANSMISSION TABLE (ITT) - ONE PER SYSTEM [] ITT ENTRY - ONE OCCUPIED PER OUTSTANDING IPC WAKEUP [] A QUEUE FOR TEMPORARILY STORING IPC WAKEUP INFORMATION (CHANNEL NAME, RANDOM DATA, PROCESS ID, ETC) [] WORK CLASS TABLE (WCT) - ONE PER SYSTEM [] WORK CLASS TABLE ENTRY (WCTE) - ONE PER WORKCLASS [] EACH WCTE CONTAINS ADMINISTRATOR DEFINED PARAMETERS OF THE WORKCLASS, VARIOUS METERS AND POINTERS Not To Be Reproduced 2-27 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__H_A_N_D_L_I_N_G ox FUNCTION [] RESPONSIBLE FOR HANDLING ALL EXCEPTIONS IN A CPU WHETHER INTERNAL TO THE PROCESSOR (REFERRED TO AS _F_A_U_L_T_S) OR EXTERNAL (REFERRED TO AS _I_N_T_E_R_R_U_P_T_S) [] ESTABLISHES THE SUPERVISOR ENVIRONMENT AT FAULT AND INTERRUPT TIME. SAVES THE MACHINE CONDITIONS AND TRANSFERS TO THE APPROPRIATE HANDLER [] MAJOR COMPONENTS: THE FAULT INTERCEPT MODULE (fim), WIRED-FAULT INTERCEPT MODULE (wired_fim), I/O INTERRUPT HANDLER (io_interrupt), sys_trouble, page_fault ox MAJOR DATA BASES [] INTERRUPT VECTORS - ONE SET PER SYSTEM (WIRED) [] INTERRUPT PAIR (2 INSTRUCTIONS) - ONE PAIR PER DEFINED INTERRUPT TYPE [] LOCATED AT ABSOLUTE ADDRESS 0. A HARDWARE RECOGNIZED DATA BASE [] DESCRIBE WHERE TO SAVE THE CONTEXT, AND WHERE TO TRANSFER TO TO PROCESS THE INTERRUPT (ALWAYS io_interrupt) Not To Be Reproduced 2-28 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__H_A_N_D_L_I_N_G [] FAULT VECTORS - ONE SET PER SYSTEM (WIRED) [] VECTOR PAIR (2 INSTRUCTIONS) - ONE PAIR PER DEFINED FAULT TYPE [] LOCATED AT ABSOLUTE ADDRESS 100 (OCTAL) IMMEDIATELY ABOVE THE INTERRUPT VECTORS. A HARDWARE RECOGNIZED DATA BASE [] DESCRIBE WHERE TO SAVE THE CONTEXT, AND WHERE TO TRANSFER TO TO PROCESS THE FAULT (fim, wired_fim, page_fault) [] _P_R_O_C_E_S_S DATA SEGMENT (PDS) - ONE PER PROCESS (WIRED WHEN ELIGIBLE) [] CONTAINS PROCESS RELEVANT INFO SUCH AS PROCESS ID, USER ID, HOME/WORKING/PROCESS DIRECTORIES, AIM CLASSIFICATION, INITIAL RING, ETC [] CONTAINS ALL INFORMATION ABOUT THE PROCESS NEEDED BY THE SUPERVISOR CODE WHEN THE PROCESS IS RUNNING [] CONTAINS SAVE AREAS FOR CONTEXT INFORMATION ABOUT FAULTS WHICH CAN RESULT IN GIVING UP THE PROCESSOR: PAGE FAULTS, SEGMENT FAULTS, AND ALL FAULTS NOT HANDLED BY THE SUPERVISOR [] _P_R_O_C_E_S_S_O_R DATA SEGMENT (PRDS) - ONE PER CONFIGURED CPU (WIRED) [] SERVES AS RING-ZERO STACK FOR PAGE CONTROL AND TRAFFIC CONTROL [] ALSO CONTAINS SAVE AREAS FOR CONTEXT INFORMATION ABOUT FAULTS WHICH USUALLY DO NOT MEAN GIVING UP THE PROCESSOR: CONNECT FAULTS AND INTERRUPTS. Not To Be Reproduced 2-29 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__H_A_N_D_L_I_N_G [] FIM_TABLE [] A TABLE IN THE FIM PROGRAM WHICH DESCRIBES THE ACTION TO BE TAKEN FOR VARIOUS TYPES OF FAULTS Not To Be Reproduced 2-30 MDD-003 _S_Y_S_T_E_M__I_N_I_T_I_A_L_I_Z_A_T_I_O_N ox FUNCTION [] PREPARE THE SYSTEM TO OPERATE, STARTING FROM A COMPLETELY EMPTY MACHINE [] READS IN SUPERVISOR PROGRAMS FROM SYSTEM TAPE, SNAPS LINKS BETWEEN SUPERVISOR COMPONENTS, VERIFIES AND INITIALIZES HARDWARE CONFIGURATION, SETS UP SYSTEM DATABASES, ACCEPTS STORAGE SYSTEM DISKS AND PREPARES THEM FOR USE BY THE FILE SYSTEM [] MOST PROGRAMS IN SYSTEM INITIALIZATION ARE DELETED AFTER INITIALIZATION IS COMPLETE. [] SUPERVISOR PROGRAMS ARE LOADED IN THREE "COLLECTIONS", EACH OF WHICH DEPENDS ON THE MECHANISMS SET UP BY THE PREVIOUS ONE ox MAJOR DATA BASES [] THESE DATA BASES ARE ALL BUILT DURING THE PROCESS OF INITIALIZATION (EXCEPT FOR THE CONFIG DECK) AND KEPT AFTER INITIALIZATION IS FINISHED [] SEGMENT LOADING TABLE (>sl1>slt) [] CONTAINS AN ENTRY DESCRIBING THE ATTRIBUTES OF EACH SEGMENT IN THE SUPERVISOR Not To Be Reproduced 2-31 MDD-003 _S_Y_S_T_E_M__I_N_I_T_I_A_L_I_Z_A_T_I_O_N [] NAME TABLE (>sl1>name_table) [] CONTAINS A LIST OF NAMES FOR EACH OF THE SEGMENTS IN THE SUPERVISOR [] DEFINITIONS SEGMENT (>sl1>definitions_) [] CONTAINS THE DEFINITIONS SECTIONS FOR ALL THE SEGMENTS IN THE SUPERVISOR, WHICH ARE USED IN ORDER TO SNAP LINKS BETWEEN THE SUPERVISOR MODULES [] CONFIG DECK (>sl1>config_deck) [] CONTAINS A DESCRIPTION OF THE HARDWARE CONFIGURATION AND CERTAIN SOFTWARE PARAMETERS [] PROVIDED TO SYSTEM INITIALIZATION BY BOS ox SHUTDOWN -- TERMINATES THE ACTIVITIES OF THE SYSTEM IN AN ORDERLY FASHION [] TWO TYPES OF SHUTDOWN: [] NORMAL -- REQUESTED BY THE INITIALIZER, RUNS IN THE USUAL SUPERVISOR ENVIRONMENT [] EMERGENCY -- USED AFTER A CRASH, MUST MAKE THE SUPERVISOR ENVIRONMENT OPERABLE BEFORE PROCEEDING Not To Be Reproduced 2-32 MDD-003 _S_Y_S_T_E_M__I_N_I_T_I_A_L_I_Z_A_T_I_O_N [] BOTH TYPES EXIST PRIMARILY TO SHUT DOWN THE FILE SYSTEM -- THAT IS, TO WRITE ALL DATA IN MEMORY INTO ITS PROPER HOME ON DISK [] INCLUDES PAGES OF SEGMENTS, VTOCES, VOLUME AND VTOC MAPS [] SHUTDOWN ESSENTIALLY RUNS THE STEPS OF INITIALIZATION BACKWARDS, BUT WITH A LOT OF SHORTCUTS Not To Be Reproduced 2-33 MDD-003 _F_I_L_E__S_Y_S_T_E_M__S_A_L_V_A_G_E_R_S ox FUNCTION [] ENSURE THE CONSISTENCY OF THE FILE SYSTEM DATABASES AND PERFORM PERIODIC PREVENTIVE MAINTENANCE OPERATIONS [] THERE ARE SEVERAL SALVAGERS, EACH WITH A DIFFERENT FUNCTION [] BECAUSE OF THE COMPLICATED INTERACTIONS THEY HAVE WITH THE REST OF THE FILE SYSTEM, THE SALVAGERS ARE PERHAPS THE MOST COMPLICATED SINGLE PROGRAMS IN THE SUPERVISOR [] SOME SALVAGING IS DONE AUTOMATICALLY, WHEN THE SYSTEM DETECTS AN INCONSISTENCY. OTHER SALVAGE OPERATIONS ARE EXPLICITLY REQUESTED, BY PRIVILEGED USERS. [] EXCEPT FOR SUPERVISOR BUGS, THE ONLY TIME DAMAGE OCCURS THAT REQUIRES SALVAGING TO FIX IS AFTER A CRASH WHERE EMERGENCY SHUTDOWN FAILS ox THE SALVAGERS: [] DIRECTORY SALVAGER [] CORRECTS INCONSISTENCIES IN DIRECTORY SEGMENTS BY REBUILDING THEM Not To Be Reproduced 2-34 MDD-003 _F_I_L_E__S_Y_S_T_E_M__S_A_L_V_A_G_E_R_S [] THIS IS THE ONLY SALVAGER INVOKED AUTOMATICALLY IN USER PROCESSES: ANY ATTEMPT TO LEAVE RING ZERO WITH A DIRECTORY LOCKED FOR WRITING WILL CAUSE IT TO BE SALVAGED [] DIRECTORY SALVAGING ALSO RECLAIMS WASTED SPACE IN THE DIRECTORY, AND IS RUN PERIODICALLY TO COMPACT DIRECTORIES [] QUOTA SALVAGER [] CORRECTS INCONSISTENCIES IN THE QUOTA SYSTEM [] PHYSICAL VOLUME SCAVENGER [] RECONSTRUCTS RECORD AND VTOCE STOCK INFORMATION FROM THE VTOCES ON A VOLUME, THEREBY RECLAIMING ANY RECORDS OR VTOCES WHICH MIGHT HAVE BEEN LOST [] RUNS ENTIRELY ONLINE WHILE THE SYSTEM IS UP FOR USERS (NEW IN MR10.1) [] THIS TYPE OF DAMAGE IS USUALLY BENIGN, SO RUNNING THE SCAVENGER CAN BE DELAYED. [] PHYSICAL VOLUME SALVAGER [] RECONSTRUCTS RECORD AND VTOCE STOCK INFORMATION [] RUNS ONLY DURING INITIALIZATION, AND THEREFORE DELAYS CRASH RECOVERY [] NOW USED ONLY FOR RARE CASES WHERE THERE IS NOT ENOUGH FREE SPACE LEFT FOR THE SCAVENGER TO RUN. IN THESE RARE CASES, IT IS INVOKED AUTOMATICALLY BY SYSTEM INITIALIZATION. Not To Be Reproduced 2-35 MDD-003 _F_I_L_E__S_Y_S_T_E_M__S_A_L_V_A_G_E_R_S [] SWEEP_PV [] DELETES UNUSED VTOC ENTRIES WHICH HAVE NO DIRECTORY ENTRY POINTING TO THEM [] RUNS ENTIRELY IN USER RING, EXCEPT FOR ACTUALLY READING VTOC ENTRIES AND DIRECTORY ENTRIES [] PURELY A HOUSEKEEPING FUNCTION, AND RUN ONLY RARELY. Not To Be Reproduced 2-36 MDD-003 _M_E_T_E_R_I_N_G__&__T_U_N_I_N_G ox WHILE NOT A SUBSYSTEM ITSELF, METERING AND TUNING IS A POLICY AND CAPABILITY COMMON TO ALL OF THE SUPERVISOR'S SUBSYSTEMS ox FUNCTION [] METERING (CONSISTS OF THREE ACTIVITIES) [] ACCUMULATING DATA: THIS IS PERFORMED THROUGHOUT THE SUPERVISOR BY CODE WHICH [] RECORDS THE NUMBER OF TIMES AN EVENT HAPPENS OR A PARTICULAR PIECE OF CODE IS EXECUTED; AND/OR [] RECORDS THE TIME REQUIRED TO PERFORM A TASK [] SUCH DATA IS STORED IN AREAS REFERRED TO AS "METERING CELLS" [] EXTRACTING DATA: THIS IS PERFORMED BY NUMEROUS METERING COMMANDS WHICH (WHEN INVOKED) [] READ AND STORE THE CURRENT VALUES OF RELEVANT METERING CELLS [] REPORTING THE DATA: THIS IS PERFORMED BY THE METER COMMANDS WHICH (WHEN INVOKED) [] COMPARE CURRENT METERING CELL VALUES WITH PREVIOUSLY READ VALUES [] PERFORM THE APPROPRIATE ARITHMETIC COMPUTATIONS UPON THE DATA IN ORDER TO ARRIVE AT THE DESIRED STATISTIC [] ARRANGE THE DATA IN A USEFUL FORMAT (A REPORT OR DIAGRAM) AND PRINT IT Not To Be Reproduced 2-37 MDD-003 _M_E_T_E_R_I_N_G__&__T_U_N_I_N_G [] TUNING [] CHANGING THE SYSTEM'S OPERATING PARAMETERS AND/OR CONFIGURATION BASED UPON THE DATA AND INSIGHTS FROM THE SYSTEM'S METERS ox MAJOR DATA BASES [] SST HEADER, TC_DATA HEADER, ETC. Not To Be Reproduced 2-38 MDD-003 _I_N_I_T_I_A_L_I_Z_E_R_._S_Y_S_D_A_E_M_O_N ox FUNCTION [] THE SYSTEM'S INITIALIZATION, ADMINISTRATIVE AND CONTROL PROCESS (Initializer.SysDaemon.z), RESPONSIBLE FOR: [] INITIALIZING THE OPERATING SYSTEM AT BOOTLOAD, FOLLOWING SUCCESSFUL INITIALIZATION OF THE SUPERVISOR [] ANSWERING SERVICE (login and logout) [] PROCESS CREATION AND DESTRUCTION [] MESSAGE COORDINATOR (DAEMON COORDINATION) [] SYSTEM ADMINISTRATION FUNCTIONS [] SYSTEM ACCOUNTING FUNCTIONS ox MAJOR DATA BASES, ALL KEPT IN >sc1 [] ANSWER_TABLE [] ABSENTEE_USER_TABLE [] DAEMON_USER_TABLE Not To Be Reproduced 2-39 MDD-003 _I_N_I_T_I_A_L_I_Z_E_R_._S_Y_S_D_A_E_M_O_N [] MASTER GROUP TABLE (MGT) [] CHANNEL DEFINITION TABLE (CDT) [] SYSTEM ADMINISTRATION TABLE (SAT) [] PERSON NAME TABLE (PNT) [] PROJECT DEFINITION TABLES (PDT'S) TOPIC III The Multics Environment Page What is a Process . . . . . . . . . . . . . . 3-1 Cooperating Processes . . . . . . . . . . . . 3-4 The PL/I Operators. . . . . . . . . . . . . . 3-7 Interfaces to System Modules. . . . . . . . . 3-9 Deadlock Prevention . . . . . . . . . . . . . 3-10 Types of Locks. . . . . . . . . . . . . . . . 3-16 3-i MDD-003 . _W_H_A_T__I_S__A__P_R_O_C_E_S_S ox A MULTICS PROCESS IS A WELL DEFINED COLLECTION OF SEGMENTS, EACH WITH DEFINED ACCESS, OVER WHICH A SINGLE EXECUTION POINT IS FREE TO ROAM (I.E., FETCH INSTRUCTIONS AND MAKE DATA REFERENCES) ox THE ADDRESS SPACE OF A PROCESS IS THE ABOVE "COLLECTION OF SEGMENTS". SUCH SEGMENTS ARE SAID TO BE KNOWN TO THE PROCESS ox EVERY LOGGED IN USER HAS A PROCESS ox VERY IMPORTANT CONCEPT: THE MULTICS SUPERVISOR RUNS IN THE _U_S_E_R_'_S PROCESS (IE: IN THE USER'S ADDRESS SPACE), BUT IN A DIFFERENT RING ox A PROCESS TAKES ON THE IDENTITY OF THE SOFTWARE IT IS EXECUTING WHERE EVER IT GOES [] WHEN A USER WISHES TO CREATE A SEGMENT, IT IS THE USER'S PROCESS WHICH EXECUTES THE SUPERVISOR CODE hcs_$append, CREATING THE SEGMENT ox A PROCESS CAN BE VIEWED AS A CONTINUAL FLOW OF EXECUTION FLUCTUATING BETWEEN DIFFERENT RINGS: PRIMARILY RING FOUR AND RING ZERO Not To Be Reproduced 3-1 MDD-003 _W_H_A_T__I_S__A__P_R_O_C_E_S_S ============================================= INSERT Process Flow of Execution DIAGRAM HERE ============================================= ox ALL PROCEDURE CODE (WHETHER SUPERVISOR OR USER CODE) MUST HAVE A STACK FRAME CONTAINING ITS ARGUMENTS AND ENVIRONMENT DATA ox FOR REASONS OF SECURITY, MULTICS REQUIRES ONE STACK PER RING OF EXECUTION. WHEN EXECUTING RING "N" PROCEDURES, THERE WILL EXIST A RING "N" STACK CONTAINING STACK FRAMES FOR THESE PROCEDURES Not To Be Reproduced 3-2 MDD-003 _W_H_A_T__I_S__A__P_R_O_C_E_S_S ================================== INSERT Stack per Ring DIAGRAM HERE ================================== Not To Be Reproduced 3-3 MDD-003 _C_O_O_P_E_R_A_T_I_N_G__P_R_O_C_E_S_S_E_S ox ALL ACTIVE PROCESSES (INTERACTIVE, ABSENTEE, AND DAEMONS) APPEAR TO BE AUTONOMOUS AND INDEPENDENT OF ONE ANOTHER ox IN REALITY, ALL PROCESSES ARE CONTINUALLY COOPERATING, COMPETING AND SHARING [] EXAMPLES OF COOPERATION [] VOLUNTARY [] THE SENDING AND ACCEPTING OF MESSAGES AND MAIL [] PREPLANNED BY SYSTEM PROGRAMMERS [] EVERY PROCESS, BEFORE RELINQUISHING A PROCESSOR, CHOOSES THE MOST DESERVING REPLACEMENT AND EXECUTES THE CODE WHICH DISPATCHES THE CHOSEN PROCESS [] EVERY PROCESS, WHEN RUNNING, WILL SERVICE ALL INTERRUPTS FIELDED BY ITS PROCESSOR. THESE INTERRUPTS ARE GENERALLY THE REPLIES TO THE REQUESTS OF _O_T_H_E_R PROCESSES (IE: THE ARRIVAL OF A PAGE REQUESTED SOME TIME EARLIER) [] PREPLANNED BY APPLICATION PROGRAMMERS [] THE MULTICS TRANSACTION PROCESSOR IS COMPOSED OF MANY COOPERATING, INTER-DEPENDENT PROCESSES [] EXAMPLES OF COMPETITION [] ALL PROCESSES COMPETE FOR PROCESSOR TIME AND MAIN MEMORY RESOURCES Not To Be Reproduced 3-4 MDD-003 _C_O_O_P_E_R_A_T_I_N_G__P_R_O_C_E_S_S_E_S [] THIS COMPETITION IS HIGHLY REGULATED IN ORDER FOR ALL PROCESSES TO BE TREATED FAIRLY [] THE COMPETITION IS ALSO SUBJECT TO VERSATILE ADMINISTRATIVE CONTROLS [] EXAMPLES OF SHARING [] BY DESIGN, A SIGNIFICANT PART OF THE ADDRESS SPACE OF ALL PROCESSES IS _I_D_E_N_T_I_C_A_L (THE SUPERVISOR SEGMENTS) [] BY DEFAULT, REFERENCES TO SEGMENT foo BY TWO DIFFERENT PROCESSES WILL RESULT IN REFERENCES TO THE _S_A_M_E SEGMENT (LOGICALLY, PHYSICALLY, ACTUALLY AND ABSOLUTELY) ox THERE IS NO SEPARATE ENTITY IN MULTICS LIKE AN EXECUTIVE DOING THINGS ON BEHALF OF THE USER. THE Initializer.SysDaemon IS _N_O_T THE TIME-SHARE EXECUTIVE OF MULTICS Not To Be Reproduced 3-5 MDD-003 _C_O_O_P_E_R_A_T_I_N_G__P_R_O_C_E_S_S_E_S ========================================= INSERT Cooperating Processes DIAGRAM HERE ========================================= Not To Be Reproduced 3-6 MDD-003 _T_H_E__P_L_/_I__O_P_E_R_A_T_O_R_S ox OPERATORS ARE LANGUAGE DEPENDENT PIECES OF CODE WHICH IMPLEMENT HARDWARE OR OPERATING-SYSTEM DEPENDENT FUNCTIONS SUCH AS CALLING AND SIGNALLING ox CURRENTLY THERE ARE OPERATORS FOR PL/I, COBOL, AND BASIC. ALM AND FORTRAN SHARE THE PL/I OPERATORS ox ALL OPERATORS IN MULTICS ARE PURE, SHARED AND RE-ENTRANT ALM CODE ox OPERATORS COULD BE GENERATED BY THE COMPILERS AND PLACED IN LINE WITH OTHER CODE, HOWEVER, THERE ARE DISADVANTAGES: [] SOME OPERATORS ARE TOO BULKY TO BE INCLUDED WITH EACH USE (SUCH AS COMPLICATED I/O STATEMENTS) [] SOME OPERATORS MIGHT CHANGE IN THE FUTURE (SUCH AS ENTRY AND RETURN SEQUENCES) ox OPERATORS ARE SIMILAR TO QUICK INTERNAL PROCEDURES IMPLEMENTING WHAT IS OFTEN CALLED "LIBRARY FUNCTIONS" IN OTHER OPERATING SYSTEMS Not To Be Reproduced 3-7 MDD-003 _T_H_E__P_L_/_I__O_P_E_R_A_T_O_R_S ox INSTEAD OF PASSING ARGUMENT LIST, ARGUMENTS ARE USUALLY PASSED TO THE OPERATORS IN THE CPU'S REGISTERS ox INSTEAD OF BEING CALLED BY A PROCEDURE CALL, A SINGLE TRANSFER INSTRUCTION IS USED (tsx0 or tsp3) ox THE PL/I OPERATORS IMPLEMENT THE SUPPORT FUNCTIONS FOR THE PL/I ENVIRONMENT ox SINCE A MULTICS PROCESS IS A PL/I ENVIRONMENT, THE PL/I OPERATORS ARE VITAL TO THE MULTICS SUPERVISOR (AND ANY OTHER PROGRAMS WRITTEN IN PL/I) Not To Be Reproduced 3-8 MDD-003 _I_N_T_E_R_F_A_C_E_S__T_O__S_Y_S_T_E_M__M_O_D_U_L_E_S ox UNLIKE OTHER SUPERVISORS, THE MULTICS SUPERVISOR IS _N_O_T SEQUENTIAL - THAT IS, THE CONCEPT OF "JOB FLOW" DOES NOT REALLY APPLY [] INSTEAD, THE SUBSYSTEMS PERFORM ASYNCHRONOUSLY, BEING 'INVOKED' BY THOSE PROCESSES WHO REQUIRE THEIR SERVICES [] THESE SUBSYSTEMS ARE INVOKED BY THE USER'S PROCESS IN ONE OF THREE WAYS: [] EXPLICITLY - VIA A SUBROUTINE CALL OR A COMMAND [] IMPLICITLY - VIA A FAULT [] IMPLICITLY - VIA AN INTERRUPT ============================ INSERT Triangle DIAGRAM HERE ============================ Not To Be Reproduced 3-9 MDD-003 _D_E_A_D_L_O_C_K__P_R_E_V_E_N_T_I_O_N ox WHAT IS DEADLOCK? [] DEADLOCK CAN OCCUR IN ANY MULTI-PROGRAMMING ENVIRONMENT WHEN TWO OR MORE PROCESSES COMPETE RANDOMLY FOR SERIALLY REUSABLE RESOURCES [] THE CLASSIC EXAMPLE OF DEADLOCK IS THE "DEADLY EMBRACE" ================================== INSERT Deadly Embrace DIAGRAM HERE ================================== Not To Be Reproduced 3-10 MDD-003 _D_E_A_D_L_O_C_K__P_R_E_V_E_N_T_I_O_N ox DEADLOCK SOLUTIONS [] DETECTION AND UNLOCKING [] SOME SYSTEMS EMPLOY SCHEMES WHICH DETECT THE OCCURRENCE OF DEADLOCK AND "UNTANGLE" THE INVOLVED PROCESSES [] DETECTION SCHEMES ARE USUALLY DIFFICULT TO IMPLEMENT AND EXPENSIVE IN TERMS OF OVERHEAD [] THE ACT OF UNTANGLING THE INVOLVED PROCESSES USUALLY RESULTS IN AT LEAST ONE OF THEM LOSING RESOURCES, PRIORITY, OR EVEN ITS LIFE [] PREVENTION [] MOST SYSTEMS ADOPT SOME FORM OF PREVENTION INSTEAD OF DETECTION [] PREVENTION SCHEMES NORMALLY TAKE ONE OF TWO FORMS: [] CHECKING: WHEREBY REQUESTS FOR RESOURCES ARE SCREENED FOR DEADLOCK POTENTIAL PRIOR TO ACCEPTANCE [] IMPOSED POLICY: WHEREBY REQUESTS FOR MORE THAN ONE RESOURCE _M_U_S_T BE MADE: [] TOGETHER AS ONE TOTAL REQUEST BEFORE THE "JOB" OR "JOB-STEP" COMMENCES (ALL OR NOTHING); OR [] SERIALLY, IN A FIXED, PRE-DEFINED ORDER Not To Be Reproduced 3-11 MDD-003 _D_E_A_D_L_O_C_K__P_R_E_V_E_N_T_I_O_N ox MULTICS, IN GENERAL, ADOPTS THE FOLLOWING DEADLOCK PREVENTION SCHEME: [] USER ASSIGNABLE RESOURCES (SUCH AS TAPE DRIVES, CARD PUNCHES, ETC) [] WHEN THE USER IS INTERACTIVE NO POLICY IS ENFORCED. THE USER IS INFORMED IF THE RESOURCE IS BUSY AND MAY EITHER TRY AGAIN OR GIVE UP [] WHEN THE USER IS NOT INTERACTIVE, THE "ALL" OR "NONE" APPROACH SHOULD BE USED. THE AVAILABILITY OF ALL REQUIRED RESOURCES BECOMES THE DETERMINING FACTOR IN SCHEDULING THE USER (SEE THE "RESOURCE CONTROL PACKAGE") [] SHOULD A NON-INTERACTIVE USER ATTEMPT SERIAL REQUESTS FOR RESOURCES, A DEADLOCK SITUATION COULD POTENTIALLY ARISE AND EXIST UNTIL THE AUTOMATIC LOGOUT DUE TO INACTIVITY OCCURS [] USER ACCESSIBLE RESOURCES (SUCH AS FILES, DATA BASES, ETC) [] IN GENERAL, USER SEGMENTS IN THE HIERARCHY POSE NO DEADLOCK PROBLEM SINCE THEY ARE A SIMULTANEOUSLY USABLE RESOURCE (IE: THERE IS NO DEFAULT CONCURRENCY MECHANISM ASSOCIATED WITH USER SEGMENTS) [] SEGMENTS MAY BE PROTECTED FROM POTENTIAL CONCURRENCY PROBLEMS THROUGH USE OF LOCK WORDS AND THE set_lock_ MECHANISM. THIS REQUIRES MUTUAL AGREEMENT AMONG ALL PROCESSES ACCESSING SUCH SEGMENTS [] SOME SEGMENTS SUCH AS THOSE USED BY THE MULTICS DATA BASE Not To Be Reproduced 3-12 MDD-003 _D_E_A_D_L_O_C_K__P_R_E_V_E_N_T_I_O_N MANAGER (MDBM), USE A "COMMITMENT/ROLLBACK" SCHEME [] SUPERVISOR RESOURCES (SUCH AS HARDCORE DATABASE) [] LOCKWORDS (OR SIMPLY "LOCKS") ARE USED IN MULTICS TO IMPLEMENT CONCURRENT ACCESS CONTROL IN THE MULTI-PROCESS ENVIRONMENT =================================== INSERT Locking Concept DIAGRAM HERE =================================== [] THE SUPERVISOR LOCKS ARE ARRANGED IN A PARTIAL ORDER AND A CODING CONVENTION PREVENTS WAITING ON A LOCK _I_F THE PROCESS HAS A HIGHER LOCK LOCKED [] THIS PARTIAL ORDER IS DETERMINED BY AN ANALYSIS OF THE OPERATING SYSTEM'S BEHAVIOR. FOR EXAMPLE: SINCE A PAGE FAULT MAY PROPERLY OCCUR WHILE A PROCESS HAS THE ACTIVE SEGMENT TABLE (AST) LOCKED, AND PAGE FAULT HANDLING REQUIRES THE LOCKING OF THE PAGE TABLE LOCK, THE PAGE TABLE LOCK MUST BE PLACED "HIGHER" IN THE PARTIAL ORDER THAN THE AST LOCK [] TO THE DEGREE THAT THE SYSTEM PROGRAMMERS OBEY THIS PARTIAL ORDER, A DEADLY EMBRACE CANNOT OCCUR WITHIN THE MULTICS SUPERVISOR Not To Be Reproduced 3-13 MDD-003 _D_E_A_D_L_O_C_K__P_R_E_V_E_N_T_I_O_N ===================================== INSERT Locking Hierarchy DIAGRAM HERE ===================================== Not To Be Reproduced 3-14 MDD-003 _T_Y_P_E_S__O_F__L_O_C_K_S ox LOCKS WITHIN MULTICS: [] ARE 36 BIT WORDS CONTAINING EITHER ZERO (UNLOCKED) OR A PROCESS_ID (LOCKED) [] CONTROL PROCESSES, _N_O_T PROCESSORS [] ARE MUTUALLY EXCLUSIVE LOCKS [] THE HARDWARE SUPPORTS SEVERAL INDIVISIBLE INSTRUCTIONS USED IN IMPLEMENTING THE LOCKING PRIMITIVES. FOR EXAMPLE: [] STAC (_S_TORE _A _CONDITIONAL) [] IF C(Y)=0 THEN C(A) -> C(Y) [] TYPICAL USE: LOCKING. IF THE LOCKWORD (Y) IS UNLOCKED (=0) THEN LOCK THE LOCK BY STORING THE PROCESS_ID (WHICH IS IN A) INTO THE LOCKWORD [] SPECIAL HARDWARE PROHIBITS SIMILAR REFERENCES BY OTHER PROCESSORS DURING THE TEST AND DATA TRANSFER WINDOW [] ALSO STACQ (_S_TORE _A _CONDITIONAL ON _Q), LDAC (_LOA_D _A AND _CLEAR), LDQC (_LOA_D _Q AND _CLEAR), SZNC (_SET _Z AND _N AND _CLEAR) Not To Be Reproduced 3-15 MDD-003 _T_Y_P_E_S__O_F__L_O_C_K_S ox WITHIN THE MULTICS SUPERVISOR EXISTS TWO TYPES OF LOCKS: LOOP LOCKS AND WAIT LOCKS [] LOOP LOCKS ============================== INSERT Loop Locks DIAGRAM HERE ============================== [] SIMPLIFIED PL/I ANALOGY: do while (lockword ^=0); end; lockword = process_id; lockword = 0; [] LOOP LOCKS ARE USED WHEN IT WOULD NOT BE ACCEPTABLE TO GIVE UP THE PROCESSOR BEFORE LOCKING THE LOCK. [] LOOP LOCKS TYPICALLY PROTECT THE LOWEST LEVEL OF CRITICAL SUPERVISOR DATABASES: TRAFFIC CONTROL, PAGE CONTROL, ETC. Not To Be Reproduced 3-16 MDD-003 _T_Y_P_E_S__O_F__L_O_C_K_S [] WAIT LOCKS =========================================== INSERT Wait Locks (Simplified) DIAGRAM HERE =========================================== [] SIMPLIFIED PL/I ANALOGY: do while (lockword ^=0); end; Lockword = process_id; Lockword = 0 [] MOST SUPERVISOR LOCKS ARE WAIT LOCKS [] IN GENERAL, A PROCESS IS ALLOWED TO GIVE UP ITS PROCESSOR WHEN IT HAS WAIT LOCKS LOCKED [] THE WAIT LOCK MECHANISM WILL BE DESCRIBED IN MORE DETAIL IN TOPIC 9 Not To Be Reproduced 3-17 MDD-003 _T_Y_P_E_S__O_F__L_O_C_K_S TOPIC IV Name Space and Address Space Management Page Name/Address Space Overview . . . . . . . . . 4-1 Name/Address Space Terminology. . . . . . . . 4-5 Name/Address Space Concepts . . . . . . . . . 4-7 Name/Address Space Data Bases . . . . . . . . 4-12 Reference Name Table (RNT). . . . . . . . 4-12 Known Segment Table (KST) . . . . . . . . 4-13 Descriptor Segment (DSEG) . . . . . . . . 4-14 Typical Address Space . . . . . . . . . . . . 4-16 Name/Address Space Meters . . . . . . . . . . 4-32 system_link_meters. . . . . . . . . . . . 4-32 link_meters . . . . . . . . . . . . . . . 4-33 Name/Address Space Commands . . . . . . . . . 4-34 display_kst_entry . . . . . . . . . . . . 4-34 4-i MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__O_V_E_R_V_I_E_W ox FUNCTION [] IMPLEMENT THE PER PROCESS VIRTUAL MEMORY ox BASIC PHILOSOPHY [] AS A NEWLY LOGGED IN USER ATTEMPTS TO TOUCH VARIOUS SEGMENTS A CONSIDERABLE AMOUNT OF MANAGEMENT INFORMATION MUST BE (TRANSPARENTLY) FOUND AND/OR COMPUTED BEFORE THE USER'S REFERENCE IS ACTUALLY ACCOMPLISHED [] FOR EVERY SEGMENT REFERENCED BY THE USER, THE SUPERVISOR: [] ASSIGNS A SEGMENT NUMBER (FOR REASON OF HARDWARE ADDRESSING), AND [] RECORDS (REMEMBERS) THE MANAGEMENT INFORMATION (FOR REASON OF SOFTWARE EFFICIENCY AND CONTROL) [] SUCH SEGMENTS ARE SAID TO BE "KNOWN TO THE PROCESS" [] THE MANAGEMENT INFORMATION IS MAINTAINED ON A PER PROCESS BASIS Not To Be Reproduced 4-1 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__O_V_E_R_V_I_E_W IN THREE COMPLEMENTING AREAS: DSEG, KST, AND RNT [] MANAGES TWO DISTINCT SETS OF INFORMATION: [] ADDRESS SPACE - CORRESPONDENCE BETWEEN SEGMENT NUMBERS AND THE SEGMENTS THEMSELVES [] NAME SPACE - CORRESPONDENCE BETWEEN SEGMENT NUMBERS AND NAMES THE USER REFERS TO THEM BY [] CALLS DIRECTORY CONTROL TO LOCATE SEGMENTS INITIALLY [] NAME SPACE / ADDRESS SPACE MANAGEMENT IS INVOKED BY SUBROUTINE CALLS, AND BY LINKAGE FAULTS (THE "DYNAMIC LINKER") ox PRINCIPAL USER INTERFACES [] COMMAND LEVEL [] initiate, terminate, terminate_segno, terminate_ref_name, terminate_single_ref_name, list_ref_name [] THE COMMAND PROCESSOR ITSELF - WHICH USES THESE SERVICES TO LOCATE COMMANDS [] SUBROUTINE LEVEL [] hcs_$initiate, hcs_$initiate_count_, hcs_$terminate_file, hcs_$terminate_seg, hcs_$terminate_name, hcs_$terminate_noname, term_ Not To Be Reproduced 4-2 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__O_V_E_R_V_I_E_W ox MAJOR DATA BASES [] DESCRIPTOR SEGMENT (DSEG) - ONE PER PROCESS [] SEGMENT DESCRIPTOR WORD (SDW) - ONE PER KNOWN SEGMENT [] DEFINES THE USER'S ADDRESS SPACE TO THE HARDWARE [] KNOWN SEGMENT TABLE (KST) - ONE PER PROCESS [] KNOWN SEGMENT TABLE ENTRY (KSTE) - ONE PER KNOWN SEGMENT (EXCEPT SUPERVISOR SEGMENTS) [] DEFINES THE USER'S ADDRESS SPACE TO THE SUPERVISOR AND THE USER [] EACH KSTE ASSOCIATES A USER'S SEGMENT NUMBER WITH THE SEGMENT CONTROL ATTRIBUTES OF THAT SEGMENT [] THE SEARCH FOR AN AVAILABLE KSTE DETERMINES A SEGMENT'S NUMBER [] REFERENCE NAME TABLE (RNT) - ONE PER EACH RING IN EACH PROCESS [] NOT A SEGMENT - KEPT AS A REGION ALLOCATED IN THE "LINKAGE AREA" FOR EACH RING [] REFERENCE NAME TABLE ENTRY (RNTE) - ONE PER REFERENCE NAME Not To Be Reproduced 4-3 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__O_V_E_R_V_I_E_W [] USED BY THE DYNAMIC LINKER TO IMPLEMENT THE "initiated_segments" SEARCH RULE [] DEFINES THE USER'S NAME SPACE TO THE USER [] NAME SPACE MAY BE DIFFERENT IN DIFFERENT RINGS OF THE SAME PROCESS Not To Be Reproduced 4-4 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__T_E_R_M_I_N_O_L_O_G_Y SEGMENT DESCRIPTOR WORD (SDW): A TWO WORD PAIR USED BY THE HARDWARE WHEN REFERENCING A SEGMENT. DESCRIPTOR SEGMENT (DSEG): THE MOST FUNDAMENTALLY IMPORTANT SEGMENT IN A PROCESS. CONTAINS AN ARRAY OF SDW'S DEFINING THE ADDRESS SPACE OF THE PROCESS ADDRESS SPACE: THE SET OF ALL SEGMENTS (PROCEDURE AND DATA) FOR WHICH THE PROCESS HAS A SEGMENT NUMBER AND A CORRESPONDING SDW. THE ADDRESS SPACE EXPANDS AND CONTRACTS DURING A SEGMENT'S LIFE SEGMENT NUMBER: AN OCTAL NUMBER 0-1777 (0-1023 DECIMAL) ASSIGNED UNIQUELY TO A SEGMENT. USED BY THE HARDWARE AS AN OFFSET INTO THE ARRAY OF SDW'S WHEN REFERENCING A SEGMENT MAKING KNOWN: THE ACT OF ASSIGNING A SEGMENT NUMBER TO A SEGMENT, THEREBY ADDING IT TO THE ADDRESS SPACE. SEGMENTS MUST BE MADE KNOWN BEFORE THEY CAN BE REFERENCED Not To Be Reproduced 4-5 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__T_E_R_M_I_N_O_L_O_G_Y NAME SPACE: THE SET OF ALL SEGMENTS FOR WHICH THE PROCESS HAS A REFERENCE NAME. THE REFERENCE NAME MAY BE DIFFERENT THAN THE SEGMENTS ACTUAL NAME (ITS ENTRYNAME). SINCE SOME SEGMENTS IN THE ADDRESS SPACE HAVE NO REFERENCE NAME, THE NAME SPACE IS A PROPER SUBSET OF THE ADDRESS SPACE Not To Be Reproduced 4-6 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__C_O_N_C_E_P_T_S ox A MULTICS PROCESS IS A WELL DEFINED COLLECTION OF UNIQUE SEGMENTS, EACH WITH DEFINED ACCESS, OVER WHICH A SINGLE EXECUTION POINT IS FREE TO ROAM (I.E., FETCH INSTRUCTIONS AND MAKE DATA REFERENCES) ox THE ADDRESS SPACE OF A PROCESS IS THE ABOVE "COLLECTION OF SEGMENTS". SUCH SEGMENTS ARE SAID TO BE KNOWN TO THE PROCESS [] ALL SUPERVISOR (RING 0) SEGMENTS ARE PLACED INTO THE ADDRESS SPACE AT PROCESS CREATION TIME. THIS ADDRESS SPACE IS SAID TO BE "CLONED" FROM THE INITIALIZER ADDRESS SPACE [] THE RING ZERO ADDRESS SPACE IN ANY PROCESS IS THE SAME AS THE INITIALIZER'S RING ZERO ADDRESS SPACE, EXCEPT FOR THE DSEG, KST, PDS, PRDS, AND STACK_0 [] THE RING ZERO ADDRESS SPACE HAS NO RNT, BECAUSE IT IS SET UP DURING SYSTEM INITIALIZATION, AND DOES NOT CHANGE [] OTHER SEGMENTS ARE MADE KNOWN AND UNKNOWN DURING THE LIFE OF THE PROCESS [] IMPLICITLY BY THE DYNAMIC LINKER (LINKAGE FAULT) OR A SYSTEM COMMAND print my_dir>my_seg tester [] EXPLICITLY BY COMMANDS OR SUBROUTINES THAT MANAGE THE ADDRESS SPACE initiate my_prog call hcs_$terminate_segno Not To Be Reproduced 4-7 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__C_O_N_C_E_P_T_S [] MAKING A SEGMENT KNOWN IS SIMILAR TO DECLARING A VARIABLE IN A PL/I PROGRAM. IT SIGNIFIES INTENT, BUT NOT USAGE [] THE PRESENCE OF ONE OR MORE PAGES OF A SEGMENT IN MAIN MEMORY IMPLIES THAT THE SEGMENT IS KNOWN TO (AND IS BEING USED BY) AT LEAST ONE USER [] BEING KNOWN DOES NOT IMPLY PRESENCE IN MAIN MEMORY ox NOTE THAT THIS SET OF SEGMENTS, THE EXECUTION POINT, AND THE REGISTERS AND INDICATORS OF THE PROCESSOR, UNIQUELY DEFINES THE STATE OF THE PROCESS Not To Be Reproduced 4-8 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__C_O_N_C_E_P_T_S ========================================== INSERT N/A Space Manipulation DIAGRAM HERE ========================================== Not To Be Reproduced 4-9 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__C_O_N_C_E_P_T_S ======================================== INSERT NS and AS Management DIAGRAM HERE ======================================== Not To Be Reproduced 4-10 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__C_O_N_C_E_P_T_S ==================================================== INSERT Multics Virtual Memory Structure DIAGRAM HERE ==================================================== Not To Be Reproduced 4-11 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__D_A_T_A__B_A_S_E_S _R_E_F_E_R_E_N_C_E__N_A_M_E__T_A_B_L_E__(_R_N_T_) ======================================== INSERT Reference Name Table DIAGRAM HERE ======================================== Not To Be Reproduced 4-12 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__D_A_T_A__B_A_S_E_S _K_N_O_W_N__S_E_G_M_E_N_T__T_A_B_L_E__(_K_S_T_) ======================================= INSERT Known Segment Table DIAGRAM HERE ======================================= Not To Be Reproduced 4-13 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__D_A_T_A__B_A_S_E_S _D_E_S_C_R_I_P_T_O_R__S_E_G_M_E_N_T__(_D_S_E_G_) ====================================== INSERT Descriptor Segment DIAGRAM HERE ====================================== Not To Be Reproduced 4-14 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__D_A_T_A__B_A_S_E_S _D_E_S_C_R_I_P_T_O_R__S_E_G_M_E_N_T__(_D_S_E_G_) ======================================================== INSERT States of Segments and Pages (short) DIAGRAM HERE ======================================================== Not To Be Reproduced 4-15 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E ox COLLECTION ZERO [] SEGMENTS WHICH MUST BE PRESENT TO RUN THE VERY FIRST LOADING PROGRAM [] SEGMENTS WHICH HAVE FIXED ABSOLUTE ADDRESSES TO INTERFACE WITH HARDWARE [] ALL DESCRIBED IN template_slt_.cds 0 [pd]>dseg (ring 0) The descriptor segment. The Initializer's dseg comes from the system tape and is built during system initialization; all others are created by process creation. 1 fault_vector (ring 0, perm-wired) Contains the interrupt vector, fault vector, and the ITS pairs for SCU and TRA instructions. Located at absolute locations 0-577. Used by the CPU hardware. 2 iom_mailbox (ring 0, perm-wired) Mailboxes (communications areas) for up to four IOMs. Located at locations 1200-3377 absolute. Used by the IOM hardware. 3 >sl1>config_deck (ring 0, deciduous) The online copy of the config deck. This is built from the config deck provided by BOS during system initialization, but it is not the copy BOS actually uses. 4 dn355_mailbox (ring 0) Mailboxes (communications areas) for up to eight FNPs. Located at absolute locations 3400-6377. Used by the FNP hardware. Not To Be Reproduced 4-16 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E 5 bos_toehold (ring 0, perm-wired) The segment containing the tiny program used to switch between Multics and BOS at crash time. Located at absolute locations 10000-11777. 6 flagbox (ring 0, perm-wired) A region inside the bos_toehold segment (yes, it really overlaps the toehold) used to access the BOS/Multics communication region. 7 >sl1>slt (ring 0, deciduous) 10 >sl1>name_table (ring 0, deciduous) The two primary databases of system initialization. The SLT contains one entry for every supervisor segment read from the system boot tape, containing all its attributes. The separate name_table is used to hold the names, because each segment may have several This marks the end of Collection Zero. All the rest of the segments in the address space are either read from the system tape or found in the online system. Not To Be Reproduced 4-17 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E ox COLLECTION ONE [] FIRST BATCH OF SEGMENTS READ FROM SYSTEM TAPE [] ALL THE PROGRAMS AND DATABASES NEEDED TO MAKE PAGING RUN [] ALL SEGMENTS WHICH MUST BE "perm-wired" -- PERMANENTLY ALLOCATED IN LOW MEMORY, WITHOUT PAGE TABLES 11 lot (ring 0) The supervisor's linkage offset table. Used to find linkage sections. Built as the segments are read in from tape. 12 as_linkage (ring 0) 13 ws_linkage (ring 0) The permanent supervisor combined linkage regions. The names mean "Active Supervisor Linkage" and "Wired Supervisor Linkage", respectively. The linkage sections of all permanent supervisor segments are put in one of these as the segments are read from the tape. 14 >sl1>definitions_ (ring 0, deciduous) The segment containing all the definitions sections of supervisor programs. The definitions sections are placed here as the programs are read from the tape, and used by the hardcore prelinker. 15 sst_seg (ring 0, perm-wired) The segment containing all ASTEs and page tables. Covered in under Page and Segment Control. This segment is allocated at the very top end of the bootload SCU. 16 core_map (ring 0, perm-wired) All the core map entries, describing all system memory. Covered under Page Control. This used to Not To Be Reproduced 4-18 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E be part of the SST, but was moved out to make more room for page tables. 17 abs_seg (ring 0, abs-seg) An abs-seg used for complex call-side operations in page control, such as evict_page and reconfiguration. 20 abs_seg1 (ring 0, abs-seg) An abs-seg used only by page control for checking page frame contents for zeros, and zeroing newly allocated page frames. 21 backup_abs_seg (ring 0, abs-seg) An abs-seg used to access the segment being dumped in a Volume Dumper process. It is given an SDW which refers to any ordinary segment. This is a very special hardcore segment, because it has trailer entries, and it is special-cased by the trailer manipulation program, setfaults. Normal hardcore segments never receive trailers, since they are never activated or deactivated. 22 fim_abs_seg (ring 0, abs-seg) An abs-seg used by the FIM to scan the cache when attempting to diagnose cache parity errors. 23 isolts_abs_seg (ring 0, abs-seg) An abs-seg used by ISOLTS, which gives it an SDW describing the low 64K of the SCU being used for ISOLTS testing. 24 volmap_abs_seg (ring 0, abs-seg) An abs-seg used by page control to access record stocks. It is given the SDW of whichever volume's stock is needed. 25 bound_active_1 (ring 0) 26 bound_disk_util (ring 0) 27 bound_disk_util_wired (ring 0, perm-wired) 30 bound_error_active (ring 0) 31 bound_error_wired (ring 0, perm-wired) 32 bound_interceptors (ring 0, perm-wired) This is where the FIM lives. 33 bound_io_wired (ring 0, perm-wired) 34 bound_iom_support (ring 0, perm-wired) 35 bound_page_control (ring 0, perm-wired) 36 bound_priv_1 (ring 0, perm-wired) 37 >sl1>bound_sss_wired_ (ring 0, deciduous) This is where pl1_operators_ and a whole host of Not To Be Reproduced 4-19 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E other miscellaneous subroutines live. It is wired in a very special way, because not all of its contents need to be wired. In particular, only about half of pl1_operators_ needs to be wired, and there is a special hack in make_sdw.pl1 which finds the definition in the middle of pl1_operators_ which marks the end of the wired portion, and makes an ASTE for bound_sss_wired_ which has all its pages up to and including that definition wired, and the rest unwired. 40 bound_tc_priv (ring 0, perm-wired) 41 bound_tc_wired (ring 0, perm-wired) 42 bound_unencacheable (ring 0, perm-wired) 43 dir_seg (ring 0, abs-seg) An abs-seg now used only at process termination time to loop through the dead process's KST in order to flush any trailers it had for active segments. 44 disk_post_queue_seg (ring 0, perm-wired) The segment where the core address queue lives: see core_queue_man.alm. This is discussed under Page Control. 45 disk_seg (ring 0, perm-wired) The segment containing the disk DIM's databases: device table, channel table, and I/O queues. 46 dn355_data (ring 0, perm-wired) The segment containing software communications regions for the FNPs. This is not where FNP buffers are kept, but only the mailboxes that describe the buffers, and some control information. 47 ds_seg (ring 0, abs-seg) The segment used by setfaults when accessing another process's DSEG in order to remove a trailer. Covered under Segment Control. 50 emergency_shutdown (ring 0, perm-wired) The procedure segment which starts an ESD. It is a separate segment because BOS has to be able to find it and transfer to it. 51 hardcore_sct_seg (ring 0) The segment containing the static condition table for ring zero; it's just like the one which is kept in an outer ring stack header. The only static handlers in ring zero are those used to invoke the copy_on_write mechanism. Not To Be Reproduced 4-20 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E 52 idle_dsegs (ring 0, perm-wired) 53 idle_pdses (ring 0, perm-wired) Two similar segments: they contain the DSEG and PDS segments for all the idle processes, all in a row. When an idle process is constructed, the SDWs for its DSEG and PDS are set up to point into the middle of one of these segments. 54 init_processor (ring 0) 55 inzr_stk0 (ring 0) The stack segment used by the Initializer during initialization and shutdown. During normal operation, the Initializer participates in ordinary ring zero stack sharing. 56 iobm_data (ring 0, perm-wired) The database of iobm.pl1, the I/O Buffer Manager. 57 ioi_abs_seg (ring 0, abs-seg) The abs-seg used by ioi_interrupt.pl1 to access a user ioi_ buffer at interrupt time, for storing status information. 60 ioi_data (ring 0, perm-wired) The database for ioi_ -- describes all user-accessable, or potentially user-accessable devices. See the programs in bound_io_active and bound_io_wired. 61 iom_data (ring 0, perm-wired) Describes the configuration of the IOMs, and software information about IOM channels. Contains assignment information, software status queue location, and metering cells. 62 oc_data (ring 0, perm-wired) The database for the ring zero operator's console mechanism. This is used by syserr in ring zero, and by the Initializer to write on the system console (but not message coordinator consoles). 63 [pd]>pds (ring 0, deciduous) The Process Data Segment. This contains all the miscellaneous information that makes a process unique to the supervisor, and need not be readily accessable to other processes. Most per-process variables are referenced symbolically, such as pds$processid, pds$page_fault_data (machine conditions for last page fault), etc. Not To Be Reproduced 4-21 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E 64 >sl1>prds (ring 0, deciduous) Like the PDS, but per-processor. Contains the same sort of miscellaneous information, and is also used as the ring zero stack for certain types of faults (page faults, connects, and timer runouts) and all interrupts. There is a PRDS per processor, named >sl1>cpu_A.prds, cpu_B.prds, etc. The PRDS segment in ring zero is changed at LDBR time to indicate the actual PRDS of the processor that the process is going to run on; thus, it's sort of an abs-seg. All PRDS's are wired, but have page tables. 65 >sl1>pvt (ring 0, deciduous) The Physical Volume Table. Described under Volume Management and Page Control. 66 rdisk_seg (ring 0, abs-seg) A PTW-type abs-seg (the only one where the PTW ever changes). Used only by the program read_disk, which does I/O to arbitrary pages on any disk, its aste.pvtx and PTW are switched around to indicate the right page, which is faulted on and (if needed) written back out by pc$cleanup. 67 restart_fault (ring 0) 70 return_to_ring_0_ (ring 0) These two procedures are used to implement the restarting of faults (such as a QUIT signal) from the user ring. When a fault occurs, a frame is pushed on the user ring stack, with its owner set to be return_to_ring_0_. Additionally, the machine conditions for the fault are saved in ring zero (in the PDS) so that when restart_fault is called to restart a possibly modified set of conditions, it can compare and validate. 71 scas (ring 0, abs-seg) The System Controller Addressing Segment. This segment has a page overlaid on a page of every system controller. No data is ever accessed through this segment; its page table is not even in the SST, but in the SCS. It is used only for certain privileged instructions which require an effective address in an particular SCU in order to read or set control registers in the SCU. 72 scs (ring 0, perm-wired) The System Configuration Segment. It describes most of the hardware configuration, and contains various control words used by privileged control instructions. Not To Be Reproduced 4-22 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E 73 signaller (ring 0) The procedure which implements user ring fault signalling. 74 >sl1>sst_names_ (ring 0, deciduous) The SST name table. This is a debugging feature; it contains (when in use) the primary name corresponding to every segment in the AST. It can be maintained online, by use of the PARM ASTK config card, but usually is not. It is always filled in by FDUMP after a crash if it was not already in use. 75 stack_0_data (ring 0, perm-wired) Data segment describing the available segments for use in ring zero stack sharing. These segments, seen later on as segment 230, are recorded here and multiplexed among eligible processes. 76 stock_seg (ring 0, perm-wired) The segment containing all in-core record and VTOCE stocks for use by page control and segment control, and covered under those topics. 77 >sl1>sys_boot_info (ring 0, deciduous) A data segment containing information about the I/O devices (tape and disk) used during bootload. 100 >sl1>sys_info (ring 0, deciduous) Contains assorted global wired information shared by the user ring and supervisor. Some is set during bootload, and some comes off the tape; none is modified after initialization is complete. 101 syserr_data (ring 0, perm-wired) Data segment for the lowest level of the syserr mechanism. Syserr messages are built and queued here, and sent to the console. They are also copied out by the syserr logger hardcore process, into the syserr_log. 102 syserr_log (ring 0, abs-seg) This segment overlays the LOG partition on some disk, which is used to reliably store syserr messages until they can be copied into the perm_syserr_log maintained in the Hierarchy. 103 tc_data (ring 0) The traffic control data segment; contains all traffic control data. Covered under Traffic Control. Not To Be Reproduced 4-23 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E 104 wired_hardcore_data (ring 0, perm-wired) Miscellaneous data used by the wired supervisor. Not To Be Reproduced 4-24 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E ox COLLECTION TWO [] THE UNWIRED PORTION OF THE SUPERVISOR [] READ IN BY COLLECTION ONE, DIRECTLY INTO PAGED SEGMENTS IN THE HARDCORE PARTITIONS 105 >sl1>active_all_rings_data (ring 0, deciduous) Miscellaneous data shared between the unwired supervisor and the outer rings. 106 active_hardcore_data (ring 0) Miscellaneous data used by the unwired portion of the supervisor: system-wide locks, size constants for directory control, system search rule info, and metering for directory control and the dynamic linker. 107 >sl1>admin_gate_ (ring 0, deciduous) 110 ast_lock_meter_seg (ring 0) A segment used to collect AST lock metering, normally off (enabled by the ast_lock_metering tuning parameter). 111 >sl1>audit_gate_ (ring 0, deciduous) 112 bound_355_wired (ring 0) 113 bound_file_system (ring 0) 114 bound_hc_backup (ring 0) 115 bound_hc_reconfig (ring 0) 116 bound_hc_tuning (ring 0) 117 bound_imp_dim_ (ring 0) 120 bound_imp_status (ring 0) 121 bound_io_active (ring 0) 122 bound_mcs_util (ring 0) 123 bound_priv_mpx (ring 0) 124 bound_network0_ (ring 0) 125 bound_priv_procs (ring 0) 126 bound_process_creation (ring 0) 127 bound_salvager (ring 0) 130 bound_scavenger (ring 0) Not To Be Reproduced 4-25 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E 131 >sl1>bound_sss_active_ (ring 0, deciduous) 132 bound_system_faults (ring 0) 133 bound_tty_active (ring 0) 134 bound_vtoc_man (ring 0) 135 bound_x25_mpx (ring 0) 136 dbm_seg (ring 0) The segment used to hold the dumper bit maps for volumes being volume-dumped. The bitmaps are read from the volume header when a dump begins, and written back when finished. 137 dirlockt_seg (ring 0) The segment used to keep track of all directory locks. Directory locks are kept in a supervisor segment, rather than in directories themselves. 140 >sl1>dm_hcs_ (ring 0, deciduous) 141 >sl1>dm_journal_seg_ (ring 0, deciduous) 142 >sl1>error_table_ (ring 0, deciduous) 143 fnp_dump_seg (ring 0) Segment used for data buffering by FNP dump and patch operations (but not bootload). 144 hasp_mpx (ring 0) 145 >sl1>hc_backup_ (ring 0, deciduous) 146 >sl1>hcs_ (ring 0, deciduous) 147 >sl1>hphcs_ (ring 0, deciduous) 150 ibm3270_mpx (ring 0) 151 imp_data (ring 0) 152 imp_dim_buf_ (ring 0) 153 imp_tables (ring 0) 154 imp_wired_buffers (ring 0) These four segments were used by the ring zero IMP DIM (part of the ARPAnet support), which has since been decomissioned. 155 initializer_abs_seg (ring 0, abs-seg) An abs-seg used solely in order to copy a process's stack_0 segment into its process directory on process termination. 156 >sl1>initializer_gate_ (ring 0, deciduous) 157 io_page_tables (ring 0) The segment which contains page tables used for I/O if the IOM is operating in Paged mode. It is initialized by ioi_init and used only for ioi_ I/O. 160 ioat (ring 0) The I/O attach table. This is a largely obsolete database, the relic of an earlier I/O device Not To Be Reproduced 4-26 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E attachment scheme. It is now used only for loading and dumping FNPs. 161 >sl1>ioi_ (ring 0, deciduous) 62 [pd]>kst_seg (ring 0, deciduous) The Known Segment Table. Described in Name & Address Space Management. 163 lvt (ring 0) The Logical Volume Table. Described in Volume Management. 164 >sl1>mhcs_ (ring 0, deciduous) 165 ncp_tables_ (ring 0) Another part of the now-decommissioned ring zero ARPAnet support, no longer used. 166 >sl1>net_ring0_admin_ (ring 0, deciduous) 167 >sl1>net_ring0_sys_ (ring 0, deciduous) 170 >sl1>net_ring0_user_ (ring 0, deciduous) 171 >sl1>phcs_ (ring 0, deciduous) 172 polled_vip_mpx (ring 0) 173 pv_salv_seg (ring 0) This data segment is created in order to run the physical volume salvager (now rarely used). It contains various databases used by the salvager. It is created (by calling grab_aste.pl1) and destroyed for each volume salvage, in each process running a salvage, rather than being a shared segment. 174 salv_abs_seg_00 (ring 0, abs-seg) 175 salv_abs_seg_01 (ring 0, abs-seg) 176 salv_abs_seg_02 (ring 0, abs-seg) 177 salv_abs_seg_03 (ring 0, abs-seg) 200 salv_abs_seg_04 (ring 0, abs-seg) These five segments are used to overlay the VTOC of a volume being salvaged, and are set up and referenced by vm_vio.pl1. Covered under File System Salvagers. 201 salv_dir_space (ring 0) 202 salv_data (ring 0) 203 salv_temp_dir (ring 0) These three segments are used by the directory salvager when invoked as the online salvager, in response to a crawlout or bad_dir_ condition. Only one instance of the online salvager may be running at a time, and this is ensured by a lock on salv_data. The online salvager does not interfere with demand directory salvages, however. Covered under File System Salvagers. Not To Be Reproduced 4-27 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E 204 scavenger_data (ring 0) The segment containing the tables used when running the online volume scavenger. As many volumes as tables can be fit here may be scavenged at one time. The in-use portion of the segment is wired while a scavenge is being done. Covered under File System Salvagers. 205 >sl1>shcs_ (ring 0, deciduous) 206 str_seg (ring 0) The segment trailer segment. The trailers in this segment record which processes have an SDW for any particular non-supervisor segment, and the backup_abs_seg (see above). Covered under Segment Control. 207 syserr_daemon_dseg (ring 0) 210 syserr_daemon_pds (ring 0) 211 syserr_daemon_stack (ring 0) The DSEG, PDS, and ring zero stack of the syserr logging daemon. They are filled in when the daemon processs (which runs entirely in ring zero) is created. They are in the global system address space primarily for debugging and recordkeeping purposes. 212 >sl1>system_privilege_ (ring 0, deciduous) 213 >sl1>tandd_ (ring 0, deciduous) 214 template_pds (ring 0) A template for the PDS, used when creating a process. It is a copy of the pds template which came off the system tape, but which was used to create the Initializer's PDS. 215 tty_area (ring 0) An unwired database used by ring zero communications system, used primarily for saved metering information on each channel. 216 tty_buf (ring 0) The important segment in the ring zero communications system. Contains the logical channel table, all communications I/O buffers, and all multiplexer databases. 217 tty_tables (ring 0) An unwired database used by ring zero communications system to keep the tables used for input and output translation/conversion. Not To Be Reproduced 4-28 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E 220 vtoc_buffer_seg (ring 0) The segment containing all buffers for VTOC I/O, and a small amount of control information. Covered under Segment Control. 221 <> 222 <> 223 <> 224 <> 225 <> 226 <> 227 <> These segments are unused, since the first segment after the supervisor address space is the ring zero stack, and its segment number must be zero mod 8. 230 >sl1>stack_0.016 (ring 0, deciduous) The ring zero stack. One is allocated from a pool (>sl1>stack_0.NNN) whenever a process becomes eligible. When a process is not eligible (blocked, usually), it has no ring zero context, and needs no ring zero stack. 231 [pd]>stack_1 232 <> 232 <> 234 [pd]>stack_4 The rest of the stacks. There would be others if other rings were being used. A stack is created for each ring as it is needed; the segment number is automatically generated by the CALL6 instruction (from DBR.stack), and when a segment fault occurs on a stack not yet extant (pds$stacks(ring) is null), seg_fault.pl1 calls makestack.pl1 to create one. Not To Be Reproduced 4-29 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E ox NON-SUPERVISOR SEGMENTS [] REMAINDER OF A PROCESS ADDRESS SPACE. [] BUILT BY THE NORMAL NAME AND ADDRESS SPACE MANAGEMENT MECHANISMS AS THE PROCESS GETS GOING AND RUNS [] DIFFERENT IN DIFFERENT PROCESSES; THIS IS ONLY AN EXAMPLE 240 > (the ROOT) The ROOT directory. The recursive nature of the initiate/segment fault mechanism ensures that this will be the first non-supervisor segment in the address space. 241 >pdd (directory) 242 >pdd 243 >sss>bound_process_init_ 244 >udd (directory) 245 >udd>MED (directory) 246 >udd>MED>Sibert (directory) 247 [pd]>!BBBMjzKmkcngb.area.linker 250 >sss (directory) 251 >unb (directory) 252 >sl1 (directory) 253 >tools (directory) 254 >am (directory) 255 >sl1>bound_sss_active_ 256 >sl1>operator_pointers_ 257 >sl1>bound_sss_wired_ 260 >sl1>bound_process_env_ 261 >sl1>hcs_ 262 [pd]>pit 263 >sl1>bound_error_handlers_ 264 >sl1>bound_ipc_ 265 >sss>bound_as_requests_ 266 >sss>bound_info_rtns_ Not To Be Reproduced 4-30 MDD-003 _T_Y_P_I_C_A_L__A_D_D_R_E_S_S__S_P_A_C_E 267 >sc1 (directory) 270 >sc1>whotab 271 >sc1installation_parms 272 >sl1>sys_info 273 >sss>bound_command_loop_ 274 >sc1>command_usage_counts 275 >sc1>command_usage_counts>command_usage_list_ 276 >sc1>command_usage_counts>command_usage_totals_ 277 >sss>bound_exec_com_ 300 >sl1>error_table_ Not To Be Reproduced 4-31 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__M_E_T_E_R_S _s_y_s_t_e_m__l_i_n_k__m_e_t_e_r_s ox SYSTEM_LINK_METERS - RECORDS CPU TIME AND PAGING INFORMATION USED BY THE DYNAMIC LINKER IN ALL PROCESSES Linkage Meters: CPU Metering time 4:58:57 Total time in linker 0:50:53 Average time per link 6.01 msec. Percentage of real time in linker 17.03 Percentage of CPU time in linker 4.66 Time slot (msec) <25 25-50 50-75 >75 Calls 498469 8357 414 1100 Total time in slot 0:42:03 0:04:16 0:00:24 0:04:09 Percent total time 82.63 8.40 0.81 8.16 Percent total calls 98.06 1.64 0.08 0.22 Average time 5.06 30.68 59.63 226.59 Average page faults 0.18 2.29 6.34 5.65 Segment Search Average time 2.58 25.13 53.15 8.70 Average page faults 0.04 0.95 3.53 0.22 Percent time in slot 57.06 82.58 86.46 3.80 Get Linkage Average time 0.84 4.08 7.16 219.16 Average page faults 0.06 0.62 0.93 5.33 Percent time in slot 18.54 13.41 11.64 95.71 Definition Search Average time 0.24 0.24 0.23 0.20 Average page faults 0.02 0.11 0.24 0.00 Percent time in slot 5.26 0.80 0.37 0.09 Not To Be Reproduced 4-32 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__M_E_T_E_R_S _l_i_n_k__m_e_t_e_r_s ox LINK_METERS - RECORDS CPU TIME AND PAGING INFORMATION USED BY THE DYNAMIC LINKER IN THE PROCESS RUNNING IT Linkage Meters: slot calls avg time avg pf tot time % time <25 1245 4.689 0.3 5.838 76.1 25-50 34 30.201 2.9 1.027 13.4 50-75 6 62.226 6.2 0.373 4.9 >75 2 216.545 6.0 0.433 5.6 ----- -------- ----- ------- Total 1287 5.961 0.4 7.671 Not To Be Reproduced 4-33 MDD-003 _N_A_M_E_/_A_D_D_R_E_S_S__S_P_A_C_E__C_O_M_M_A_N_D_S _d_i_s_p_l_a_y__k_s_t__e_n_t_r_y ox DISPLAY_KST_ENTRY - DISPLAYS INFORMATION FROM A KST ! display_kst_entry >udd>Multics>Sibert segno: 246 at 162|270 usage: 7, 0, 0, 0, 0, 0, 0, 0 entryp: 245|20750 uid: 102401170050 dtbm: 446556324757 mode: 7 (0, 0, 0) ex mode: 70000000000 (7, 7, 7) infcount: 3 hdr: 4 flags: dirsw write tms TOPIC V Directory Control Page Directory Control Overview. . . . . . . . . . 5-1 Directory Control Terminology . . . . . . . . 5-3 Directory Control Data Bases. . . . . . . . . 5-6 Directory Segments. . . . . . . . . . . . 5-6 Directory Header. . . . . . . . . . . . . 5-9 Directory Entries . . . . . . . . . . . . 5-12 Directory Control Commands. . . . . . . . . . 5-16 display_branch. . . . . . . . . . . . . . 5-16 5-i MDD-003 . _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__O_V_E_R_V_I_E_W ox FUNCTION [] DIRECTORY CONTROL IS A SET OF HARDCORE MODULES RESPONSIBLE FOR THE MAINTENANCE OF THE MULTICS DIRECTORY STRUCTURE -- IE: THE HIERARCHY [] ITS TASKS INCLUDE CREATING, MANIPULATING AND INTERPRETING THE CONTENTS OF DIRECTORY SEGMENTS, TO INCLUDE: [] ACCESS CONTROL LISTS (ACL'S), NAMES, AND VTOCE POINTERS OF ENTRIES DESCRIBED THEREIN [] ONLY DIRECTORY CONTROL IS ALLOWED TO ALTER THE CONTENTS OF DIRECTORY SEGMENTS [] DIRECTORY CONTROL IMPLICITLY RELIES UPON THE SERVICES OF OTHER SUBSYSTEMS SUCH AS SEGMENT CONTROL AND PAGE CONTROL, AND ALSO INVOKES THEM DIRECTLY BY SUBROUTINE CALL [] DIRECTORIES ARE SIMPLY SEGMENTS TO THESE SUBSYSTEMS [] DIRECTORY CONTROL IS INVOKED ONLY BY SUBROUTINE CALLS ox PRINCIPAL USER INTERFACES Not To Be Reproduced 5-1 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__O_V_E_R_V_I_E_W [] COMMAND LEVEL [] create, create_dir, link, set_acl, delete_acl, status, list, add_name, rename [] SUBROUTINE LEVEL [] hcs_$append_branch, hcs_$add_acl_entries, hcs_$append_link, hcs_$delete_acl_entries, hcs_$status_, hcs_$chname_file ox MAJOR DATA BASES [] DIRECTORY SEGMENTS [] CONTAIN THE ATTRIBUTES AND OTHER INFORMATION ABOUT THEIR SEGMENTS (NEEDED TO FIND SEGMENTS, RETURN STATUS INFORMATION, AND BUILD VTOCE'S AT SEGMENT CREATION) [] THE DIRLOCKT_SEG [] SEGMENT WHERE DIRECTORY LOCKING IS MANAGED Not To Be Reproduced 5-2 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__T_E_R_M_I_N_O_L_O_G_Y ============================= INSERT Directory DIAGRAM HERE ============================= Not To Be Reproduced 5-3 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__T_E_R_M_I_N_O_L_O_G_Y UNIQUE ID (UID): A 36-BIT ID (SERIAL NUMBER) ASSIGNED TO EVERY SEGMENT WHEN CREATED SON: OF A DIRECTORY. AN IMMEDIATELY INFERIOR (SUBORDINATE) SEGMENT SON'S LVID: OF A DIRECTORY. THE ID OF THE LOGICAL VOLUME ON WHICH THE DIRECTORY'S SONS RESIDE (AND WILL RESIDE) GRANDSON: OF A DIRECTORY. A SEGMENT INFERIOR BY MORE THAN ONE HIERARCHICAL LEVEL PARENT: OF A SEGMENT. THE "CONTAINING" DIRECTORY SEGMENT ANCESTOR: OF A SEGMENT. THE PARENT, OR GRANDPARENT, OR GREAT GRANDPARENT, ETC. Not To Be Reproduced 5-4 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__T_E_R_M_I_N_O_L_O_G_Y BROTHER: OF A SEGMENT. ANOTHER SEGMENT HAVING THE SAME PARENT BRANCH (1): _I_N A DIRECTORY. A DATA STRUCTURE, CONTAINED IN A DIRECTORY SEGMENT, THAT DESCRIBES AN IMMEDIATELY INFERIOR SEGMENT OR DIRECTORY (BUT NOT A LINK) BRANCH (2): _O_F A DIRECTORY. REFERS TO THE ACTUAL SEGMENT OR DIRECTORY IMMEDIATELY INFERIOR TO THE DIRECTORY ENTRY (1): _I_N A DIRECTORY. SAME AS BRANCH (1) BUT INCLUDES LINKS ENTRY (2): _O_F A DIRECTORY. SAME AS BRANCH (2) BUT INCLUDES LINKS ============================================== INSERT Storage System Terminology DIAGRAM HERE ============================================== Not To Be Reproduced 5-5 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _D_I_R_E_C_T_O_R_Y__S_E_G_M_E_N_T_S ======================================= INSERT Directory Structure DIAGRAM HERE ======================================= Not To Be Reproduced 5-6 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _D_I_R_E_C_T_O_R_Y__S_E_G_M_E_N_T_S ox DIRECTORY SEGMENTS ARE DISK RESIDENT (RLV) DATA BASES MAINTAINED BY DIRECTORY CONTROL [] ONE DIRECTORY SEGMENT PER DIRECTORY IN THE HIERARCHY ox DIRECTORY SEGMENTS CONTAIN A CATALOG OF STORAGE SYSTEM INFORMATION ABOUT OTHER SEGMENTS, DIRECTORIES AND LINKS ox ALL DIRECTORY SEGMENTS, BY CONVENTION, RESIDE ON THE ROOT LOGICAL VOLUME (RLV) ox DIRECTORY SEGMENTS ARE CREATED BY append MUCH LIKE NORMAL SEGMENTS ARE CREATED ox DIRECTORY SEGMENTS CONTAIN MANY INTER-RELATED COMPLEX DATA STRUCTURES TO INCLUDE THE FOLLOWING (NOT NECESSARILY CONTIGUOUS) REGIONS: [] DIRECTORY HEADER [] CONTAINS SELF DESCRIPTIVE INFORMATION LIKE UID, AIM CLASSIFICATION, ETC; AND POINTERS TO OTHER REGIONS Not To Be Reproduced 5-7 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _D_I_R_E_C_T_O_R_Y__S_E_G_M_E_N_T_S [] HASH TABLE [] USED TO QUICKLY LOCATE AN ENTRY, GIVEN ITS NAME [] ENTRY LIST [] CONTAINS ONE DESCRIPTIVE DATA STRUCTURE (AN ENTRY) FOR EACH SEGMENT, DIRECTORY, OR LINK IMMEDIATELY INFERIOR TO THE DIRECTORY (I.E. ALL ENTRIES) [] PERSON_ID AND PROJECT_ID NAME LISTS [] CONTAINS ALL PERSON_ID'S/PROJECT_ID'S REQUIRED TO DESCRIBE THE ACL, THE AUTHOR, ETC. OF ALL SEGMENTS AND DIRECTORIES IMMEDIATELY INFERIOR TO THE DIRECTORY (I.E. ALL BRANCHES) [] NAME LIST (ONE PER ENTRY) [] CONTAINS ALL NAMES CURRENTLY ASSIGNED TO THE ENTRY [] PRIMARY NAME IS ACTUALLY CONTAINED IN ENTRY STRUCTURE ITSELF [] ACCESS CONTROL LIST (ONE PER ENTRY) [] CONTAINS ALL ACL ENTRIES CURRENTLY ASSOCIATED WITH THE ENTRY Not To Be Reproduced 5-8 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _D_I_R_E_C_T_O_R_Y__H_E_A_D_E_R ==================================== INSERT Directory Header DIAGRAM HERE ==================================== Not To Be Reproduced 5-9 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _D_I_R_E_C_T_O_R_Y__H_E_A_D_E_R ox THE DIRECTORY HEADER IS A DISK RESIDENT DATA BASE CONTAINED AT THE BEGINNING OF A DIRECTORY SEGMENT [] ONE DIRECTORY HEADER PER DIRECTORY SEGMENT ox THE DIRECTORY HEADER CONTAINS SELF DESCRIPTIVE INFORMATION SUCH AS: [] THE PROCESS ID OF THE LAST PROCESS TO MODIFY THE DIRECTORY SEGMENT'S CONTENTS [] THE DIRECTORY'S UID, LVID, PVID, VTOC INDEX, AND AIM CLASSIFICATION [] RELATIVE POINTERS TO THE BEGINNING AND END OF THE ENTRY LIST, PERSON_ID LIST, PROJECT_ID LIST, AND THE HASH TABLE [] HIERARCHY DEPTH OF THE DIRECTORY SEGMENT [] UID OF THE MASTER DIRECTORY AND THE PARENT DIRECTORY [] SON'S LVID - THE ID OF THE LV ON WHICH INFERIOR NON-DIRECTORY SEGMENTS RESIDE (AND WILL RESIDE) Not To Be Reproduced 5-10 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _D_I_R_E_C_T_O_R_Y__H_E_A_D_E_R ox THE DIRECTORY HEADER IS ACCESSED AT THE BEGINNING OF DIRECTORY QUERY AND UPDATE OPERATIONS Not To Be Reproduced 5-11 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _D_I_R_E_C_T_O_R_Y__E_N_T_R_I_E_S ================================ INSERT Branch Entry DIAGRAM HERE ================================ Not To Be Reproduced 5-12 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _D_I_R_E_C_T_O_R_Y__E_N_T_R_I_E_S ============================== INSERT Link Entry DIAGRAM HERE ============================== Not To Be Reproduced 5-13 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _D_I_R_E_C_T_O_R_Y__E_N_T_R_I_E_S ox THE DIRECTORY ENTRY IS A DISK RESIDENT (RLV) DATA BASE CONTAINED WITHIN A DIRECTORY SEGMENT [] ONE DIRECTORY ENTRY (IN THE DIRECTORY SEGMENT) FOR EACH IMMEDIATELY INFERIOR ENTRY IN THE HIERARCHY ox EACH DIRECTORY ENTRY IS A DATA STRUCTURE DESCRIBING THE ATTRIBUTES OF A SEGMENT, DIRECTORY OR LINK ox DIRECTORY ENTRIES COME IN TWO FLAVORS: [] LINK ENTRY, (38 OR 72 WORDS) CONTAINING: [] DATE TIME MODIFIED AND DUMPED (BY THE HIERARCHY DUMPER, NOT VOLUME DUMPER) [] RELATIVE POINTERS TO THE ENTRY'S NAME LIST AND AUTHOR'S USER ID [] ABSOLUTE PATHNAME OF THE LINK'S TARGET [] UID OF PARENT DIRECTORY Not To Be Reproduced 5-14 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _D_I_R_E_C_T_O_R_Y__E_N_T_R_I_E_S [] BRANCH ENTRY, (38 WORDS) CONTAINING: [] DATE TIME MODIFIED AND DUMPED (BY THE HIERARCHY DUMPER, NOT VOLUME DUMPER) [] RELATIVE POINTERS TO THE ENTRY'S NAME LIST AND AUTHOR'S USER ID [] BRANCH'S UID, PVID, AND VTOC INDEX [] AIM CLASSIFICATION, ENTRY POINT BOUND, RING BRACKETS, AND RELATIVE POINTERS TO THE ACL [] BRANCH'S BIT COUNT AND BIT COUNT AUTHOR [] SON'S LVID (IF A DIRECTORY) AND PARENT'S UID [] FLAGS DESCRIBING VARIOUS STATES AND PROPERTIES OF THE ENTRY SUCH AS: DIRECTORY, MASTER DIRECTORY, SECURITY OUT OF SERVICE, COPY AND SAFETY SWITCH, ETC Not To Be Reproduced 5-15 MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__C_O_M_M_A_N_D_S _d_i_s_p_l_a_y__b_r_a_n_c_h ox DISPLAY_BRANCH - DISPLAYS BRANCHES IN THE DIRECTORY HIERARCHY [] OFTEN USEFUL ON CONJUNCTION WITH DUMP_VTOCE ! display_branch >udd>Multics>Sibert Branch for Sibert in >udd>Multics at 245|20742 UID 102401170050, is vtocx 63 on root4 (of log vol. root) Sibert is a directory. Ring brackets (0 0 0) Entry modified 02/23/83 1912.1 est Wed Dumped 03/20/83 0955.6 est Sun 9 names. ox DISPLAY IS NOT COMPLETE, SO A RING_ZERO_DUMP OF THE SAME DATA IS INCLUDED ! ring_zero_dump >udd>Multics 20742 46 -ch 020742 021310020604 000004000046 102401170050 446556324757 .......&B.x(.... 020746 400000000011 020752021152 001720000532 172000000000 .......j....z... 020752 021010000000 000006000016 020742000233 000000000000 ................ 020756 123151142145 162164040040 040040040040 040040040040 Sibert 020762 040040040040 040040040040 040040040040 040040040040 020766 000000000000 102401170050 446752147026 000000000000 ....B.x(..g..... 020772 135240026001 000063000000 400000000000 000000000000 ]....3.......... 020776 000000000000 000770000012 021170021300 001720000532 .........x...... 021002 172000000000 225072707470 000000000000 000000000000 z....:.......... 021006 033023254650 000000000000 ........ 6-i MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__C_O_M_M_A_N_D_S _d_i_s_p_l_a_y__b_r_a_n_c_h TOPIC VI Volume Management Page Volume Management Overview. . . . . . . . . . 6-1 The New Storage System. . . . . . . . . . . . 6-4 Volume Management Terminology . . . . . . . . 6-13 Volume Management Data Bases. . . . . . . . . 6-16 Volume Label. . . . . . . . . . . . . . . 6-16 Volume Map. . . . . . . . . . . . . . . . 6-19 Dumper Bit Map. . . . . . . . . . . . . . 6-23 VTOC Map. . . . . . . . . . . . . . . . . 6-25 Physical Volume Table (PVT) . . . . . . . 6-26 Logical Volume Table (LVT). . . . . . . . 6-29 Physical Volume Hold Table. . . . . . . . 6-32 Volume Management Operations. . . . . . . . . 6-34 Acceptance of Physical Volumes. . . . . . 6-35 Demounting of Physical Volumes. . . . . . 6-37 Logical Volume Management . . . . . . . . 6-39 Volume Management Commands. . . . . . . . . . 6-40 print_configuration_deck. . . . . . . . . 6-40 list_vols . . . . . . . . . . . . . . . . 6-42 display_label . . . . . . . . . . . . . . 6-44 display_pvte. . . . . . . . . . . . . . . 6-46 Volume Management Meters. . . . . . . . . . . 6-48 disk_meters . . . . . . . . . . . . . . . 6-48 device_meters . . . . . . . . . . . . . . 6-49 disk_queue. . . . . . . . . . . . . . . . 6-50 6-i MDD-003 _D_I_R_E_C_T_O_R_Y__C_O_N_T_R_O_L__C_O_M_M_A_N_D_S _d_i_s_p_l_a_y__b_r_a_n_c_h ox FUNCTION [] VOLUME MANAGEMENT IS RESPONSIBLE FOR THE MANAGEMENT OF PHYSICAL AND LOGICAL VOLUMES [] ITS TASKS INCLUDE: [] ACCEPTANCE AND DEMOUNTING OF PHYSICAL VOLUMES [] MAINTAINING THE ASSOCIATION BETWEEN PHYSICAL VOLUMES, LOGICAL VOLUMES, AND DISK DRIVES [] ENSURING THE INTEGRITY OF VOLUME CONTENTS [] MAKING VOLUME CONTENTS ACCESSABLE TO PAGE CONTROL (PAGES) AND SEGMENT CONTROL (VTOC ENTRIES) [] Not To Be Reproduced 6-0 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__O_V_E_R_V_I_E_W VOLUME MANAGEMENT IS INVOKED ONLY BY SUBROUTINE CALLS ox MAJOR DATA BASES [] PHYSICAL VOLUME TABLE (PVT) - ONE PER SYSTEM [] PHYSICAL VOLUME TABLE ENTRY (PVTE) - ONE PER DISK DRIVE KNOWN TO THE SYSTEM [] EACH PVTE IDENTIFIES A DRIVE'S DEVICE NUMBER, SUBSYSTEM NAME, DEVICE TYPE, AND INFORMATION ABOUT THE PHYSICAL VOLUME CURRENTLY MOUNTED [] USED TO MAP REFERENCES TO PAGES OF SEGMENTS INTO AN I/O REQUEST TO THE CORRECT DISK DRIVE [] LOGICAL VOLUME TABLE (LVT) - ONE PER SYSTEM [] LOGICAL VOLUME TABLE ENTRY (LVTE) - ONE PER MOUNTED LOGICAL VOLUME [] EACH LVTE CONTAINS THE LOGICAL VOLUME ID, POINTERS TO MEMBER PVTE'S, AIM CLASS LIMITS, ETC. [] USED TO DETERMINE A USER'S ACCESS TO A LOGICAL VOLUME (PRIVATE OR PUBLIC) AND TO LOCATE MEMBER PHYSICAL VOLUMES [] VOLUME HEADER - ONE PER PACK [] VOLUME LABEL (REGISTRATION AND ACCEPTANCE INFORMATION) Not To Be Reproduced 6-1 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__O_V_E_R_V_I_E_W [] VOLUME MAP (OCCUPIED/VACANT INFORMATION FOR VOLUME CONTENTS) [] RECORD STOCKS - ONE PER MOUNTED VOLUME [] ONLINE CACHE OF INFORMATION ABOUT USED / UNUSED RECORDS ON THE VOLUME [] THIS INFORMATION IS DERIVED FROM THE VOLUME MAP, BUT KEPT ONLINE TO AVOID THE NECESSITY OF REFERRING TO THE VOLUME MAP ON DISK EVERY TIME A RECORD IS ALLOCATED OR FREED [] WHEN THE CACHE BECOMES COMPLETELY EMPTY OR COMPLETELY FULL, IT MUST BE UPDATED FROM/TO DISK - A PROTOCOL ENSURES THAT THE COPY ON DISK IS ALWAYS CONSISTENT [] PROVIDED BY VOLUME MANAGEMENT, BUT USED BY PAGE CONTROL [] VTOCE STOCKS - ONE PER VOLUME [] SIMILAR TO RECORD STOCKS, BUT MAINTAINS INFORMATION ABOUT USED / UNUSED VTOC ENTRIES ON THE VOLUME [] PROVIDED BY VOLUME MANAGEMENT, BUT USED BY SEGMENT CONTROL [] PHYSICAL VOLUME HOLD TABLE (PVHT) - ONE PER SYSTEM [] RECORDS THE COMMENCEMENT OF COMPOUND I/O OPERATIONS UPON A PHYSICAL VOLUME [] THIS INFORMATION PREVENTS A VOLUME FROM BEING DEMOUNTED WHILE SUCH AN OPERATION IS IN PROGRESS Not To Be Reproduced 6-2 MDD-003 _T_H_E__N_E_W__S_T_O_R_A_G_E__S_Y_S_T_E_M ======================= INSERT NSS DIAGRAM HERE ======================= Not To Be Reproduced 6-3 MDD-003 _T_H_E__N_E_W__S_T_O_R_A_G_E__S_Y_S_T_E_M ox SINCE RELEASE 4.0, THE MULTICS STORAGE SYSTEM HAS BEEN ORGANIZED INTO PHYSICAL AND LOGICAL VOLUMES HAVING THE FOLLOWING PROPERTIES [] A PHYSICAL VOLUME (PV) IS A DISK PACK (MOUNTED OR NOT) CONTAINING: [] A LABEL IDENTIFYING ITSELF - INCLUDING A PHYSICAL VOLUME ID (PVID) [] A VOLUME MAP DESCRIBING WHICH PAGES and VTOCES ARE IN USE AND WHICH ARE FREE. [] A VOLUME TABLE OF CONTENTS (VTOC) DESCRIBING WHICH SEGMENTS ARE RESIDENT THEREIN - AND THE EXACT LOCATION OF EACH OF THEIR PAGES [] THE PAGES OF RESIDENT SEGMENTS (ASSIGNED TO RECORDS OF 1024 WORDS IN SIZE) [] AND OPTIONALLY: CONTIGUOUS REGIONS CALLED PARTITIONS, SET ASIDE FOR SPECIAL USE (FDUMP IMAGES, HARDCORE PAGING, ETC) [] ALL PAGES OF A SEGMENT RESIDE ON A GIVEN PHYSICAL VOLUME [] THAT IS: EACH NON-ZERO PAGE OF A SEGMENT IS ASSIGNED TO A RECORD OF THE PHYSICAL VOLUME [] THE PAIR OF PHYSICAL VOLUME ID (PVID) AND VTOC INDEX UNIQUELY IDENTIFIES ANY SEGMENT IN THE STORAGE SYSTEM HIERARCHY Not To Be Reproduced 6-4 MDD-003 _T_H_E__N_E_W__S_T_O_R_A_G_E__S_Y_S_T_E_M [] A LOGICAL VOLUME (LV) CONSISTS OF ONE OR MORE PHYSICAL VOLUMES, WHICH ARE: [] GIVEN ONE LOGICAL VOLUME ID (LVID) [] ALWAYS MOUNTED AS A SET [] OFFSPRING (SONS, GRANDSONS, ETC) OF A DIRECTORY (NORMALLY) RESIDE WITHIN A GIVEN LOGICAL VOLUME [] IN OTHER WORDS, A SUB-TREE (NORMALLY) SPANS NO MORE THAN ONE LOGICAL VOLUME [] DIRECTORY SEGMENTS ARE AN EXCEPTION TO THE ABOVE AS ALL DIRECTORY SEGMENTS ARE ASSIGNED TO A LOGICAL VOLUME OF THEIR OWN CALLED THE "ROOT LOGICAL VOLUME" (RLV) [] THE PHYSICAL VOLUME CONTAINING THE ROOT DIRECTORY IS CALLED "THE ROOT PHYSICAL VOLUME" (RPV) [] THE RLV IS SPECIAL BECAUSE IT MUST ALWAYS BE MOUNTED, AND IT CONTAINS ALL DIRECTORY SEGMENTS, BUT IT ALSO CONTAINS OTHER SEGMENTS [] SHOULD THE GROWING OF A SEGMENT CAUSE A PHYSICAL VOLUME TO BECOME FULL, A "SEGMENT MOVE" IS AUTOMATICALLY INITIATED [] THIS IS ONE OF THE MOST COMPLEX AND EXPENSIVE SERVICES PERFORMED BY THE SYSTEM - BUT HAPPENS VERY INFREQUENTLY Not To Be Reproduced 6-5 MDD-003 _T_H_E__N_E_W__S_T_O_R_A_G_E__S_Y_S_T_E_M [] SHOULD A LOGICAL VOLUME BECOME FULL: [] USER AND SYSTEM ERROR MESSAGES ARE GENERATED [] SPACE MUST BE OBTAINED ON THE LOGICAL VOLUME BY ADDING MORE PHYSICAL VOLUMES OR BY DELETING OR MOVING SEGMENTS FROM THE LOGICAL VOLUME [] BECAUSE IT CONTAINS ALL DIRECTORY SEGMENTS, SPACE ON THE RLV IS CRITICAL: IF IT IS USED UP, THE SYSTEM MAY NOT BE ABLE TO CONTINUE OPERATION. [] THE CHOICE OF WHICH PHYSICAL VOLUME TO USE WHEN CREATING A SEGMENT IS MADE IN SUCH A WAY AS TO TRY TO BALANCE THE ALLOCATED SPACE ON ALL THE PHYSICAL VOLUMES OF A LOGICAL VOLUME Not To Be Reproduced 6-6 MDD-003 _T_H_E__N_E_W__S_T_O_R_A_G_E__S_Y_S_T_E_M ============================= INSERT PV Format DIAGRAM HERE ============================= Not To Be Reproduced 6-7 MDD-003 _T_H_E__N_E_W__S_T_O_R_A_G_E__S_Y_S_T_E_M ========================================== INSERT Hierarchy to SS Maping DIAGRAM HERE ========================================== Not To Be Reproduced 6-8 MDD-003 _T_H_E__N_E_W__S_T_O_R_A_G_E__S_Y_S_T_E_M ox IF ONE KNOWS WHERE THE ROOT DIRECTORY IS, ALL SEGMENTS IN THE MULTICS HIERARCHY CAN BE FOUND (ASSUMING THE AVAILABILITY OF ALL REQUIRED PHYSICAL VOLUMES) ox MAJOR DESIGN POINT [] MANY DISK RESIDENT DATA BASES (TO INCLUDE THE PAGES OF SEGMENTS) ARE COPIED INTO MAIN MEMORY AND WRITTEN BACK TO DISK AT SUCH TIMES AS: [] SYSTEM START-UP/SHUT-DOWN [] PHYSICAL VOLUME MOUNTING/DEMOUNTING [] SEGMENT ACTIVATION/DEACTIVATION [] PAGE FAULTS [] WHILE IN MAIN MEMORY, THE MEMORY RESIDENT COPY IS CONSIDERED TO BE _T_H_E COPY [] WHILE IN MAIN MEMORY, THE DISK RESIDENT COPY IS CONSIDERED TO BE (AND OFTEN IS) WHOLLY INVALID Not To Be Reproduced 6-9 MDD-003 _T_H_E__N_E_W__S_T_O_R_A_G_E__S_Y_S_T_E_M =================================== INSERT Disk Statistics DIAGRAM HERE =================================== Not To Be Reproduced 6-10 MDD-003 _T_H_E__N_E_W__S_T_O_R_A_G_E__S_Y_S_T_E_M ====================================== INSERT LV/MD Relationship DIAGRAM HERE ====================================== Not To Be Reproduced 6-11 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__T_E_R_M_I_N_O_L_O_G_Y MOUNT: TO PHYSICALLY PLACE A DISK PACK ON A DRIVE AND CYCLE UP THE DRIVE. (PERFORMED BY THE OPERATOR, NOT BY SOFTWARE) ACCEPT: AFTER MOUNTING, TO ESTABLISH IN THE SUPERVISOR THE BINDING BETWEEN THE DRIVE AND THE PHYSICAL VOLUME MOUNTED PUBLIC: A LOGICAL VOLUME ATTRIBUTE INDICATING THAT THE VOLUME IS ATTACHED TO ALL PROCESSES (BY DEFAULT) WHEN ACCEPTED PRIVATE: A LOGICAL VOLUME ATTRIBUTE INDICATING THAT THE VOLUME IS ATTACHED ONLY TO REQUESTING PROCESSES (SUBJECT TO ACCESS CONTROLS) PARTITION: A REGION WITHIN A PHYSICAL VOLUME SET ASIDE FOR SPECIAL USE RECORD: A LOGICAL UNIT OF DISK SPACE, 1024 CONTIGUOUS WORDS IN SIZE. (NUMBERED/ADDRESSED FROM ZERO) SECTOR: A LOGICAL UNIT OF DISK SPACE, 64 CONTIGUOUS WORDS IN Not To Be Reproduced 6-12 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__T_E_R_M_I_N_O_L_O_G_Y SIZE. THE SMALLEST ADDRESSABLE UNIT OF DISK SPACE. A RECORD CONTAINS 16 SECTORS Not To Be Reproduced 6-13 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__T_E_R_M_I_N_O_L_O_G_Y PAGE: A 1024 WORD EXTENT OF DATA STARTING AT A 1024 WORD BOUNDARY OF A SEGMENT. SEGMENTS MUST BE AN INTEGER NUMBER OF PAGES IN SIZE. A PAGE CAN RESIDE IN ONE OR MORE OF THE FOLLOWING LOCATIONS: MAIN MEMORY FRAME DISK RECORD Not To Be Reproduced 6-14 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__L_A_B_E_L ================================== INSERT Volume Label 1 DIAGRAM HERE ================================== Not To Be Reproduced 6-15 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__L_A_B_E_L ================================== INSERT Volume Label 2 DIAGRAM HERE ================================== Not To Be Reproduced 6-16 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__L_A_B_E_L ox THE VOLUME LABEL IS A DISK RESIDENT DATA BASE OCCUPYING THE FIRST MULTICS RECORD OF EACH STORAGE SYSTEM PHYSICAL VOLUME [] ONE VOLUME LABEL PER PHYSICAL VOLUME ox THE LABEL IS GENERATED BY init_disk_pack (init_empty_root IF RPV LABEL) AND CONTAINS REGISTRATION AND STATUS INFORMATION ox THE LABEL IS INSPECTED WHEN THE VOLUME IS ACCEPTED AND UPDATED WHEN DEMOUNTED ox THE LABEL IS DIVIDED INTO SIX SECTORS [] GCOS REGION (SECTORS 0 TO 4) [] SKIPPED OVER BY MULTICS TO AVOID ACCIDENTAL OVERWRITING OF GCOS PACKS AND ALLOW FOR FUTURE COMPATABILITY [] PERMANENT REGION (SECTOR 5) [] CONTAINS PERMANENT PER-PV INFORMATION (EG: MANUFACTURERS SERIAL NUMBER) Not To Be Reproduced 6-17 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__L_A_B_E_L [] DYNAMIC INFORMATION REGION (SECTOR 6) [] CONTAINS INFORMATION RELATING TO THE MOST RECENT MOUNTING OF THE PV (EG: LAST MOUNT TIME) [] ALLOWS THE STORAGE SYSTEM TO ENSURE THE INTEGRITY OF THE PV [] ROOT INFORMATION REGION (SECTOR 7) [] DEFINED ONLY FOR THE ROOT PHYSICAL VOLUME [] CONTAINS DYNAMIC INFORMATION ABOUT THE ENTIRE STORAGE SYSTEM (EG: SHUT DOWN STATE, PAGING DEVICE STATE, ETC) [] PARTITION MAP (SECTOR 8) [] IDENTIFIES THE LOCATION AND LENGTH OF ANY RESIDENT PARTITIONS [] UNUSED (SECTORS 9 TO 13) Not To Be Reproduced 6-18 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__M_A_P ============================== INSERT Volume Map DIAGRAM HERE ============================== Not To Be Reproduced 6-19 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__M_A_P ox THE VOLUME MAP IS A DISK RESIDENT DATA BASE [] OCCUPIES RECORDS 1, 2, AND 3, IMMEDIATELY FOLLOWING THE VOLUME LABEL [] ONE VOLUME MAP PER PHYSICAL VOLUME ox THE VOLUME MAP IDENTIFIES THE EXTENT OF THE PAGING REGION, THE NUMBER OF VACANT RECORDS, AND THE STATE (VACANT/OCCUPIED) OF EVERY RECORD IN THE VOLUME'S PAGING REGION [] THIS INFORMATION IS ALSO DERIVABLE FROM AN ANALYSIS OF THE VTOC (AT CONSIDERABLE EXPENSE) - THIS IS DONE WHEN THE VOLUME IS SCAVENGED OR SALVAGED. ox RECORDS ARE TAKEN FROM THE VOLUME MAP DURING OPERATION AND PLACED IN THE RECORD STOCK [] RECORDS ARE ALLOCATED BY PAGE CONTROL FROM THE RECORD STOCK [] VOLUME MAP ON DISK IS ALWAYS CONSISTENT [] RECORDS MARKED FREE ON DISK ARE GUARANTEED TO BE FREE, AND SAFE TO RE-USE Not To Be Reproduced 6-20 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__M_A_P [] RECORDS MARKED AS ALLOCATED MAY NOT ACTUALLY BE IN-USE, IF A CRASH OCCURRED AND DESTROYED THE STOCK CONTENTS [] THIS SITUATION IS BENIGN, AND CORRECTED BY A SCAVENGE OR SALVAGE AT SOME CONVENIENT TIME [] RECORDS FREED ARE PLACED BACK IN THE STOCK [] IF STOCK FILLS, IT IS WRITTEN BACK TO THE VOLUME MAP [] CONSISTENCY IS ENSURED BY COMPLEX PROTOCOL IN PAGE CONTROL [] RECORD STOCK MECHANISM REPLACES FSMAP SEGMENTS IN PRE-MR10.0 SYSTEMS Not To Be Reproduced 6-21 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _D_U_M_P_E_R__B_I_T__M_A_P ================================== INSERT Dumper Bit Map DIAGRAM HERE ================================== Not To Be Reproduced 6-22 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _D_U_M_P_E_R__B_I_T__M_A_P ox THE DUMPER BIT MAP DESCRIBES WHICH VTOCES ON THE VOLUME HAVE BEEN VOLUME DUMPED [] ONE PER PHYSICAL VOLUME [] OCCUPIES RECORDS 4 AND 5, IMMEDIATELY FOLLOWING VOLUME MAP [] SEPARATE BIT MAPS FOR INCREMENTAL AND CONSOLIDATED VOLUME DUMPS Not To Be Reproduced 6-23 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _V_T_O_C__M_A_P ox THE VTOC MAP DESCRIBES THE LOCATION AND SIZE OF THE VTOC, AND CONTAINS A BIT MAP OF VTOC ALLOCATIONS [] OCCUPIES RECORD 6, IMMEDIATELY FOLLOWING THE DUMPER BIT MAP [] VTOC FOLLOWS, STARTING AT RECORD 8 [] RECORD 7 IS UNUSED ox VTOCES ARE TAKEN FROM THE VTOCE MAP AND PLACED IN AN ONLINE STOCK [] VTOCE STOCK IS LIKE RECORD STOCK, BUT LESS CRITICAL [] VTOCES ARE SELF-IDENTIFYING AS TO WHETHER THEY ARE IN USE OR NOT, SO IT IS NOT NECESSARY TO MAINTAIN PERFECT CONSISTENCY IF A CRASH OCCURS [] VTOCE MAP IS ALSO REBUILT BY SCAVENGE OR SALVAGE OPERATIONS [] VTOCE MAP REPLACES VTOCE FREE LIST IN PRE-MR10.0 SYSTEMS Not To Be Reproduced 6-24 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _P_H_Y_S_I_C_A_L__V_O_L_U_M_E__T_A_B_L_E__(_P_V_T_) ======================= INSERT PVT DIAGRAM HERE ======================= Not To Be Reproduced 6-25 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _P_H_Y_S_I_C_A_L__V_O_L_U_M_E__T_A_B_L_E__(_P_V_T_) ox THE PHYSICAL VOLUME TABLE (PVT) IS A HARDCORE, WIRED, PAGED DATA BASE MAINTAINED BY VOLUME MANAGEMENT [] ONE PVT PER SYSTEM ox THE PVT IS THE MOST IMPORTANT DATA BASE OF VOLUME MANAGEMENT, AND CONTAINS AN ARRAY OF PHYSICAL VOLUME TABLE ENTRIES (PVTE'S) [] ONE PVTE PER DISK DRIVE KNOWN TO THE SYSTEM ox EACH PVTE DESCRIBES: [] A DISK DRIVE CONFIGURED TO THE SYSTEM [] INCLUDING THE DEVICE NUMBER, DEVICE TYPE, SUBSYSTEM NAME AND OTHER INFORMATION NEEDED BY THE DISK DIM [] THE PHYSICAL VOLUME CURRENTLY MOUNTED ON THE DISK DRIVE [] INCLUDING THE PVID, LVID, AND OTHER INFORMATION TAKEN FROM THE VOLUME HEADER, VOLUME MAP AND VTOC MAP, NEEDED BY PAGE AND SEGMENT CONTROL (THE PV & LV NAMES ARE _N_O_T RECORDED HERE) Not To Be Reproduced 6-26 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _P_H_Y_S_I_C_A_L__V_O_L_U_M_E__T_A_B_L_E__(_P_V_T_) [] RECORD AND VTOCE STOCKS ARE LOCATED FROM THE PVT, BUT KEPT IN THE stock_seg Not To Be Reproduced 6-27 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _L_O_G_I_C_A_L__V_O_L_U_M_E__T_A_B_L_E__(_L_V_T_) ======================= INSERT LVT DIAGRAM HERE ======================= Not To Be Reproduced 6-28 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _L_O_G_I_C_A_L__V_O_L_U_M_E__T_A_B_L_E__(_L_V_T_) ox THE LOGICAL VOLUME TABLE (LVT) IS A HARDCORE, PAGED DATA BASE MAINTAINED BY VOLUME CONTROL [] ONE LVT PER SYSTEM ox THE LVT CONTAINS AN ARRAY OF LOGICAL VOLUME TABLE ENTRIES (LVTE'S) [] ONE LVTE FOR EACH MOUNTED LOGICAL VOLUME ox EACH LVTE DESCRIBES THE LOGICAL VOLUME TO INCLUDE: [] LVID AND AIM CLASSIFICATION [] RELATIVE POINTER TO THE THREAD OF PVTE'S OF ACCEPTED PHYSICAL VOLUMES THAT ARE MEMBERS OF THE LOGICAL VOLUME Not To Be Reproduced 6-29 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _L_O_G_I_C_A_L__V_O_L_U_M_E__T_A_B_L_E__(_L_V_T_) ox THE LVT IS REQUIRED AT THE FOLLOWING TIMES: [] SEGMENT CREATION [] SEGMENT MOVING TIME [] VOLUME MOUNTING AND DEMOUNTING [] INITIATION AND SEGMENT FAULT TIME (FOR PUBLIC/PRIVATE CHECK) Not To Be Reproduced 6-30 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _P_H_Y_S_I_C_A_L__V_O_L_U_M_E__H_O_L_D__T_A_B_L_E ================================== INSERT PVT Hold Table DIAGRAM HERE ================================== ox THE PHYSICAL VOLUME HOLD TABLE (PVHT) IS A HARDCORE DATA BASE MAINTAINED BY VOLUME MANAGEMENT [] ONE PVHT PER SYSTEM ox THE PVHT IDENTIFIES THE PHYSICAL VOLUME AND THE PROCESS ID OF PROCESS THAT HAS STARTED (AND HAS NOT YET COMPLETED) COMPOUND OPERATIONS UPON THE PHYSICAL VOLUME ox THIS INFORMATION PREVENTS A VOLUME FROM BEING DEMOUNTED WHILE SUCH AN OPERATION IS IN PROGRESS Not To Be Reproduced 6-31 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__D_A_T_A__B_A_S_E_S _P_H_Y_S_I_C_A_L__V_O_L_U_M_E__H_O_L_D__T_A_B_L_E ox INTERRUPTION OF A COMPOUND OPERATION CAUSES THE VOLUME TO BE MARKED AS CONTAINING AN INCONSISTENCY ox FOR CRASH ANALYSIS, sst.pvthp CONTAINS A POINTER TO THIS TABLE Not To Be Reproduced 6-32 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__O_P_E_R_A_T_I_O_N_S _A_C_C_E_P_T_A_N_C_E__O_F__P_H_Y_S_I_C_A_L__V_O_L_U_M_E_S ox THE ACCEPTANCE OF PHYSICAL VOLUMES IS THE MOST IMPORTANT AND FUNDAMENTAL OPERATION OF VOLUME MANAGEMENT ox PHYSICAL VOLUME ACCEPTANCE IS ACCOMPLISHED BY CALLING initializer_gate_$accept_fs_disk ox THE ROOT PHYSICAL VOLUME (RPV) IS ACCEPTED IN A SPECIAL FASHION DURING COLLECTION 2 OF BOOTLOAD [] THE RPV IS THE ONLY PV REQUIRED TO BOOTLOAD THE SYSTEM (MORE OF THE RLV WILL BE ACCEPTED BY RING ZERO DURING BOOTLOAD IF POINTED TO BY THE "ROOT" CONFIGURATION CARD) ox ACCEPTANCE INCLUDES: [] VALIDATE THAT THE DISK PACK MOUNTED IS THE PACK REQUESTED BY THE OPERATOR OR REQUESTING PROCESS VIA label.pvid [] DETERMINE THAT THE DISK PACK MOUNTED IS IN FACT A MEMBER OF _T_H_I_S HIERARCHY VIA label.root_pvid Not To Be Reproduced 6-33 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__O_P_E_R_A_T_I_O_N_S _A_C_C_E_P_T_A_N_C_E__O_F__P_H_Y_S_I_C_A_L__V_O_L_U_M_E_S [] INITIALIZING THE APPROPRIATE PVTE WITH DATA FROM THE LABEL, VOLUME MAP, AND VTOC MAP [] INITIALIZING THE INITIAL CONTENTS OF THE RECORD STOCK AND VTOCE STOCKS [] DETERMINING IF ANY VOLUME INCONSISTENCIES ARE PRESENT, AND LOGGING THIS INFORMATION [] VOLUME INCONSISTENCIES ARE CAUSED BY EVENTS WHICH MAY MEAN THAT THE DISK RESIDENT COPY OF THE VOLUME MAP OR VTOC MAP IS INCONSISTENT: [] A CRASH WITHOUT ESD - INDICATED BY label.time_map_updated and label.time_unmounted BEING UNEQUAL, DETECTED AT ACCEPTANCE TIME [] AN INCONSISTENCY DETECTED ONLINE, SUCH AS AN INVALID VTOC BIT MAP OR A REUSED ADDRESS [] AN I/O ERROR WHEN WRITING THE VOLUME MAP OR VTOC MAP DURING NORMAL OPERATION [] A COUNT IS KEPT IN THE LABEL, AND UPDATED AS NECESSARY [] NORMALLY, INCONSISTENCIES ARE MERELY LOGGED, AND LEFT FOR THE SITE TO TAKE CARE OF AT SOME CONVENIENT TIME [] IF AN RLV VOLUME CLAIMS ONLY A VERY SMALL NUMBER OF FREE PAGES, A VOLUME SALVAGE IS DONE AUTOMATICALLY TO TRY TO RECOVER ANY LOST DUE TO THE INCONSISTENCY, SINCE A FULL RLV WILL CAUSE SYSTEM CRASHES Not To Be Reproduced 6-34 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__O_P_E_R_A_T_I_O_N_S _A_C_C_E_P_T_A_N_C_E__O_F__P_H_Y_S_I_C_A_L__V_O_L_U_M_E_S [] WRITING OUT THE LABEL TO UPDATE label.time_map_updated. [] NOTE: label.time_map_updated AND label.time_unmounted ARE NOW UNEQUAL [] THIS INEQUALITY IMPLIES THAT THE VOLUME HAS _N_O_T BEEN PROPERLY SHUT DOWN, AND WILL BE MARKED INCONSISTENT IF ACCEPTED AGAIN IN THIS STATE [] MARKING THE PVTE AS "IN USE" (LAST STEP) Not To Be Reproduced 6-35 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__O_P_E_R_A_T_I_O_N_S _D_E_M_O_U_N_T_I_N_G__O_F__P_H_Y_S_I_C_A_L__V_O_L_U_M_E_S ox THE DEMOUNTING OF PHYSICAL VOLUMES INVOLVES REVERSING ALL OF THE STEPS TAKEN AT ACCEPTANCE TIME ox DEMOUNTING IS COMPLICATED BY THE FACT THAT THE PV MAY BE IN USE AT THE TIME ox DEMOUNTING IS ACCOMPLISHED BY CALLING demount_pv ("THE DEMOUNTER") ox ALL VOLUMES ARE DEMOUNTED AT SHUTDOWN TIME ox DEMOUNTING INCLUDES: [] TURNING ON pvte.being_demounted AND WAITING FOR ALL COMPOUND OPERATIONS TO TERMINATE [] DEACTIVATING ALL SEGMENTS FROM THE PV WHICH ARE ACTIVE. THIS INCLUDES: [] FLUSHING MAIN MEMORY AND PAGING DEVICE (IF PRESENT) OF ALL RELEVANT PAGES Not To Be Reproduced 6-36 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__O_P_E_R_A_T_I_O_N_S _D_E_M_O_U_N_T_I_N_G__O_F__P_H_Y_S_I_C_A_L__V_O_L_U_M_E_S [] UPDATING THE VTOCE'S FROM THE ASTE'S AND PAGE TABLES [] FLUSHING THE VTOC MANAGER'S BUFFER SEGMENT OF ALL RELEVANT VTOCE-PARTS [] EMPTYING THE RECORD AND VTOCE STOCKS BACK INTO THE VOLUME MAP AND VTOC MAP [] UPDATING THE VOLUME LABEL FROM THE PVTE, PARTICULARLY [] label.time_unmounted, label.time_map_updated, AND label.inconsistency_count [] PHYSICALLY CYCLING DOWN THE DISK DRIVE [] NOT DONE AT SYSTEM SHUTDOWN, HOWEVER ox ONLY ONE PV MAY BE DEMOUNTED AT A TIME Not To Be Reproduced 6-37 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__O_P_E_R_A_T_I_O_N_S _L_O_G_I_C_A_L__V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T ox LOGICAL VOLUME MANAGEMENT INCLUDES: [] MAINTAINING THE LOGICAL VOLUME TABLE (LVT) TO REFLECT THE STATE OF THE LOGICAL VOLUMES [] MAINTAINING, IN THE KNOWN SEGMENT TABLE (KST) OF EACH PROCESS, A TABLE OF PRIVATE LOGICAL VOLUMES MOUNTED TO THE PROCESS [] ANSWERING THE QUESTION OF WHETHER OR NOT A GIVEN LOGICAL VOLUME IS MOUNTED TO THE CALLING PROCESS [] OR, IF A PUBLIC LV, MOUNTED AT ALL (TO THE SYSTEM) [] PROVIDING THE HEAD OF THE PVT CHAIN FOR A GIVEN LV, FOR THE SEGMENT CREATION FUNCTION Not To Be Reproduced 6-38 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__C_O_M_M_A_N_D_S _p_r_i_n_t__c_o_n_f_i_g_u_r_a_t_i_o_n__d_e_c_k ox PRINT_CONFIGURATION_DECK - DISPLAYS >sl1>config_deck, WHICH CONTAINS INFORMATION ABOUT DISK LOCATIONS, THE RLV, AND PARTITIONS [] ONLY THE PART OF THE CONFIG DECK RELEVANT TO VOLUME MANAGEMENT AND DISK CONFIGURATION IS SHOWN HERE root dska 16. dskb 25. dskb 23. dskb 24. dska 8. part bos dska 16. part dump dska 16. part log dska 16. prph dska a 20. 2 451. 16. chnl dska a 26. 2 b 24. 2 b 22. 2 prph dskb b 20. 2 0 16. 451. 16. chnl dskb b 26. 2 a 24. 2 a 22. 2 prph dskc a 28. 2 501. 32. chnl dskc a 30. 2 b 30. 2 b 28. 2 prph dske b 32. 2 451. 8. chnl dske b 34. 2 prph dskf a 32. 2 501. 16. chnl dskf a 34. 2 mpc mspa 451. a 20. 4 a 24. 4 mpc mspb 451. b 20. 4 b 24. 4 mpc mspc 607. a 28. 4 mpc mspd 607. b 28. 4 mpc mspe 451. b 32. 4 mpc mspf 607. a 32. 4 Not To Be Reproduced 6-39 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__C_O_M_M_A_N_D_S _p_r_i_n_t__c_o_n_f_i_g_u_r_a_t_i_o_n__d_e_c_k ox DISK CONFIGURATION CONFIG CARDS [] ROOT [] IDENTIFIES THOSE VOLUMES IN THE ROOT LOGICAL VOLUME WHICH HAVE HC PARTITIONS, USED BY THE SUPERVISOR FOR PAGING OF SUPERVISOR SEGMETNS [] PART [] IDENTIFIES THE LOCATIONS OF CERTAIN IMPORTANT PARTITIONS [] ONLY PARTITIONS NECESSARY FOR MULTICS OPERATIONS ARE IDENTIFIED, NOT ALT PARTITIONS [] HC PARTITIONS ARE LOCATED BY THE ROOT CARD [] PRPH DSK_n, CHNL [] IDENTIFY PHYSICAL I/O CHANNEL PATHS FOR ACCESSING DISK DRIVES [] MPC [] IDENTIFY PHYSICAL CONNECTIONS TO MICROPROGRAMMED DISK CONTROLLERS Not To Be Reproduced 6-40 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__C_O_M_M_A_N_D_S _l_i_s_t__v_o_l_s ox LIST_VOLS - DISPLAYS A TABLE OF ONLINE VOLUMES, THEIR LOCATION, AND SPACE UTILIZATION Drive Records Left % VTOCEs Left % Avg PV PB/PD LV Name Size Name dskc_17 64504 54730 85 13440 11356 84 4 alpha01 pb pd Alpha dskc_18 64504 55389 86 13440 11352 84 4 alpha02 pb pd Alpha dska_05 36428 5305 15 8400 2662 32 5 mul03 pb pd Multics_Pubs dska_06 36428 4323 12 8400 2365 28 5 mul01 pb pd Multics_Pubs dskb_19 36428 4632 13 8400 2813 33 5 mul02 pb pd Multics_Pubs dskb_26 36429 13690 38 8400 4326 52 5 mul05 pb pd Multics_Pubs dskb_27 36429 4672 13 8400 2333 28 5 mul04 pb pd Multics_Pubs dska_01 36308 4680 13 9000 450 5 3 pub01 pb pd Public dska_03 36268 3588 10 9200 1017 11 3 pub07 pb pd Public dska_04 36268 4500 12 9200 884 10 3 pub04 pb pd Public dska_09 36268 4816 13 9200 864 9 3 pub02 pb pd Public dskb_17 36269 4281 12 9200 1002 11 3 pub05 pb pd Public dskb_18 36268 3840 11 9200 539 6 3 pub08 pb pd Public dskc_13 64504 294 0 13440 5539 41 8 rel01 Release dskc_14 64504 269 0 13440 5214 39 7 rel02 Release dskc_01 64503 43631 68 13440 10032 75 6 xpub01 pb Xpublic dskc_02 64503 45502 71 13440 9838 73 5 xpub02 pb Xpublic dskc_03 64503 42374 66 13440 9839 73 6 xpub03 pb Xpublic dskc_04 64503 43591 68 13440 9785 73 5 xpub04 pb Xpublic dskc_09 64504 58010 90 13440 12394 92 6 xpub05 pb Xpublic dskc_10 64504 56786 88 13440 12407 92 7 xpub06 pb Xpublic dskc_21 64503 23947 37 13440 6446 48 5 ypub01 pb Ypublic dskc_22 64503 23744 37 13440 6194 46 5 ypub02 pb Ypublic dskc_29 64503 23794 37 13440 6185 46 5 ypub05 pb Ypublic dskc_30 64503 24111 37 13440 6481 48 5 ypub06 pb Ypublic dskc_07 64503 11723 18 13440 6149 46 7 zpub01 pb pd Zpublic dskc_08 64503 11665 18 13440 6429 48 7 zpub02 pb pd Zpublic dskc_23 64504 9777 15 13440 6094 45 7 zpub03 pb pd Zpublic dskc_24 64504 11805 18 13440 6141 46 7 zpub04 pb pd Zpublic dskc_25 64504 11514 18 13440 7407 55 8 zpub05 pb pd Zpublic dskc_26 64504 12958 20 13440 7149 53 8 zpub06 pb pd Zpublic dske_06 37089 8053 22 5100 3797 74 22 list01 pb pd list_1 dska_12 37562 6046 16 2735 957 35 17 list02 pb list_2 dska_07 37309 6825 18 4000 2107 53 16 list03 pb list_3 dska_08 36209 3827 11 7000 491 7 4 root5 pb root dska_11 36209 8597 24 7000 4181 60 9 root6 pb root Not To Be Reproduced 6-41 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__C_O_M_M_A_N_D_S _l_i_s_t__v_o_l_s dska_16 31283 2892 9 9000 3476 39 5 rpv pb root dskb_23 36208 4888 13 7000 455 7 4 root3 pb root dskb_24 36209 3097 9 7000 238 3 4 root4 pb root dskb_25 36350 4483 12 7000 223 3 4 root2 pb root Not To Be Reproduced 6-42 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__C_O_M_M_A_N_D_S _d_i_s_p_l_a_y__l_a_b_e_l ox DISPLAY_LABEL - DISPLAYS THE LABEL OF A STORAGE SYSTEM VOLUME BY READING IT FROM DISK [] USED / FREE INFORMATION IS COPY ON DISK, AND THEREFORE OUT OF DATE WITH RESPECT TO THE PVTE Label for Multics Storage System Volume rpv on dska_01 d451 PVID 220531524345 Serial rpv Logical Volume root LVID 220531524466 Registered 01/28/81 1249.5 Dismounted 03/15/83 0741.9 Map Updated 03/15/83 0744.6 Salvaged 10/01/82 0300.3 Bootload 03/15/83 0743.5 Reloaded 01/28/81 1510.1 Dumped Incremental 03/17/83 2153.0 Consolidated 03/16/83 2359.3 Complete 03/15/83 2353.0 Inconsistencies 0 Minimum AIM 0:000000 Maximum AIM 7:777777 Volume contains Root (>) at vtocx 0 disk_table_ at vtocx 100 (uid 033022210261) Volume Map from Label First Rec (Octal) Size 0 0 8 Label Region 8 10 2000 VTOC Region 2008 3730 2008 hc Partition 4016 7660 33901 Paging Region 37917 112035 200 bos Partition Not To Be Reproduced 6-43 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__C_O_M_M_A_N_D_S _d_i_s_p_l_a_y__l_a_b_e_l 38117 112345 141 alt Partition 38258 Total Size Not To Be Reproduced 6-44 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__C_O_M_M_A_N_D_S _d_i_s_p_l_a_y__p_v_t_e ox DISPLAY_PVTE - DISPLAYS THE PVT ENTRY OF A STORAGE SYSTEM VOLUME [] PARTITION INFORMATION IS NOT DETAILED IN THE PVTE, BUT USED/FREE INFORMATION IS COMPLETELY UP TO DATE PVTE for Multics Storage System Volume rpv on dska_01 d451 at pvt|50 PVID 220531524345 LVID 220531524466 VTOCEs Number 10000 Left 3323 Records Number 33901 Left 3796 Inconsistencies 0 Volume Map volmap_seg ASTE 15|4420 record stock 76|100 Page 0 - Base 7660 Free 3364 Page 1 - Base 103660 Free 3740 Page 2 - Base 203660 Free 0 vtoce stock 76|2400 ON: storage_system permanent hc_part_used OFF: being_mounted being_demounted being_demounted2 scav_check_address device_inoperative vacating dmpr_in_use(incr) dmpr_in_use(cons) dmpr_in_use(comp) Volume Map from PVTE First Rec (Octal) Size 0 0 8 Label Region 8 10 2000 VTOC Region Not To Be Reproduced 6-45 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__C_O_M_M_A_N_D_S _d_i_s_p_l_a_y__p_v_t_e 2008 3740 2008 Partitions 4016 7660 33901 Paging Region 37917 112035 199 Partitions 38258 Total Size Not To Be Reproduced 6-46 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__M_E_T_E_R_S _d_i_s_k__m_e_t_e_r_s ox DISK_METERS - DISPLAYS I/O ACTIVITY TO DISK DRIVES [] ONLY ONE SUBSYSTEM SHOWN HERE TO CONSERVE SPACE Total metering time 0:20:12 Subsystem dska Count Waits %Waits Avg. Wait(ms.) call locks 26005 217 0.83 0.259 run locks 112 0 0.00 0.000 interrupt locks 25998 239 0.92 0.208 allocations 26001 0 0.00 0.000 Drive Reads Writes Seek ATB ATB ATB Distance Reads Writes I/O 1 269 67 214 4508 18102 3609 3 362 243 109 3350 4991 2004 4 309 131 184 3925 9258 2756 5 547 165 180 2217 7350 1703 6 631 165 161 1922 7350 1523 7 0 0 0 0 0 0 8 5843 2187 122 207 554 151 9 366 116 153 3313 10455 2516 11 3501 1431 200 346 847 245 12 0 0 0 0 0 0 16 7158 2508 135 169 483 125 Not To Be Reproduced 6-47 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__M_E_T_E_R_S _d_e_v_i_c_e__m_e_t_e_r_s ox DEVICE_METERS - DISPLAYS SUMMARY OF I/O ACTIVITY FOR ALL DISK SUBSYSTEMS Total metering time 0:20:13 dska dskb dskc dskd Prior Page I/O 18571 17743 462 1273 ATB 65.334 68.383 2626.240 953.121 Other Page I/O 6525 5135 16 696 ATB 185.949 236.284 75832.692 1743.280 ATB Page I/O 48.347 53.034 2538.332 616.212 Prior VTOCE I/O 934 895 38 304 ATB 1299.061 1355.668 31929.554 3991.194 ATB I/O 46.612 51.037 2351.401 533.798 % Busy 76 74 0 4 Avg. Page Wait 47.289 46.197 20.341 24.666 Avg. Page ^Wait 176.082 101.023 36.996 61.704 Avg VTOCE Wait 41.138 37.610 38.595 29.090 Avg. Page I/O T 35.619 38.314 20.050 22.482 Avg. VTOCE I/O T 31.139 32.277 37.060 26.606 EDAC Corr. Errs 0 0 0 0 Errors 0 0 0 1 Fatal Errors 0 0 0 0 Not To Be Reproduced 6-48 MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__M_E_T_E_R_S _d_i_s_k__q_u_e_u_e ox DISK_QUEUE - DISPLAYS I/O QUEUE FOR A DISK SUBSYSTEM [] ONLY ONE SUBSYSTEM SHOWN HERE TO CONSERVE SPACE Connects = 2604781, 1359725, 677321, 309367, 123430, 40159, 10227, 1969. P RW VP DV SECTOR MEM 0 W P 24 1350330 27304000 0 W P 9 1020150 4432000 0 W P 16 1204130 36246000 0 W P 16 314370 27306000 0 W P 16 314430 34166000 TOPIC VII Page Segment Control Overview. . . . . . . . . . . 7-1 Segment Control Terminology . . . . . . . . . 7-4 Segment Control Data Bases. . . . . . . . . . 7-5 Volume Table of Contents (VTOC) . . . . . 7-5 Active Segment Table (AST). . . . . . . . 7-11 Services of Segment Control . . . . . . . . . 7-25 Creating Segments . . . . . . . . . . . . 7-25 Segment Fault . . . . . . . . . . . . . . 7-28 Segment Activation. . . . . . . . . . . . 7-29 Segment Trailers. . . . . . . . . . . . . 7-30 Boundsfault Handling. . . . . . . . . . . 7-32 Segment Deactivation. . . . . . . . . . . 7-35 Summary of Major Services . . . . . . . . 7-37 Encacheability. . . . . . . . . . . . . . 7-38 Truncating Segments . . . . . . . . . . . 7-38 Deleting Segments . . . . . . . . . . . . 7-40 Other Services. . . . . . . . . . . . . . 7-42 Segment Control Meters. . . . . . . . . . . . 7-44 7-i MDD-003 _V_O_L_U_M_E__M_A_N_A_G_E_M_E_N_T__M_E_T_E_R_S _d_i_s_k__q_u_e_u_e file_system_meters. . . . . . . . . . . . 7-44 vtoc_buffer_meters. . . . . . . . . . . . 7-46 Segment Control Commands. . . . . . . . . . . 7-47 print_aste_ptp. . . . . . . . . . . . . . 7-47 dump_vtoce. . . . . . . . . . . . . . . . 7-48 7-i MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__O_V_E_R_V_I_E_W ox FUNCTION [] SEGMENT CONTROL IS RESPONSIBLE FOR THE MANAGEMENT OF _L_O_G_I_C_A_L _M_E_M_O_R_Y [] ITS TASKS INCLUDE: [] MAINTAINING THE DISK RESIDENT MAPS OF SEGMENTS (IE: THEIR VTOCE'S) [] SEGMENT CREATION, TRUNCATION AND DELETION [] SEGMENT ACTIVATION AND DEACTIVATION (ASTE MULTIPLEXING) [] SEGMENT CONTROL CAN BE INVOKED EITHER BY SUBROUTINE CALLS OR BY SEGMENT FAULTS ox BASIC PHILOSOPHY OF ACTIVATION/DEACTIVATION [] OF ALL SEGMENTS RESIDENT WITHIN THE SYSTEM'S MOUNTED PHYSICAL VOLUMES, ONLY A SMALL SUBSET WILL REQUIRE ACCESSING AT ANY ONE TIME. SUCH SEGMENTS WILL BE CALLED "ACTIVE SEGMENTS" [] A PART OF MAIN MEMORY, CALLED THE "ACTIVE SEGMENT TABLE" (AST), WILL BE RESERVED TO HOLD MANAGEMENT INFORMATION FOR THESE ACTIVE SEGMENTS (IDENTITY, PVT INDEX, LOCATION OF PAGES, ETC.) Not To Be Reproduced 7-1 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__O_V_E_R_V_I_E_W [] AS SEGMENTS FALL INTO DISUSE, THEIR "MANAGEMENT INFORMATION" IN THE AST WILL BE REPLACED WITH INFORMATION OF OTHER SEGMENTS REQUIRING ACTIVATION ox USER INTERFACE [] COMMAND LEVEL [] create, delete, truncate, etc. [] SUBROUTINE LEVEL [] hcs_$append_branch, hcs_$append_branchx, hcs_$delentry_seg, hcs_$delentry_file, hcs_$truncate_seg, hcs_$truncate_file, hcs_$force_write, etc ox MAJOR DATA BASES [] SYSTEM SEGMENT TABLE (SST) - ONE PER SYSTEM, SHARED WITH PAGE CONTROL. ONE MAJOR COMPONENT IS "OWNED" BY SEGMENT CONTROL: [] ACTIVE SEGMENT TABLE (AST) - ONE PER SYSTEM [] THE AST IS A LIST OF ACTIVE (CURRENTLY BEING USED) SEGMENTS [] ACTIVE SEGMENT TABLE ENTRY (ASTE) - ONE PER ACTIVE SEGMENT [] ASTES CONTAIN PHYSICAL VOLUME ID'S (PVID'S) AND VTOC Not To Be Reproduced 7-2 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__O_V_E_R_V_I_E_W INDEX'S (VTOCX'S) OF SEGMENTS. NEEDED BY SEGMENT CONTROL TO FIND THE SEGMENT ON DISK (HARDWARE) [] AST HASH TABLE [] ALLOWS EFFICIENT SEARCHING OF ASTE'S [] LOGICALLY PART OF THE AST, BUT ELSEWHERE FOR HISTORICAL REASONS [] DIRECTORY SEGMENTS [] CONTAIN LOCATIONS AND ATTRIBUTES OF SEGMENTS. LOCATION INFORMATION FROM DIRECTORY SEGMENTS IS PROVIDED TO SEGMENT CONTROL BY DIRECTORY CONTROL [] VOLUME TABLE OF CONTENTS (VTOC) - ONE PER PHYSICAL VOLUME [] VOLUME TABLE OF CONTENTS ENTRY (VTOCE) - ONE PER DISK-RESIDENT SEGMENT [] EACH VTOCE CONTAINS THE SEGMENT'S UNIQUE ID, CURRENT LENGTH, FILE MAP, ETC (NEED TO BUILD ASTE'S AND PT'S) [] VTOCES ARE READ AND WRITTEN ONLY BY SEGMENT CONTROL [] VTOCE STOCKS - FROM VOLUME MANAGEMENT [] USED WHEN CREATING AND DELETING VTOCES FOR SEGMENTS Not To Be Reproduced 7-3 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__T_E_R_M_I_N_O_L_O_G_Y MULTIPLEXING: CONTROLLED SHARING OF A REUSABLE RESOURCE VTOC: VOLUME TABLE OF CONTENTS (ONE PER PV). AN ARRAY OF VTOCE'S IDENTIFYING ALL SEGMENTS RESIDENT ON THE PHYSICAL VOLUME VTOCE: VOLUME TABLE OF CONTENTS ENTRY (ONE PER RESIDENT SEGMENT). CONTAINS IDENTIFICATION AND LOCATOR INFORMATION ABOUT A SEGMENT RESIDENT WITHIN THE PHYSICAL VOLUME SEGMENT: A COLLECTION OF INFORMATION (PROCEDURE OR DATA) GROUPED TOGETHER UNDER THE SAME ACCESS CONTROL CONSTRAINTS. EACH SEGMENT IS GIVEN ONE OR MORE NAMES AND A COLLECTION OF ATTRIBUTES INCLUDING LENGTH, ACCESS PERMISSIONS, ETC SEMI-PERMANENT ACTIVATION: ACTIVATING A SEGMENT AND TURNING ON ITS ENTRY HOLD SWITCH (aste.ehs) PREVENTING NORMAL (ASTE CONTENTION) DEACTIVATION Not To Be Reproduced 7-4 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__T_A_B_L_E__O_F__C_O_N_T_E_N_T_S__(_V_T_O_C_) ============================= INSERT VTOCE (1) DIAGRAM HERE ============================= Not To Be Reproduced 7-5 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__T_A_B_L_E__O_F__C_O_N_T_E_N_T_S__(_V_T_O_C_) ============================= INSERT VTOCE (2) DIAGRAM HERE ============================= Not To Be Reproduced 7-6 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__T_A_B_L_E__O_F__C_O_N_T_E_N_T_S__(_V_T_O_C_) ox THE "VOLUME TABLE OF CONTENTS" (VTOC) IS A DISK RESIDENT DATA BASE CONTAINING (OF INTEREST HERE) AN ARRAY OF ENTRIES KNOWN AS "VOLUME TABLE OF CONTENTS ENTRIES" (VTOCE'S) [] ONE VTOC PER PHYSICAL VOLUME [] ONE VTOCE PER SEGMENT ox EACH VTOCE CONTAINS RESIDENCY INFORMATION (AND SOME ATTRIBUTE INFORMATION) OF A PARTICULAR SEGMENT ox EACH VTOCE IS ADDRESSED BY INDEXING INTO THE ARRAY OF VTOCE'S [] CONSEQUENTLY, THE PAIR OF PVID AND VTOC INDEX UNIQUELY IDENTIFIES ANY SEGMENT IN THE STORAGE SYSTEM HIERARCHY ox EACH VTOCE IS 192 WORDS LONG AND IS DIVIDED INTO THREE LOGICAL PARTS: [] ACTIVATION INFORMATION (16 WORDS) Not To Be Reproduced 7-7 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__T_A_B_L_E__O_F__C_O_N_T_E_N_T_S__(_V_T_O_C_) [] CONTAINS ALL INFORMATION (EXCLUDING THE FILE MAP) NEEDED TO _U_S_E THE SEGMENT, OR MORE TECHNICALLY, TO ACTIVATE THE SEGMENT [] INCLUDES: UID, CURRENT LENGTH, RECORDS USED, MAXIMUM LENGTH, RECORDS USED, ETC [] ALL INFORMATION LIKELY TO CHANGE BECAUSE OF THE ACTIVATION [] INCLUDES: DATE TIME MODIFIED AND USED, QUOTA CELLS (IF A DIRECTORY), ETC [] FILE MAP (128 WORDS) [] AN ARRAY OF 256 RECORD ADDRESS OR NULL ADDRESS DETAILING WHERE EACH PAGE OF THE SEGMENT RESIDES [] A _N_U_L_L ADDRESS (NOT TO BE CONFUSED WITH A _N_U_L_L_E_D ADDRESS -- DISCUSSED LATER) INDICATES THAT NO RECORD OF THE VOLUME IS ASSIGNED TO THAT PAGE OF THE SEGMENT [] A RECORD ADDRESS IS THE ADDRESS OF THE RECORD ASSIGNED TO THAT PAGE OF THE SEGMENT (I.E., THE DISK RESIDENT HOME OF THE PAGE) [] NOTE: PAGE CONTROL _E_N_S_U_R_E_S THAT NO RECORD ADDRESS _E_V_E_R APPEARS (OR REMAINS) IN THE FILE MAP _U_N_L_E_S_S THE PAGE _A_C_T_U_A_L_L_Y APPEARS ON THE VOLUME [] PERMANENT INFORMATION (48 WORDS) [] CONTAINS ATTRIBUTES WHICH RARELY (IF EVER) CHANGE SUCH AS: [] UID'S OF SUPERIOR DIRECTORIES, AIM CLASSIFICATION, DATE TIME DUMPED (BY PHYSICAL VOLUME DUMPER) Not To Be Reproduced 7-8 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__T_A_B_L_E__O_F__C_O_N_T_E_N_T_S__(_V_T_O_C_) ox EACH VTOCE IS ALSO DIVIDED INTO THREE PHYSICAL PARTS: [] FIRST SECTOR (WORDS 0-63): [] CONTAINS ALL "ACTIVATION INFORMATION" AND THE FIRST PORTION OF THE FILE MAP [] SECOND SECTOR (WORDS 64-127): [] CONTAINS THE BULK OF THE FILE MAP [] THIRD SECTOR (WORDS 128-191): [] CONTAINS THE END OF THE FILE MAP AND ALL "PERMANENT INFORMATION" Not To Be Reproduced 7-9 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _V_O_L_U_M_E__T_A_B_L_E__O_F__C_O_N_T_E_N_T_S__(_V_T_O_C_) ox VTOCE I/O [] USING RECORD I/O (IN UNITS OF 1024 WORDS) TO ACCESS A VTOCE (192 WORDS) WOULD HAVE EXCESSIVE OVERHEAD FOR BUFFERS [] FURTHERMORE, BECAUSE MOST SEGMENTS ARE SMALL, MOST VTOCE ACCESSING IS ONLY CONCERNED WITH ACTIVATION INFORMATION AND THE FIRST PORTION OF THE FILE MAP, I.E., THE FIRST SECTOR (64 WORDS) [] TO TAKE ADVANTAGE OF THESE FACTS, VTOCE'S ARE ACCESSED VIA SECTOR I/O, NOT RECORD I/O [] A LARGE MECHANISM KNOWN AS THE VTOC MANAGER (vtoc_man) EXIST TO EFFICIENTLY MANAGE THIS SECTOR I/O AND ITS BUFFERING [] VTOCE I/O IS THE ONLY NON-PAGE I/O DONE TO DISK [] VTOCE I/O IS DONE IN PARTS (SECTORS) [] FOR A SEGMENT, OR A DIRECTORY WITHOUT TERMINAL QUOTA, PARTS ONE AND TWO CAN BE WRITTEN ENTIRELY FROM INFORMATION DERIVED FROM THE ASTE, AND NEED NOT BE READ IN FIRST [] PART THREE MUST ALWAYS BE READ BEFORE BEING WRITTEN, AS MUST PART ONE FOR A DIRECTORY WITH QUOTA [] ALL THREE PARTS OF A VTOCE ARE ALWAYS READ WHENEVER ANY PART IS REQUESTED, IN CASE THE OTHERS ARE NEEDED SOON AFTERWARDS Not To Be Reproduced 7-10 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) =========================== INSERT ASTE/PT DIAGRAM HERE =========================== Not To Be Reproduced 7-11 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) ox THE ACTIVE SEGMENT TABLE (AST) IS A HARDCORE, WIRED, UNPAGED, DATA BASE LOCATED WITHIN THE _SYSTEM _SEGMENT _TABLE (SST), AND CONSISTS OF AN ARRAY OF PAIRED ENTRIES KNOWN AS ACTIVE SEGMENT TABLE ENTRIES (ASTE'S) AND PAGE TABLES (PT'S) [] ONE AST PER SYSTEM [] ONE ASTE/PT PAIR PER ACTIVE SEGMENT ox IN ORDER FOR A SEGMENT TO BE ACCESSED VIA THE HARDWARE, VTOCE INFORMATION MUST BE BROUGHT INTO MAIN MEMORY ox THE 12 WORD ASTE (AND ITS ASSOCIATED PAGE TABLE) CAN BE THOUGHT OF AS THE MAIN MEMORY RESIDENT IMAGE OF THE VTOCE [] SPECIFICALLY, THE ASTE CONTAINS: [] THE VTOCE'S "ACTIVATION INFORMATION" SUCH AS THE SEGMENTS UID, CURRENT LENGTH, MAX LENGTH, DTU, DTM, QUOTA DATA [] AND NON-VTOCE INFORMATION SUCH AS: PVT INDEX, VTOC INDEX, VARIOUS FLAGS AND POINTERS Not To Be Reproduced 7-12 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) [] THE PAGE TABLE CONTAINS THE RECORD ADDRESS (TAKEN FROM THE VTOCE'S "FILE MAP") OF EACH NONZERO PAGE OF THE SEGMENT ox A SEGMENT HAVING AN ASTE AND A PAGE TABLE IS SAID TO BE ACTIVE [] "ACTIVATING" A SEGMENT IS THE PROCESS OF ALLOCATING (AND FILLING IN) AN ASTE AND A PAGE TABLE FOR THE SEGMENT [] CONVERSELY, "DEACTIVATING" A SEGMENT INVOLVES FREEING ITS ASTE AND PAGE TABLE FOR FURTHER USE [] BEING ACTIVE DOES NOT IMPLY THAT THE SEGMENT IS ACTUALLY IN USE BY ANY PROCESS ox SINCE THE AST IS A PART OF A SINGLE SEGMENT (HAVING FINITE SIZE), THE NUMBER OF ASTE/PT PAIRS IS FINITE, IMPLYING: [] ONLY A FINITE NUMBER OF SEGMENTS MAY BE ACTIVE AT ONE TIME [] WHEN A NON-ACTIVE SEGMENT IS REFERENCED, AND THERE ARE NO FREE ASTE'S AVAILABLE, SOME SEGMENT MUST BE DEACTIVATED [] THIS ASTE/PT MULTIPLEXING IS THE PRIME RESPONSIBILITY OF SEGMENT CONTROL Not To Be Reproduced 7-13 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) [] BEING A FINITE (AND A CRITICAL) SYSTEM RESOURCE, THE NUMBER OF ASTE/PT PAIRS CAN DRAMATICALLY AFFECT THE COMPETITION FOR ASTE'S, AND CONSEQUENTLY SYSTEM PERFORMANCE [] TOO FEW ASTE/PT PAIRS WILL CAUSE "SEGMENT THRASHING" [] TOO MANY ASTE/PT PAIRS WILL OCCUPY MAIN MEMORY FRAMES THAT MIGHT BETTER BE UTILIZED FOR NORMAL PAGING TRAFFIC, PERHAPS LEADING TO "PAGE THRASHING" [] CONSEQUENTLY, THE NUMBER OF ASTE/PT PAIRS IS A CRITICAL SYSTEM PARAMETER (SET ON THE SST CONFIG CARD) [] OF THE TWO POSSIBILITIES, TOO MANY OR TOO FEW, TOO FEW IS BY FAR THE WORSE Not To Be Reproduced 7-14 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) ======================================= INSERT Connecting Segments DIAGRAM HERE ======================================= Not To Be Reproduced 7-15 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) ox IN ORDER TO MAXIMIZE THE NUMBER OF ASTE/PT PAIRS WITHIN AN AST OF A GIVEN SIZE, ASTE/PT PAIRS COME IN FOUR FIXED SIZES: [] ASTE + A 4 WORD PAGE TABLE (16 WORDS TOTAL) [] FOR 0-4K SEGMENTS [] ASTE + A 16 WORD PAGE TABLE (28 WORDS TOTAL) [] FOR 5-16K SEGMENTS [] ASTE + A 64 WORD PAGE TABLE (76 WORDS TOTAL) [] FOR 17-64K SEGMENTS [] ASTE + A 256 WORD PAGE TABLE (268 WORDS TOTAL) [] FOR 65-256K SEGMENTS Not To Be Reproduced 7-16 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) ============================ INSERT AST Pool DIAGRAM HERE ============================ Not To Be Reproduced 7-17 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) ox THE SIZE OF EACH OF THE FOUR ASTE POOLS IS DETERMINED AT SYSTEM INITIALIZATION BY THE SST CONFIG CARD AND IS A CRITICAL SYSTEM TUNING PARAMETER ox SINCE THE FREQUENCY OF SMALL SEGMENTS IS HIGHER THAN THE FREQUENCY OF LARGE SEGMENTS, THE DISTRIBUTION OF ASTE'S IS NORMALLY AS FOLLOWS: [] 4K > 16K > 64K > 256K [] ON SYSTEM-M, IN PHOENIX, A 6 CPU, 8MW MEMORY, 200 USER SYSTEM, THE ASTE DISTRIBUTION IS NORMALLY: 3500 1500 750 250 ON MIT-MULTICS, A 3 CPU, 3.5MW MEMORY, 110 USER SYSTEM, THE ASTE DISTRIBUTION IS NORMALLY: 1700 600 220 75 ox A SEGMENT NORMALLY REMAINS ACTIVE (FOR >200 SECONDS) UNTIL FORCED TO GIVE UP ITS ASTE/PT PAIR TO ANOTHER SEGMENT (DEACTIVATION) Not To Be Reproduced 7-18 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) ox THIS DEACTIVATION CONSISTS OF: [] MAKING THE SEGMENT INACCESSIBLE TO USER PROCESSES [] DONE BY "CUTTING TRAILERS", IN THE PROGRAM setfaults.pl1 [] A LIST OF ALL SEGMENTS CONNECTED TO (USING) THE SEGMENT IS KEPT FOR THIS PURPOSE [] EVICTING ALL PAGES OF THE SEGMENT FROM MAIN MEMORY [] ONLY MODIFIED PAGES MUST BE WRITTEN BACK TO DISK. UNMODIFIED PAGES ARE SIMPLY OVERWRITTEN [] UPDATING THE VTOCE BY WRITING THE (POSSIBLY MODIFIED) ACTIVATION INFORMATION BACK TO THE VTOCE [] FREEING THE ASTE/PT PAIR ox SINCE ACTIVATING/DEACTIVATING SEGMENTS IS EXPENSIVE, THE CHOICE OF A SEGMENT FOR DEACTIVATION IS IMPORTANT, AND BELONGS TO THE SEGMENT REQUIRING ACTIVATION FURTHEST IN THE FUTURE Not To Be Reproduced 7-19 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) ox THE ALGORITHM WHICH CHOOSES A "BEST" SEGMENT FOR DEACTIVATION IS IMPLEMENTED IN THE PROGRAM get_aste, AND CONSIDERS SUCH FACTORS AS: [] THE PRESENCE OF ACTIVE INFERIORS (IF A DIRECTORY) [] THE NUMBER OF PAGES CURRENTLY IN MAIN MEMORY (SINCE WORK IS REQUIRED TO EVICT THE MODIFIED FRACTION OF SUCH PAGES AND BECAUSE THIS INDICATES "USED RECENTLY" IN SOME SENSE) [] IT LOOKS FIRST FOR A SEGMENT WITH NO INFERIORS, AND NO PAGES IN MEMORY, AND ALMOST ALWAYS SUCCEEDS - BUT IF IT FAILS, IT TRIES TO MAKE A "GOOD CHOICE", AND DEACTIVATES INFERIORS, AND/OR FLUSHES PAGES TO DISK IF NECESSARY Not To Be Reproduced 7-20 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) ===================================== INSERT Typical Used List DIAGRAM HERE ===================================== Not To Be Reproduced 7-21 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) ox NOTE: WHILE INSPECTING THE ASTE'S, OPPORTUNITY IS TAKEN TO NOTICE ASTE'S WHOSE FILE MAPS HAVE CHANGED AND TO UPDATE THEIR VTOCE'S [] KNOWN AS "AST TRICKLE" [] THIS IS DONE TOTALLY AS A HEDGE AGAINST A FATAL CRASH, AS A SUCCESSFUL SHUTDOWN UPDATES ALL VTOCE'S OF ACTIVE SEGMENTS [] THIS IS NOT DONE FOR PROCESS DIRECTORY SEGMENTS, SINCE THEIR CONTENTS ARE OF LITTLE USE AFTER A CRASH [] THE "AST TRICKLE" IS ALSO FORCED TO OCCUR EVERY FIFTEEN MINUTES WHEN THE SYSTEM IS LIGHTLY LOADED, BECAUSE OTHERWISE VTOCES MIGHT REMAIN UNUPDATED FOR HOURS Not To Be Reproduced 7-22 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) ox AST HIERARCHY [] MIRRORS A SUBSET OF THE STORAGE SYSTEM HIERARCHY [] THE ROOT DIRECTORY (>) CANNOT BE DEACTIVATED [] NO SEGMENT (EXCEPT THE ROOT) MAY BE ACTIVE UNLESS ITS PARENT IS ACTIVE. THE REASONS FOR THIS ARE: [] PARENT MUST BE ACTIVATED IN ORDER TO FIND THE SON [] ACTIVATION OF OTHER SONS IS EASIER IF THE PARENT REMAINS ACTIVE [] THE QUOTA ACCOUNT AGAINST WHICH AN ACTIVE SEGMENT'S "RECORDS USED" IS TALLIED SHOULD BE IMMEDIATELY AVAILABLE WHEN A SEGMENT CHANGES SIZE. THE QUOTA ACCOUNT IS FOUND IN ONE OF THE ANCESTORS' ASTES [] DATE TIME MODIFIED (DTM) FOR A DIRECTORY _I_S THE DTM OF THE LAST MODIFIED SEGMENT IN THE SUBTREE. DTM OF ALL ANCESTOR'S SHOULD BE IMMEDIATELY AVAILABLE WHEN A SEGMENT IS MODIFIED. DTM IS FOUND IN THE ASTE OF THE ANCESTORS. (USED BY THE HIERARCHY DUMPER) [] SUCH UPDATES TO THE ASTE'S OF PARENTS ARE PERFORMED BY PAGE CONTROL [] EACH ASTE HAS A POINTER TO ITS PARENT'S ASTE FOR THE ABOVE Not To Be Reproduced 7-23 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _A_C_T_I_V_E__S_E_G_M_E_N_T__T_A_B_L_E__(_A_S_T_) REASONS. (THIS POINTER IMPLEMENTS THE AST HIERARCHY) ox ASTE'S MAY BE THREADED ONTO ONE OF SIX LISTS VIA THE RELATIVE POINTERS aste.fp and aste.bp [] FOUR USED LISTS: THREADS ALL FREE AND REPLACEABLE ASTE'S OF EACH POOL SIZE (sst.level.ausedp POINTS TO THE FIRST FREE ASTE IN THE LIST) [] INIT AND TEMP LISTS: USED AT SYSTEM INITIALIZATION TO RECEIVE (AND DELETE) INITIALIZATION AND TEMPORARY SEGMENTS ox THERE ALSO EXIST SEVERAL AUXILIARY LISTS SUCH AS THE HASH THREAD AND FATHER-SON, AND BROTHERS LISTS ox ALL ACTIVE SEGMENTS IN THE HIERARCHY ARE IN THE FOUR USED LISTS - EXCEPT FOR SEGMENTS IN THE HARDCORE PARTITION (THE PAGED SUPERVISOR), AND A SMALL CLASS OF SEGMENTS WHICH MAY NOT BE DEACTIVATED [] SEGMENTS ARE SOMETIMES UNTHREADED FROM THEIR USED LIST TEMPORARILY IN ORDER TO KEEP THEM OUT OF REACH WHILE SOME COMPLEX OPERATION IS PERFORMED Not To Be Reproduced 7-24 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _C_R_E_A_T_I_N_G__S_E_G_M_E_N_T_S ox SEGMENT CREATION IS PERFORMED BY THE PROCEDURE create_vtoce [] INPUT: A POINTER TO THE BRANCH ENTRY IN A DIRECTORY SEGMENT [] OUTPUT: PVID AND VTOC INDEX OF THE CREATED SEGMENT ox create_vtoce MAY BE CALLED BY append (NORMAL SEGMENT CREATION) OR segment_mover (DUE TO PACK OVERFLOW) ox PRINCIPAL STEPS OF create_vtoce: [] CREATE A LOCAL IMAGE OF THE VTOCE TO BE CREATED [] FILL IN MOST ACTIVATION AND PERMANENT INFORMATION FROM THE BRANCH ENTRY [] CREATE A NULL FILE MAP [] DETERMINE THE UID PATH (UID'S OF SUPERIOR DIRECTORIES) Not To Be Reproduced 7-25 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _C_R_E_A_T_I_N_G__S_E_G_M_E_N_T_S [] SELECT AN APPROPRIATE PV WITHIN THE LV SPECIFIED BY THE sons_lvid OF THE DIRECTORY IN WHICH THE BRANCH ENTRY APPEARS [] SELECTION GOAL IS TO EVENLY DISTRIBUTE SEGMENTS OVER ALL PV'S OF THE LV, THEREBY REDUCING DISK CONTENTION [] SELECTION ALGORITHM WALKS THE CHAIN (THROUGH pvte.brother_pvtx) OF PV'S IN THE LV AND SELECTS THE PV HAVING THE HIGHEST _P_E_R_C_E_N_T_A_G_E OF UNUSED RECORDS IN ITS PAGING REGION [] NO PV IS ACCEPTED IF pvte.vacating IS ON, SIGNIFYING THAT sweep_pv IS TRYING TO VACATE, OR INHIBIT CREATION UPON, THE PV [] AN EXCEPTION IS MADE FOR PER PROCESS SEGMENTS (entry.per_process IS ON) [] SINCE SUCH SEGMENTS ARE ALL HEAVILY USED, A ROUND ROBIN ALGORITHM EVENLY DISTRIBUTES THESE SEGMENTS ACROSS ALL PV'S IN THE LV [] INVOKE THE VTOC MANAGER (vtoc_man$alloc_and_put_vtoce) TO ALLOCATE AND WRITE THE VTOCE IMAGE ON THE SELECTED PV [] VTOC_MAN ATTEMPTS TO ALLOCATE A VTOCE FROM THE VTOCE STOCK FOR THE VOLUME [] IF THE STOCK IS EMPTY, IT REFILLS IT FROM THE VTOCE MAP ON DISK (SEE vtoce_stock_man.pl1) [] BECAUSE IT IS PERMISSIBLE TO TAKE PAGE FAULTS IN THE VTOC_MAN ENVIRONMENT, THE VTOCE STOCK IS ACCESSED WITHOUT ANY SPECIAL PAGE CONTROL PROTOCOLS [] RETURNS THE VTOC INDEX OF THE ALLOCATED VTOCE Not To Be Reproduced 7-26 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _C_R_E_A_T_I_N_G__S_E_G_M_E_N_T_S [] RETURN THE PVID AND VTOC INDEX OF THE NEW SEGMENT TO THE CALLER (WHO RECORDS SAME IN entry.pvid AND entry.vtocx) Not To Be Reproduced 7-27 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _S_E_G_M_E_N_T__A_C_T_I_V_A_T_I_O_N ox SEGMENT ACTIVATION IS PERFORMED BY THE PROCEDURE "activate" [] INPUT: A POINTER TO THE BRANCH ENTRY IN A DIRECTORY SEGMENT [] OUTPUT: AN ASTE POINTER ox activate IS PRINCIPALLY CALLED BY seg_fault (OF ADDRESS/NAME SPACE MANAGEMENT) WHO HAS LOCATED THE SEGMENT'S BRANCH ENTRY, VALIDATED THE USER'S ACCESS, AND CHECKED THE PRESENCE OF THE LV ox PRINCIPAL STEPS OF activate: [] LOCK THE AST LOCK AND CHECK IF THE SEGMENT IS ALREADY ACTIVE. IF SO, UNLOCK THE AST AND RETURN ITS ASTE POINTER [] IF THE SEGMENT IS NOT ACTIVE, UNLOCK THE AST AND READ IN ALL REQUIRED PARTS OF THE VTOCE AND COMPARE UID'S FOR CONNECTION FAILURE (IN WHICH CASE, DO NOT ACTIVATE AND RETURN AN ERROR) [] ENSURE THAT THE SEGMENT'S PARENT IS ACTIVE [] THIS IS DONE BY REFERENCING THE PARENT DIRECTORY (PERHAPS CAUSING A RECURSIVE SEGMENT FAULT AND ACTIVATION) AND SETTING THE aste.ehs BIT FOR IT TEMPORARILY WHILE ACTIVATION IS TAKING PLACE Not To Be Reproduced 7-28 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _S_E_G_M_E_N_T__A_C_T_I_V_A_T_I_O_N [] NOTE THAT THE _O_N_L_Y EXPLICIT ACTION TAKEN TO ACTIVATE THE PARENT IS TO REFERENCE IT; THE POSSIBLE RECURSIVE SEGMENT FAULT TAKES CARE OF EVERYTHING AND ALLOWS THAT REFERENCE TO PROCEED [] OBTAIN AN ASTE FOR THE SEGMENT BY CALLING get_aste. THIS MAY INVOLVE DEACTIVATING SOME OTHER SEGMENT - BUT HOPEFULLY NOT THE PARENT! (ENSURED BY THE aste.ehs BEING ON) [] THREAD THE ASTE INTO THE INFERIOR LIST OF THE PARENT'S ASTE (THIS WILL KEEP HIM ACTIVE), AND RESET THE PARENT'S aste.ehs [] FILL IN THE ASTE WITH THE VTOCE'S ACTIVATION INFORMATION AND INITIAL FLAG VALUES [] CALL pc$fill_page_table (PASSING THE VTOCE'S FILE MAP) TO INITIALIZE THE PAGE TABLE AND OTHER PAGE CONTROL INFORMATION [] PLACE THE UID IN THE ASTE AND HASH IT INTO THE AST HASH TABLE [] AFTER A SYSTEM FAILURE, ESD USES A ZERO UID AS A CUE THAT THE ASTE IS INVALID, AND DOES NOT INVOKE A VTOCE UPDATE FOR THE ASTE Not To Be Reproduced 7-29 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _S_E_G_M_E_N_T__T_R_A_I_L_E_R_S ox WHEN A PROCESS IS USING A SEGMENT, AND IT HAS A VALID SDW FOR THAT SEGMENT, A RECORD MUST BE KEPT IN CASE IT IS NECESSARY TO REVOKE THAT SDW (WHEN THE SEGMENT IS DELETED, WHEN THE ASTE IS RE-USED, ETC) [] THIS IS DONE BY THE SEGMENT TRAILER MECHANISM [] EACH PROCESS WHICH HAS A VALID SDW FOR A SEGMENT HAS A "TRAILER ENTRY" WHICH RECORDS ITS PROCESS IDENTIFICATION AND THE SEGMENT NUMBER IT IS USING FOR THE SEGMENT [] TRAILER ENTRIES ARE KEPT IN THE str_seg, A PAGED SUPERVISOR SEGMENT [] THERE IS A LINKED LIST OF TRAILER ENTRIES FOR EACH SEGMENT; THE HEAD IS POINTED TO BY aste.strp [] TRAILERS ARE ONLY KEPT FOR SEGMENTS WHICH MAY BE DEACTIVATED: ORDINARY SEGMENTS AND DIRECTORIES, BUT NOT SUPERVISOR SEGMENTS [] A TRAILER IS ATTACHED FOR A SEGMENT BY seg_fault.pl1 BEFORE IT PLACES THE SDW INTO THE DSEG FOR THE PROCESS [] TRAILERS ARE USED LATER BY setfaults.pl1 FOR: [] DEACTIVATION - THE SDW IS ENTIRELY REVOKED (ZEROED) [] ACCESS CHANGES, DELETION - THE SDW IS MADE INVALID, BUT ITS PAGE TABLE ADDRESS IS LEFT UNCHANGED, INDICATING TO seg_fault.pl1 THAT ALL IT MUST DO IS RECALCULATE THE ACCESS Not To Be Reproduced 7-30 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _S_E_G_M_E_N_T__T_R_A_I_L_E_R_S [] PROCESS TERMINATION - ALL SDWS A PROCESS HAD ARE REVOKED AT TERMINATION [] CACHE CONTROL - WHEN THE ENCACHABILITY OF A SEGMENT CHANGES, THE SDWS WHICH REFER TO IT MUST HAVE THEIR CACHE CONTROL BITS UPDATED [] TRAILERS ARE ONLY REMOVED WHEN THE ASSOCIATED SDW IS REVOKED COMPLETELY Not To Be Reproduced 7-31 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _B_O_U_N_D_S_F_A_U_L_T__H_A_N_D_L_I_N_G ================================ INSERT Bounds Fault DIAGRAM HERE ================================ Not To Be Reproduced 7-32 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _B_O_U_N_D_S_F_A_U_L_T__H_A_N_D_L_I_N_G ox THE BOUNDSFAULT HANDLER IS THE PROCEDURE "boundsfault", INVOKED BY THE FAULT INTERCEPTER MODULE, FIM, WHEN THE BOUNDSFAULT IS DETECTED BY THE APPENDING UNIT HARDWARE ox BASIC STEPS OF BOUNDSFAULT [] USING THE SEGMENT NUMBER IN THE (SAVED) MACHINE CONDITIONS, FIND AND LOCK THE PARENT DIRECTORY, AND FIND THE BRANCH ENTRY [] LOCK THE AST AND FIND THE SEGMENT'S ASTE VIA get_ptrs_$given_segno. IF ATTEMPTED REFERENCE IS BEYOND THE MAXIMUM LENGTH (aste.msl) THEN CAUSE "out_of_bounds" TO BE SIGNALLED [] MAKE THE SEGMENT INACCESSIBLE TO USERS BY "CUTTING TRAILERS" [] TURN ON THE PARENT'S aste.ehs BIT AND CALL get_aste TO OBTAIN A LARGER ASTE [] CALL PAGE CONTROL'S pc$move_page_table TO MOVE ALL ASTE/PT INFORMATION TO THE NEW ASTE [] RETHREAD ALL INFERIOR LIST AND PARENT POINTERS AFFECTED AND TURN OFF THE PARENT'S aste.ehs BIT Not To Be Reproduced 7-33 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _B_O_U_N_D_S_F_A_U_L_T__H_A_N_D_L_I_N_G [] NOTE: IF THE SEGMENT IS A DIRECTORY, ALL FATHER POINTERS OF INFERIOR SEGMENTS MUST BE UPDATED [] THIS IS THE ONLY REASON FOR THE EXISTENCE OF INFERIOR LIST IN THE AST [] REMOVE THE OLD ASTE FROM THE AST HASH TABLE AND HASH IN THE NEW [] CALL put_aste TO FREE THE OLD ASTE [] UNLOCK THE AST AND RETURN A ZERO STATUS CODE TO THE FIM Not To Be Reproduced 7-34 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _S_E_G_M_E_N_T__D_E_A_C_T_I_V_A_T_I_O_N ox SEGMENT DEACTIVATION IS PERFORMED BY THE PROCEDURE "deactivate" [] INPUT: POINTER TO AN ASTE ox deactivate MAY BE CALLED BY: [] get_aste WHEN AN ASTE MUST BE FREED TO MAKE ROOM FOR A NEW SEGMENT [] delete_vtoce AS PART OF SEGMENT DELETING [] demount_pv IN ORDER TO UPDATE THE VTOCE'S (AND SEGMENTS) OF A DISK BEING DEMOUNTED ox PRINCIPAL STEPS OF deactivate: [] MAKE THE SEGMENT INACCESSIBLE TO USERS BY "CUTTING TRAILERS" [] CALL pc$cleanup TO REMOVE ALL PAGES OF THE SEGMENT FROM BULK STORE AND MAIN MEMORY, WRITING ALL MODIFIED PAGES TO DISK Not To Be Reproduced 7-35 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _S_E_G_M_E_N_T__D_E_A_C_T_I_V_A_T_I_O_N [] UPDATE THE VTOCE FROM THE NOW QUIESCENT ASTE [] THREAD THE ASTE OUT OF PARENT'S INFERIOR LIST, AND OUT OF THE AST HASH TABLE [] CALL put_aste TO CLEAR AND INITIALIZE THE ASTE/PT PAIR, AND THREAD THE ASTE AT THE HEAD OF THE APPROPRIATE USED LIST Not To Be Reproduced 7-36 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _S_U_M_M_A_R_Y__O_F__M_A_J_O_R__S_E_R_V_I_C_E_S ============================== INSERT Life Cycle DIAGRAM HERE ============================== Not To Be Reproduced 7-37 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _T_R_U_N_C_A_T_I_N_G__S_E_G_M_E_N_T_S ox SEGMENT TRUNCATION (IE: PAGE REMOVAL) IS PERFORMED BY THE PROCEDURE truncate_vtoce [] INPUT: A POINTER TO THE BRANCH ENTRY IN A DIRECTORY SEGMENT, AND A PAGE NUMBER FROM WHICH TO START TRUNCATING ox truncate_vtoce IS CALLED BY: [] truncate (DIRECTORY CONTROL) WHO HAS LOCATED THE SEGMENTS BRANCH ENTRY AND VALIDATED THE USER'S ACCESS [] delete_vtoce (SEGMENT CONTROL) WHO REQUIRES TRUNCATION (FROM PAGE #0) PRIOR TO VTOCE DELETION ox PRINCIPAL STEPS OF truncate_vtoce: [] IF SEGMENT IS ACTIVE, CALL pc$truncate WHO MARKS THE DEVICE ADDRESS OF ALL PAGES ABOVE THE PAGE NUMBER SPECIFIED AS "NULLED" ADDRESSES (DISCUSSED IN "PAGE CONTROL" TOPIC) [] IF SEGMENT IS NOT ACTIVE: [] READ IN ALL REQUIRED PARTS OF THE VTOCE AND COMPARE UID'S FOR CONNECTION FAILURE (RETURN AN ERROR IF SO) Not To Be Reproduced 7-38 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _T_R_U_N_C_A_T_I_N_G__S_E_G_M_E_N_T_S [] CALL get_pvtx$hold_pvtx TO PREVENT A DEMOUNT (IF CALLED BY truncate) [] COPY ALL ADDRESSES OF PAGES TO BE TRUNCATED FROM THE FILE MAP AND REPLACE THEM WITH "NULL" ADDRESSES [] FABRICATE A NEW VTOCE AND WRITE THE VTOCE BACK BY CALLING vtoc_man$put_vtoce [] IF ANY REAL ADDRESSES WERE COPIED FROM THE FILE MAP, AWAIT THE SUCCESSFUL COMPLETION OF THE VTOCE WRITE BY CALLING vtoc_man$await_vtoce [] CALL pc$deposit_list TO DEPOSIT (FREE) THESE REAL RECORD ADDRESSES [] CALL get_pvtx$release_pvtx TO AGAIN PERMIT DEMOUNTING (IF CALLED BY truncate). THIS CREATES AN ENTRY IN THE PV HOLD TABLE (SEE TOPIC 6, VOLUME MANAGEMENT) Not To Be Reproduced 7-39 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _D_E_L_E_T_I_N_G__S_E_G_M_E_N_T_S ox SEGMENT DELETION IS PERFORMED BY THE PROCEDURE delete_vtoce [] INPUT: A POINTER TO THE BRANCH ENTRY IN A DIRECTORY SEGMENT ox delete_vtoce IS CALLED BY delentry (OF DIRECTORY CONTROL FAME) WHO HAS LOCATED THE SEGMENT'S BRANCH ENTRY AND VALIDATED THE USER'S ACCESS ox PRINCIPAL STEPS OF delete_vtoce: [] CALL get_pvtx$hold_pvtx TO PREVENT A VOLUME DEMOUNT IN THE MIDDLE OF THE DELETION [] IF ACTIVE, MAKE THE SEGMENT INACCESSIBLE TO USERS (SEE "ADDRESS AND NAME SPACE MANAGEMENT", TOPIC 5) [] TRUNCATE THE SEGMENT TO ZERO LENGTH (SEE "TRUNCATING SEGMENTS" IN THIS TOPIC), FREEING ALL DISK, BULK STORE, AND MAIN MEMORY PAGES OCCUPIED BY THE SEGMENT [] IF THE SEGMENT IS A DIRECTORY SEGMENT HAVING A QUOTA ACCOUNT, CALL THE QUOTA MOVE PRIMITIVE (quotaw$mq) TO RELINQUISH THE QUOTA TO ITS SUPERIOR Not To Be Reproduced 7-40 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _D_E_L_E_T_I_N_G__S_E_G_M_E_N_T_S [] NOTE: DIRECTORY CONTROL IS RESPONSIBLE FOR DELETING ALL INFERIOR SEGMENTS BEFORE REQUESTING DELETION OF THE DIRECTORY - ENSURING A CONSISTENT HIERARCHY AND RECOVERY OF ALL INFERIOR QUOTA ACCOUNTS [] IF THE SEGMENT IS ACTIVE, DEACTIVATE IT, RELEASING ITS ASTE [] FREE THE VTOCE WITH A CALL TO vtoc_man$free_vtoce [] CALL get_pvtx$release_pvtx TO AGAIN PERMIT VOLUME DEMOUNTING Not To Be Reproduced 7-41 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _O_T_H_E_R__S_E_R_V_I_C_E_S ox OTHER SERVICES PERFORMED BY SEGMENT CONTROL INCLUDE: [] SEGMENT MOVING [] REQUIRED WHEN AN ATTEMPT IS MADE TO GROW A SEGMENT AND THERE IS NO MORE ROOM ON THE PHYSICAL VOLUME [] THE ENTIRE SEGMENT MUST BE MOVED TO ANOTHER PV WITHIN THE SAME LV --- TRANSPARENT TO THE USER AND DIRECTORY CONTROL [] THIS IS THE SINGLE MOST INVOLVED AND ESOTERIC SERVICE OF SEGMENT CONTROL [] SEMI-PERMANENT ACTIVATION [] ACTIVATING A SEGMENT INTO AN ASTE OF A GIVEN SIZE AND TURNING ON ITS aste.ehs (DONE BY grab_aste) [] SERVICES FOR sweep_pv [] LISTING THE VTOC OF A PACK (IE: REPORTING THE PATHNAMES OF ALL SEGMENTS OWNING VTOCE'S) [] THE LOCATING AND DELETING OF ORPHAN VTOCE'S (VTOCE'S NOT DESCRIBED IN ANY BRANCH) [] REBALANCING OR VACATING PACKS VIA DEMAND SEGMENT MOVING Not To Be Reproduced 7-42 MDD-003 _S_E_R_V_I_C_E_S__O_F__S_E_G_M_E_N_T__C_O_N_T_R_O_L _O_T_H_E_R__S_E_R_V_I_C_E_S [] SERVICES AT DEMOUNT/SHUTDOWN TIME [] DEACTIVATION OF ALL SEGMENTS ON THE VOLUME BEING DEMOUNTED AND WRITING OUT THE LABEL, ETC [] SERVICES FOR ADDRESS/NAME SPACE MANAGEMENT (SEE TOPIC 4) [] _DESCRIPTOR _S_E_GMENT (DSEG), _PROCESS _DATA _SEGMENT (PDS) AND _KNOWN _SEGMENT _TABLE (KST) MANAGEMENT [] SEGMENT FAULT HANDLING (seg_fault), CREATION, ENTRY HOLDING Not To Be Reproduced 7-43 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__M_E_T_E_R_S _f_i_l_e__s_y_s_t_e_m__m_e_t_e_r_s ox FILE_SYSTEM_METERS - DISPLAYS MISCELLANEOUS METERING INFORMATION FOR THE FILE SYSTEM [] ONLY PARTS RELEVANT TO SEGMENT CONTROL INCLUDED HERE; SEE TOPIC 8 (PAGE CONTROL) FOR THE REST Total metering time 0:20:02 # ATB Activations 1043 1.153 sec. segfault 969 1.241 sec. 92.905% of all makeknown 74 16.251 sec. 7.095% of all directories 96 12.527 sec. 9.204% of all Deactivations 1056 1.139 sec. Demand deactivate attempts 3 400.857 sec. Seg Faults 5080 0.237 sec. fault 4311 0.279 sec. 84.862% of Seg Faults call 769 1.564 sec. 15.138% of Seg Faults activations 969 1.241 sec. 19.075% of Seg Faults Bound Faults 220 5.466 sec. Setfaults 4484 268.191 msec. access 42 28.633 sec. 0.937% of setfaults ASTE Trickle 139 8.652 sec. Steps 4279 281.040 msec. Skips 3016 0.399 sec. 70.484% of Steps ehs 271 4.438 sec. 8.985% of Skips mem 1083 1.110 sec. 35.909% of Skips init 1662 0.724 sec. 55.106% of Skips Searches 0 0.000 sec. Cleanups 1056 1.139 sec. 0.1 % of real time Force writes 3 400.857 sec. pages written 3 400.857 sec. Lock AST 18422 0.065 sec. Not To Be Reproduced 7-44 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__M_E_T_E_R_S _f_i_l_e__s_y_s_t_e_m__m_e_t_e_r_s AVE/lock % AST locked 4.833 msec. 7.4 AST lock waiting 1.601 msec. 2.5 AST Sizes 4 16 64 256 Number 1701 601 221 74 Need 819 202 208 34 Steps 2341 645 1139 154 Ave Steps 2.9 3.2 5.5 4.5 Lap Time(sec) 873.8 1120.5 233.3 577.9 Not To Be Reproduced 7-45 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__M_E_T_E_R_S _v_t_o_c__b_u_f_f_e_r__m_e_t_e_r_s ox VTOC_BUFFER_METERS - DISPLAYS VTOC BUFFER MANAGER ACTIVITY Total metering time: 65:21:12 Routine # calls ATB(sec) get_vtoce 1346752 0.17 put_vtoce 0 0.00 alloc_and_put_vtoce 77378 3.04 free_vtoce 75664 3.11 await_vtoce 93370 2.52 GET_BUFFERS 2732265 0.09 1656952 Hits ( 60.6% of calls) WAIT 946437 0.25 946435 TC Waits (100.0% of calls) Buffer Allocation # ATB(sec) Steps 1354279 0.17 Skips 278866 0.84 20.6% of steps os 240348 0.98 86.2% of skips hot 0 0.00 0.0% of skips wait 38518 6.11 13.8% of skips Disk I/Os # ATB(sec) Reads 836941 0.28 Writes 548573 0.43 Not To Be Reproduced 7-46 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__C_O_M_M_A_N_D_S _p_r_i_n_t__a_s_t_e__p_t_p ox PRINT_ASTE_PTP - DISPLAYS INFORMATION FROM AN ASTE ASTE for >udd>Multics>Sibert at 115244 in sst_seg 077550100664 041540056140 165706076310 102401170050 315015000063 640000044000 446736250032 446736250272 003720000000 003164000110 006200006000 073770000102 uid = 102401170050, vtocx = 63 on pvtx 15 (root4 = dskd_13) max len 205, 6 recs used, 0 in core, cur len 6 (decimal) Used 03/18/83 0116.0 est Fri Modified 03/18/83 0116.2 est Fri Par astep = 76310, Son = 56140, brother = 41540 Trailer thread = 165706 Aste for a directory. Quota (S D) = (2000 0) QUsed (S D) = (1652 72) Flags: usedf init seg-tqsw fms PAGE PT DEVADD 0 063540200041 63540 1 063546200041 63546 2 063547200041 63547 3 063550200041 63550 4 063567200041 63567 5 063571200041 63571 6 377020000001 null ==== 17 377020000001 null Not To Be Reproduced 7-47 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__C_O_M_M_A_N_D_S _d_u_m_p__v_t_o_c_e ox DUMP_VTOCE - READS A VTOCE FROM DISK AND DISPLAYS ITS CONTENTS vtoce Sibert (Directory), vtocx 63 on pvtx 15 (root4)-03/18/83 0116.7 est Fri Uid = 102401170050, msl/csl/rec = 205 6 6 Quota (S D) = (2000 0) Quota used (S D) = (1423 44) Quota received (S D) = (2000 0) Created 08/16/81 1204.0 est Sun Dumped 03/18/83 0106.7 est Fri Used 03/17/83 1737.8 est Thu Modified 03/15/83 2138.3 est Tue Switches: fm_checksum_valid Activation information: 0 000000000000 102401170050 315006006000 446734564570 4 446723404647 001000400000 063560063567 003720000000 10 002617000054 003720000000 000000000000 015364402005 14 000000000000 000652154327 446734634556 445673737671 File map: 20 063540063546 063547063550 063567063571 777020777020 24 777020777020 777020777020 777020777020 777020777020 30 777776777776 777776777776 777776777776 777776777776 ====== 214 777776777776 777776777776 777776777776 777776777776 Permanent information: 220 000000000000 000000000000 000000000000 000000000000 ====== 230 000000000000 000000000000 000000000000 446736227316 234 126104000547 126104000525 126104000764 000000000000 240 777777777777 033022237767 033023254650 000000000000 244 000000000000 000000000000 000000000000 000000000000 ====== 260 123151142145 162164040040 040040040040 040040040040 264 040040040040 040040040040 040040040040 040040040040 Not To Be Reproduced 7-48 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__C_O_M_M_A_N_D_S _d_u_m_p__v_t_o_c_e 270 441200557477 135240026001 004370027106 000000000000 274 000000000000 000000000000 000000000000 000000000000 TOPIC VIII Page Control Page Page Control Overview . . . . . . . . . . . . 8-1 Page Control Terminology. . . . . . . . . . . 8-5 Page Control Data Bases . . . . . . . . . . . 8-6 Page Tables . . . . . . . . . . . . . . . 8-6 Core Map. . . . . . . . . . . . . . . . . 8-9 System Segment Table (SST) Header . . . . 8-11 Other Data Bases. . . . . . . . . . . . . 8-13 Services of Page Control. . . . . . . . . . . 8-15 Page Fault Handling . . . . . . . . . . . 8-15 Post Purging. . . . . . . . . . . . . . . 8-27 Page Control Meters . . . . . . . . . . . . . 8-28 file_system_meters. . . . . . . . . . . . 8-28 8-1 MDD-003 _S_E_G_M_E_N_T__C_O_N_T_R_O_L__C_O_M_M_A_N_D_S _d_u_m_p__v_t_o_c_e ox FUNCTION [] PAGE CONTROL IS RESPONSIBLE FOR THE MANAGEMENT OF _P_H_Y_S_I_C_A_L _M_E_M_O_R_Y TO INCLUDE THE MULTIPLEXING OF MAIN MEMORY FRAMES, AND THE MANAGEMENT OF DISK STORAGE [] ITS TASKS INCLUDE: [] TRANSFERRING THE PAGES OF SEGMENTS BETWEEN THE MEMORY DEVICES, AND RECORDING THE LOCATION OF "THE" COPY OF THESE PAGES [] REPORTING THE STATUS AND FILE MAPS OF SEGMENTS TO SEGMENT CONTROL [] PAGE CONTROL IS LARGELY CODED IN MULTICS ASSEMBLER LANGUAGE (ALM) [] PAGE CONTROL CAN BE INVOKED EITHER BY SUBROUTINE CALLS OR BY PAGE FAULTS [] Not To Be Reproduced 8-0 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__O_V_E_R_V_I_E_W THERE ARE NO EXPLICIT USER INTERFACES TO PAGE CONTROL ox BASIC PHILOSOPHY [] OF ALL THE SEGMENTS ACTIVE AT A GIVEN TIME, ONLY A SMALL SUBSET OF THEIR TOTAL PAGES WILL BE REQUIRED FOR ACCESSING [] PAGES WILL BE READ INTO MAIN MEMORY AS THEY ARE REQUIRED [] THE READING OF A PAGE INTO MAIN MEMORY WILL (PROBABLY) REQUIRE THE EVICTION OF A PREVIOUSLY REQUIRED PAGE [] THE CHOICE OF A PAGE FOR EVICTION WILL BE BASED ESSENTIALLY UPON A "LEAST RECENTLY USED" CRITERIA [] AN EVICTED PAGE NEED BE WRITTEN BACK TO DISK _O_N_L_Y IF IT WAS MODIFIED DURING ITS RESIDENCY IN MAIN MEMORY ox MAJOR DATA BASES [] PHYSICAL VOLUME TABLE (PVT) - ONE PER SYSTEM. PROVIDED BY VOLUME MANAGEMENT [] PHYSICAL VOLUME TABLE ENTRY (PVTE) - ONE PER DISK DRIVE CONFIGURED [] EACH PVTE CONTAINS: Not To Be Reproduced 8-1 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__O_V_E_R_V_I_E_W [] THE DEVICE ID (DISK DRIVE ID) AND THE ID OF THE PHYSICAL VOLUME (DISK PACK) CURRENTLY MOUNTED [] THE NUMBER OF RECORDS LEFT UNALLOCATED ON THE PHYSICAL VOLUME, POINTER TO THE RECORD STOCK, ETC [] RECORD STOCKS - ONE PER MOUNTED PHYSICAL VOLUME, PROVIDED BY VOLUME MANAGEMENT [] CONTAINS AN IN-MEMORY CACHE OF THE IN-USE STATUS OF RECORDS ON THE VOLUME, FROM THE VOLUME MAP, USED WHEN ALLOCATING OR FREEING PAGES [] ACCESSED BY A COMPLEX MECHANISM WHICH USES NORMAL PAGE I/O BUT HAS A PROTOCOL TO ENSURE SYNCHRONIZATION OF DISK CONTENTS AND RECORD STOCK CONTENTS [] SYSTEM SEGMENT TABLE (SST) - ONE PER SYSTEM. SHARED WITH SEGMENT CONTROL. CONTAINS THE FOLLOWING FIVE DATA BASES USED BY PAGE CONTROL: [] SYSTEM SEGMENT TABLE (SST) HEADER - ONE PER SYSTEM [] CONTAINS A LARGE NUMBER OF COUNTERS AND POINTERS VITAL TO THE MAINTENANCE AND METERING OF THE STORAGE SYSTEM [] CONTAINS LOCKWORDS USED TO SYNCHRONIZE PAGE CONTROL AND SEGMENT CONTROL OPERATIONS [] CORE MAP - THE core_map SEGMENT - ONE PER SYSTEM [] CORE MAP ENTRY (CME) - ONE PER FRAME (1024 WORDS) OF CONFIGURED MAIN MEMORY [] EACH CME REPRESENTS A FRAME OF MAIN MEMORY AND IDENTIFIES THE CURRENT OCCUPANT OF THAT FRAME [] Not To Be Reproduced 8-2 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__O_V_E_R_V_I_E_W NOT PART OF THE SST SEGMENT ANY MORE, BUT LOGICALLY PART OF THE SST [] ACTIVE SEGMENT TABLE (AST) - ONE PER SYSTEM [] ACTIVE SEGMENT TABLE ENTRY (ASTE) - ONE PER ACTIVE SEGMENT [] LIST OF ACTIVE (CURRENTLY BEING USED) SEGMENTS [] PAGE TABLES (PT) - ONE PER ACTIVE SEGMENT, THE OTHER HALF OF EACH ASTE [] PAGE TABLE WORD (PAGE PTW) - EITHER 4, 16, 64, OR 256 PER PAGE TABLE [] EACH PTW DEFINES THE CURRENT LOCATION OF A PAGE OF THE SEGMENT: DISK, MAIN MEMORY ADDRESS, OR NULL Not To Be Reproduced 8-3 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__T_E_R_M_I_N_O_L_O_G_Y PAGING: THE PROCESS OF TRANSFERRING PAGES OF DATA BETWEEN DISK STORAGE AND MAIN MEMORY (CORE) TO ACHIEVE THE EFFECT OF ALL DATA BEING IN MEMORY ALL THE TIME CORE: AN OBSOLETE TERM USED FREQUENTLY TO REFER TO MAIN MEMORY (WHICH IS MOS TECHNOLOGY, NOT CORE TECHNOLOGY) PAGE FAULT: AN EXCEPTION CONDITION DETECTED BY THE PROCESSOR HARDWARE (IN THE APPENDING UNIT) WHEN AN ATTEMPT IS MADE TO USE A PTW SPECIFYING THAT ITS PAGE IS NOT IN MAIN MEMORY Not To Be Reproduced 8-4 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _P_A_G_E__T_A_B_L_E_S ============================== INSERT Page Table DIAGRAM HERE ============================== ox THE PAGE TABLES (PT'S) ARE HARDCORE (SST), UNPAGED, DATA BASES EACH CONSISTING OF AN ARRAY OF PAGE TABLE WORDS (PTW'S) [] ONE PAGE TABLE PER ACTIVE SEGMENT [] 4, 16, 64, OR 256 PTW PER PAGE TABLE Not To Be Reproduced 8-5 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _P_A_G_E__T_A_B_L_E_S ox ALL PAGE TABLES ARE ASSOCIATED WITH, AND IMMEDIATELY FOLLOW AN ASTE IN THE AST REGION OF THE SST ox EACH PTW DESCRIBES THE STATUS OF ONE PAGE OF THE SEGMENT CURRENTLY IN POSSESSION OF THE ASSOCIATED ASTE, INCLUDING: [] THE DEVICE ADDRESS OF _T_H_E COPY OF THE PAGE [] PTW VALID INDICATOR AND FAULT NUMBER (FAULT #1) [] FLAGS INDICATING VARIOUS STATES AND PROPERTIES OF THE PAGE SUCH AS I/O IN PROGRESS, WIRED, USED, MODIFIED ox THE ADDRESS PORTION OF EACH PTW IS INITIALIZED FROM THE SEGMENT'S VTOCE FILE MAP AT SEGMENT ACTIVATION TIME Not To Be Reproduced 8-6 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _P_A_G_E__T_A_B_L_E_S ========================================== INSERT Page Table Device ADDR DIAGRAM HERE ========================================== Not To Be Reproduced 8-7 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _C_O_R_E__M_A_P ================================== INSERT Core Map Entry DIAGRAM HERE ================================== ox THE CORE MAP IS A PERMANENTLY WIRED, UNPAGED, SEGMENT CONTAINING AN ARRAY OF CORE MAP ENTRIES (CME'S) [] ONE CORE MAP PER SYSTEM [] ONE CME PER ADDRESSABLE MAIN MEMORY FRAME [] IF THE CONFIGURATION HAS HOLES IN THE MEMORY ADDRESS ASSIGNMENTS, OR MEMORIES WHICH ARE TURNED OFF, THOSE CMES ARE PRESENT ANYWAY (BUT UNUSED) (0 TO HIGHEST FRAME ADDRESS) Not To Be Reproduced 8-8 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _C_O_R_E__M_A_P ox EACH CME DESCRIBES THE STATUS OF ONE PAGE FRAME IN MAIN MEMORY INCLUDING: [] THE DISK ADDRESS OF THE PAGE CURRENTLY OCCUPYING THE FRAME [] ADDRESS OF THE ASTE AND PTW OF THE OCCUPANT [] FLAGS INDICATING VARIOUS STATES AND PROPERTIES OF THE FRAME AND ITS OCCUPANT SUCH AS I/O IN PROGRESS, NOTIFICATION REQUESTED, AND PIN WEIGHT ox THE CME'S ARE KEPT IN A DOUBLE-THREADED CIRCULAR LIST POINTED TO BY sst.usedp [] CME'S FOR FRAMES UNDERGOING I/O ARE TEMPORARILY THREADED OUT OF THE LIST [] CME'S FOR FRAMES CONFIGURED BUT NOT PHYSICALLY PRESENT ARE ALSO THREADED OUT BUT WITH THREAD WORD "777777777777" OCTAL [] THE REMAINING CME'S REPRESENT MAIN MEMORY FRAMES ACTIVELY IN USE - _A_N_D SUBJECT TO EVICTION BY THE PAGE REPLACEMENT ALGORITHM Not To Be Reproduced 8-9 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _S_Y_S_T_E_M__S_E_G_M_E_N_T__T_A_B_L_E__(_S_S_T_)__H_E_A_D_E_R ox THE FIRST 512 WORDS OF THE SST IS CALLED THE SST HEADER AND CONTAINS: [] A LARGE NUMBER OF GLOBAL VARIABLES VITAL TO THE OPERATION OF THE STORAGE SYSTEM AND ITS SUBSYSTEMS [] NUMEROUS CELLS USED TO METER THE STORAGE SYSTEM ox AMONG THOSE OF INTEREST TO PAGE CONTROL ARE THE FOLLOWING: [] GLOBAL VARIABLES: [] PAGE TABLE LOCK (sst.ptl) [] NUMBER OF MAIN MEMORY FRAMES AVAILABLE FOR PAGING ACTIVITIES (sst.nused) AND NUMBER WIRED (sst.wired) [] POINTERS TO THE BASE OF THE CME ARRAY AND TO THE CME OF THE "BEST" CANDIDATE PAGE FOR REPLACEMENT [] PVT INDEX OF THE RPV (USED DURING INITIALIZATION) [] METERS [] THRASHING, POST-PURGE-TIME, PAGE FAULTS ON DIRECTORIES, RING 0 PAGE FAULTS, LOOP LOCK TIME, SEGMENT MOVES Not To Be Reproduced 8-10 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _S_Y_S_T_E_M__S_E_G_M_E_N_T__T_A_B_L_E__(_S_S_T_)__H_E_A_D_E_R [] PAGING METERS REPORTED BY file_system_meters SUCH AS STEPS, NEEDS, CEILING, SKIPS Not To Be Reproduced 8-11 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _O_T_H_E_R__D_A_T_A__B_A_S_E_S ox ALTHOUGH BASICALLY DATA BASES OF VOLUME MANAGEMENT, THE FOLLOWING CONTAIN INFORMATION REQUIRED BY PAGE CONTROL (AS INDICATED) ox PHYSICAL VOLUME TABLE (PVT) - ONE PER SYSTEM [] INFORMATION REQUIRED BY THE DISK DIM FOR I/O [] INFORMATION USED BY THE DISK RECORD ALLOCATOR/DEALLOCATOR (free_store) SUCH AS: [] THE NUMBER OF UNALLOCATED RECORDS LEFT ON THE VOLUME [] THE LOCATION OF THE RECORD STOCK FOR THE VOLUME ox RECORD STOCKS [] RECORD STOCKS ARE KEPT IN A WIRED SEGMENT: stock_seg [] THE RECORD STOCK FOR A VOLUME IS A LIST OF SOME OF THE RECORDS WHICH ARE FREE ON THE VOLUME [] WHEN THERE ARE NO MORE ENTRIES AVAILABLE IN THE STOCK, IT IS UPDATED FROM THE VOLUME MAP Not To Be Reproduced 8-12 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _O_T_H_E_R__D_A_T_A__B_A_S_E_S [] IF THE STOCK BECOMES FULL, SOME OF ITS ENTRIES ARE UPDATED TO THE VOLUME MAP AND REMOVED FROM THE STOCK [] A COMPLEX MECHANISM (SEE volmap.alm, volmap_page.alm) MAKES IT POSSIBLE TO REFERENCE THE VOLUME MAP PAGES WHILE SATISFYING A PAGE FAULT Not To Be Reproduced 8-13 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G ox WITHIN ANY DEMAND PAGING ENVIRONMENT THE CHOICE OF WHICH PAGE TO EVICT IS CRUCIAL TO SYSTEM PERFORMANCE ox ONE OF THE BETTER CHOICES FOR EVICTION IS THE "LEAST RECENTLY USED" PAGE....OR (BECAUSE OF EFFICIENCY), THE "LEAST RECENTLY _N_O_T_I_C_E_D AS BEING USED" PAGE. ox THE MULTICS PAGE REPLACEMENT ALGORITHM (PRA), KNOWN IN THE LITERATURE AS THE "CLOCK" ALGORITHM WAS ONE OF THE FIRST EVER TO BE IMPLEMENTED ox THE VERSION AS IT EXISTS TODAY IS A DIRECT DESCENDANT OF Corbato's ORIGINAL ALGORITHM (SEE SECTION 5 OF THE "MULTICS STORAGE SYSTEM PLM", AN61, FOR A BIBLIOGRAPHY) ox PAGES ARE KEPT IN A CIRCULAR LIST, THE CORE USED LIST, IMPLEMENTED BY THE DOUBLY THREADED CME'S ox A POINTER, MAINTAINED IN THE SST, (sst.usedp) POINTS TO THE LOGICAL HEAD OF THIS LIST AS FOLLOWS: Not To Be Reproduced 8-14 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G =================================== INSERT Clock Algorithm DIAGRAM HERE =================================== Not To Be Reproduced 8-15 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G ox PAGE FAULT HANDING IS THE MOST VISIBLE AND CRUCIAL SERVICE OF PAGE CONTROL ox A PAGE FAULT OCCURS WHEN A USER REFERENCES A PAGE OF SOME SEGMENT THAT IS NOT IN MAIN MEMORY [] OR MORE SPECIFICALLY: HARDWARE ATTEMPTS TO USE A PTW THAT INDICATES ITS PAGE IS NOT IN THE MAIN MEMORY ox PAGE FAULT HANDLING IS IMPLEMENTED IN THE ALM PROGRAM page_fault WHICH IS INVOKED _D_I_R_E_C_T_L_Y BY THE FAULT VECTOR CODE (page_fault _I_S THE FAULT INTERCEPTOR FOR PAGE FAULTS) ox THE PRINCIPAL STEPS OF page_fault ARE: [] SAVE ALL MACHINE CONDITIONS, MASK AGAINST INTERRUPTS, AND ESTABLISH A STACK FRAME ON THE BASE OF THE _P_ROCESSOR _DATA _SEGMENT (PRDS), WHICH IS USED AS THE STACK FOR INTERRUPTS AND PAGE FAULTS [] CHECK FOR ILLEGAL CONDITIONS AND CRASH IF SO Not To Be Reproduced 8-16 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G [] ATTEMPT TO LOCK THE PAGE TABLE LOCK (sst.ptl) AND WAIT IF UNSUCCESSFUL [] LOCATE THE RESPONSIBLE PTW AND ITS ASTE. THIS IS OFTEN THE MOST DIFFICULT TASK [] IT IS DIFFICULT BECAUSE IT REQUIRES FETCHING THE SDW FROM THE DSEG, WHICH IS, ITSELF, PAGED, AND NOT GUARANTEED TO BE IN MEMORY [] CHECK FOR TWO WINDOW SITUATIONS INVOLVING SOME OTHER PROCESS HANDLING A PAGE FAULT FOR THE SAME PAGE: [] IF PAGE IS NOW IN, THEN UNLOCK THE LOCK AND RESTART THE MACHINE CONDITIONS [] IF PAGE IS BEING READ IN NOW, DEVELOP THE WAIT EVENT FOR THE PTW AND SKIP THE NEXT THREE STEPS [] INVOKE read_page TO FIND THE LEAST RECENTLY (NOTICED AS BEING) USED MAIN MEMORY FRAME, _B_E_G_I_N THE PAGE-READING FUNCTION, AND DEVELOP THE WAIT EVENT [] EXECUTE THE REPLACEMENT ALGORITHM'S WRITE-BEHIND (PURIFIER) FUNCTION, CAUSING PASSED OVER WRITE REQUESTS TO BE QUEUED [] METER THE PAGE FAULT TO INCLUDE: TIME SPENT; MAIN MEMORY USAGE OF THIS PROCESS; RING ZERO, DIRECTORY, AND PER-PROCESS FAULTS Not To Be Reproduced 8-17 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G [] TRANSFER TO THE TRAFFIC CONTROLLER, WHO PLACES THE PROCESS IN THE WAIT STATE, UNLOCKS THE PAGE TABLE LOCK, AND ABANDONS THE ENVIRONMENT (SEE "TRAFFIC CONTROL", TOPIC 10) ox WHEN THE PAGE READING I/O IS COMPLETE, THE EVENT WILL BE POSTED. THE WAITING PROCESS WILL BE GIVEN THE PROCESSOR AGAIN AND TRAFFIC CONTROLLER WILL TRANSFER THE FAULTING PROCESS TO page_fault$wait_return TO RESTART THE MACHINE CONDITIONS Not To Be Reproduced 8-18 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G =============================================== INSERT Page Fault Scenario Scene 1 DIAGRAM HERE =============================================== Not To Be Reproduced 8-19 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G =============================================== INSERT Page Fault Scenario Scene 2 DIAGRAM HERE =============================================== Not To Be Reproduced 8-20 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G =============================================== INSERT Page Fault Scenario Scene 3 DIAGRAM HERE =============================================== Not To Be Reproduced 8-21 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G ================================================ INSERT Page Fault Scenario Scene 4A DIAGRAM HERE ================================================ Not To Be Reproduced 8-22 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G ================================================ INSERT Page Fault Scenario Scene 5A DIAGRAM HERE ================================================ Not To Be Reproduced 8-23 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G ================================================ INSERT Page Fault Scenario Scene 4B DIAGRAM HERE ================================================ Not To Be Reproduced 8-24 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_A_G_E__F_A_U_L_T__H_A_N_D_L_I_N_G ================================================ INSERT Page Fault Scenario Scene 5B DIAGRAM HERE ================================================ Not To Be Reproduced 8-25 MDD-003 _S_E_R_V_I_C_E_S__O_F__P_A_G_E__C_O_N_T_R_O_L _P_O_S_T__P_U_R_G_I_N_G ox POST PURGING IS PERFORMED BY THE PROCEDURE post_purge ox POST PURGING IS AN OPTIONAL SERVICE USED TO OPTIMIZE THE PAGE REPLACEMENT ALGORITHM ox POST PURGING: [] _F_A_V_O_R_S THE REPLACING OF PAGES USED BY A PROCESS WHICH HAS JUST LOST ELIGIBILITY (SEE "TRAFFIC CONTROL", TOPIC 9) [] IS A WORK CLASS SETTABLE ATTRIBUTE ox POST PURGING IS LARGELY USELESS TODAY, BECAUSE MAIN MEMORY SIZE IS SO MUCH GREATER Not To Be Reproduced 8-26 MDD-003 _P_A_G_E__C_O_N_T_R_O_L__M_E_T_E_R_S _f_i_l_e__s_y_s_t_e_m__m_e_t_e_r_s ox FILE_SYSTEM_METERS - DISPLAYS MISCELLANEOUS METERING INFORMATION FOR THE FILE SYSTEM [] ONLY PARTS RELEVANT TO PAGE CONTROL INCLUDED HERE; SEE TOPIC 7 (SEGMENT CONTROL) FOR THE REST Total metering time 0:20:02 # ATB Needc 62654 19.194 msec. Ring 0 faults 16.639 % PDIR faults 50.607 % Level 2 faults 21.556 % DIR faults 7.645 % New Pages 14.661 % Volmap_seg 0 0.000 msec. Zero pages 770 1561.779 msec. Laps 105 11.453 sec. Steps 361483 3.327 msec. Skip 322555 3.728 msec. 89.231% of Steps wired 11057 108.761 msec. 3.428% of Skip used 109719 10.960 msec. 34.016% of Skip mod 140336 8.569 msec. 43.508% of Skip fc pin 37717 31.884 msec. 11.693% of Skip cl pin 23726 50.686 msec. 7.356% of Skip 3419 pages, 139 wired. Average steps 5.770 TOPIC IX Tarffic Control Page Traffic Control Overview. . . . . . . . . . . 9-1 Traffic Control Terminology . . . . . . . . . 9-3 9-i MDD-003 _P_A_G_E__C_O_N_T_R_O_L__M_E_T_E_R_S _f_i_l_e__s_y_s_t_e_m__m_e_t_e_r_s Traffic Control Data Bases. . . . . . . . . . 9-5 tc_data . . . . . . . . . . . . . . . . . 9-5 Services of Traffic Control . . . . . . . . . 9-8 Wait Locks. . . . . . . . . . . . . . . . 9-8 Processor Multiplexing. . . . . . . . . . 9-9 Traffic Control Meters. . . . . . . . . . . . 9-18 total_time_meters . . . . . . . . . . . . 9-18 traffic_control_meters. . . . . . . . . . 9-19 traffic_control_queue . . . . . . . . . . 9-21 work_class_meters . . . . . . . . . . . . 9-23 respons_meters. . . . . . . . . . . . . . 9-24 post_purge_meters . . . . . . . . . . . . 9-26 Traffic Control Commands. . . . . . . . . . . 9-27 print_tuning_parameters . . . . . . . . . 9-27 print_apt_entry . . . . . . . . . . . . . 9-28 9-i MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__O_V_E_R_V_I_E_W ox FUNCTION [] TRAFFIC CONTROL (OR THE "TRAFFIC CONTROLLER") IS RESPONSIBLE FOR MANAGING THE ASSIGNMENT OF PHYSICAL PROCESSORS TO MULTICS PROCESSES AND IMPLEMENTING THE SYSTEM'S WAIT/NOTIFY AND INTERPROCESS COMMUNICATION PRIMITIVES [] THE FUNCTIONS ASSUMED BY THE TRAFFIC CONTROLLER ARE KNOWN AS MULTIPROGRAMMING, MULTIPROCESSING, SCHEDULING, DISPATCHING, PROCESSOR MANAGEMENT, AND INTERPROCESS COMMUNICATION. [] ITS MAJOR FUNCTION IS ALLOWING PROCESSES TO AWAIT THE COMPLETION OF FILE SYSTEM OPERATIONS, SUCH AS PAGE I/O [] TRAFFIC CONTROL CAN BE INVOKED BY SUBROUTINE CALLS AND INTERRUPTS [] THERE ARE NO IMPORTANT USER SUBROUTINE INTERFACES, BUT THERE ARE PRIVILEGED SUBROUTINE INTERFACES FOR PROCESS CREATION, ADJUSTMENT OF SCHEDULING PARAMETERS, ETC. ox MAJOR DATA BASES [] TC_DATA SEGMENT - ONE PER SYSTEM. CONTAINS THE FOLLOWING FOUR DATA BASES: [] TC_DATA HEADER - ONE PER SYSTEM Not To Be Reproduced 9-1 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__O_V_E_R_V_I_E_W [] CONTAINS VARIOUS METERS, COUNTERS AND POINTERS USED BY THE TRAFFIC CONTROLLER [] ACTIVE PROCESS TABLE (APT) - ONE PER SYSTEM [] ACTIVE PROCESS TABLE ENTRY (APTE) - ONE OCCUPIED PER ACTIVE PROCESS (TOTAL NUMBER IS DETERMINED BY CONFIG DECK) [] EACH APTE CONTAINS VARIOUS ATTRIBUTES OF AN ACTIVE PROCESS INCLUDING THE PROCESS ID, STATE, THE VALUE OF ITS DESCRIPTOR BASE REGISTER (DBR), SCHEDULING PARAMETERS, AND A POINTER TO THE PROCESS'S ITT ENTRIES [] THE APTE CONTAINS ALL INFORMATION THE SUPERVISOR NEEDS TO KNOW ABOUT A PROCESS WHEN THE PROCESS IS NOT RUNNING [] INTERPROCESS TRANSMISSION TABLE (ITT) - ONE PER SYSTEM [] ITT ENTRY - ONE OCCUPIED PER OUTSTANDING IPC WAKEUP [] A QUEUE FOR TEMPORARILY STORING IPC WAKEUP INFORMATION (CHANNEL NAME, RANDOM DATA, PROCESS ID, ETC) [] WORK CLASS TABLE (WCT) - ONE PER SYSTEM [] WORK CLASS TABLE ENTRY (WCTE) - ONE PER WORKCLASS [] EACH WCTE CONTAINS ADMINISTRATOR DEFINED PARAMETERS OF THE WORKCLASS, VARIOUS METERS AND POINTERS Not To Be Reproduced 9-2 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__T_E_R_M_I_N_O_L_O_G_Y PROCESS: AN ADDRESS SPACE AND AN EXECUTION POINT WITHIN THAT ADDRESS SPACE MULTIPROGRAMMING: PERTAINING TO THE _C_O_N_C_U_R_R_E_N_T EXECUTION OF TWO OR MORE PROGRAMS BY INTERLEAVING THEIR EXECUTION MULTIPROCESSING: PERTAINING TO THE _S_I_M_U_L_T_A_N_E_O_U_S EXECUTION OF TWO OR MORE PROGRAMS BY A MULTIPROCESSOR SYSTEM (PARALLEL PROCESSING) ELIGIBLE: AN ADJECTIVE DESCRIBING THOSE PROCESSES ACTIVELY COMPETING FOR A PROCESSOR. ALL PROCESSES ARE EITHER ELIGIBLE OR INELIGIBLE SCHEDULING: PERTAINS TO THE ACT OF CHOSING AND PROMOTING AN "INELIGIBLE" PROCESS TO "ELIGIBLE" STATUS Not To Be Reproduced 9-3 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__T_E_R_M_I_N_O_L_O_G_Y DISPATCHING: PERTAINS TO THE ACT OF CHOSING AND PLACING AN ELIGIBLE PROCESS IN THE "RUNNING" STATE (IE: EXECUTING INSTRUCTIONS ON A PROCESSOR) WORK CLASS: A WELL DEFINED SET OF USERS (USUALLY CONSISTING OF ONE OR MORE PROJECTS) HAVING COMMON PERFORMANCE PARAMETERS. THE USER COMMUNITY MAY BE DIVIDED INTO NO MORE THAN 16 WORK CLASSES WORKING SET: THE SET OF PAGES A PROCESS TOUCHES DURING A GIVEN INTERVAL. THE SIZE OF A CURRENT WORKING SET IS PREDICTIVE OF FUTURE MEMORY REQUIREMENTS Not To Be Reproduced 9-4 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _T_C__D_A_T_A =========================== INSERT tc_data DIAGRAM HERE =========================== Not To Be Reproduced 9-5 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _T_C__D_A_T_A =========================== INSERT APTE #1 DIAGRAM HERE =========================== Not To Be Reproduced 9-6 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__D_A_T_A__B_A_S_E_S _T_C__D_A_T_A =========================== INSERT APTE #2 DIAGRAM HERE =========================== Not To Be Reproduced 9-7 MDD-003 _S_E_R_V_I_C_E_S__O_F__T_R_A_F_F_I_C__C_O_N_T_R_O_L _W_A_I_T__L_O_C_K_S ============================== INSERT wait locks DIAGRAM HERE ============================== Not To Be Reproduced 9-8 MDD-003 _S_E_R_V_I_C_E_S__O_F__T_R_A_F_F_I_C__C_O_N_T_R_O_L _P_R_O_C_E_S_S_O_R__M_U_L_T_I_P_L_E_X_I_N_G ox SINCE THE NUMBER OF ACTIVE PROCESSES GENERALLY EXCEEDS THE NUMBER OF PROCESSORS (OFTEN 50:1) THE PROCESSORS MUST BE MULTIPLEXED ox PROCESSOR MULTIPLEXING IS THE PRIMARY RESPONSIBILITY OF THE TRAFFIC CONTROLLER ox THE MULTICS ARCHITECTURE DICTATES THE FOLLOWING AXIOMS: [] ALL PROCESSORS ARE SYMMETRICAL [] AN INTERRUPT IS SEEN BY ALL PROCESSORS AND IS SERVICED BY THE PROCESSOR THAT CLAIMS IT FIRST [] NOT ACTUALLY TRUE, DUE TO HARDWARE CONNECTION LIMITATIONS [] THERE ARE NO MASTER OR SLAVE PROCESSORS. ONLY A PROCESSOR DESIGNATED TO PERFORM BOOTLOAD AND SHUTDOWN (THE "BOOTLOAD PROCESSOR") [] BOOTLOAD PROCESSOR CAN BE CHANGED AT ANY TIME BY DYNAMIC RECONFIGURATION [] A PROCESSOR MAY BE "IN" AT MOST ONE PROCESS AT A TIME [] A PROCESS MAY EXECUTE ON ONE AND ONLY ONE PROCESSOR AT A TIME. THE PROCESS MAY, HOWEVER, "RANDOMLY" MIGRATE FROM ONE PROCESSOR TO ANOTHER Not To Be Reproduced 9-9 MDD-003 _S_E_R_V_I_C_E_S__O_F__T_R_A_F_F_I_C__C_O_N_T_R_O_L _P_R_O_C_E_S_S_O_R__M_U_L_T_I_P_L_E_X_I_N_G [] A PROCESSOR WILL, AT ALL TIMES, BE "IN" A PROCESS ox PROCESSES MAY EXIST IN ONE OF SIX STATES - ONE OF WHICH IS "RUNNING" (IE: EXECUTING ON A PROCESSOR) ox THE TRAFFIC CONTROLLER CODE PERFORMS ALL STATE CHANGES. THE STATE CHANGES FALL INTO TWO CATEGORIES: SELF IMPOSED AND EXTERNALLY IMPOSED. [] SELF IMPOSED STATE CHANGES (THE PROCESS MUST HAVE A PROCESSOR) [] RUNNING -> READY (#1 -> #2) [] THE PROCESS WAS TOLD (BY EITHER A CONNECT FAULT FROM ANOTHER PROCESSOR OR A TIMER RUNOUT) TO GIVE UP ITS PROCESSOR [] THE PROCESS IS NOW WAITING FOR NO OTHER RESOURCE THAN A PROCESSOR [] RUNNING -> WAITING (#1 -> #3) [] THE PROCESS ISSUED A REQUEST FOR A "SYSTEM EVENT" (EG: A PAGE FAULT OR A WAIT LOCK) [] "SYSTEM EVENTS" OCCUR AFTER A PREDICTABLY SHORT PERIOD OF TIME AND ARE HANDLED BY THE WAIT/NOTIFY MECHANISM [] THE PROCESS IS NOW WAITING FOR A NOTIFY INDICATING THE COMPLETION OF THE EVENT (EG: THE ARRIVAL OF THE PAGE IN MAIN MEMORY) Not To Be Reproduced 9-10 MDD-003 _S_E_R_V_I_C_E_S__O_F__T_R_A_F_F_I_C__C_O_N_T_R_O_L _P_R_O_C_E_S_S_O_R__M_U_L_T_I_P_L_E_X_I_N_G [] RUNNING -> PAGE TABLE LOCK WAITING (#1 -> #6) [] THE PROCESS ATTEMPTED TO LOCK THE PAGE-TABLE LOCK AND FOUND IT ALREADY LOCKED [] THE PROCESS IS NOW WAITING FOR A NOTIFY INDICATING THE UNLOCKING (A SYSTEM EVENT) [] RUNNING -> BLOCKED (#1 -> #4) [] THE PROCESS ISSUED A REQUEST FOR A "USER EVENT" (EG: A READ FROM THE TERMINAL) [] "USER EVENTS" OCCUR AFTER A PREDICTABLY LONG PERIOD OF TIME AND ARE HANDLED BY THE BLOCK/WAKEUP MECHANISM [] THE PROCESS IS NOW WAITING FOR A WAKE_UP INDICATING THE COMPLETION OF THE EVENT (EG: A LINE_FEED GENERATES A WAKE_UP) ARE HANDLED BY THE BLOCK/WAKE_UP MECHANISM [] A PROCESS GOING BLOCKED GIVES UP ITS RING ZERO STACK [] RUNNING -> STOPPED (#1 -> #5) [] THE PROCESS EXECUTED THE logout OR new_proc COMMAND, EVENTUALLY CALLING hcs_$stop_process [] THE PROCESS IS PROHIBITED FROM RUNNING AGAIN AND WILL QUICKLY BE DESTROYED BY THE INITIALIZER Not To Be Reproduced 9-11 MDD-003 _S_E_R_V_I_C_E_S__O_F__T_R_A_F_F_I_C__C_O_N_T_R_O_L _P_R_O_C_E_S_S_O_R__M_U_L_T_I_P_L_E_X_I_N_G [] EXTERNALLY IMPOSED STATE CHANGES (THE STATE IS CHANGED BY ANOTHER PROCESS) [] READY -> RUNNING (#2 -> #1) [] THE PROCESS (WHICH WAS WAITING FOR NO OTHER RESOURCE THAN A PROCESSOR) WAS CHOSEN AS SUCCESSOR BY A PROCESS RELINQUISHING A PROCESSOR [] THE PROCESS IS NOW EXECUTING [] BLOCKED -> READY (#4 -> #2) [] SOME OTHER PROCESS SENT A WAKEUP INDICATING THE COMPLETION OF THE EVENT THIS PROCESS WAS WAITING ON, AND CHANGE THE STATE OF THIS PROCESS [] THE PROCESS IS NOW WAITING FOR NO OTHER RESOURCE THAN A PROCESSOR [] WAITING -> READY (#6 -> #2) PTL-WAITING -> READY (#3 -> #2) [] SOME OTHER PROCESS SENT A NOTIFY INDICATING THE COMPLETION OF THE EVENT THIS PROCESS WAS WAITING ON, AND CHANGED THE STATE OF THIS PROCESS [] THE PROCESS IS NOW WAITING FOR NO OTHER RESOURCE THAN A PROCESSOR Not To Be Reproduced 9-12 MDD-003 _S_E_R_V_I_C_E_S__O_F__T_R_A_F_F_I_C__C_O_N_T_R_O_L _P_R_O_C_E_S_S_O_R__M_U_L_T_I_P_L_E_X_I_N_G ========================================== INSERT Traffic Control States DIAGRAM HERE ========================================== Not To Be Reproduced 9-13 MDD-003 _S_E_R_V_I_C_E_S__O_F__T_R_A_F_F_I_C__C_O_N_T_R_O_L _P_R_O_C_E_S_S_O_R__M_U_L_T_I_P_L_E_X_I_N_G ================================== INSERT TC Scenario #1 DIAGRAM HERE ================================== Not To Be Reproduced 9-14 MDD-003 _S_E_R_V_I_C_E_S__O_F__T_R_A_F_F_I_C__C_O_N_T_R_O_L _P_R_O_C_E_S_S_O_R__M_U_L_T_I_P_L_E_X_I_N_G ================================== INSERT TC Scenario #2 DIAGRAM HERE ================================== Not To Be Reproduced 9-15 MDD-003 _S_E_R_V_I_C_E_S__O_F__T_R_A_F_F_I_C__C_O_N_T_R_O_L _P_R_O_C_E_S_S_O_R__M_U_L_T_I_P_L_E_X_I_N_G ============================================= INSERT Working Sets and Trashing DIAGRAM HERE ============================================= Not To Be Reproduced 9-16 MDD-003 _S_E_R_V_I_C_E_S__O_F__T_R_A_F_F_I_C__C_O_N_T_R_O_L _P_R_O_C_E_S_S_O_R__M_U_L_T_I_P_L_E_X_I_N_G =================================== INSERT Idle Categories DIAGRAM HERE =================================== Not To Be Reproduced 9-17 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__M_E_T_E_R_S _t_o_t_a_l__t_i_m_e__m_e_t_e_r_s ox TOTAL_TIME_METERS - OVERVIEW OF HOW THE SYSTEM IS USING ITS RESOURCES, ALSO MEASURED AGAINST NON-IDLE TIME Total metering time 0:20:36 % %NI AVE Page Faults 6.55 7.19 2130.424 PC Loop Locks 0.39 0.43 1993.209 PC Queue 0.86 0.94 348.946 Seg Faults 1.74 1.90 9579.170 Bound Faults 0.15 0.16 17426.208 Interrupts 9.02 9.89 1713.504 Other Fault 8.45 9.27 Getwork 4.54 4.98 660.550 TC Loop Locks 0.20 0.22 247.788 Post Purging 0.36 0.39 1407.132 MP Idle 0.70 0.77 Work Class Idle 0.98 1.08 Loading Idle 0.16 0.17 NMP Idle 8.84 Zero Idle 0.00 Other Overhead 0.03 0.04 Virtual CPU Time 62.53 68.59 Not To Be Reproduced 9-18 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__M_E_T_E_R_S _t_r_a_f_f_i_c__c_o_n_t_r_o_l__m_e_t_e_r_s ox TRAFFIC_CONTROL_METERS - DISPLAY THE STATE OF THE SCHEDULER [] OUTPUT COMES IN THREE PARTS, SHOWN OUT OF ORDER HERE: [] QUEUE LENGTHS AND RESPONSE TIME - THESE ARE WEIGHTED AVERAGES OVER THE LAST FIFTEEN SECONDS. [] ACTIVITIES VERSUS DEPTH - HOW DEEP THE TRAFFIC CONTROLLER HAD TO SEARCH TO FIND A SCHEDULABLE PROCESS [] MISCELLANEOUS COUNTERS AND FREQUENCIES OF VARIOUS EVENTS Total metering time 0:20:34 Ave queue length 16.52 Ave eligible 13.31 Response time 0.264 sec DEPTH %PF TBPF %GTW TBS %CPU 1 12.0 22.8 10.8 11.6 8.1 2 11.8 21.0 9.2 12.2 7.4 3 10.8 24.9 8.7 14.1 8.0 4 10.2 27.9 8.5 15.2 8.4 5 9.5 29.8 8.3 15.5 8.4 6 8.4 33.5 7.8 16.5 8.4 7 7.4 36.3 7.3 16.8 8.0 Not To Be Reproduced 9-19 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__M_E_T_E_R_S _t_r_a_f_f_i_c__c_o_n_t_r_o_l__m_e_t_e_r_s COUNTER TOTAL ATB #/INT Interactions 7977 0.155 sec Loadings 12161 0.102 sec 1.525 Blocks 14082 0.088 sec Wakeups 36078 0.034 sec Schedulings 12591 0.098 sec 1.578 Lost priority 1 1234.756 sec Priority boosts 0 0.000 sec I/O boosts 578 2.136 sec Wait Page 127040 9.719 msec 15.926 Wait PTL 75691 16.313 msec 9.489 Wait Other 31912 38.693 msec 4.001 Total Waits 234643 5.262 msec 29.415 Notify Page 128954 9.575 msec Notify PTL 75691 16.313 msec Notify Other 25330 48.747 msec Total Notifies 229975 5.369 msec Get Processor 245856 5.022 msec Pre-empts 94235 13.103 msec 11.813 Getwork 338802 3.644 msec Retry getwork 4988 0.248 sec Extra notifies 2949 0.419 sec Last EN event 000000000071 Last NTO event 033022237767 ox ALARM_CLOCK_METERS - DISPLAYS INFORMATION ABOUT THE USER ALARM TIMER FACILITY (HARDCORE INTERFACE FOR timer_manager_) Total metering time 0:20:31 No. alarm clock sims. 2171 Simulation lag 5.245 msecs. Max. lag 1.7340314e4 msecs. Not To Be Reproduced 9-20 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__M_E_T_E_R_S _t_r_a_f_f_i_c__c_o_n_t_r_o_l__q_u_e_u_e ox TRAFFIC_CONTROL_QUEUE - DISPLAYS THE CURRENT CONTENTS OF THE SCHEDULER QUEUES, USEFUL FOR GETTING AN IDEA OF WHAT THE USER PROCESSES ARE DOING [] FIRST PART OF OUTPUT IS ELIGIBLE QUEUE: avq = 13, elapsed time = 1247 sec, 64 active last 15 sec. flags dtu dpf temax te ts ti tssc event d ws wc process rWLE(d) 148 6946 2097 37 0 0 -0.001 0 0 6 0 Initializer xLED(c) 15 1111 1000 910 2012 1897 0.001 0 0 11 6 Sibert rLE(d) 14 1370 500 89 0 0 -0.009 0 0 0 4 Diaz rLE(d) 15 823 500 13 0 0 -0.009 0 0 64 8 JCrow wLE(d) 13 634 500 422 0 0 0.018 316537 0 3 3 Gintell xWLED(a) 6 108 1000 495 2054 2004 0.010 0 0 13 6 Brunelle wLE(d) 16 864 1000 85 0 510 0.016 504031 0 46 6 WPeck wWLE(b) 468 2734 1000 315 3010 8000 0.013 224641 0 4 3 Spratt wLE(d) 17 686 500 60 0 0 0.007 165111 0 3 4 RTowle wLE(b) 12 520 500 50 0 0 0.005 71 0 3 3 Kress wLE(d) 69 1895 500 21 0 0 0.001 177022 0 0 2 OPCTL xLED(b) 12 872 500 85 0 0 0.005 0 0 0 3 Pandolf rLE(d) 67 3279 500 0 0 0 -0.006 0 0 0 3 Lackey Not To Be Reproduced 9-21 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__M_E_T_E_R_S _t_r_a_f_f_i_c__c_o_n_t_r_o_l__q_u_e_u_e [] SECOND PART IS REALTIME, INTERACTIVE, AND ALL WORKCLASS QUEUES: REALTIME QUEUE: INTERACTIVE QUEUE: WORKCLASS 2 QUEUE: credits = 576 ms. WORKCLASS 3 QUEUE: credits = 242 ms. r 289 5326 1000 0 0 503 0.218 0 0 22 3 Dupuis r 131 2513 1000 0 4010 8000 0.128 0 0 0 3 Falksenj WORKCLASS 4 QUEUE: credits = 2601 ms. WORKCLASS 5 QUEUE: credits = 4000 ms. WORKCLASS 6 QUEUE: credits = -563 ms. WORKCLASS 7 QUEUE: credits = 3962 ms. rW 5 166 500 0 0 0 0.192 0 0 2 7 Saccuci WORKCLASS 8 QUEUE: credits = 3934 ms. WORKCLASS 9 QUEUE: credits = 2216 ms. WORKCLASS 10 QUEUE: credits = 4000 ms. WORKCLASS 11 QUEUE: credits = 4000 ms. Not To Be Reproduced 9-22 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__M_E_T_E_R_S _w_o_r_k__c_l_a_s_s__m_e_t_e_r_s ox WORK_CLASS_METERS - DISPLAY THE VARIOUS WORKCLASS PARAMETERS, AND SHOW WHAT RESOURCES EACH WORKCLASS IS CONSUMING. Total metering time 0:20:38 WC %GUAR %MAX %TCP V/ELIG PW IRESP IQUANT RESP QUANT P M R I LCG 0 3. 0.12 3 0.26 2.10 0.26 2.10 P 0 R I Init 1 3. 0.09 1 0.25 0.75 0.50 1.00 P 0 R I RTime 2 7. 15. 0.44 1 P 0 I System SysAdm OPR FED 3 32. 44. 0.49 1 P 0 I SysProg SysDev 4 9. 14. 4. 0.26 1 P 0 SEngr 5 20. 2. 0.46 1 P 0 I HEngr 6 12. 16. 8. 0.25 1 P 0 MktUS MktFor MktEd 7 3. 7. 4. 0.36 1 P 0 DS-CC 8 6. 0. 0.18 1 P 0 I OffAuto 9 4. 8. 2. 0.62 1 P 0 Misc Mfg 10 3. 0. 0.55 1 P 0 I Other 11 4. 2. 0.16 1 P 0 I Special TCPU percents (%GUAR) control non-realtime work_classes. Not To Be Reproduced 9-23 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__M_E_T_E_R_S _r_e_s_p_o_n_s__m_e_t_e_r_s ox RESPONSE_METERS - DISPLAYS RESPONSE TIME, BASED ON TERMINAL INTERACTIONS, ON A PER-WORKCLASS BASIS Total metering time 0:20:36 WC ---Thinks/-- ----Response Times by VCPU Range---- Load Control Group ---Queues--- -VCPU Range- # Avg Avg Resp # Avg From To Int VCPU RT Fact 0 86 2.70 0.00 0.50 113 0.04 0.42 9.34 Init 92 0.15 0.50 1.00 3 0.55 5.51 10.00 1.00 10.00 3 2.43 14.96 6.15 ----- ----- 119 0.12 0.91 7.76 1 35 11.78 0.00 0.50 34 0.11 0.96 8.74 RTime 39 0.21 0.50 1.00 2 0.83 4.06 4.87 ----- ----- 36 0.15 1.13 7.55 2 593 14.90 0.00 0.50 620 0.05 0.49 10.50 System SysAdm OPR FED 612 0.15 0.50 1.00 28 0.71 3.61 5.10 1.00 10.00 39 1.77 8.39 4.74 ----- ----- 687 0.17 1.07 6.22 3 2496 6.38 0.00 0.50 2993 0.08 0.66 7.96 SysProg SysDev 2622 0.17 0.50 1.00 117 0.68 4.22 6.16 1.00 10.00 66 2.46 13.47 5.49 10.00 99.99 10 56.85 99.99 3.33 ----- ----- 3186 0.33 1.65 4.96 4 581 15.82 0.00 0.50 663 0.05 0.71 12.94 SEngr 590 0.26 0.50 1.00 13 0.64 4.64 7.30 1.00 10.00 8 3.47 32.07 9.24 ----- ----- 684 0.11 1.15 10.88 5 133 29.51 0.00 0.50 148 0.06 0.83 12.95 HEngr 141 0.17 0.50 1.00 3 0.69 4.64 6.70 1.00 10.00 5 3.15 10.24 3.25 10.00 99.99 2 26.69 48.84 1.83 ----- ----- 158 0.51 1.81 3.55 Not To Be Reproduced 9-24 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__M_E_T_E_R_S _r_e_s_p_o_n_s__m_e_t_e_r_s 6 1180 11.65 0.00 0.50 977 0.05 1.13 20.91 MktUS MktFor MktEd 1211 0.58 0.50 1.00 24 0.64 4.95 7.74 1.00 10.00 16 1.89 11.88 6.29 ----- ----- 1017 0.10 1.39 14.38 7 259 14.65 0.00 0.50 292 0.08 1.53 20.17 DS-CC 287 0.98 0.50 1.00 9 0.71 9.03 12.66 1.00 10.00 17 2.04 14.76 7.24 10.00 99.99 1 12.22 99.99 9.45 ----- ----- 319 0.24 2.81 11.86 8 73 2.69 0.00 0.50 79 0.06 0.31 5.45 OffAuto 74 0.05 0.50 1.00 2 0.60 6.40 10.62 1.00 10.00 1 3.20 6.73 2.10 ----- ----- 82 0.11 0.54 4.94 9 94 41.91 0.00 0.50 80 0.11 1.23 11.07 Misc Mfg 96 0.30 0.50 1.00 11 0.69 4.74 6.91 1.00 10.00 13 2.99 12.82 4.30 ----- ----- 104 0.53 3.05 5.74 10 7 99.99 0.00 0.50 10 0.11 1.45 13.82 Other 8 0.21 1.00 10.00 1 3.88 39.11 10.09 ----- ----- 11 0.45 4.88 10.89 11 417 12.71 0.00 0.50 445 0.03 0.50 15.32 Special 420 0.16 0.50 1.00 5 0.57 3.61 6.29 1.00 10.00 4 1.65 11.40 6.90 ----- ----- 454 0.05 0.63 11.93 All 5954 11.13 0.00 0.50 6454 0.07 0.77 11.40 6192 0.29 0.50 1.00 217 0.68 4.54 6.70 1.00 10.00 173 2.31 13.11 5.68 10.00 99.99 13 48.77 99.99 3.32 ----- ----- 6857 0.24 1.51 6.39 86797 calls to meter_response_time 283 invalid transitions. Overhead = 0.09% ( 0.052 ms./call) Not To Be Reproduced 9-25 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__M_E_T_E_R_S _p_o_s_t__p_u_r_g_e__m_e_t_e_r_s ox POST_PURGE_METERS - DISPLAY THE STATE OF POST-PURGE ACTIVITY. [] CONSIDERABLY MORE DETAILED METERS ARE KEPT BY RING ZERO, BUT NOT REPORTED AND NOT PARTICULARLY INTERESTING. Total metering time 0:20:29 Post purge time 1.41 msec. (0.36% of system) Ave list size 17.76 entries Ave working set 5.59 pages Working set factor 0.50 Working set addend 0 Thrashing percentage 1.34 % Ave post in core 10.65 (59.94 %) Not To Be Reproduced 9-26 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__C_O_M_M_A_N_D_S _p_r_i_n_t__t_u_n_i_n_g__p_a_r_a_m_e_t_e_r_s ox PRINT_TUNING_PARAMETERS - PRINT VALUES FOR SYSTEM CONTROL PARAMETERS. MOST CONTROL THE SCHEDULER Current system tuning parameters: tefirst 0.5 seconds telast 1. seconds timax 8. seconds priority_sched_inc 80. seconds min_eligible 2. max_eligible 20. max_batch_elig 0 working_set_factor 0.5 working_set_addend 0 deadline_mode off int_q_enabled on post_purge on pre_empt_sample_time 0.04 seconds gp_at_notify off gp_at_ptlnotify off process_initial_quantum 2. seconds quit_priority 0. gv_integration 4. seconds realtime_io_priority on realtime_io_deadline 0. seconds realtime_io_quantum 0.005 seconds notify_timeout_interval 30. seconds notify_timeout_severity 0 write_limit 724 [] THESE ARE "INTERNAL", NORMALLY NEVER CHANGED, AND ONLY PRINTED IF THE -all CONTROL ARGUMENT IS GIVEN stack_truncation on stack_truncation_always off stk_trunc_block_avg_factor 0.25 trap_invalid_masked off meter_ast_locking off checksum_filemap on Not To Be Reproduced 9-27 MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__C_O_M_M_A_N_D_S _p_r_i_n_t__a_p_t__e_n_t_r_y ox PRINT_APT_ENTRY - INTERPRETS AND DUMPS AN APT ENTRY ! print_apt_entry Sibert -dump Sibert.Multics.a b.h126 at 10300 in tc_data, >pdd>!BblCpbBbBBBBBB PID:010300356001 TRM:000447007410 407777000460 Running for 0.067825 (since 01:28:53). Usage: cpu 8:40.8; vcpu 6:04.6; pf 23622. te/s/i/x: 0.411 0.000 0.647 32.000. Flags: loaded,eligible,mbz11,dbr_loaded. Alarm in 31.244 (at 01:29:24). 0 005400003000 014225000001 000000056106 010300356001 4 000001443141 000000000000 000002356631 000172044000 10 000000000000 000000000000 005200013740 000000002076 14 003000777777 115641364232 000000000000 003702747134 20 000000000000 001360000002 000000111567 457572337662 24 000000000000 000000000000 011700111567 457761705103 30 000447007410 407777000460 000000000000 000001720440 34 000000111567 457736532472 003322000000 000000000000 40 000000000000 000004325430 000000000000 000000000000 44 035117540004 001775100023 000000000000 002556711030 50 000000000000 000000000000 000000000004 000000004441 54 000000111567 457572506651 000000000000 014274070015 60 000000000000 002557051053 000001720440 776000000000 64 000000000000 000000000000 000000000000 000000000000 70 000000000000 000000000000 000000000000 000000000000 74 000000000000 000000000000 000000000000 000000000000 TOPIC X Fault and Interrupt Handling Page Fault and Interrupt Handling Overview . . . . 10-1 Fault and Interrupt Data Bases. . . . . . . . 10-4 10-i MDD-003 _T_R_A_F_F_I_C__C_O_N_T_R_O_L__C_O_M_M_A_N_D_S _p_r_i_n_t__a_p_t__e_n_t_r_y Fault and Interrupt Vectors . . . . . . . 10-4 Fault Data Save Areas . . . . . . . . . . 10-6 Important Types of Faults . . . . . . . . 10-8 Fault/Interrupt Meters. . . . . . . . . . . . 10-13 fim_meters. . . . . . . . . . . . . . . . 10-13 interrupt_meters. . . . . . . . . . . . . 10-14 10-i MDD-003 . _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__H_A_N_D_L_I_N_G__O_V_E_R_V_I_E_W ox FUNCTION [] RESPONSIBLE FOR HANDLING ALL EXCEPTIONS IN A CPU WHETHER INTERNAL TO THE PROCESSOR (REFERRED TO AS _F_A_U_L_T_S) OR EXTERNAL (REFERRED TO AS _I_N_T_E_R_R_U_P_T_S) [] ESTABLISHES THE SUPERVISOR ENVIRONMENT AT FAULT AND INTERRUPT TIME. SAVES THE MACHINE CONDITIONS AND TRANSFERS TO THE APPROPRIATE HANDLER [] MAJOR COMPONENTS: THE FAULT INTERCEPT MODULE (fim), WIRED-FAULT INTERCEPT MODULE (wired_fim), I/O INTERRUPT HANDLER (io_interrupt), sys_trouble, page_fault ox MAJOR DATA BASES [] INTERRUPT VECTORS - ONE SET PER SYSTEM (WIRED) [] INTERRUPT PAIR (2 INSTRUCTIONS) - ONE PAIR PER DEFINED INTERRUPT TYPE [] LOCATED AT ABSOLUTE ADDRESS 0. A HARDWARE RECOGNIZED DATA BASE [] DESCRIBE WHERE TO SAVE THE CONTEXT, AND WHERE TO TRANSFER TO TO PROCESS THE INTERRUPT (ALWAYS io_interrupt) Not To Be Reproduced 10-1 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__H_A_N_D_L_I_N_G__O_V_E_R_V_I_E_W [] FAULT VECTORS - ONE SET PER SYSTEM (WIRED) [] VECTOR PAIR (2 INSTRUCTIONS) - ONE PAIR PER DEFINED FAULT TYPE [] LOCATED AT ABSOLUTE ADDRESS 100 (OCTAL) IMMEDIATELY ABOVE THE INTERRUPT VECTORS. A HARDWARE RECOGNIZED DATA BASE [] DESCRIBE WHERE TO SAVE THE CONTEXT, AND WHERE TO TRANSFER TO TO PROCESS THE FAULT (fim, wired_fim, page_fault) [] _P_R_O_C_E_S_S DATA SEGMENT (PDS) - ONE PER PROCESS (WIRED WHEN ELIGIBLE) [] CONTAINS PROCESS RELEVANT INFO SUCH AS PROCESS ID, USER ID, HOME/WORKING/PROCESS DIRECTORIES, AIM CLASSIFICATION, INITIAL RING, ETC [] CONTAINS ALL INFORMATION ABOUT THE PROCESS NEEDED BY THE SUPERVISOR CODE WHEN THE PROCESS IS RUNNING [] CONTAINS SAVE AREAS FOR CONTEXT INFORMATION ABOUT FAULTS WHICH CAN RESULT IN GIVING UP THE PROCESSOR: PAGE FAULTS, SEGMENT FAULTS, AND ALL FAULTS NOT HANDLED BY THE SUPERVISOR [] _P_R_O_C_E_S_S_O_R DATA SEGMENT (PRDS) - ONE PER CONFIGURED CPU (WIRED) [] SERVES AS RING-ZERO STACK FOR PAGE CONTROL AND TRAFFIC CONTROL [] ALSO CONTAINS SAVE AREAS FOR CONTEXT INFORMATION ABOUT FAULTS WHICH USUALLY DO NOT MEAN GIVING UP THE PROCESSOR: CONNECT FAULTS AND INTERRUPTS. Not To Be Reproduced 10-2 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__H_A_N_D_L_I_N_G__O_V_E_R_V_I_E_W [] FIM_TABLE [] A TABLE IN THE FIM PROGRAM WHICH DESCRIBES THE ACTION TO BE TAKEN FOR VARIOUS TYPES OF FAULTS Not To Be Reproduced 10-3 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__D_A_T_A__B_A_S_E_S _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__V_E_C_T_O_R_S ox ALL FAULTS AND INTERRUPTS ARE HANDLED IN A CENTRALIZED FASHION [] FOR EACH FAULT OR INTERRUPT, THERE ARE TWO INSTRUCTIONS: [] AN scu INSTRUCTION, TO STORE THE ABSOLUTELY ESSENTIAL DATA NEEDED TO RESTART FROM THE FAULT [] A tra INSTRUCTION, TO TRANSFER TO TO THE APPROPRIATE FAULT HANDLER [] ASSOCIATED WITH EACH OF THESE INSTRUCTIONS, THERE IS A POINTER [] AN SCU DATA POINTER, POINTING TO ONE OF SIX REGIONS WHERE FAULT DATA GOES [] A FAULT HANDLER POINTER, INDICATING ONE OF THE PROCEDURES USED TO HANDLE FAULTS [] THESE INSTRUCTIONS AND POINTERS ARE STORED IN THE fault_vector [] THE DATA STORED BY scu IS ONLY THE "CONTROL UNIT DATA" - EACH HANDLER MUST IMMEDIATELY SAVE THE PROGRAM VISIBLE REGISTERS, THE EIS POINTER & LENGTH DATA, AND SO FORTH. THIS DATA IS ALWAYS STORED IN THE SAME FORMAT, THE MACHINE CONDITIONS STRUCTURE (mc.incl.pl1) Not To Be Reproduced 10-4 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__D_A_T_A__B_A_S_E_S _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__V_E_C_T_O_R_S =============================================== INSERT Fault and Interrupt Vectors DIAGRAM HERE =============================================== Not To Be Reproduced 10-5 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__D_A_T_A__B_A_S_E_S _F_A_U_L_T__D_A_T_A__S_A_V_E__A_R_E_A_S ox THERE ARE SIX REGIONS WHERE MACHINE CONDITIONS ARE STORED. [] THEY ARE SELECTED TO MINIMIZE THE NUMBER OF TIMES WHEN FAULT DATA MUST BE MOVED. USUALLY, ONCE FAULT DATA HAS BEEN STORED IN A PARTICULAR PLACE, IT CAN BE RESTORED DIRECTLY FROM THERE, BUT SOMETIMES IT MUST BE MOVED TO ANOTHER PLACE [] prds$interrupt_data - USED FOR INTERRUPTS, ONLY [] prds$fim_data - USED FOR FAULTS SUCH AS CONNECT FAULTS, WHICH WILL BE HANDLED ENTIRELY USING THE WIRED RING ZERO STACK (PRDS) [] prds$sys_trouble_data - USED FOR THE FAULT THAT CRASHED THE SYSTEM. NO MACHINE CONDITIONS ARE EVER STORED HERE DIRECTLY, ONLY MOVED HERE. [] pds$fim_data - USED FOR FAULTS WHICH WILL BE HANDLED IN RING ZERO, USING THE RING ZERO STACK, WHERE PAGE FAULTS MIGHT BE TAKEN WHILE THE OTHER FAULT IS BEING HANDLED [] pds$page_fault_data - USED FOR PAGE FAULTS AND TIMER RUNOUTS (WHICH INDICATE THE END OF A QUANTUM) - BOTH ARE EVENTS WHICH ALMOST ALWAYS RESULT IN GIVING UP THE PROCESSOR, BUT WHICH ARE HANDLED ON THE WIRED RING ZERO STACK (PRDS) [] pds$signal_data - USED FOR FAULTS WHICH WILL BE SIGNALLED OUT FOR THE USER RING TO HANDLE. IF AN ERROR OCCURS PROCESSING SOME FAULT IN RING ZERO, ITS FAULT DATA IS MOVED HERE BEFORE SIGNALLING Not To Be Reproduced 10-6 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__D_A_T_A__B_A_S_E_S _F_A_U_L_T__D_A_T_A__S_A_V_E__A_R_E_A_S [] THERE ARE ALSO SPECIAL STACK FRAMES CREATED BY THE FIM USED FOR FAULT SIGNALLING, AND THE MACHINE CONDITIONS ARE COPIED THERE. Not To Be Reproduced 10-7 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__D_A_T_A__B_A_S_E_S _I_M_P_O_R_T_A_N_T__T_Y_P_E_S__O_F__F_A_U_L_T_S ox CERTAIN FAULTS DESERVE SPECIAL DISCUSSION, AS THEY ARE USED TO IMPLEMENT IMPORTANT SUPERVISOR SERVICES [] LINKAGE FAULT [] OCCUR WHEN A POINTER CONTAINING 46 OCTAL IN THE LOW SIX BITS OF THE FIRST WORD IS USED [] USED TO IMPLEMENT DYNAMIC LINKING (SEE NAME/ADDRESS SPACE MANAGEMENT, TOPIC 4) [] USES pds$fim_data, IS HANDLED BY fim.alm, WHICH INVOKES link_man.pl1, HANDLED ENTIRELY ON THE stack_0 [] SEGMENT FAULT [] OCCURS WHEN AN NON-ACTIVE SEGMENT IS REFERENCED (SEE SEGMENT CONTROL, TOPIC 7) [] USES pds$fim_data, IS HANDLED BY fim.alm, WHICH INVOKES seg_fault.pl1, HANDLED ENTIRELY ON THE stack_0 [] A SEGMENT FAULT MAY OCCUR WHILE ANOTHER IS BEING HANDLED, AND IT WILL BE HANDLED RECURSIVELY [] PAGE FAULT [] OCCURS WHEN A PAGE NOT IN MEMORY IS REFERENCED (SEE PAGE CONTROL, TOPIC 8) Not To Be Reproduced 10-8 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__D_A_T_A__B_A_S_E_S _I_M_P_O_R_T_A_N_T__T_Y_P_E_S__O_F__F_A_U_L_T_S [] USES pds$page_fault_data, IS HANDLED DIRECTLY BY page_fault.alm, AND IS HANDLED ENTIRELY ON THE PRDS. [] TIMER RUNOUT [] OCCURS WHEN THE TIMER REGISTER IS DECREMENTED THROUGH ZERO, INDICATING THAT THE RUNNING PROCESS HAS NOW OVERSTAYED ITS WELCOME, AND SHOULD LOSE ELIGIBILITY [] TIMER RUNOUT FAULTS ARE ALSO USED INTERNAL TO TRAFFIC CONTROL TO IMPLEMENT "PRE-EMPT" SAMPLING; IN THIS MODE, NOW THE DEFAULT, THE TIMER GOES OFF EVERY FEW MILLISECONDS AND THE PROCESS CHECKS TO SEE WHETHER A HIGHER PRIORITY PROCESS WANTS THE PROCESSOR; THIS DOES NOT MAKE THE RUNNING PROCESS INELIGIBLE, HOWEVER, UNLESS ITS QUANTUM HAS ALSO RUN OUT [] A PROCESS RUNNING IN RING ZERO NEED NEVER GIVE UP ELIGIBILITY - WHEN A TIMER RUNOUT HAPPENS, IT REMEMBERS, AND SETS THE RING ALARM REGISTER, WHICH WILL CAUSE A RING ALARM FAULT LATER ON WHEN IT LEAVES RING ZERO [] USES pds$page_fault_data, IS HANDLED DIRECTLY BY pxss.alm, AND IS HANDLED ENTIRELY ON THE PRDS. [] RING ALARM FAULT [] OCCURS WHEN A PROCESS RETURNS TO AN OUTER RING FROM AN INNER RING, AND THE RING ALARM REGISTER HAS BEEN SET [] (1) USED TO DEFER ACTION ON TIMER RUNOUTS AND CONNECT FAULTS (SEE BELOW) UNTIL A PROCESS LEAVES RING ZERO [] (2) USED TO ENSURE THAT THE SOFTWARE VALIDATION LEVEL (SET WITH cu_$level_set) IS NEVER LOWER THAN THE RING OF EXECUTION - SETTING THE VALIDATION LEVEL ALSO SETS THE RING ALARM REGISTER, AND THE RING ALARM FAULT CAUSES THE VALIDATION LEVEL TO BE RESET Not To Be Reproduced 10-9 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__D_A_T_A__B_A_S_E_S _I_M_P_O_R_T_A_N_T__T_Y_P_E_S__O_F__F_A_U_L_T_S [] USES pds$page_fault_data, IS HANDLED DIRECTLY BY ring_alarm.alm AND IS HANDLED ENTIRELY ON THE PRDS. [] IS ACTUALLY A SUBTYPE OF ACCESS VIOLATION [] CONNECT FAULT [] OCCURS WHEN ONE PROCESSOR SENDS A "connect" TO ANOTHER, USING A cioc INSTRUCTION [] RESEMBLES A SOFTWARE SENDABLE INTERRUPT; ALTHOUGH PROCESSORS CAN SEND INTERRUPTS TO EACH OTHER, LIMITATIONS OF THE HARDWARE MAKE CONNECT FAULTS EASIER TO USE [] USED FOR ALL INTERPROCESSOR SIGNALLING - [] (1) TO CAUSE ANOTHER PROCESSOR TO SELECTIVELY CLEAR ITS CACHE OR ASSOCIATIVE MEMORY [] (2) TO PRE-EMPT A PROCESS RUNNING ON ANOTHER CPU (WHEN PRE-EMPT SAMPLING IS _N_O_T IN USE) [] (3) TO INFORM ANOTHER PROCESSOR THAT THE SYSTEM IS CRASHING [] (4) TO INFORM ANOTHER PROCESSOR THAT IT IS BEING REMOVED FROM THE CONFIGURATION [] USES prds$fim_data, IS SOMETIMES HANDLED BY wired_fim.alm, AND IS HANDLED ENTIRELY ON THE PRDS. [] FOR TYPE 1 CONNECTS (CACHE CLEAR), THE FAULT IS HANDLED VERY SPECIALLY BY CODE WHICH IS ACTUALLY EXECUTED FROM WITHIN THE PRDS (SEE fast_connect_init.alm), AND RUNS SOMEWHAT FASTER. THE COMPLICATED CASES ARE LEFT TO WIRED_FIM [] CELLS IN THE scs ARE USED TO DISTINGUISH BETWEEN THE DIFFERENT TYPES OF CONNECT FAULTS; A PROCESSOR SETS THE APPROPRIATE CELLS BEFORE SENDING THE CONNECT. Not To Be Reproduced 10-10 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__D_A_T_A__B_A_S_E_S _I_M_P_O_R_T_A_N_T__T_Y_P_E_S__O_F__F_A_U_L_T_S [] OTHER FAULTS [] PARITY - RUN AUTOMATIC PARITY ERROR LOGGING AND DIAGNOSIS (TO CHIP LEVEL, FOR CACHE) ROUTINES [] OP_NOT_COMPLETE, COMMAND, SHUTDOWN, STARTUP, STORE, TROUBLE - RUN HARDWARE ERROR LOGGING ROUTINES [] OVERFLOW, UNDERFLOW - CAN BE SET UP TO AUTOMATICALLY SET A SPECIFIED (VERY LARGE OR VERY SMALL) VALUE AND RESTART WITHOUT INTERRUPTING THE RUNNING PROGRAM [] DERAIL - USED WHEN CRASHING THE SYSTEM OR VOLUNTARILY RETURNING TO BOS TO BEGIN EXECUTION IN BOS. AN ORDINARY SIGNALLABLE FAULT AT ALL OTHER TIMES (AND USED THAT WAY BY THE gtss EMULATOR) [] EXECUTE - USED TO FORCE A SYSTEM CRASH [] ACCESS VIOLATION - CAN AUTOMATICALLY LOG ACCESS VIOLATIONS FOR SECURITY AUDITS [] OTHERS - HANDLED BY fim.alm, WHICH MAPS THE HARDWARE FAULTS ONTO THE MULTICS ENVIRONMENT CONDITION NAMES [] CONSIDERABLE INTERPRETATION IS SOMETIMES REQUIRED; FOR INSTANCE, A NULL POINTER IS ACTUALLY SIGNALLED BY THE HARDWARE AS AN ACCESS VIOLATION, OUT OF BOUNDS ON DSEG, FAULT [] INTERRUPT [] INTERRUPTS ARE USED TO ANNOUNCE THE COMPLETION OF ALL I/O OPERATIONS, AND ALSO (RARELY) USED DURING DYNAMIC RECONFIGURATION TO START PROCESSORS Not To Be Reproduced 10-11 MDD-003 _F_A_U_L_T__A_N_D__I_N_T_E_R_R_U_P_T__D_A_T_A__B_A_S_E_S _I_M_P_O_R_T_A_N_T__T_Y_P_E_S__O_F__F_A_U_L_T_S [] USES prds$interrupt_data, IS HANDLED DIRECTLY BY iom_interrupt.alm OR init_processor.alm, AND IS HANDLED ENTIRELY ON THE PRDS. Not To Be Reproduced 10-12 MDD-003 _F_A_U_L_T_/_I_N_T_E_R_R_U_P_T__M_E_T_E_R_S _f_i_m__m_e_t_e_r_s ox FIM_METERS - COUNTS FOR ALL FAULT PROCESSING Total metering time: 0:20:28 fault type count shutdown 0 store 0 mme1 0 fault_tag_1 2 timer_runout 12907 command 5 derail 0 lockup 0 connect 742501 parity 0 illegal_procedure 0 op_not_complete 0 startup 0 overflow 0 divide_check 0 execute 0 segment_fault 6697 page_fault 151772 directed_fault_2 0 directed_fault_3 0 access_violation 21120 mme2 0 mme3 0 mme4 0 linkage_fault 21058 fault_tag_3 0 trouble 0 Not To Be Reproduced 10-13 MDD-003 _F_A_U_L_T_/_I_N_T_E_R_R_U_P_T__M_E_T_E_R_S _i_n_t_e_r_r_u_p_t__m_e_t_e_r_s ox INTERRUPT_METERS - COUNTS & TIMING FOR ALL I/O INTERRUPTS Total metering time 0:20:28 IOM Ch Int Avg Time % CPU Name A 6. 11 2.043 0.00 IOM A special A 10. 379 1.553 0.01 prtb A 13. 9253 3.436 0.65 fnp c A 14. 19 0.788 0.00 opc A 16. 26248 1.347 0.72 tapa A 17. 128 1.328 0.00 tapa A 18. 13097 5.383 1.43 fnp b A 20. 21041 0.860 0.37 dska A 21. 2881 0.860 0.05 dska A 22. 8486 0.877 0.15 dskb A 23. 257 0.964 0.01 dskb A 24. 17896 0.895 0.33 dskb A 25. 2573 0.943 0.05 dskb A 26. 10486 0.857 0.18 dska A 27. 255 0.899 0.00 dska A 28. 24717 0.845 0.43 dskc A 29. 2319 0.849 0.04 dskc A 30. 9915 0.845 0.17 dskc A 31. 215 0.767 0.00 dskc B 14. 236 0.877 0.00 fnp d B 15. 6917 3.351 0.47 fnp f B 18. 3547 3.543 0.26 fnp a B 19. 13667 3.435 0.96 fnp e B 20. 22013 0.881 0.39 dskb B 21. 4745 0.863 0.08 dskb B 22. 6054 0.861 0.11 dska B 23. 60 0.925 0.00 dska B 24. 15946 0.867 0.28 dska B 25. 989 0.841 0.02 dska B 26. 12757 0.863 0.22 dskb B 27. 1020 0.903 0.02 dskb B 28. 5178 0.838 0.09 dskc B 29. 30 0.653 0.00 dskc B 30. 16582 0.823 0.28 dskc B 31. 825 0.841 0.01 dskc B 32. 1764 0.825 0.03 dske Not To Be Reproduced 10-14 MDD-003 _F_A_U_L_T_/_I_N_T_E_R_R_U_P_T__M_E_T_E_R_S _i_n_t_e_r_r_u_p_t__m_e_t_e_r_s Chan 262506 1.464 7.82 Ovhd 258932 0.230 1.21 Total 258932 1.713 9.03 TOPIC XI System Initialization/Shutdown Page System Initialization Overview. . . . . . . . 11-1 System Initialization Terminology . . . . . . 11-4 Initialization Data Bases . . . . . . . . . . 11-7 Environment Passed to Initialization. . . . . 11-10 Collection 0. . . . . . . . . . . . . . . . . 11-11 Collection 1. . . . . . . . . . . . . . . . . 11-12 Collection 2. . . . . . . . . . . . . . . . . 11-14 Collection 3. . . . . . . . . . . . . . . . . 11-16 Normal Shutdown . . . . . . . . . . . . . . . 11-17 File System Shutdown. . . . . . . . . . . . . 11-18 Emergency Shutdown. . . . . . . . . . . . . . 11-20 11-i MDD-003 _F_A_U_L_T_/_I_N_T_E_R_R_U_P_T__M_E_T_E_R_S _i_n_t_e_r_r_u_p_t__m_e_t_e_r_s ox FUNCTION [] PREPARE THE SYSTEM TO OPERATE, STARTING FROM A COMPLETELY EMPTY MACHINE [] READS IN SUPERVISOR PROGRAMS FROM SYSTEM TAPE, SNAPS LINKS BETWEEN SUPERVISOR COMPONENTS, VERIFIES AND INITIALIZES HARDWARE CONFIGURATION, SETS UP SYSTEM DATABASES, ACCEPTS STORAGE SYSTEM DISKS AND PREPARES THEM FOR USE BY THE FILE SYSTEM [] MOST PROGRAMS IN SYSTEM INITIALIZATION ARE DELETED AFTER INITIALIZATION IS COMPLETE. [] SUPERVISOR PROGRAMS ARE LOADED IN THREE "COLLECTIONS", EACH OF WHICH DEPENDS ON THE MECHANISMS SET UP BY THE PREVIOUS ONE ox MAJOR DATA BASES [] THESE DATA BASES ARE ALL BUILT DURING THE PROCESS OF INITIALIZATION (EXCEPT FOR THE CONFIG DECK) AND KEPT AFTER INITIALIZATION IS FINISHED [] SEGMENT LOADING TABLE (>sl1>slt) [] CONTAINS AN ENTRY DESCRIBING THE ATTRIBUTES OF EACH SEGMENT IN THE SUPERVISOR Not To Be Reproduced 11-0 MDD-003 _S_Y_S_T_E_M__I_N_I_T_I_A_L_I_Z_A_T_I_O_N__O_V_E_R_V_I_E_W [] NAME TABLE (>sl1>name_table) [] CONTAINS A LIST OF NAMES FOR EACH OF THE SEGMENTS IN THE SUPERVISOR [] DEFINITIONS SEGMENT (>sl1>definitions_) [] CONTAINS THE DEFINITIONS SECTIONS FOR ALL THE SEGMENTS IN THE SUPERVISOR, WHICH ARE USED IN ORDER TO SNAP LINKS BETWEEN THE SUPERVISOR MODULES [] CONFIG DECK (>sl1>config_deck) [] CONTAINS A DESCRIPTION OF THE HARDWARE CONFIGURATION AND CERTAIN SOFTWARE PARAMETERS [] PROVIDED TO SYSTEM INITIALIZATION BY BOS ox SHUTDOWN -- TERMINATES THE ACTIVITIES OF THE SYSTEM IN AN ORDERLY FASHION [] TWO TYPES OF SHUTDOWN: [] NORMAL -- REQUESTED BY THE INITIALIZER, RUNS IN THE USUAL SUPERVISOR ENVIRONMENT [] EMERGENCY -- USED AFTER A CRASH, MUST MAKE THE SUPERVISOR ENVIRONMENT OPERABLE BEFORE PROCEEDING Not To Be Reproduced 11-1 MDD-003 _S_Y_S_T_E_M__I_N_I_T_I_A_L_I_Z_A_T_I_O_N__O_V_E_R_V_I_E_W [] BOTH TYPES EXIST PRIMARILY TO SHUT DOWN THE FILE SYSTEM -- THAT IS, TO WRITE ALL DATA IN MEMORY INTO ITS PROPER HOME ON DISK [] INCLUDES PAGES OF SEGMENTS, VTOCES, VOLUME AND VTOC MAPS [] SHUTDOWN ESSENTIALLY RUNS THE STEPS OF INITIALIZATION BACKWARDS, BUT WITH A LOT OF SHORTCUTS Not To Be Reproduced 11-2 MDD-003 _S_Y_S_T_E_M__I_N_I_T_I_A_L_I_Z_A_T_I_O_N__T_E_R_M_I_N_O_L_O_G_Y CONFIG DECK: A SET OF CARDS OR CARD IMAGES USED TO INFORM THE SOFTWARE ABOUT THE OPERATIONAL READINESS OF THE HARDWARE PRESENT, SWITCH SETTINGS AND SPECIFICATIONS OF SOME SOFTWARE DATA BASES (SIZE, LOCATION, ETC) BOS: THE _BOOTLOAD _OPERATING _SYSTEM. A SIMPLE OPERATING SYSTEM (A ONE CPU, UNPAGED ENVIRONMENT) OF 8 SEGMENTS OCCUPYING THE FIRST 16K OF MAIN MEMORY. BOS RESIDES IN THE BOS PARTITION WHEN "MULTICS" IS RUNNING MST: THE _MULTICS _SYSTEM _TAPE CONTAINS PRECISELY ENOUGH INFORMATION (PROCEDURES AND DATA BASES) TO BRING A BARE HARDWARE SYSTEM TO MULTICS COMMAND LEVEL (ACTUALLY, ONLY ENOUGH OF COMMAND LEVEL TO PERFORM A RELOAD) BOOT: THE OPERATIONAL PROCEDURE OF READING THE SEGMENTS FROM THE MST AND EXECUTING THE PROCEDURE/SEGMENTS THEREIN WARM/COLD BOOT: BOOTING THE SYSTEM WITH/WITHOUT A HIERARCHY PRESENT HARDCORE PARTITION: A RLV PARTITION FOR PAGING HARDCORE SEGMENTS CREATED DURING BOOTLOAD Not To Be Reproduced 11-3 MDD-003 _S_Y_S_T_E_M__I_N_I_T_I_A_L_I_Z_A_T_I_O_N__T_E_R_M_I_N_O_L_O_G_Y DECIDUOUS SEGMENT: A SEGMENT READ IN AS PART OF THE BOOTLOAD TAPE AND PLACED INTO THE HIERARCHY. DECIDUOUS SEGMENTS ARE PART OF THE INITIALIZER'S HARDCORE ADDRESS SPACE AND RESIDE ENTIRELY IN THE HARDCORE PARTITION. THEY ARE PUT INTO THE HIERARCHY (>sl1) IN ORDER TO BE ACCESSIBLE FROM THE USER RINGS NON DECIDUOUS HARDCORE SEGMENT: A PAGED HARDCORE SEGMENT NOT IN THE HIERARCHY (AND THUS HAS NO PATHNAME) Not To Be Reproduced 11-4 MDD-003 _S_Y_S_T_E_M__I_N_I_T_I_A_L_I_Z_A_T_I_O_N__T_E_R_M_I_N_O_L_O_G_Y ========================================== INSERT Segment Classification DIAGRAM HERE ========================================== Not To Be Reproduced 11-5 MDD-003 _I_N_I_T_I_A_L_I_Z_A_T_I_O_N__D_A_T_A__B_A_S_E_S ox THE TERM INITIALIZATION REFERS TO THE ACTIONS REQUIRED TO CREATE THE MULTICS ENVIRONMENT GIVEN THE EXISTENCE OF A CONFIGURATION DECK, AND HARDWARE CONTAINING NO OTHER DATA THAN FIRMWARE AND BOS ox INITIALIZATION IS ACCOMPLISHED BY AN ORDERLY LOADING AND PROCESSING OF THE SEGMENTS RESIDING ON THE MULTICS SYSTEM TAPE (MST) ox THE SEGMENTS OF THE MST MAY BE DIVIDED INTO THREE CATEGORIES: [] INITIALIZATION SEGMENTS [] PROCEDURES USED ONLY FOR INITIALIZATION AND SUBSEQUENTLY DISCARDED [] SUPERVISOR SEGMENTS [] DATA BASES USED DURING INITIALIZATION THAT ULTIMATELY BECOME DATA BASES OF Initializer.SysDaemon.z [] PROCEDURES AND DATA BASES THAT CONSTITUTE MULTICS HARDCORE SUPERVISOR IN ITS ENTIRETY [] NON-SUPERVISOR SEGMENTS [] THE SEGMENTS OF COLLECTION THREE ARE PRECISELY THE NON-SUPERVISOR SEGMENTS OF THE MST. THESE SEGMENTS ARE LOADED DIRECTLY INTO >system_library_1, AND ARE NOT PART OF THE RING ZERO SUPERVISOR Not To Be Reproduced 11-6 MDD-003 _I_N_I_T_I_A_L_I_Z_A_T_I_O_N__D_A_T_A__B_A_S_E_S ox BOOTLOAD PROCESSOR [] ONE PROCESSOR (THE BOOTLOAD CPU) PERFORMS ALL OF INITIALIZATION RUNNING EXCLUSIVELY IN RING ZERO [] IN THE MOST OF INITIALIZATION (COLLECTION ONE AND MOST OF COLLECTION TWO), THERE ARE NO PROCESSES, AS SUCH. THE ENVIRONMENT WHICH RUNS THERE EVENTUALLY BECOMES THE Initializer.SysDaemon PROCESS [] NOTE: SINCE THE Initializer.SysDaemon DOES NOT LOGIN LIKE OTHER USERS, IT DOES NOT APPEAR IN THE NORMAL USER TABLE, CONSEQUENTLY IS NOT VISIBLE TO THE who COMMAND ox STRATEGY OF INITIALIZATION: BOOTSTRAPPING [] THE FIRST PROCEDURES RUN IN AN ENVIRONMENT DEVOID OF ALL SOFTWARE ASSISTANCE [] EACH NEW MECHANISM (SEGMENTATION, STACKS, SYMBOLIC LINKING, PAGING, ETC) IS MADE OPERATIVE AS SOON AS POSSIBLE TO ENRICH THE ENVIRONMENT IN WHICH FURTHER MECHANISMS ARE MADE OPERATIVE [] MANY MECHANISMS HAVE SUBSYSTEMS THAT CONTROL THEM AND THESE SUBSYSTEMS ARE NORMALLY INITIALIZED BY CALLING A SPECIAL ENTRY POINT IN THE SUBSYSTEM WHICH PERFORM SUCH TASKS AS: Not To Be Reproduced 11-7 MDD-003 _I_N_I_T_I_A_L_I_Z_A_T_I_O_N__D_A_T_A__B_A_S_E_S [] CREATING TABLES WHOSE SIZES ARE DETERMINED BY DATA SPECIFIED IN THE "CONFIG" DECK [] THREADING OF RELEVANT LISTS [] SEGMENTS ON THE MST ARE ARRANGED IN SUCH AN ORDER THAT THE EARLIER SEGMENTS ALLOW AS MANY MECHANISMS AS POSSIBLE TO BE USED IN LOADING AND PROCESSING OF THE LATER SEGMENTS [] FOR THIS PURPOSE (AND BECAUSE THE SIZE OF THE MST IS POTENTIALLY LARGER THAN MAIN MEMORY), THE MST IS DIVIDED INTO FOUR PARTS KNOWN AS COLLECTION ZERO, ONE, TWO AND THREE [] INITIALIZATION CAN BE VIEWED AS THE LOADING AND PROCESSING OF COLLECTION ONE, COLLECTION TWO, AND COLLECTION THREE, IN TURN ox THE ADDRESS SPACE OF INITIALIZATION (MINUS THE INITIALIZATION SEGMENTS) BECOMES THE GLOBAL SUPERVISOR ADDRESS SPACE OF MULTICS [] THIS ADDRESS SPACE IS "CLONED" TO BECOME THE INITIAL ADDRESS SPACE OF NEWLY CREATED PROCESSES BY DUPLICATING THE DSEG Not To Be Reproduced 11-8 MDD-003 _E_N_V_I_R_O_N_M_E_N_T__P_A_S_S_E_D__T_O__I_N_I_T_I_A_L_I_Z_A_T_I_O_N ox THE FIRST SEGMENT OF COLLECTION ONE IS THE BOUND SEGMENT bound_bootload_1 ox AT THE TIME CONTROL IS TRANSFERRED TO bound_bootload_1, IT IS REQUIRED THAT BOS HAS INITIALIZED MAIN MEMORY AS FOLLOWS: [] THE IOM MAILBOX MUST BE AT LOCATION 1400 AND CONTAIN THE CHANNEL AND DEVICE NUMBER OF THE TAPE DRIVE ON WHICH THE MST IS MOUNTED [] THE CONFIG DECK (AS PRODUCED BY BOS) MUST RESIDE AT LOCATION 14000 THRU 15777 [] THE BOS TOEHOLD AND FLAGBOX MUST BE AT LOCATION 10000 THRU 11777 [] THIS ONE PAGE CONSTITUTES ALL KNOWLEDGE THAT MULTICS HAS OF BOS [] TRANSFERRING CONTROL TO THE START OF THE BOS TOEHOLD WILL CAUSE: [] FIRST 64K OF MAIN MEMORY TO BE FLUSHED OUT TO THE BOS PARTITION [] THE BOS OPERATING SYSTEM TO BE READ INTO THE FIRST 64K OF MAIN MEMORY [] CONTROL GIVEN TO BOS [] THE REMAINDER OF MAIN MEMORY MUST CONTAIN ZEROES Not To Be Reproduced 11-9 MDD-003 _C_O_L_L_E_C_T_I_O_N__0 ox THIS CONSISTS OF THE SEGMENTS WHICH ARE DEFINED TO BE PRESENT IN THE INITIAL ADDRESS SPACE [] THESE SEGMENTS ARE EMPTY, AND OVERLAY SPECIFIC REGIONS OF MAIN MEMORY. THEY ARE DEFINED SO THAT bound_bootload_1 CAN KNOW WHAT SEGMENT NUMBERS TO USE FOR WHAT DATA [] THE COLLECTION ZERO SEGMENTS ARE dseg, fault_vector, iom_mailbox, config_deck, dn355_mailbox, bos_toehold, flagbox, slt, and name_table [] SEE SECTION 5, NAME / ADDRESS SPACE MANAGEMENT, FOR THEIR DESCRIPTIONS Not To Be Reproduced 11-10 MDD-003 _C_O_L_L_E_C_T_I_O_N__1 ox COLLECTION 1 CONTAINS ALL OF THE PROCEDURES AND DATA BASES NECESSARY TO MAKE PAGING OPERATIVE ox BASIC STEPS OF COLLECTION 1 LOADING AND INITIALIZATION: [] bound_bootload_1 GAINS CONTROL FROM BOS, IN ABSOLUTE MODE, AND PERFORMS THE FOLLOWING: [] LOADS THE REMAINDER OF ITSELF INTO MAIN MEMORY [] ESTABLISHES INTERIM FAULT AND INTERRUPT VECTORS [] INITIALIZES THE INITIALIZATION DSEG, AND ENTERS APPENDING MODE [] READS THE REMAINDER OF COLLECTION 1 INTO MAIN MEMORY (INCLUDING A SEGMENT NAMED bootstrap2) [] bound_bootload_1 TRANSFERS TO bootstrap2 [] bootstrap2 PERFORMS THE FOLLOWING: [] CREATES A STACK FRAME IN THE SEGMENT "inzr_stk0" [] CALL THE APPROPRIATE PROCEDURES TO PRELINK THE SEGMENTS OF COLLECTION 1 [] SETS UP THE PL/I ENVIRONMENT AND CALLS THE FIRST PL/I PROCEDURE "initializer" Not To Be Reproduced 11-11 MDD-003 _C_O_L_L_E_C_T_I_O_N__1 [] initializer (A SUPERVISOR SEGMENT), ACTUALLY CALLS real_initializer TO DO THE REAL WORK. ALL THE REST OF INITIALIZATION TAKES PLACE VIA CALLS IN real_initializer [] FOR DEBUGGING PURPOSES, THERE IS A MECHANISM IN real_initializer WHICH CAN BE USED TO STOP AT ANY OF THOSE CALLS BY SETTING A VALUE IN THE PROCESSOR SWITCHES [] THE MAJOR INITIALIZATIONS PERFORMED IN THE REST OF COLLECTION ONE ARE: [] INITIALIZE THE SCU, CLOCK, AND CPU CONTROL MECHANISMS, CHECKING THE SWITCHES AND THE ADDRESSABILITY OF MEMORY [] INITIALIZE FAULT AND INTERRUPT PROCESSING. INITIALIZE THE CONSOLE AND SYSERR MECHANISMS [] INITIALIZE PRIMITIVE TRAFFIC CONTROL (WAIT FOR SINGLE EVENTS). INITIALIZE THE SST [] INITIALIZE AND CHECK THE DISK CONFIGURATION. AT THIS POINT, IT BECOMES POSSIBLE TO TAKE PAGE FAULTS, AND ALL FURTHER DISK I/O IS DONE BY PAGING [] CHECK THE ROOT VOLUMES SPECIFIED ON THE ROOT CARD, AND INITIALIZE THE HARDCORE PARTITION MECHANISM. THIS ALSO INCLUDES CREATING THE PARTITIONS AND VTOC IN A COLD BOOT [] MAKE SEGMENTS PAGED -- AT THIS POINT, ALL PAGED SUPERVISOR SEGMENTS ARE COPIED INTO THE HARDCORE PARTITION, AND ACCESSED BY THE NORMAL PAGE FAULT MECHANISM. COLLECTION ONE ENDS HERE Not To Be Reproduced 11-12 MDD-003 _C_O_L_L_E_C_T_I_O_N__2 ox COLLECTION TWO - THE REST OF SUPERVISOR INITIALIZATION [] READ IN THE REST OF THE SUPERVISOR SEGMENTS FROM TAPE AND INITIALIZE THE REST OF THE SUPERVISOR DATABASES [] WHEN COLLECTION TWO IS FINISHED, THE INITIALIZATION ENVIRONMENT HAS _B_E_C_O_M_E Initializer PROCESS, AND IT CALLS OUT TO RING ONE TO START UP THE ANSWERING SERVICE [] THE FOLLOWING MAJOR STAGES TAKE PLACE IN COLLECTION TWO: [] COLLECTION TWO IS READ FROM TAPE (STILL USING A SPECIAL PROCEDURE, tape_reader, WHICH DOUBLE-BUFFERS) [] THE AND CONDITION SIGNALLING AND HIGHER LEVEL FAULT MECHANISMS ARE INITIALIZED [] HIGH LEVEL FILE SYSTEM MECHANISMS ARE INITIALIZED: THE VTOC MANAGER, VOLUME DUMPER BIT MAP, SCAVENGER, SEGMENT TRAILERS, LOGICAL VOLUME MANAGEMENT, DIRECTORY LOCKING [] TRAFFIC CONTROL IS FURTHER INITIALIZED, AND AN IDLE PROCESS IS CREATED FOR THE RUNNING CPU [] SYSERR LOGGING (TO THE SYSERR PARTITION) IS INITIALIZED. ALL SYSERR MESSAGES GENERATED AFTER THIS POINT WILL GO IN THE LOG [] THE FILE SYSTEM ON THE RPV IS "ACCEPTED", AND THE ROOT DIRECTORY INSPECTED (OR CREATED, IF THIS IS A COLD BOOT) [] AFTER THIS POINT, THE CONTENTS OF THE HARDCORE PARTITIONS ARE FIXED, AND ALL FURTHER RECORD ALLOCATION AND FREEING IS DONE FROM THE PAGING REGIONS OF THE FILE SYSTEM VOLUMES Not To Be Reproduced 11-13 MDD-003 _C_O_L_L_E_C_T_I_O_N__2 [] DECIDUOUS SEGMENTS ARE SPLICED INTO THE HIERARCHY [] STACK SHARING IS INITIALIZED [] THE REST OF THE SEGMENTS, COMPRISING COLLECTION THREE, ARE READ, DIRECTLY INTO THEIR PLACES IN THE HIERARCHY (>sl1) [] THE USER VISIBLE SUPERVISOR I/O MECHANISM (ioi) IS INITIALIZED, AND THE SPECIAL SUPERVISOR TAPE READER IS SHUT DOWN [] TRAFFIC CONTROL IS FULLY INITIALIZED BY CREATING IDLE PROCESSES FOR THE OTHER CPUS AND STARTING THEM [] ALL INITIALIZATION SEGMENTS ARE NOW DISCARDED, AND WHAT HAS BECOME THE Initializer.SysDaemon PROCESS CALLS init_proc AND BEGINS EXECUTION IN RING ONE [] AT THIS POINT, SUPERVISOR INITIALIZATION IS FINISHED Not To Be Reproduced 11-14 MDD-003 _C_O_L_L_E_C_T_I_O_N__3 ox COLLECTION THREE IS NOT PROPERLY A "COLLECTION" AT ALL, BUT JUST A TERM USED TO DESCRIBE THE BEGINNING OF Initializer AND ANSWERING SERVICE INITIALIZATION [] MANY THINGS HAPPEN BETWEEN FIRST LEAVING RING ZERO AND LOGGING IN THE FIRST USER. MOST HAVE NOTHING TO DO WITH THE FILE SYSTEM. THE FEW MOST INTERESTING ONES ARE: [] VOLUME ACCEPTANCE - THE NON-ROOT VOLUMES ARE INSPECTED AND ACCEPTED INTO THE HIERARCHY. THEIR CONFIGURATION CAN BE CHANGED BY USE OF OPERATOR COMMANDS [] delete_old_pdds - THE PROCESS DIRECTORY AND DECIDUOUS SEGMENTS LEFT OVER FROM THE PREVIOUS BOOTLOAD(S) ARE DELETED [] THIS MUST BE DONE AFTER THE HIERARCHY IS FULLY AVAILABLE, SINCE NON-RLV VOLUMES MAY HAVE BEEN USED FOR PROCESS DIRS [] VOLUME SCAVENGER AND QUOTA SALVAGER PROCESSES MAY BE STARTED AT THIS TIME, IF THERE ARE INCONSISTENCIES IN THE HIERARCHY CAUSED BY PREVIOUS CRASHES Not To Be Reproduced 11-15 MDD-003 _N_O_R_M_A_L__S_H_U_T_D_O_W_N ox WHEN THE SYSTEM IS SHUT DOWN, IT MUST BE DONE IN AN ORDERLY MANNER [] THIS IS ACCOMPLISHED, MORE OR LESS, BY RUNNING THE STEPS IN INITIALIZATION BACKWARDS: [] CRAWLOUTS ARE DISABLED. ONCE SHUTDOWN BEGINS, IT CAN'T BE STOPPED [] THE Initializer SWITCHES TO RUNNING ON THE BOOTLOAD CPU, TRAFFIC CONTROL IS DISABLED, AND THE OTHER CPUS ARE STOPPED AND DELETED. [] LOCKING IS DISABLED AT THIS POINT, SINCE THERE IS NOW ONLY ONE PROCESS AND ONE PROCESSOR RUNNING [] ALL THE DISK DRIVES ARE EXERCISED, TO DETERMINE IF ANY ARE BROKEN AND CANNOT BE SHUT DOWN [] ANY VOLUME SCAVENGES IN PROGRESS ARE STOPPED AND ABANDONED [] AT THIS POINT, NORMAL SHUTDOWN IS READY TO SHUT DOWN THE FILE SYSTEM, AND ALL THE NORMAL MECHANISMS ARE ASSUMED TO BE OPERATING. [] THE Initializer SWITCHES TO inzr_stk0 (WHERE IT ALL STARTED) AND CALLS shutdown_file_system Not To Be Reproduced 11-16 MDD-003 _F_I_L_E__S_Y_S_T_E_M__S_H_U_T_D_O_W_N ox FILE SYSTEM SHUTDOWN CONSISTS OF FORCING ALL DATA OUT OF MEMORY TO ITS HOME ON DISK: [] ALL PAGES ARE WRITTEN [] SEGMENTS ARE DEACTIVATED, AND THEIR VTOCES UPDATED [] VOLUMES ARE DEMOUNTED, AND THEIR LABELS UPDATED [] FILE SYSTEM SHUTDOWN TAKES THE FOLLOWING STEPS: [] ALL MODFIED PAGES ARE WRITTEN TO DISK. THIS IS DONE SEVERAL TIMES DURING THE COURSE OF SHUTDOWN [] STACK_0 SEGMENTS ARE DEACTIVATED AND DISCARDED [] THE deactivate_for_demount PROCEDURE IS CALLED TO DEACTIVATE ALL OTHER SEGMENTS AND UPDATE THEIR VTOCES [] THIS IS DONE BY WALKING THE AST HIERARCHY FROM THE BOTTOM UP, DEACTIVATING A SEGMENT, ITS SIBLINGS, AND ITS PARENTS, ETC. [] THIS IS DONE TO ENSURE CONSISTENT QUOTA VALUES IN VTOCES AFTER SHUTDOWN, BECAUSE QUOTA MUST BE UPDATED FROM THE BOTTOM UP [] ALL VOLUMES ARE DEMOUNTED, THEIR VOUME AND VTOC MAPS UPDATED, AND LABELS CHANGED TO INDICATE SUCCESSFUL DEMOUNT [] THE ORDER IS NOT IMPORTANT, EXCEPT THAT THE RPV GOES LAST Not To Be Reproduced 11-17 MDD-003 _F_I_L_E__S_Y_S_T_E_M__S_H_U_T_D_O_W_N [] MEMORY IS FLUSHED AGAIN [] IF ANY DRIVES WERE INOPERATIVE, THIS IS ANNOUNCED, AND THE RPV IS _N_O_T DEMOUNTED [] THIS MAKES IT POSSIBLE TO FIX THE BROKEN DRIVE AND DO AN EMERGENCY SHUTDOWN TO FINISH SHUTDOWN [] IF THERE WERE NO PROBLEMS, THE RPV IS DEMOUNTED AND MEMORY IS FLUSHED ONE LAST TIME. ALL RELEVANT INFORMATION IS NOT ON DISK [] AT THE END OF FILE SYSTEM SHUTDOWN, ALL CONSOLE MESSAGES ARE ALLOWED TO COMPLETE, AND THE SYSTEM RETURNS TO BOS Not To Be Reproduced 11-18 MDD-003 _E_M_E_R_G_E_N_C_Y__S_H_U_T_D_O_W_N ox EMERGENCY SHUTDOWN IS DONE AFTER A CRASH OR SHUTDOWN FAILURE [] LIKE NORMAL SHUTDOWN, THE MISSION OF ESD IS TO SHUT DOWN THE FILE SYSTEM, AND IT DOES THIS BY MAKING THE SYSTEM WORK WELL ENOUGH TO CALL shutdown_file_system [] UNLIKE NORMAL SHUTDOWN, IT CANNOT ASSUME THAT NORMAL MECHANISMS ARE OPERATIONAL, AND MUST MAKE THEM WORK FIRST [] AFTER THE SUPERVISOR IS MADE OPERATIONAL, EMERGENCY SHUTDOWN TRANSFERS TO THE NORMAL FILE SYSTEM SHUTDOWN [] THE FOLLOWING STEPS ARE TAKEN TO REANIMATE THE SUPERVISOR: [] EMERGENCY SHUTDOWN STARTS OUT RUNNING IN ABSOLUTE MODE [] IT ENTERS APPENDING MODE, FINDS THE PRDS FOR THE PROCESSOR IT IS RUNNING ON, SETS IT UP AS ITS STACK [] ALL CRITICAL LOCKS (PAGE TABLE, APT) ARE FORCIBLY UNLOCKED. TRAFFIC CONTROL IS DISABLED. THE PROCESSOR RUNNING IS NOW THE ONLY ONE, AND LOCKS ARE UNNECESSARY [] THE CONSOLE AND SYSERR MECHANISMS ARE RESET [] SUPERVISOR I/O SUPPORT, IN PARTICULAR THE DISK DIM, IS REINITIALIZED [] THE STATE OF PAGE TABLES AND THE CORE MAP IS MADE CONSISTENT [] THIS IS DONE BY pc_recover_sst AND CAN BE DONE ONLY Not To Be Reproduced 11-19 MDD-003 _E_M_E_R_G_E_N_C_Y__S_H_U_T_D_O_W_N BECAUSE ALL OF PAGE CONTROL IS CODED TO FOLLOW PROTOCOLS ABOUT THE ORDER IN WHICH TO UPDATE RELATED DATA [] BECAUSE OF THIS, IF PAGE CONTROL IS INTERRUPTED AT ANY POINT, IT IS POSSIBLE TO DETERMINE WHAT IT WAS DOING AND COMPLETE THE OPERATION [] THIS STEP IS CRUCIAL TO BEING ABLE TO TAKE PAGE FAULTS LATER IN SHUTDOWN [] BECAUSE THERE IS NO GUARANTEE THAT THE PROCESS WHICH CRASHED THE SYSTEM (AND THUS, THE ADDRESS SPACE WHERE ESD IS RUNNING) IS NOT DEFECTIVE, ESD REBUILDS ITS PDS FROM THE template_pds [] ESD SWITCHES TO THE inzr_stk0 AND CALLS wired_shutdown [] ALL THE ABOVE STEPS WERE DONE IN ALM. wired_shutdown IS A PL/I PROCEDURE [] THE VTOC BUFFER IS CHECKED TO SEE WHETHER ANY OPERATIONS WERE IN PROGRESS. IF SO, THOSE VOLUMES ARE MARKED (IN THE PVT) TO INDICATE THAT THEY MAY HAVE INCONSISTENCIES [] MEMORY IS FLUSHED [] THE VTOC MANAGER IS REINITIALIZED [] AT THIS POINT, THE SUPERVISOR SHOULD BE WORKING WELL ENOUGH TO RUN shutdown_file_system. FROM NOW ON, EMERGENCY SHUTDOWN FOLLOWS THE SAME PATH AS NORMAL SHUTDOWN [] IF EMERGENCY SHUTDOWN FAILS, FOR TAKING A FAULT OR SOME OTHER REASON, IT CAN BE RETRIED INDEFINITELY [] SHUTDOWN IS MARKED COMPLETE IN VOLUME LABELS, AND THESE ARE NOT UPDATED UNTIL THE VERY END. THUS, NO HARM CAN COME FROM RETRYING ARBITRARILY Not To Be Reproduced 11-20 MDD-003 _E_M_E_R_G_E_N_C_Y__S_H_U_T_D_O_W_N [] ESD TRIES TO CORRECT ALL THE PROBLEMS THAT MIGHT ARISE. BECAUSE OF THE COMPLEXITY OF THE SUPERVISOR, IT DOES NOT ALWAYS GET ALL OF THEM TOPIC XII File System Salvagers Page Overview of Salvagers . . . . . . . . . . . . 12-1 Directory Salvager. . . . . . . . . . . . . . 12-4 Quota Salvaging . . . . . . . . . . . . . . . 12-7 Physical Volume Scavenger . . . . . . . . . . 12-9 Physical Volume Salvager. . . . . . . . . . . 12-11 sweep_pv. . . . . . . . . . . . . . . . . . . 12-12 12-i MDD-003 _E_M_E_R_G_E_N_C_Y__S_H_U_T_D_O_W_N ox FUNCTION [] ENSURE THE CONSISTENCY OF THE FILE SYSTEM DATABASES AND PERFORM PERIODIC PREVENTIVE MAINTENANCE OPERATIONS [] THERE ARE SEVERAL SALVAGERS, EACH WITH A DIFFERENT FUNCTION [] BECAUSE OF THE COMPLICATED INTERACTIONS THEY HAVE WITH THE REST OF THE FILE SYSTEM, THE SALVAGERS ARE PERHAPS THE MOST COMPLICATED SINGLE PROGRAMS IN THE SUPERVISOR [] SOME SALVAGING IS DONE AUTOMATICALLY, WHEN THE SYSTEM DETECTS AN INCONSISTENCY. OTHER SALVAGE OPERATIONS ARE EXPLICITLY REQUESTED, BY PRIVILEGED USERS. [] EXCEPT FOR SUPERVISOR BUGS, THE ONLY TIME DAMAGE OCCURS THAT REQUIRES SALVAGING TO FIX IS AFTER A CRASH WHERE EMERGENCY SHUTDOWN FAILS ox THE SALVAGERS: [] DIRECTORY SALVAGER [] CORRECTS INCONSISTENCIES IN DIRECTORY SEGMENTS BY REBUILDING THEM Not To Be Reproduced 12-0 MDD-003 _O_V_E_R_V_I_E_W__O_F__S_A_L_V_A_G_E_R_S [] THIS IS THE ONLY SALVAGER INVOKED AUTOMATICALLY IN USER PROCESSES: ANY ATTEMPT TO LEAVE RING ZERO WITH A DIRECTORY LOCKED FOR WRITING WILL CAUSE IT TO BE SALVAGED [] DIRECTORY SALVAGING ALSO RECLAIMS WASTED SPACE IN THE DIRECTORY, AND IS RUN PERIODICALLY TO COMPACT DIRECTORIES [] QUOTA SALVAGER [] CORRECTS INCONSISTENCIES IN THE QUOTA SYSTEM [] PHYSICAL VOLUME SCAVENGER [] RECONSTRUCTS RECORD AND VTOCE STOCK INFORMATION FROM THE VTOCES ON A VOLUME, THEREBY RECLAIMING ANY RECORDS OR VTOCES WHICH MIGHT HAVE BEEN LOST [] RUNS ENTIRELY ONLINE WHILE THE SYSTEM IS UP FOR USERS (NEW IN MR10.1) [] THIS TYPE OF DAMAGE IS USUALLY BENIGN, SO RUNNING THE SCAVENGER CAN BE DELAYED. [] PHYSICAL VOLUME SALVAGER [] RECONSTRUCTS RECORD AND VTOCE STOCK INFORMATION [] RUNS ONLY DURING INITIALIZATION, AND THEREFORE DELAYS CRASH RECOVERY [] NOW USED ONLY FOR RARE CASES WHERE THERE IS NOT ENOUGH FREE SPACE LEFT FOR THE SCAVENGER TO RUN. IN THESE RARE CASES, IT IS INVOKED AUTOMATICALLY BY SYSTEM INITIALIZATION. Not To Be Reproduced 12-1 MDD-003 _O_V_E_R_V_I_E_W__O_F__S_A_L_V_A_G_E_R_S [] SWEEP_PV [] DELETES UNUSED VTOC ENTRIES WHICH HAVE NO DIRECTORY ENTRY POINTING TO THEM [] RUNS ENTIRELY IN USER RING, EXCEPT FOR ACTUALLY READING VTOC ENTRIES AND DIRECTORY ENTRIES [] PURELY A HOUSEKEEPING FUNCTION, AND RUN ONLY RARELY. Not To Be Reproduced 12-2 MDD-003 _D_I_R_E_C_T_O_R_Y__S_A_L_V_A_G_E_R ox THE DIRECTORY SALVAGER IS USED FOR TWO MAIN PURPOSES: DAMAGE CORRECTION AND STORAGE RECLAIMATION ox DIRECTORY DAMAGE [] DAMAGE CAN OCCUR IN A DIRECTORY FOR SEVERAL REASONS: [] DISK I/O ERROR WRITING BAD DATA TO A DIRECTORY SEGMENT [] SUPERVISOR BUG [] CRASH WITHOUT ESD, WHERE THE DIRECTORY WAS UPDATED, BUT NOT FULLY WRITTEN TO DISK [] ACTUAL DAMAGE TO DIRECTORIES IS COMPARATIVELY RARE, BUT: [] IF A FAULT OCCURS FOR ANY REASON WHILE A USER HAS A DIRECTORY LOCKED, THE SYSTEM ASSUMES THE DIRECTORY COULD BE AT FAULT, AND SALVAGES [] THIS SORT OF SALVAGING IS DONE BY THE online_salvager PROGRAM, WHICH IS INVOKED DYNAMICALLY BY verify_lock IF A PROCESS ATTEMPTS TO LEAVE RING ZERO ("CRAWL OUT") WITH A DIRECTORY LOCKED [] ORDINARILY, THERE IS NOTHING WRONG, AND THE SALVAGER JUST CHECKS OVER THE DIRECTORY [] IF THE DIRECTORY IS DAMAGED, IT IS "REPAIRED" AS WELL AS POSSIBLE Not To Be Reproduced 12-3 MDD-003 _D_I_R_E_C_T_O_R_Y__S_A_L_V_A_G_E_R [] UNFORTUNATELY, THE MOST COMMON FORMS OF DAMAGE DESTROY THE DIRECTORY HEADER SO THAT NO REPAIR IS POSSIBLE, AND THE DIRECTORY MUST BE REINITIALIZED AS EMPTY ox STORAGE RECLAIMATION [] DIRECTORY SPACE CANNOT ALWAYS BE EFFICIENTLY RE-USED, AND UNUSABLE SPACE ACCUMULATES AS ENTRIES ARE CREATED AND DELETED [] IT IS NOT PRACTICAL FOR THE SYSTEM TO COMPACT DIRECTORIES WHEN THIS HAPPENS, SINCE THIS COULD CAUSE MAJOR RESOURCE CONSUMPTION, AND CAUSE EXPENSE FOR RANDOM PROCESSES [] INSTEAD, THE DIRECTORY SALVAGER IS PERIODICALLY RUN IN Salvager.SysDaemon PROCESSES TO REBUILD ALL THE DIRECTORIES IN THE HIERARCHY, COLLECTING ALL FREE SPACE [] THIS IS DONE BY CALLS TO hphcs_$salv_directory [] IF THE Salvager PROCESSES DETECT DAMAGE, IT IS CORRECTED AS WELL [] DEMAND DIRECTORY SALVAGING IS USUALLY ALSO INSTRUCTED TO LOOK FOR AND CORRECT "CONNECTION FAILURES" [] A CONNECTION FAILURE IS A DIRECTORY BRANCH WHICH INDICATES A FREE VTOCE, OR A VTOCE WITH A DIFFERENT UID THAN THE BRANCH. THIS MEANS THAT THE DIRECTORY AND VTOC ARE INCONSISTENT [] CONNECTION FAILURES ARE USUALLY DELETED BY DEMAND SALVAGING (THIS IS AN OPTION) [] ONLINE SALVAGING DOES NOT DELETE CONNECTION FAILURES BECAUSE IT IS NOT ALWAYS POSSIBLE TO IDENTIFY THEM PROPERLY DURING AN ONLINE SALVAGE Not To Be Reproduced 12-4 MDD-003 _D_I_R_E_C_T_O_R_Y__S_A_L_V_A_G_E_R [] DEMAND DIRECTORY SALVAGING CAN ALSO BE USED BY SYSTEM MAINTENANCE PERSONNEL WHEN THERE APPEAR TO BE DIRECTORY PROBLEMS Not To Be Reproduced 12-5 MDD-003 _Q_U_O_T_A__S_A_L_V_A_G_I_N_G ox QUOTA SALVAGING CORRECTS INCONSISTENCIES IN THE HIERARCHY OF QUOTA-USED VALUES [] THESE INCONSISTENCIES ARISE AFTER A CRASH WHERE ESD FAILS: [] A SEGMENT (>udd>a>b) IS DELETED, FREEING PAGES, AND THE ASTES OF ITS PARENT (>udd>a) AND ITS PARENT'S PARENT (>udd) ARE UPDATED TO REFLECT THIS DECREASE IN QUOTA USED [] THE VTOCE FOR >udd>a IS WRITTEN TO DISK DURING NORMAL OPERATION. THE VTOCE FOR >udd IS NOT [] THE SYSTEM CRASHES, AND NO ESD IS PERFORMED [] WHEN THE SYSTEM COMES BACK UP, THE VTOCE FOR >udd IS INACCURATE: IT CLAIMS THAT RECORDS ARE STILL IN USE, WHEN IN FACT THEY WERE FREED [] IF A NEW SEGMENT (>udd>a>c) IS NOW CREATED, IT MAY SPURIOUSLY CAUSE A RECORD QUOTA OVERFLOW ON >udd. [] QUOTA SALVAGING IS PERFORMED ENTIRELY ONLINE, WHILE THE SYSTEM IS RUNNING, USUALLY IN A Salvager.SysDaemon PROCESS [] THE FUNDAMENTAL PRINCIPLE BEHIND THE QUOTA SALVAGER IS THAT QUOTA INCONSISTENCIES CANNOT ARISE DURING NORMAL OPERATION: IF QUOTA IS CONSISTENT, OR INCONSISTENT BY _n RECORDS, IT WILL STAY THAT WAY UNLESS EXPLICITLY CORRECTED [] THE QUOTA SALVAGER PROCESS WALKS THE HIERARCHY FROM THE BOTTOM UP, USING do_subtree, CORRECTING INCONSISTENCIES IN A DIRECTORY AND ALL ITS SIBLINGS, THEN IN THEIR PARENT, AND SO ON UP Not To Be Reproduced 12-6 MDD-003 _Q_U_O_T_A__S_A_L_V_A_G_I_N_G [] AN hphcs_ ENTRY IS CALLED TO CORRECT EACH DIRECTORY, ON THE ASSUMPTION THAT ALL ITS CHILDREN ARE CONSISTENT [] THE ACTUAL CORRECTION MECHANISM INVOLVES COMPLICATED MANIPULATION OF VARIOUS LOCKS. REFER TO THE Multics Storage System PLM (AN61) FOR A DESCRIPTION Not To Be Reproduced 12-7 MDD-003 _P_H_Y_S_I_C_A_L__V_O_L_U_M_E__S_C_A_V_E_N_G_E_R ox THIS IS ALSO PRIMARILY USEFUL AFTER A CRASH WITHOUT ESD [] IT REBUILDS THE VOLUME MAP AND VTOC MAP FOR A VOLUME BY EXAMINING ALL THE VTOCES AND ASTES FOR SEGMENTS ON THE VOLUME [] IT RUNS WHILE THE VOLUME IS IN USE BY USERS, AND NO INTERRUPTION OF SERVICE OCCURS [] DAMAGE TO THE MAPS OCCURS AFTER A CRASH WHEN THE STOCKS, IN MEMORY, DO NOT GET PROPERLY UPDATED TO THE MAPS ON DISK [] BECAUSE OF THE STOCK MANAGEMENT POLICIES, THIS IS ALWAYS BENIGN: RECORDS MAY BE MARKED IN-USE THAT ARE NOT, BUT IT IS NOT POSSIBLE FOR THE MAP TO INDICATE A RECORD AS FREE (REUSABLE) WHEN IT BELONGS TO A SEGMENT ON THE VOLUME [] FOR RECONSTRUCTING THE VOLUME MAP, THE SCAVENGER WORKS BY AN INTERACTION WITH THE PAGE CONTROL RECORD ALLOCATION MECHANISM [] IT BUILDS A MAP, IN scavenger_data, THAT SAYS WHAT VTOCE OWNS EACH RECORD ON THE VOLUME, AND THEN RESOLVES THE INCONSISTENCIES BETWEEN THAT AND THE MAP ON DISK [] THE DATABASE IS WIRED FOR THE DURATION OF THE SCAVENGE, AND CAN BE QUITE LARGE (64K FOR AN MSU0501) [] WHILE A SCAVENGER IS RUNNING, PAGE CONTROL KEEPS THE DATABASE UP TO DATE AS IT ALLOCATES AND FREES RECORDS [] FOR VTOCES, THE PROBLEM IS MUCH SIMPLER: THE VTOC IS SIMPLY SCANNED, AND ALL IN-USE VTOCES ARE RECORDED Not To Be Reproduced 12-8 MDD-003 _P_H_Y_S_I_C_A_L__V_O_L_U_M_E__S_C_A_V_E_N_G_E_R [] vtoc_man ALSO KEEPS THE TABLE UP TO DATE AS IT FREES AND ALLOCATES VTOCES ON THE VOLUME [] A VTOCE THAT APPEARS IN-USE MAY NOT NECESSARILY BE PART OF THE HIERARCHY -- sweep_pv IS RUN TO TAKE CARE OF THAT [] AFTER THE NEW MAPS ARE CONSTRUCTED, THEY ARE WRITTEN TO DISK [] THE SCAVENGE RUNS ENTIRELY IN RING ZERO, BUT IT CAN BE SAFELY INTERRUPTED AND RESTARTED FROM THE BEGINNING AT ANY TIME [] THE SCAVENGER ACCESSES THE VTOC USING vtoc_man [] THE SCAVENGER TAKES ABOUT FIFTEEN MINUTES PER VOLUME, BUT THE SYSTEM IS UP WHILE IT DOES SO Not To Be Reproduced 12-9 MDD-003 _P_H_Y_S_I_C_A_L__V_O_L_U_M_E__S_A_L_V_A_G_E_R ox THIS DOES THE SAME JOB AS THE SCAVENGER, BUT CAN RUN ONLY WHEN THE VOLUME IS UNAVAILABLE TO USERS [] BECAUSE IT HAS THE VOLUME ALL TO ITSELF, IT IS MUCH SIMPLER: [] IT SCANS THE VTOC, BUILDING THE SAME SORT OF DATABASES AS THE SCAVENGER [] WHEN FINISHED, IT RESOLVES INCONSISTENCIES, AND WRITES THE MAPS BACK TO DISK [] THE VOLUME SALVAGER ACCESSES THE VTOC USING salv_abs_seg_NN [] THE VOLUME SALVAGER TAKES ABOUT A MINUTE AND A HALF PER VOLUME, BUT ALL VOLUMES MUST BE SALVAGED BEFORE THE SYSTEM CAN RUN AGAIN [] AFTER A CRASH WITHOUT ESD, _A_L_L VOLUMES MOUNTED AT THE TIME OF THE CRASH ARE PRESUMED TO BE INCONSISTENT [] THE VOLUME SALVAGER IS LARGELY OBSOLETE TODAY. IT IS RETAINED TO DEAL WITH RARE SITUATIONS WHICH MAKE IT IMPOSSIBLE TO BRING THE SYSTEM UP FAR ENOUGH TO RUN THE SCAVENGER WITHOUT FIRST REBUILDING THE FILE MAP TO FREE UNUSED SPACE Not To Be Reproduced 12-10 MDD-003 _S_W_E_E_P__P_V ox sweep_pv ELIMINATES ORPHAN VTOCES [] AN ORPHAN VTOCE IS ONE WHICH APPEARS TO DESCRIBE A VALID SEGMENT, BUT DOES NOT APPEAR IN ANY DIRECTORIES [] ORPHANS ARE USUALLY CREATED BY CRASHES OR DIRECTORY DAMAGE WHERE THE DIRECTORY COULD NOT BE REPAIRED [] ORPHANS ARE ALSO SOMETIMES CALLED "REVERSE CONNECTION FAILURES" [] sweep_pv WORKS BY INSPECTING EVERY VTOCE ON A VOLUME, AND ATTEMPTING TO FIND ITS PARENT [] THERE IS A "UID PATHNAME" IN PART 3 OF ALL VTOCES WHICH CONTAINS THE UIDS OF ALL ITS PARENT DIRECTORIES [] BY STARTING FROM THE ROOT, AND SEARCHING EACH DIRECTORY IN THE PATH FOR THE UID OF THE NEXT ONE, THE VTOCE CAN BE FOUND [] IF IT CAN'T BE FOUND, IT IS AN ORPHAN, AND SWEEP_PV DELETES IT [] IT IS POSSIBLE TO "ADOPT" ORPHANS INTO A DIFFERENT PLACE IN THE HIERARCHY IF IT IS IMPORTANT TO RECOVER THEIR CONTENTS, USING THE adopt_seg TOOL [] THE UID PATHNAME OF A VTOCE CAN BE INTERPRETED MANUALLY BY USING THE vtoc_pathname TOOL TOPIC XIII 13-i MDD-003 _S_W_E_E_P__P_V The Initializer.SysDaemon Process Page Initializer Overview. . . . . . . . . . . . . 13-1 Services of Initializer . . . . . . . . . . . 13-3 13-i MDD-003 _I_N_I_T_I_A_L_I_Z_E_R__O_V_E_R_V_I_E_W ox FUNCTION [] THE SYSTEM'S INITIALIZATION, ADMINISTRATIVE AND CONTROL PROCESS (Initializer.SysDaemon.z), RESPONSIBLE FOR: [] INITIALIZING THE OPERATING SYSTEM AT BOOTLOAD, FOLLOWING SUCCESSFUL INITIALIZATION OF THE SUPERVISOR [] ANSWERING SERVICE (login and logout) [] PROCESS CREATION AND DESTRUCTION [] MESSAGE COORDINATOR (DAEMON COORDINATION) [] SYSTEM ADMINISTRATION FUNCTIONS [] SYSTEM ACCOUNTING FUNCTIONS ox MAJOR DATA BASES, ALL KEPT IN >sc1 [] ANSWER_TABLE [] ABSENTEE_USER_TABLE [] DAEMON_USER_TABLE Not To Be Reproduced 13-1 MDD-003 _I_N_I_T_I_A_L_I_Z_E_R__O_V_E_R_V_I_E_W [] MASTER GROUP TABLE (MGT) [] CHANNEL DEFINITION TABLE (CDT) [] SYSTEM ADMINISTRATION TABLE (SAT) [] PERSON NAME TABLE (PNT) [] PROJECT DEFINITION TABLES (PDT'S) Not To Be Reproduced 13-2 MDD-003 _S_E_R_V_I_C_E_S__O_F__I_N_I_T_I_A_L_I_Z_E_R ox THE Initializer.SysDaemon PROCESS PERFORMS VARIOUS SERVICES NECESSARY FOR THE SUPERVISOR. MANY OF THEM ARE PERFORMED BY THE INITIALIZER PRIMARILY FOR CONVENIENCE, SINCE IT IS EASIER TO CONTROL RESOURCES IN A CONTROLLED ENVIRONMENT SUCH AS A SINGLE PROCESS THAN TO CREATE A MECHANISM WHICH CAN BE RUN IN ALL PROCESSES [] SYSTEM INITIALIZATION AND SHUTDOWN [] THE Initializer PROCESS IS CREATED FROM THE ENVIRONMENT THAT INITIALIZES THE SUPERVISOR [] WHEN THE SYSTEM IS SHUT DOWN, THE Initializer COORDINATES THE ORDERLY CESSATION OF SYSTEM ACTIVITY AND CALLS hphcs_$shutdown TO SHUT DOWN THE SUPERVISOR [] LOGICAL VOLUME MANAGEMENT [] THE Initializer PROCESS HANDLES ALL REQUESTS FROM USER PROCESSES TO MOUNT AND UNMOUNT PRIVATE LOGICAL VOLUMES [] IT ALSO MAKES THE NECESSARY CHECKS TO ACCEPT A VOLUME INTO THE HIERARCHY OR REMOVE IT FOR DEMOUNTING [] RESOURCE CONTROL [] THE Initializer DOES ALL THE CONTROL, ASSIGNMENT, AND ACCESS CHECKING OF RESOURCES (SUCH AS I/O DEVICES) CONTROLLED BY RCP [] PROCESS CREATION AND DESTRUCTION Not To Be Reproduced 13-3 MDD-003 _S_E_R_V_I_C_E_S__O_F__I_N_I_T_I_A_L_I_Z_E_R [] THE Initializer CREATES AND DESTROYS ALL PROCESSES, SCHEDULES ABSENTEE PROCESSES, AND HANDLES "CONSOLE" I/O FROM DAEMON PROCESSES [] AN IMPORTANT SERVICE OF PROCESS MANAGEMENT IS PROCESS DIR VOLUME MANAGEMENT, IN WHICH THE Initializer PICKS THE LOGICAL VOLUMES USED FOR PROCESS DIRECTORIES [] THE Initializer ALSO HANDLES ALL PROCESS ACCOUNTING AND LOAD CONTROL [] COMMUNICATIONS [] THE Initializer MANAGES LOADING / DUMPING OF FNPs AND SOFTWARE COMMUNICATIONS MULTIPLEXERS [] IT ALSO HANDLES ALLOCATION OF COMMUNICATION CHANNELS, BOTH FOR PROCESSES LOGGING IN AND REQUESTS MADE THROUGH dial_manager_ [] DYNAMIC RECONFIGURATION [] THE Initializer RUNS THE DYNAMIC RECONFIGURATION SOFTWARE, AND UPDATES THE SYSTEM LOAD LIMITS WHEN THE CONFIGURATION CHANGES [] ACTUALLY, ANY PROCESS WITH hphcs_ ACCESS CAN USE THE RECONFIGURATION COMMANDS, BUT ONLY THE Initializer CAN KEEP ALL THE ACCOUNTING DATABASES UP TO DATE TOPIC XIV Metering and Tuning Page 14-i MDD-003 _S_E_R_V_I_C_E_S__O_F__I_N_I_T_I_A_L_I_Z_E_R Meter and Tuning Overview . . . . . . . . . . 14-1 Analyzing Performance Problems. . . . . . . . 14-3 Detailed Problem Analysis . . . . . . . . . . 14-6 Output From Metering Commands . . . . . . . . 14-8 total_time_meters . . . . . . . . . . . . 14-8 interrupt_meters. . . . . . . . . . . . . 14-9 file_system_meters. . . . . . . . . . . . 14-10 file_system_meters. . . . . . . . . . . . 14-12 device_meters . . . . . . . . . . . . . . 14-14 disk_meters . . . . . . . . . . . . . . . 14-15 disk_queue. . . . . . . . . . . . . . . . 14-16 print_configuration_deck. . . . . . . . . 14-17 list_vols . . . . . . . . . . . . . . . . 14-19 traffic_control_queue . . . . . . . . . . 14-21 traffic_control_meters. . . . . . . . . . 14-23 print_tuning_parameters . . . . . . . . . 14-25 work_class_meters . . . . . . . . . . . . 14-26 respons_meters. . . . . . . . . . . . . . 14-27 system_performance_graph. . . . . . . . . 14-29 meter_gate. . . . . . . . . . . . . . . . 14-31 14-i MDD-003 . _M_E_T_E_R__A_N_D__T_U_N_I_N_G__O_V_E_R_V_I_E_W ox WHILE NOT A SUBSYSTEM ITSELF, METERING AND TUNING IS A POLICY AND CAPABILITY COMMON TO ALL OF THE SUPERVISOR'S SUBSYSTEMS ox FUNCTION [] METERING (CONSISTS OF THREE ACTIVITIES) [] ACCUMULATING DATA: THIS IS PERFORMED THROUGHOUT THE SUPERVISOR BY CODE WHICH [] RECORDS THE NUMBER OF TIMES AN EVENT HAPPENS OR A PARTICULAR PIECE OF CODE IS EXECUTED; AND/OR [] RECORDS THE TIME REQUIRED TO PERFORM A TASK [] SUCH DATA IS STORED IN AREAS REFERRED TO AS "METERING CELLS" [] EXTRACTING DATA: THIS IS PERFORMED BY NUMEROUS METERING COMMANDS WHICH (WHEN INVOKED) [] READ AND STORE THE CURRENT VALUES OF RELEVANT METERING CELLS [] REPORTING THE DATA: THIS IS PERFORMED BY THE METER COMMANDS WHICH (WHEN INVOKED) [] COMPARE CURRENT METERING CELL VALUES WITH PREVIOUSLY READ VALUES [] PERFORM THE APPROPRIATE ARITHMETIC COMPUTATIONS UPON THE DATA IN ORDER TO ARRIVE AT THE DESIRED STATISTIC [] ARRANGE THE DATA IN A USEFUL FORMAT (A REPORT OR DIAGRAM) AND PRINT IT Not To Be Reproduced 14-1 MDD-003 _M_E_T_E_R__A_N_D__T_U_N_I_N_G__O_V_E_R_V_I_E_W [] TUNING [] CHANGING THE SYSTEM'S OPERATING PARAMETERS AND/OR CONFIGURATION BASED UPON THE DATA AND INSIGHTS FROM THE SYSTEM'S METERS ox MAJOR DATA BASES [] SST HEADER, TC_DATA HEADER, ETC. Not To Be Reproduced 14-2 MDD-003 _A_N_A_L_Y_Z_I_N_G__P_E_R_F_O_R_M_A_N_C_E__P_R_O_B_L_E_M_S ox MULTICS IS VERY HEAVILY INSTRUMENTED WITH MANY METERING COMMANDS [] MOST SOLVABLE PERFORMANCE PROBLEMS SHOW UP QUITE DIRECTLY IN THE METERS [] IF THE SYSTEM IS TOO SLOW, THERE ARE GOOD RULES OF THUMB TO FOLLOW TO LOOK FOR WHEN PROBLEM [] NO TWO SYSTEMS ARE IDENTICAL - THE MOST IMPORTANT INFORMATION YOU HAVE IS HOW THE METERS ARE _D_I_F_F_E_R_E_N_T FROM THE WAY THEY WERE WHEN THE SYSTEM WAS WORKING BETTER [] NOT ALL TUNING PROBLEMS CAN BE RESOLVED WITH SOFTWARE. OFTEN IT SIMPLY INDICATES THAT THERE IS NOT ENOUGH MEMORY, OR NOT ENOUGH DISK CAPACITY. IT IS OFTEN DIFFICULT TO DETERMINE WHAT HARDWARE CHANGES WOULD BE MOST COST-EFFECTIVE ox total_time_meters - THE FIRST STEP [] total_time_meters MAY INDICATE EXCESSIVE TIME SPENT IN SEVERAL AREAS: [] PAGE FAULTS - TOO MANY PAGE FAULTS MEAN NOT ENOUGH MEMORY, TOO MANY ELIGIBLE PROCESSES (max_eligible), WHICH CAUSE THRASHING, INSUFFICIENT DISK CAPACITY, OR INEFFICIENT APPLICATIONS [] LOOK TO file_system_meters, device_meters, AND disk_meters FOR MORE HELP Not To Be Reproduced 14-3 MDD-003 _A_N_A_L_Y_Z_I_N_G__P_E_R_F_O_R_M_A_N_C_E__P_R_O_B_L_E_M_S [] SEGMENT FAULTS - TOO MANY ALMOST ALWAYS MEAN THAT THE AST POOLS (sst CONFIG CARD) ARE TOO SMALL [] LOOK TO file_system_meters (AST Pool grace time) FOR MORE HELP [] INTERRUPT - USUALLY MEANS EXCESSIVE INTERRUPT ACTIVITY EITHER FOR FNPS OR BECAUSE OF EXCESSIVE PAGING, BUT MAY INDICATE HARDWARE PROBLEMS [] LOOK TO interrupt_meters TO LOCALIZE IT, THEN TO file_system_meters and system_comm_meters [] OTHER FAULT - GENERALLY INDICATES TOO MANY CONNECT OR TIMER RUNOUTS FAULTS, INDICATING EXCESSIVE TRAFFIC CONTROL ACTIVITY [] LOOK TO THE TUNING PARAMETERS (ptp) AND traffic_control_meters FOR MORE HELP [] MP IDLE - INDICATES TOO MUCH TRAFFIC CONTROL ACTIVITY, USUALLY BECAUSE THERE ARE TOO MANY ELIGIBLE PROCESSES (max_eligible) AND/OR NOT ENOUGH MEMORY [] LOOK TO THE TUNING PARAMETERS (ptp), file_system_meters, device_meters, disk_meters, AND traffic_control_meters FOR MORE HELP [] WORK CLASS IDLE - THIS IS CPU TIME WASTED BECAUSE GOVERNED WORKCLASSES WERE NOT PERMITTED TO USE IT, AND NO OTHER TAKERS WANTED IT [] FREQUENTLY NOT A PROBLEM, BUT MAY INDICATE A NEED TO READJUST WORKCLASSES (work_class_meters) [] NMP IDLE, ZERO IDLE - INDICATE THAT CPU TIME HAS GONE TO WASTE BECAUSE NO PROCESSES WANTED IT. NMP IDLE MEANS THAT THERE ARE MORE PROCESSORS THAN PROCESSES THAT WANT CPU TIME, Not To Be Reproduced 14-4 MDD-003 _A_N_A_L_Y_Z_I_N_G__P_E_R_F_O_R_M_A_N_C_E__P_R_O_B_L_E_M_S AND ZERO IDLE MEANS THERE ARE NO PROCESSES AT ALL [] NORMALLY INSIGNIFICANT QUANTITIES - THE FOLLOWING NUMBERS SHOULD ALWAYS BE VERY SMALL; LARGE VALUES PROBABLY INDICATE A HARDWARE OR SOFTWARE PROBLEM PC LOOP LOCKS BOUND FAULTS TC LOOP LOCKS POST PURGING LOADING IDLE OTHER OVERHEAD Not To Be Reproduced 14-5 MDD-003 _D_E_T_A_I_L_E_D__P_R_O_B_L_E_M__A_N_A_L_Y_S_I_S ox THE MORE DETAILED METERING COMMANDS CAN BE USED TO PIN DOWN A PROBLEM [] DETAILED DESCRIPTIONS CAN BE FOUND IN THE Multics Metering Manual (AN52) [] THE DETAILED METERS SHOULD ALSO BE CHECKED IF THERE IS NO OBVIOUS PROBLEM SHOWN BY total_time_meters [] AGAIN, THE REALLY IMPORTANT THING IS TO BE ABLE TO COMPARE AGAINST PREVIOUS DATA FOR YOUR SITE ox SOME GOOD PLACES TO LOOK ARE: [] interrupt_meters [] UNUSUALLY LONG DISK INTERRUPTS MAY INDICATE LOCKING PROBLEMS - SEE disk_meters [] TOO MUCH TOTAL TIME SPENT WITH DISK INTERRUPTS USUALLY MEANS TOO MANY PAGE FAULTS, WHICH WILL BE SHOWN IN MORE DETAIL BY file_system_meters [] FNP INTERRUPTS ARE TYPICALLY MUCH LONGER THAN OTHERS. TOO MUCH FNP INTERRUPT TIME _M_A_Y INDICATE A BAD FRONT END CHANNEL, BUT THIS IS RARE Not To Be Reproduced 14-6 MDD-003 _D_E_T_A_I_L_E_D__P_R_O_B_L_E_M__A_N_A_L_Y_S_I_S [] file_system_meters [] A SHORT PAGE LAP TIME MEANS THAT PAGES ARE NOT STAYING IN MEMORY LONG ENOUGH; THAT IS, THERE IS NOT ENOUGH MEMORY [] FREQUENT PAGE CLAIM RUNS INDICATE THAT THE WRITE LIMIT IS TOO LOW [] IF THE AVERAGE PAGE FAULT DURATION IS HIGH, IT CAN MEAN THAT THE WRITE LIMIT IS TOO HIGH, AND THAT DISK ALLOCATION LOCKS ARE A LIMITATION; SEE disk_meters TO CHECK [] SHORT AST POOL GRACE TIMES MEANS THAT THE POOL SIZES SHOULD BE INCREASED. THIS IS USUALLY ALSO INDICATED BY TOO HIGH A FREQUENCY OF SEGMENT FAULTS [] disk_meters [] WHEN THE ATB I/O FOR A DRIVE IS TOO LOW, THE DRIVE IS A SERIOUS BOTTLENECK. [] THIS OFTEN HAPPENS FOR RLV DRIVES, BECAUSE OF DIRECTORIES [] IF PARM DIRW IS ON, IT SHOULD BE TURNED OFF [] TOO HIGH A PERCENTAGE OF ALLOCATION LOCKS INDICATE THAT TOO MANY WRITES ARE BEING QUEUED SIMULTANEOUSLY, AND MAKING IT IMPOSSIBLE TO GET A QUEUE ENTRY FOR READING [] THIS USUALLY MEANS THAT WRITE_LIMIT IS TOO HIGH [] device_meters [] IF THE SUBSYSTEM BUSY PERCENTAGE IS TOO CLOSE TO THE DISK CHANNEL CAPACITY, IT USUALLY MEANS THAT THERE ARE TOO FEW PHYSICAL DISK CHANNELS Not To Be Reproduced 14-7 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _t_o_t_a_l__t_i_m_e__m_e_t_e_r_s ox TOTAL_TIME_METERS - OVERVIEW OF HOW THE SYSTEM IS USING ITS RESOURCES, ALSO MEASURED AGAINST NON-IDLE TIME Total metering time 0:20:36 % %NI AVE Page Faults 6.55 7.19 2130.424 PC Loop Locks 0.39 0.43 1993.209 PC Queue 0.86 0.94 348.946 Seg Faults 1.74 1.90 9579.170 Bound Faults 0.15 0.16 17426.208 Interrupts 9.02 9.89 1713.504 Other Fault 8.45 9.27 Getwork 4.54 4.98 660.550 TC Loop Locks 0.20 0.22 247.788 Post Purging 0.36 0.39 1407.132 MP Idle 0.70 0.77 Work Class Idle 0.98 1.08 Loading Idle 0.16 0.17 NMP Idle 8.84 Zero Idle 0.00 Other Overhead 0.03 0.04 Virtual CPU Time 62.53 68.59 Not To Be Reproduced 14-8 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _i_n_t_e_r_r_u_p_t__m_e_t_e_r_s ox INTERRUPT_METERS - COUNTS & TIMING FOR ALL I/O INTERRUPTS Total metering time 0:20:28 IOM Ch Int Avg Time % CPU Name A 6. 11 2.043 0.00 IOM A special A 10. 379 1.553 0.01 prtb A 13. 9253 3.436 0.65 fnp c A 14. 19 0.788 0.00 opc A 16. 26248 1.347 0.72 tapa A 17. 128 1.328 0.00 tapa A 18. 13097 5.383 1.43 fnp b A 20. 21041 0.860 0.37 dska A 21. 2881 0.860 0.05 dska A 22. 8486 0.877 0.15 dskb A 23. 257 0.964 0.01 dskb A 24. 17896 0.895 0.33 dskb A 25. 2573 0.943 0.05 dskb A 26. 10486 0.857 0.18 dska A 27. 255 0.899 0.00 dska A 28. 24717 0.845 0.43 dskc A 29. 2319 0.849 0.04 dskc A 30. 9915 0.845 0.17 dskc A 31. 215 0.767 0.00 dskc B 14. 236 0.877 0.00 fnp d B 15. 6917 3.351 0.47 fnp f B 18. 3547 3.543 0.26 fnp a B 19. 13667 3.435 0.96 fnp e B 20. 22013 0.881 0.39 dskb B 21. 4745 0.863 0.08 dskb B 22. 6054 0.861 0.11 dska B 23. 60 0.925 0.00 dska B 24. 15946 0.867 0.28 dska B 25. 989 0.841 0.02 dska B 26. 12757 0.863 0.22 dskb B 27. 1020 0.903 0.02 dskb B 28. 5178 0.838 0.09 dskc B 29. 30 0.653 0.00 dskc B 30. 16582 0.823 0.28 dskc B 31. 825 0.841 0.01 dskc B 32. 1764 0.825 0.03 dske Not To Be Reproduced 14-9 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _i_n_t_e_r_r_u_p_t__m_e_t_e_r_s Chan 262506 1.464 7.82 Ovhd 258932 0.230 1.21 Total 258932 1.713 9.03 Not To Be Reproduced 14-10 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _f_i_l_e__s_y_s_t_e_m__m_e_t_e_r_s ox FILE_SYSTEM_METERS - DISPLAYS MISCELLANEOUS METERING INFORMATION FOR THE FILE SYSTEM [] ONLY PARTS RELEVANT TO SEGMENT CONTROL INCLUDED HERE; SEE TOPIC 8 (PAGE CONTROL) FOR THE REST Total metering time 0:20:02 # ATB Activations 1043 1.153 sec. segfault 969 1.241 sec. 92.905% of all makeknown 74 16.251 sec. 7.095% of all directories 96 12.527 sec. 9.204% of all Deactivations 1056 1.139 sec. Demand deactivate attempts 3 400.857 sec. Seg Faults 5080 0.237 sec. fault 4311 0.279 sec. 84.862% of Seg Faults call 769 1.564 sec. 15.138% of Seg Faults activations 969 1.241 sec. 19.075% of Seg Faults Bound Faults 220 5.466 sec. Setfaults 4484 268.191 msec. access 42 28.633 sec. 0.937% of setfaults ASTE Trickle 139 8.652 sec. Steps 4279 281.040 msec. Skips 3016 0.399 sec. 70.484% of Steps ehs 271 4.438 sec. 8.985% of Skips mem 1083 1.110 sec. 35.909% of Skips init 1662 0.724 sec. 55.106% of Skips Searches 0 0.000 sec. Cleanups 1056 1.139 sec. 0.1 % of real time Force writes 3 400.857 sec. pages written 3 400.857 sec. Lock AST 18422 0.065 sec. Not To Be Reproduced 14-11 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _f_i_l_e__s_y_s_t_e_m__m_e_t_e_r_s AVE/lock % AST locked 4.833 msec. 7.4 AST lock waiting 1.601 msec. 2.5 AST Sizes 4 16 64 256 Number 1701 601 221 74 Need 819 202 208 34 Steps 2341 645 1139 154 Ave Steps 2.9 3.2 5.5 4.5 Lap Time(sec) 873.8 1120.5 233.3 577.9 Not To Be Reproduced 14-12 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _f_i_l_e__s_y_s_t_e_m__m_e_t_e_r_s ox FILE_SYSTEM_METERS - DISPLAYS MISCELLANEOUS METERING INFORMATION FOR THE FILE SYSTEM [] ONLY PARTS RELEVANT TO PAGE CONTROL INCLUDED HERE; SEE TOPIC 7 (SEGMENT CONTROL) FOR THE REST Total metering time 0:20:02 # ATB Needc 62654 19.194 msec. Ring 0 faults 16.639 % PDIR faults 50.607 % Level 2 faults 21.556 % DIR faults 7.645 % New Pages 14.661 % Volmap_seg 0 0.000 msec. Zero pages 770 1561.779 msec. Laps 105 11.453 sec. Steps 361483 3.327 msec. Skip 322555 3.728 msec. 89.231% of Steps wired 11057 108.761 msec. 3.428% of Skip used 109719 10.960 msec. 34.016% of Skip mod 140336 8.569 msec. 43.508% of Skip fc pin 37717 31.884 msec. 11.693% of Skip cl pin 23726 50.686 msec. 7.356% of Skip 3419 pages, 139 wired. Average steps 5.770 Not To Be Reproduced 14-13 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _d_e_v_i_c_e__m_e_t_e_r_s ox DEVICE_METERS - DISPLAYS SUMMARY OF I/O ACTIVITY FOR ALL DISK SUBSYSTEMS Total metering time 0:20:13 dska dskb dskc dskd Prior Page I/O 18571 17743 462 1273 ATB 65.334 68.383 2626.240 953.121 Other Page I/O 6525 5135 16 696 ATB 185.949 236.284 75832.692 1743.280 ATB Page I/O 48.347 53.034 2538.332 616.212 Prior VTOCE I/O 934 895 38 304 ATB 1299.061 1355.668 31929.554 3991.194 ATB I/O 46.612 51.037 2351.401 533.798 % Busy 76 74 0 4 Avg. Page Wait 47.289 46.197 20.341 24.666 Avg. Page ^Wait 176.082 101.023 36.996 61.704 Avg VTOCE Wait 41.138 37.610 38.595 29.090 Avg. Page I/O T 35.619 38.314 20.050 22.482 Avg. VTOCE I/O T 31.139 32.277 37.060 26.606 EDAC Corr. Errs 0 0 0 0 Errors 0 0 0 1 Fatal Errors 0 0 0 0 Not To Be Reproduced 14-14 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _d_i_s_k__m_e_t_e_r_s ox DISK_METERS - DISPLAYS I/O ACTIVITY TO DISK DRIVES [] ONLY ONE SUBSYSTEM SHOWN HERE TO CONSERVE SPACE Total metering time 0:20:12 Subsystem dska Count Waits %Waits Avg. Wait(ms.) call locks 26005 217 0.83 0.259 run locks 112 0 0.00 0.000 interrupt locks 25998 239 0.92 0.208 allocations 26001 0 0.00 0.000 Drive Reads Writes Seek ATB ATB ATB Distance Reads Writes I/O 1 269 67 214 4508 18102 3609 3 362 243 109 3350 4991 2004 4 309 131 184 3925 9258 2756 5 547 165 180 2217 7350 1703 6 631 165 161 1922 7350 1523 7 0 0 0 0 0 0 8 5843 2187 122 207 554 151 9 366 116 153 3313 10455 2516 11 3501 1431 200 346 847 245 12 0 0 0 0 0 0 16 7158 2508 135 169 483 125 Not To Be Reproduced 14-15 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _d_i_s_k__q_u_e_u_e ox DISK_QUEUE - DISPLAYS I/O QUEUE FOR A DISK SUBSYSTEM [] ONLY ONE SUBSYSTEM SHOWN HERE TO CONSERVE SPACE Connects = 2604781, 1359725, 677321, 309367, 123430, 40159, 10227, 1969. P RW VP DV SECTOR MEM 0 W P 24 1350330 27304000 0 W P 9 1020150 4432000 0 W P 16 1204130 36246000 0 W P 16 314370 27306000 0 W P 16 314430 34166000 Not To Be Reproduced 14-16 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _p_r_i_n_t__c_o_n_f_i_g_u_r_a_t_i_o_n__d_e_c_k ox PRINT_CONFIGURATION_DECK - DISPLAYS >sl1>config_deck, WHICH CONTAINS INFORMATION ABOUT DISK LOCATIONS, THE RLV, AND PARTITIONS [] ONLY THE PART OF THE CONFIG DECK RELEVANT TO VOLUME MANAGEMENT AND DISK CONFIGURATION IS SHOWN HERE root dska 16. dskb 25. dskb 23. dskb 24. dska 8. part bos dska 16. part dump dska 16. part log dska 16. prph dska a 20. 2 451. 16. chnl dska a 26. 2 b 24. 2 b 22. 2 prph dskb b 20. 2 0 16. 451. 16. chnl dskb b 26. 2 a 24. 2 a 22. 2 prph dskc a 28. 2 501. 32. chnl dskc a 30. 2 b 30. 2 b 28. 2 prph dske b 32. 2 451. 8. chnl dske b 34. 2 prph dskf a 32. 2 501. 16. chnl dskf a 34. 2 mpc mspa 451. a 20. 4 a 24. 4 mpc mspb 451. b 20. 4 b 24. 4 mpc mspc 607. a 28. 4 mpc mspd 607. b 28. 4 mpc mspe 451. b 32. 4 mpc mspf 607. a 32. 4 Not To Be Reproduced 14-17 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _p_r_i_n_t__c_o_n_f_i_g_u_r_a_t_i_o_n__d_e_c_k ox DISK CONFIGURATION CONFIG CARDS [] ROOT [] IDENTIFIES THOSE VOLUMES IN THE ROOT LOGICAL VOLUME WHICH HAVE HC PARTITIONS, USED BY THE SUPERVISOR FOR PAGING OF SUPERVISOR SEGMETNS [] PART [] IDENTIFIES THE LOCATIONS OF CERTAIN IMPORTANT PARTITIONS [] ONLY PARTITIONS NECESSARY FOR MULTICS OPERATIONS ARE IDENTIFIED, NOT ALT PARTITIONS [] HC PARTITIONS ARE LOCATED BY THE ROOT CARD [] PRPH DSK_n, CHNL [] IDENTIFY PHYSICAL I/O CHANNEL PATHS FOR ACCESSING DISK DRIVES [] MPC [] IDENTIFY PHYSICAL CONNECTIONS TO MICROPROGRAMMED DISK CONTROLLERS Not To Be Reproduced 14-18 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _l_i_s_t__v_o_l_s ox LIST_VOLS - DISPLAYS A TABLE OF ONLINE VOLUMES, THEIR LOCATION, AND SPACE UTILIZATION Drive Records Left % VTOCEs Left % Avg PV PB/PD LV Name Size Name dskc_17 64504 54730 85 13440 11356 84 4 alpha01 pb pd Alpha dskc_18 64504 55389 86 13440 11352 84 4 alpha02 pb pd Alpha dska_05 36428 5305 15 8400 2662 32 5 mul03 pb pd Multics_Pubs dska_06 36428 4323 12 8400 2365 28 5 mul01 pb pd Multics_Pubs dskb_19 36428 4632 13 8400 2813 33 5 mul02 pb pd Multics_Pubs dskb_26 36429 13690 38 8400 4326 52 5 mul05 pb pd Multics_Pubs dskb_27 36429 4672 13 8400 2333 28 5 mul04 pb pd Multics_Pubs dska_01 36308 4680 13 9000 450 5 3 pub01 pb pd Public dska_03 36268 3588 10 9200 1017 11 3 pub07 pb pd Public dska_04 36268 4500 12 9200 884 10 3 pub04 pb pd Public dska_09 36268 4816 13 9200 864 9 3 pub02 pb pd Public dskb_17 36269 4281 12 9200 1002 11 3 pub05 pb pd Public dskb_18 36268 3840 11 9200 539 6 3 pub08 pb pd Public dskc_13 64504 294 0 13440 5539 41 8 rel01 Release dskc_14 64504 269 0 13440 5214 39 7 rel02 Release dskc_01 64503 43631 68 13440 10032 75 6 xpub01 pb Xpublic dskc_02 64503 45502 71 13440 9838 73 5 xpub02 pb Xpublic dskc_03 64503 42374 66 13440 9839 73 6 xpub03 pb Xpublic dskc_04 64503 43591 68 13440 9785 73 5 xpub04 pb Xpublic dskc_09 64504 58010 90 13440 12394 92 6 xpub05 pb Xpublic dskc_10 64504 56786 88 13440 12407 92 7 xpub06 pb Xpublic dskc_21 64503 23947 37 13440 6446 48 5 ypub01 pb Ypublic dskc_22 64503 23744 37 13440 6194 46 5 ypub02 pb Ypublic dskc_29 64503 23794 37 13440 6185 46 5 ypub05 pb Ypublic dskc_30 64503 24111 37 13440 6481 48 5 ypub06 pb Ypublic dskc_07 64503 11723 18 13440 6149 46 7 zpub01 pb pd Zpublic dskc_08 64503 11665 18 13440 6429 48 7 zpub02 pb pd Zpublic dskc_23 64504 9777 15 13440 6094 45 7 zpub03 pb pd Zpublic dskc_24 64504 11805 18 13440 6141 46 7 zpub04 pb pd Zpublic dskc_25 64504 11514 18 13440 7407 55 8 zpub05 pb pd Zpublic dskc_26 64504 12958 20 13440 7149 53 8 zpub06 pb pd Zpublic dske_06 37089 8053 22 5100 3797 74 22 list01 pb pd list_1 dska_12 37562 6046 16 2735 957 35 17 list02 pb list_2 dska_07 37309 6825 18 4000 2107 53 16 list03 pb list_3 dska_08 36209 3827 11 7000 491 7 4 root5 pb root dska_11 36209 8597 24 7000 4181 60 9 root6 pb root Not To Be Reproduced 14-19 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _l_i_s_t__v_o_l_s dska_16 31283 2892 9 9000 3476 39 5 rpv pb root dskb_23 36208 4888 13 7000 455 7 4 root3 pb root dskb_24 36209 3097 9 7000 238 3 4 root4 pb root dskb_25 36350 4483 12 7000 223 3 4 root2 pb root Not To Be Reproduced 14-20 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _t_r_a_f_f_i_c__c_o_n_t_r_o_l__q_u_e_u_e ox TRAFFIC_CONTROL_QUEUE - DISPLAYS THE CURRENT CONTENTS OF THE SCHEDULER QUEUES, USEFUL FOR GETTING AN IDEA OF WHAT THE USER PROCESSES ARE DOING [] FIRST PART OF OUTPUT IS ELIGIBLE QUEUE: avq = 13, elapsed time = 1247 sec, 64 active last 15 sec. flags dtu dpf temax te ts ti tssc event d ws wc process rWLE(d) 148 6946 2097 37 0 0 -0.001 0 0 6 0 Initializer xLED(c) 15 1111 1000 910 2012 1897 0.001 0 0 11 6 Sibert rLE(d) 14 1370 500 89 0 0 -0.009 0 0 0 4 Diaz rLE(d) 15 823 500 13 0 0 -0.009 0 0 64 8 JCrow wLE(d) 13 634 500 422 0 0 0.018 316537 0 3 3 Gintell xWLED(a) 6 108 1000 495 2054 2004 0.010 0 0 13 6 Brunelle wLE(d) 16 864 1000 85 0 510 0.016 504031 0 46 6 WPeck wWLE(b) 468 2734 1000 315 3010 8000 0.013 224641 0 4 3 Spratt wLE(d) 17 686 500 60 0 0 0.007 165111 0 3 4 RTowle wLE(b) 12 520 500 50 0 0 0.005 71 0 3 3 Kress wLE(d) 69 1895 500 21 0 0 0.001 177022 0 0 2 OPCTL xLED(b) 12 872 500 85 0 0 0.005 0 0 0 3 Pandolf rLE(d) 67 3279 500 0 0 0 -0.006 0 0 0 3 Lackey Not To Be Reproduced 14-21 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _t_r_a_f_f_i_c__c_o_n_t_r_o_l__q_u_e_u_e [] SECOND PART IS REALTIME, INTERACTIVE, AND ALL WORKCLASS QUEUES: REALTIME QUEUE: INTERACTIVE QUEUE: WORKCLASS 2 QUEUE: credits = 576 ms. WORKCLASS 3 QUEUE: credits = 242 ms. r 289 5326 1000 0 0 503 0.218 0 0 22 3 Dupuis r 131 2513 1000 0 4010 8000 0.128 0 0 0 3 Falksenj WORKCLASS 4 QUEUE: credits = 2601 ms. WORKCLASS 5 QUEUE: credits = 4000 ms. WORKCLASS 6 QUEUE: credits = -563 ms. WORKCLASS 7 QUEUE: credits = 3962 ms. rW 5 166 500 0 0 0 0.192 0 0 2 7 Saccuci WORKCLASS 8 QUEUE: credits = 3934 ms. WORKCLASS 9 QUEUE: credits = 2216 ms. WORKCLASS 10 QUEUE: credits = 4000 ms. WORKCLASS 11 QUEUE: credits = 4000 ms. Not To Be Reproduced 14-22 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _t_r_a_f_f_i_c__c_o_n_t_r_o_l__m_e_t_e_r_s ox TRAFFIC_CONTROL_METERS - DISPLAY THE STATE OF THE SCHEDULER [] OUTPUT COMES IN THREE PARTS, SHOWN OUT OF ORDER HERE: [] QUEUE LENGTHS AND RESPONSE TIME - THESE ARE WEIGHTED AVERAGES OVER THE LAST FIFTEEN SECONDS. [] ACTIVITIES VERSUS DEPTH - HOW DEEP THE TRAFFIC CONTROLLER HAD TO SEARCH TO FIND A SCHEDULABLE PROCESS [] MISCELLANEOUS COUNTERS AND FREQUENCIES OF VARIOUS EVENTS Total metering time 0:20:34 Ave queue length 16.52 Ave eligible 13.31 Response time 0.264 sec DEPTH %PF TBPF %GTW TBS %CPU 1 12.0 22.8 10.8 11.6 8.1 2 11.8 21.0 9.2 12.2 7.4 3 10.8 24.9 8.7 14.1 8.0 4 10.2 27.9 8.5 15.2 8.4 5 9.5 29.8 8.3 15.5 8.4 6 8.4 33.5 7.8 16.5 8.4 7 7.4 36.3 7.3 16.8 8.0 Not To Be Reproduced 14-23 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _t_r_a_f_f_i_c__c_o_n_t_r_o_l__m_e_t_e_r_s COUNTER TOTAL ATB #/INT Interactions 7977 0.155 sec Loadings 12161 0.102 sec 1.525 Blocks 14082 0.088 sec Wakeups 36078 0.034 sec Schedulings 12591 0.098 sec 1.578 Lost priority 1 1234.756 sec Priority boosts 0 0.000 sec I/O boosts 578 2.136 sec Wait Page 127040 9.719 msec 15.926 Wait PTL 75691 16.313 msec 9.489 Wait Other 31912 38.693 msec 4.001 Total Waits 234643 5.262 msec 29.415 Notify Page 128954 9.575 msec Notify PTL 75691 16.313 msec Notify Other 25330 48.747 msec Total Notifies 229975 5.369 msec Get Processor 245856 5.022 msec Pre-empts 94235 13.103 msec 11.813 Getwork 338802 3.644 msec Retry getwork 4988 0.248 sec Extra notifies 2949 0.419 sec Last EN event 000000000071 Last NTO event 033022237767 ox ALARM_CLOCK_METERS - DISPLAYS INFORMATION ABOUT THE USER ALARM TIMER FACILITY (HARDCORE INTERFACE FOR timer_manager_) Total metering time 0:20:31 No. alarm clock sims. 2171 Simulation lag 5.245 msecs. Max. lag 1.7340314e4 msecs. Not To Be Reproduced 14-24 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _p_r_i_n_t__t_u_n_i_n_g__p_a_r_a_m_e_t_e_r_s ox PRINT_TUNING_PARAMETERS - PRINT VALUES FOR SYSTEM CONTROL PARAMETERS. MOST CONTROL THE SCHEDULER Current system tuning parameters: tefirst 0.5 seconds telast 1. seconds timax 8. seconds priority_sched_inc 80. seconds min_eligible 2. max_eligible 20. max_batch_elig 0 working_set_factor 0.5 working_set_addend 0 deadline_mode off int_q_enabled on post_purge on pre_empt_sample_time 0.04 seconds gp_at_notify off gp_at_ptlnotify off process_initial_quantum 2. seconds quit_priority 0. gv_integration 4. seconds realtime_io_priority on realtime_io_deadline 0. seconds realtime_io_quantum 0.005 seconds notify_timeout_interval 30. seconds notify_timeout_severity 0 write_limit 724 [] THESE ARE "INTERNAL", NORMALLY NEVER CHANGED, AND ONLY PRINTED IF THE -all CONTROL ARGUMENT IS GIVEN stack_truncation on stack_truncation_always off stk_trunc_block_avg_factor 0.25 trap_invalid_masked off meter_ast_locking off checksum_filemap on Not To Be Reproduced 14-25 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _w_o_r_k__c_l_a_s_s__m_e_t_e_r_s ox WORK_CLASS_METERS - DISPLAY THE VARIOUS WORKCLASS PARAMETERS, AND SHOW WHAT RESOURCES EACH WORKCLASS IS CONSUMING. Total metering time 0:20:38 WC %GUAR %MAX %TCP V/ELIG PW IRESP IQUANT RESP QUANT P M R I LCG 0 3. 0.12 3 0.26 2.10 0.26 2.10 P 0 R I Init 1 3. 0.09 1 0.25 0.75 0.50 1.00 P 0 R I RTime 2 7. 15. 0.44 1 P 0 I System SysAdm OPR FED 3 32. 44. 0.49 1 P 0 I SysProg SysDev 4 9. 14. 4. 0.26 1 P 0 SEngr 5 20. 2. 0.46 1 P 0 I HEngr 6 12. 16. 8. 0.25 1 P 0 MktUS MktFor MktEd 7 3. 7. 4. 0.36 1 P 0 DS-CC 8 6. 0. 0.18 1 P 0 I OffAuto 9 4. 8. 2. 0.62 1 P 0 Misc Mfg 10 3. 0. 0.55 1 P 0 I Other 11 4. 2. 0.16 1 P 0 I Special TCPU percents (%GUAR) control non-realtime work_classes. Not To Be Reproduced 14-26 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _r_e_s_p_o_n_s__m_e_t_e_r_s ox RESPONSE_METERS - DISPLAYS RESPONSE TIME, BASED ON TERMINAL INTERACTIONS, ON A PER-WORKCLASS BASIS Total metering time 0:20:36 WC ---Thinks/-- ----Response Times by VCPU Range---- Load Control Group ---Queues--- -VCPU Range- # Avg Avg Resp # Avg From To Int VCPU RT Fact 0 86 2.70 0.00 0.50 113 0.04 0.42 9.34 Init 92 0.15 0.50 1.00 3 0.55 5.51 10.00 1.00 10.00 3 2.43 14.96 6.15 ----- ----- 119 0.12 0.91 7.76 1 35 11.78 0.00 0.50 34 0.11 0.96 8.74 RTime 39 0.21 0.50 1.00 2 0.83 4.06 4.87 ----- ----- 36 0.15 1.13 7.55 2 593 14.90 0.00 0.50 620 0.05 0.49 10.50 System SysAdm OPR FED 612 0.15 0.50 1.00 28 0.71 3.61 5.10 1.00 10.00 39 1.77 8.39 4.74 ----- ----- 687 0.17 1.07 6.22 3 2496 6.38 0.00 0.50 2993 0.08 0.66 7.96 SysProg SysDev 2622 0.17 0.50 1.00 117 0.68 4.22 6.16 1.00 10.00 66 2.46 13.47 5.49 10.00 99.99 10 56.85 99.99 3.33 ----- ----- 3186 0.33 1.65 4.96 4 581 15.82 0.00 0.50 663 0.05 0.71 12.94 SEngr 590 0.26 0.50 1.00 13 0.64 4.64 7.30 1.00 10.00 8 3.47 32.07 9.24 ----- ----- 684 0.11 1.15 10.88 5 133 29.51 0.00 0.50 148 0.06 0.83 12.95 HEngr 141 0.17 0.50 1.00 3 0.69 4.64 6.70 1.00 10.00 5 3.15 10.24 3.25 10.00 99.99 2 26.69 48.84 1.83 ----- ----- 158 0.51 1.81 3.55 Not To Be Reproduced 14-27 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _r_e_s_p_o_n_s__m_e_t_e_r_s 6 1180 11.65 0.00 0.50 977 0.05 1.13 20.91 MktUS MktFor MktEd 1211 0.58 0.50 1.00 24 0.64 4.95 7.74 1.00 10.00 16 1.89 11.88 6.29 ----- ----- 1017 0.10 1.39 14.38 7 259 14.65 0.00 0.50 292 0.08 1.53 20.17 DS-CC 287 0.98 0.50 1.00 9 0.71 9.03 12.66 1.00 10.00 17 2.04 14.76 7.24 10.00 99.99 1 12.22 99.99 9.45 ----- ----- 319 0.24 2.81 11.86 8 73 2.69 0.00 0.50 79 0.06 0.31 5.45 OffAuto 74 0.05 0.50 1.00 2 0.60 6.40 10.62 1.00 10.00 1 3.20 6.73 2.10 ----- ----- 82 0.11 0.54 4.94 9 94 41.91 0.00 0.50 80 0.11 1.23 11.07 Misc Mfg 96 0.30 0.50 1.00 11 0.69 4.74 6.91 1.00 10.00 13 2.99 12.82 4.30 ----- ----- 104 0.53 3.05 5.74 10 7 99.99 0.00 0.50 10 0.11 1.45 13.82 Other 8 0.21 1.00 10.00 1 3.88 39.11 10.09 ----- ----- 11 0.45 4.88 10.89 11 417 12.71 0.00 0.50 445 0.03 0.50 15.32 Special 420 0.16 0.50 1.00 5 0.57 3.61 6.29 1.00 10.00 4 1.65 11.40 6.90 ----- ----- 454 0.05 0.63 11.93 All 5954 11.13 0.00 0.50 6454 0.07 0.77 11.40 6192 0.29 0.50 1.00 217 0.68 4.54 6.70 1.00 10.00 173 2.31 13.11 5.68 10.00 99.99 13 48.77 99.99 3.32 ----- ----- 6857 0.24 1.51 6.39 86797 calls to meter_response_time 283 invalid transitions. Overhead = 0.09% ( 0.052 ms./call) Not To Be Reproduced 14-28 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _s_y_s_t_e_m__p_e_r_f_o_r_m_a_n_c_e__g_r_a_p_h ox SYSTEM_PERFORMANCE_GRAPH - GIVES A ROUGH SNAPSHOT OF SYSTEM ACTIVITY, SAMPLED PERIODICALLY 04/02/83 1114.3 est Sat up= 04/01/83 0855.6 est, sys_hours= 26.3, cpu_hours= 78.9 cpu= 3, pages= 3419, min_e= 3, max_e= 16, wsa= 0, wsf= 0.50, tefirst= 0.13, telast= 0.50, timax= 32.0 1115.00 Qe . | *******|**+******|******mitpS y . DV 1116.00 Qe .****|*********|**+******|**iiits |y . S DV 1117.00 Q*e*******|***iittpp| + . y| . | . D V 1118.00 Q*e*******|*******iittps+. y | . | . D V 1119.00 Qe********|*********|***+*iit |y . | . DV 1120.00 Qe********|*********|***+**it |y . | . DV 1121.01 Q*e*******|******iitpp +y | . | . D V 1122.00 Qe********|*********|****+iitp|y . | S DV 1123.00 Qe********|*********|**mi+ts y . | S DV 1124.00 Q*e*******|*********|*iii+ps |y . | . DV 1125.00 Q*e*******|**********miii+tps |y . | . D V 1126.00 Q*e*******|****iiiit|tps+. y | . | . D V 1127.00 Q*e*******|*********|*ii+tp y| . | . D V 1128.00 Q*e*******|*********|***+*iiittp y | . D V 1129.00 Qe *******|*********|***+*****|****iittp|y . D V 1130.00 Qe *******|*********|***+*****|**iiittp |y . DV 1131.00 Qe *******|*********|***+*****|****iiitt| y . DV 1132.00 Qe********|*********|***+*****|****iiit |y . DV 1133.00 rQ********|*********|**+******|*iiitts y . D V 1134.00 Qe********|*********|**+******|***iitp y . DV 1135.00 Qe . | *******|**+******|********iit y. DV 1136.00 Qe********|*********|***+******iiitts y| . D V 1137.00 rQ********|*********|***+*****|****iitts|y . D V 1138.01 Qe********|*********|***+*****iiiitp y . DV 1139.00 Qe********|*********|****+*****iitps y S DVP 1140.02 rQ********|*********|***+*****iiittpp y . D VP Not To Be Reproduced 14-29 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _s_y_s_t_e_m__p_e_r_f_o_r_m_a_n_c_e__g_r_a_p_h [] SOME CHARACTERS INDICATES PERCENTAGES OF SYSTEM TIME SPENT IN VARIOUS ACTIVITIES. OTHERS INDICATE ACTUAL VALUES [] PERCENTAGES [] BLANK - USER PROCESSING. RING ZERO TIME BETWEEN "y" AND THE RIGHT MARGIN, USER RING BETWEEN "s" and "y" [] SYSTEM SERVICES - SEGMENT FAULTS ("s"), PAGE FAULTS ("p"), TRAFFIC CONTROL ("t"), INTERRUPTS ("i") [] IDLE TIME - MP IDLE ("m"), NMP IDLE ("*"), ZERO IDLE (BLANKS ON THE LEFT) [] OTHER VALUES (RELATIVE TO THE LEFT MARGIN) [] TRAFFIC CONTROL QUEUE LENGTHS - READY QUEUE ("q"), ELIGIBLE QUEUE ("e") [] USER COUNTS - NUMBER OF USERS ("+"), LOAD UNITS ("-") [] TRAFFIC CONTROL VALUES - RESPONSE TIME ("r"), QUITS PER MINUTE ("Q"), SCHEDULINGS IN TEN SECONDS ("S") [] OTHER VALUES (RELATIVE TO THE RIGHT MARGIN) [] I/O TRAFFIC - DISK I/O PER 100 MILLISECONDS ("D"), VTOC I/O PER 100 MILLISECONDS ("V") Not To Be Reproduced 14-30 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _m_e_t_e_r__g_a_t_e ox METER_GATE - SHOWS TIME SPENT CALLING THROUGH SUPERVISOR GATES (HCS_, ETC.) Metering since 04/01/83 0855.6 est Fri. Total non-idle time at 04/02/83 1101.9 est Sat = 39 hr. 36 min. 57 sec. Gate meters for hcs_: total calls = 6294028. 7 hr. 35 min. 54 sec. or 19.180% spent in calls through gate. calls pcnt avg pwait entry name 902768 4.50 7.11 0.02 tty_write 13857 2.29 236.01 2.28 list_dir 442912 1.19 3.85 0.01 tty_read 435510 1.01 3.30 0.02 tty_order 165154 0.97 8.35 0.10 initiate 120204 0.83 9.84 0.76 make_ptr 20620 0.51 34.95 0.48 make_seg 60796 0.50 11.69 0.14 truncate_seg 45464 0.45 14.25 0.16 status_long 337615 0.40 1.69 0.01 set_alarm_timer 532081 0.35 0.95 0.00 read_events 4085 0.35 122.90 3.57 star_dir_list_ 42080 0.33 11.17 0.02 list_acl 59354 0.32 7.76 0.01 status_for_backup 103029 0.32 4.44 0.03 tty_get_line 61851 0.32 7.33 0.03 tty_write_whole_string 48621 0.31 9.05 0.35 status_minf 31637 0.26 11.64 0.04 set_max_length_seg 150703 0.26 2.41 0.03 terminate_noname 67267 0.20 4.19 0.03 tty_read_echoed 14851 0.20 18.77 0.08 quota_get 21051 0.18 12.48 0.72 get_link_target 30337 0.18 8.25 0.40 initiate_count 6288 0.17 39.36 0.25 delentry_seg 247420 0.16 0.95 0.03 wakeup 14024 0.16 15.99 0.43 status_ 476759 0.16 0.47 0.00 level_set 13601 0.13 13.69 0.00 dir_quota_read 14860 0.13 12.05 0.02 list_dir_acl 13496 0.13 13.22 0.01 get_max_length 28194 0.12 6.15 0.41 make_entry Not To Be Reproduced 14-31 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _m_e_t_e_r__g_a_t_e 23725 0.11 6.65 0.09 set_bc_seg 1416 0.11 108.00 2.08 star_ 13941 0.10 10.68 0.40 get_access_class 28696 0.10 5.03 0.04 status_mins 13598 0.09 9.76 0.02 list_inacl_all 102810 0.09 1.27 0.01 tty_state 12881 0.08 8.50 0.39 get_user_effmode 46180 0.08 2.33 0.01 tty_read_with_mark 206 0.07 493.77 3.79 star_list_ 1109005 0.07 0.09 0.00 level_get Not To Be Reproduced 14-32 MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _m_e_t_e_r__g_a_t_e [] HPHCS_ AND IOI_ ARE THE OTHER SUPERVISOR GATES THAT CONSUME SIGNIFICANT RESOURCES Metering since 04/01/83 0855.6 est Fri. Total non-idle time at 04/02/83 1102.7 est Sat = 39 hr. 37 min. 59 sec. Gate meters for hphcs_: total calls = 70604. 0 hr. 29 min. 51 sec. or 1.256% spent in calls through gate. calls pcnt avg pwait entry name 869 0.57 928.77 5.40 destroy_process_finish 911 0.24 381.04 15.09 create_proc 5944 0.20 48.34 1.04 dir_quota_read 8326 0.05 8.47 0.04 tty_write_force 5946 0.05 11.31 0.00 quota_read 105 0.04 500.68 0.00 flush_core 246 0.04 208.83 0.17 flush_ast_pool 1753 0.02 16.94 0.76 star_ 5595 0.02 4.12 0.00 set_backup_dump_time 31893 0.01 0.60 0.00 set_kst_attributes 1 0.01 14598.71 8.00 add_scu Metering since 04/01/83 0855.6 est Fri. Total non-idle time at 04/02/83 1103.0 est Sat = 39 hr. 38 min. 22 sec. Gate meters for ioi_: total calls = 245985. 0 hr. 12 min. 14 sec. or 0.515% spent in calls through gate. calls pcnt avg pwait entry name 243976 0.50 2.94 0.00 connect 248 0.01 65.91 2.09 workspace 793 0.00 0.58 0.00 get_special_status 533 0.00 0.54 0.00 set_event 322 0.00 0.59 0.14 set_status 105 0.00 0.55 0.00 timeout 3 0.00 4.38 0.00 set_channel_required 5 0.00 0.65 0.00 get_detailed_status 15-i MDD-003 _O_U_T_P_U_T__F_R_O_M__M_E_T_E_R_I_N_G__C_O_M_M_A_N_D_S _m_e_t_e_r__g_a_t_e TOPIC XV Evolution of Memory Addressing/Management Page Conventional Memory . . . . . . . . . . . . . 15-1 Structure . . . . . . . . . . . . . . . . 15-1 Address Formation . . . . . . . . . . . . 15-1 Characteristics . . . . . . . . . . . . . 15-2 Problems. . . . . . . . . . . . . . . . . 15-4 Single Virtual Memory . . . . . . . . . . . . 15-7 Structure . . . . . . . . . . . . . . . . 15-7 Address Formation . . . . . . . . . . . . 15-7 Characteristics . . . . . . . . . . . . . 15-7 Solved Problems . . . . . . . . . . . . . 15-9 Problems. . . . . . . . . . . . . . . . . 15-11 Multiple Virtual Memories . . . . . . . . . . 15-12 Structure . . . . . . . . . . . . . . . . 15-12 Address Formation . . . . . . . . . . . . 15-12 Characteristics . . . . . . . . . . . . . 15-13 Solved Problems . . . . . . . . . . . . . 15-14 Problems. . . . . . . . . . . . . . . . . 15-15 Multics Virtual Memory. . . . . . . . . . . . 15-16 Structure . . . . . . . . . . . . . . . . 15-16 Address Formation . . . . . . . . . . . . 15-16 Characteristics . . . . . . . . . . . . . 15-17 Solved Problems . . . . . . . . . . . . . 15-18 Problems. . . . . . . . . . . . . . . . . 15-20 15-i MDD-003 . _C_O_N_V_E_N_T_I_O_N_A_L__M_E_M_O_R_Y _S_T_R_U_C_T_U_R_E ox 1-DIMENSIONAL ADDRESS SPACE USED BY THE SYSTEM Not To Be Reproduced 15-1 MDD-003 _C_O_N_V_E_N_T_I_O_N_A_L__M_E_M_O_R_Y _C_H_A_R_A_C_T_E_R_I_S_T_I_C_S ox SPACE DIVIDED INTO REGIONS OF VARIOUS SIZES, ONE REGION PER PROCESS/JOB/USER ox REGIONS ARE: [] PROTECTED FROM ONE ANOTHER BY A BAR OR BY PROTECT KEYS [] SUBDIVIDED INTO POOLS OF STORAGE USED FOR: PROGRAMS, I/O BUFFERS, MEMORY ALLOCATION AREA, AUTOMATIC VARIABLES, STATIC VARIABLES ox 1-DIMENSIONAL ADDRESS SPACE WIRED DIRECTLY ONTO REAL MEMORY ox PROGRAMS MUST BE LOADED INTO REAL MEMORY [] MEMORY ALLOCATION FOR REGION [] PROGRAMS AND BUFFERS ALLOCATED WITHIN REGION Not To Be Reproduced 15-2 MDD-003 _C_O_N_V_E_N_T_I_O_N_A_L__M_E_M_O_R_Y _C_H_A_R_A_C_T_E_R_I_S_T_I_C_S [] PREPARATORY ADDRESS MODIFICATION (ADDRESSES MUST BE MODIFIED TO REFLECT LOCATION WITHIN THE REGION) ox LINKAGE EDITING REQUIRED [] ALL SYMBOLIC REFERENCES MUST BE RESOLVED - IMPLYING THAT ALL REFERENCED PROGRAMS MUST BE LOADED REGARDLESS OF WHETHER OR NOT THEY ARE ACTUALLY NEEDED AT RUN TIME ox EXAMPLES: GCOS, IBM OS/MFT, IBM OS/MVT Not To Be Reproduced 15-3 MDD-003 _C_O_N_V_E_N_T_I_O_N_A_L__M_E_M_O_R_Y _P_R_O_B_L_E_M_S ox SYSTEM ADDRESS SPACE LIMITED TO SIZE OF REAL MEMORY ox USER ADDRESS SPACES (REGIONS) ARE SMALL. THIS MEANS: [] PROGRAMS MUST BE WRITTEN TO FIT INTO SMALL REGIONS [] SMALL REGION PROGRAMS OFTEN OPERATE LESS EFFICIENTLY IN THEIR USE OF CPU TIME THAN A SIMILAR PROGRAM DESIGNED FOR A LARGE REGION [] BECAUSE SMALL REGION OPERATION IS PROGRAMMED IN, SUCH PROGRAMS CANNOT TAKE ADVANTAGE OF MORE MEMORY WHEN IT CAN BE MADE AVAILABLE [] PROGRAMMER MUST WASTE INGENUITY (AND SYSTEM RESOURCES) TO MAKE PROGRAMS RUN IN A SMALL REGION: [] WRITING OVERLAY PROGRAMS [] DIVIDING REGION INTO OPTIONAL-SIZE POOLS [] PROGRAMMING MECHANISMS TO EXTEND OR SWAP-OUT POOLS WHEN THEY OVERFLOW Not To Be Reproduced 15-4 MDD-003 _C_O_N_V_E_N_T_I_O_N_A_L__M_E_M_O_R_Y _P_R_O_B_L_E_M_S [] PROGRAMMER TIME WASTED WHEN PROGRAMS MUST BE CONVERTED TO TAKE ADVANTAGE OF LARGER REGIONS WHEN CONFIGURATION IS INCREASED ox REAL MEMORY IS USED INEFFICIENTLY [] WITHIN A REGION, PROGRAM COMPONENTS OR DATA AREAS NOT REFERENCED STILL OCCUPY REAL MEMORY [] UNUSED SPACE BETWEEN REGIONS WASTES REAL MEMORY (FRAGMENTATION) ox SCHEMES FOR USING REAL MEMORY MORE EFFICIENTLY ARE COSTLY [] CPU COST OF MOVING REGIONS TO REDUCE FRAGMENTATION [] CPU AND I/O COSTS TO SWAP OUT ENTIRE REGIONS TO SHARE REAL MEMORY AMONG MORE USERS ox NO PROTECTION OF DATA WITHIN A REGION [] PROGRAMMING ERRORS CAN CAUSE UNWANTED WRITING INTO PROGRAM OR DATA AREAS Not To Be Reproduced 15-5 MDD-003 _C_O_N_V_E_N_T_I_O_N_A_L__M_E_M_O_R_Y _P_R_O_B_L_E_M_S ox OVERHEAD AND INCONVENIENCE OF LOADING AND LINKAGE EDITING ox NO SHARING OF PROGRAMS AND DATA BETWEEN REGIONS [] EACH REGION MUST CONTAIN A COPY OF SHARED DATA (INEFFICIENT USE OF MEMORY) [] MODIFICATIONS TO SHARED DATA CANNOT EASILY BE REFLECTED IN ALL COPIES ox PHYSICAL INPUT/OUTPUT OPERATIONS ON DISK FILES OFTEN BECOME THE RESPONSIBILITY OF THE PROGRAMMER (REDUCING PRODUCTIVITY) Not To Be Reproduced 15-6 MDD-003 _S_I_N_G_L_E__V_I_R_T_U_A_L__M_E_M_O_R_Y _S_T_R_U_C_T_U_R_E ox A LARGE ADDRESS SPACE USED BY THE SYSTEM (EG, 4M WORDS) ox THE ADDRESS SPACE IS LOGICALLY DIVIDED INTO REGIONS OF VARIOUS SIZES, AS IN CONVENTIONAL MEMORY ox THE VIRTUAL MEMORY IS PHYSICALLY DIVIDED INTO PAGES HAVING A FIXED SIZE ox THE ADDRESS SPACE AND THE VIRTUAL MEMORY HAVE THE SAME SIZE ox THE 1-DIMENSIONAL ADDRESS SPACE IS MAPPED DIRECTLY ONTO THE PAGED, 1-DIMENSIONAL VIRTUAL MEMORY ox THE VIRTUAL MEMORY IS MAPPED BY A PAGING ALGORITHM ONTO A SMALLER (EG, 256K WORDS) REAL MEMORY Not To Be Reproduced 15-7 MDD-003 _S_I_N_G_L_E__V_I_R_T_U_A_L__M_E_M_O_R_Y _C_H_A_R_A_C_T_E_R_I_S_T_I_C_S ox PROGRAMS MUST BE LOADED INTO THE VIRTUAL MEMORY AS IN CONVENTIONAL MEMORY SYSTEMS ox LINKAGE EDITING REQUIRED AS IN CONVENTIONAL MEMORY SYSTEMS ox EXAMPLES: [] IBM OS/VS-1 OR OS/VS-2 RELEASE 1 Not To Be Reproduced 15-8 MDD-003 _S_I_N_G_L_E__V_I_R_T_U_A_L__M_E_M_O_R_Y _S_O_L_V_E_D__P_R_O_B_L_E_M_S ox THE SYSTEM'S ADDRESS SPACE IS MUCH LARGER THAN REAL MEMORY [] THE SYSTEM CAN RUN MORE AND/OR LARGER USER REGIONS ox THE USER REGIONS CAN BE LARGER [] PROGRAMS CAN BE WRITTEN FOR A LARGE REGION TO TAKE ADVANTAGE OF ADDITIONAL MEMORY WHEN IT IS AVAILABLE ox PROGRAMMER PRODUCTIVITY IMPROVES [] PROGRAMMERS WORRY LESS ABOUT OPTIMIZING MEMORY USAGE [] CONVERTING PROGRAMS TO USE LARGER MEMORY CONFIGURATIONS OFTEN UNNECESSARY - LESS COMPETITION ox REAL MEMORY USED MORE EFFICIENTLY [] FEWER UNREFERENCED AREAS OF ADDRESS SPACE OCCUPY REAL MEMORY Not To Be Reproduced 15-9 MDD-003 _S_I_N_G_L_E__V_I_R_T_U_A_L__M_E_M_O_R_Y _S_O_L_V_E_D__P_R_O_B_L_E_M_S [] PAGING ALGORITHM SIMPLIFIES MEMORY MANAGEMENT SCHEMES Not To Be Reproduced 15-10 MDD-003 _S_I_N_G_L_E__V_I_R_T_U_A_L__M_E_M_O_R_Y _P_R_O_B_L_E_M_S ox MEMORY SWAPPING MAY STILL BE NECESSARY TO SHARE THE ADDRESS SPACE AMONG MANY USERS ox USER REGIONS STILL TOO SMALL TO HANDLE EVERY APPLICATION. SOME MEMORY MANAGEMENT STILL REQUIRED ox NO PROTECTION OF DATA WITHIN A REGION ox OVERHEAD AND INCONVENIENCE OF LOADING AND LINKAGE EDITING ox NO SHARING OF DATA BETWEEN REGIONS ox EXPLICIT DISK I/O STILL REQUIRED TO ACCESS FILES ox THE ADVANTAGES OF SOLVING THE PROBLEMS ABOVE MAY BE OUTWEIGHED BY COSTS IN HARDWARE AND SOFTWARE OF THE PAGING OVERHEAD Not To Be Reproduced 15-11 MDD-003 _M_U_L_T_I_P_L_E__V_I_R_T_U_A_L__M_E_M_O_R_I_E_S _S_T_R_U_C_T_U_R_E ox THE SYSTEM USES MANY LARGE (4M WORD), 1-DIMENSIONAL ADDRESS SPACES, ONE PER USER REGION ox EACH ADDRESS SPACE CONTAINS THE SUPERVISOR PROGRAMS PLUS ONE LARGE USER REGION (DIVIDED INTO POOLS), PLUS PROGRAMS AND DATA SHARED AMONG ALL REGIONS ox EACH ADDRESS SPACE IS MAPPED DIRECTLY ONTO ITS OWN, PAGED VIRTUAL MEMORY ox EACH VIRTUAL MEMORY IS MAPPED BY A PAGING ALGORITHM ONTO THE SINGLE, SMALLER REAL MEMORY ox PROGRAMS MUST BE LOADED INTO THE VIRTUAL MEMORY AS IN CONVENTIONAL MEMORY SYSTEMS ox LINKAGE EDITING REQUIRED AS IN CONVENTIONAL MEMORY SYSTEMS Not To Be Reproduced 15-12 MDD-003 _M_U_L_T_I_P_L_E__V_I_R_T_U_A_L__M_E_M_O_R_I_E_S _C_H_A_R_A_C_T_E_R_I_S_T_I_C_S ox EXAMPLES: [] IBM OS/VS-2 RELEASE 2 (MVS) Not To Be Reproduced 15-13 MDD-003 _M_U_L_T_I_P_L_E__V_I_R_T_U_A_L__M_E_M_O_R_I_E_S _S_O_L_V_E_D__P_R_O_B_L_E_M_S ox THE LARGE USER REGIONS CAN HANDLE ALL BUT THE LARGEST PROGRAMS WITHOUT SPECIAL MEMORY MANAGEMENT. PROGRAMMER MUST STILL DIVIDE REGIONS INTO POOLS, HOWEVER, AND SOMETIMES PROVIDE POOL OVERFLOW MECHANISMS ox MEMORY SWAPPING IS NOW UNNECESSARY. PREVIOUSLY SWAPPED REGIONS NOW OCCUPY THEIR OWN ADDRESS SPACES AND ARE PAGED IN AND OUT ox PROGRAMS AND DATA (USUALLY READ-ONLY) CAN BE SHARED BETWEEN REGIONS IN A LIMITED WAY BY OCCUPYING THE SAME POOL IN EVERY ADDRESS SPACE ox NEWLY SOLVED PROBLEMS MAKE PAGING OVERHEAD MORE WORTHWHILE Not To Be Reproduced 15-14 MDD-003 _M_U_L_T_I_P_L_E__V_I_R_T_U_A_L__M_E_M_O_R_I_E_S _P_R_O_B_L_E_M_S ox NO PROTECTION OF DATA WITHIN THE MAJORITY OF A USER'S ADDRESS SPACE (REGION) ox OVERHEAD AND INCONVENIENCE OF LOADING AND LINKAGE EDITING ox GENERAL SHARING OF READ-WRITE DATA STILL NOT POSSIBLE ox EXPLICIT DISK I/O STILL REQUIRED TO ACCESS FILES Not To Be Reproduced 15-15 MDD-003 _M_U_L_T_I_C_S__V_I_R_T_U_A_L__M_E_M_O_R_Y _S_T_R_U_C_T_U_R_E ox THE SYSTEM USES MANY, VERY LARGE (EG, 256M WORDS), 2-DIMENSIONAL ADDRESS SPACES, ONE PER USER PROCESS (REGION) ox EACH ADDRESS SPACE IS DIVIDED INTO SEGMENTS WHICH PERFORM THE SAME FUNCTION AS POOLS IN MULTIPLE VIRTUAL MEMORY SYSTEMS ox SEGMENTS: [] HAVE VARYING SIZES [] ARE EXTENDABLE [] ARE FILES IN THE MULTICS STORAGE SYSTEM [] ARE ACCESSED AS READ-WRITE, READ-ONLY, EXECUTABLE OR CALLABLE DATA, WITH ACCESS CONTROLLED BY AN ACL, RING BRACKETS AND AN AIM CLASSIFICATION [] ARE SHARED AMONG ADDRESS SPACES, WITH EACH ADDRESS SPACE HAVING ITS OWN PERMISSION TO ACCESS THE SEGMENT Not To Be Reproduced 15-16 MDD-003 _M_U_L_T_I_C_S__V_I_R_T_U_A_L__M_E_M_O_R_Y _C_H_A_R_A_C_T_E_R_I_S_T_I_C_S ox EACH ADDRESS SPACE INTERSECTS IN VARYING DEGREES WITH EVERY OTHER ADDRESS SPACE ox EACH ADDRESS SPACE IS MAPPED DIRECTLY ONTO ITS OWN PAGED, SEGMENTED VIRTUAL MEMORY OF THE SAME SIZE ox EACH VIRTUAL MEMORY IS MAPPED BY A PAGING ALGORITHM ONTO THE SINGLE, SMALLER REAL MEMORY ox NO LOADING IS REQUIRED SINCE ALL ADDRESSES ARE INTERPRETED AS OFFSETS WITHIN SEGMENTS ox NO LINKAGE EDITING IS REQUIRED SINCE ALL SYMBOLIC REFERENCES ARE RESOLVED AT RUN TIME IF AND WHEN THEY ARE ENCOUNTERED (DYNAMIC LINKING) Not To Be Reproduced 15-17 MDD-003 _M_U_L_T_I_C_S__V_I_R_T_U_A_L__M_E_M_O_R_Y _S_O_L_V_E_D__P_R_O_B_L_E_M_S ox DATA WITHIN THE ADDRESS SPACE PROTECTED [] READ OR READ-EXECUTE DATA STORED IN SEPARATE SEGMENTS WHICH ARE PROTECTED FROM MODIFICATION [] PROGRAMMING ERRORS REFERENCING OUTSIDE ARRAY BOUNDS CANNOT REFERENCE DATA IN ANOTHER SEGMENT ox DATA CAN BE SHARED IN A GENERAL WAY BETWEEN ADDRESS SPACES [] EACH SEGMENT (NOT A COPY OF THE SEGMENT) CAN APPEAR IN SEVERAL ADDRESS SPACES [] DIFFERENT PROCESSES CAN HAVE DIFFERENT ACCESS TO THE SAME SEGMENT IN THEIR ADDRESS SPACE ox OVERHEAD AND INCONVENIENCE OF LOADING (SOFTWARE) REPLACED BY AN ADDRESS FORMATION SCHEME (HARDWARE) [] UNREFERENCED PROGRAMS (AND/OR PAGES OF PROGRAMS) DO NOT REQUIRE MAIN MEMORY SPACE Not To Be Reproduced 15-18 MDD-003 _M_U_L_T_I_C_S__V_I_R_T_U_A_L__M_E_M_O_R_Y _S_O_L_V_E_D__P_R_O_B_L_E_M_S [] PROGRAMS NEVER REQUIRE PREPARATORY ADDRESS MODIFICATION ox EXPLICIT I/O IS NOT REQUIRED TO ACCESS FILES (SEGMENTS) [] SEGMENTS CAN BE ACCESSED BY MAKING THEM KNOWN TO THE ADDRESS SPACE AND REFERENCING THE SEGMENT [] THIS IS CALLED VIRTUAL FILE I/O ox OVERHEAD AND INCONVENIENCE OF LINKAGE EDITING REPLACED BY DYNAMIC LINKING [] UNREFERENCED PROGRAMS DO NOT REQUIRE LINKING ox ADVANTAGES OF VERY LARGE ADDRESS SPACE, SHARED FILES, DATA PROTECTION, AND VIRTUAL I/O DEFINITELY OUTWEIGH THE COSTS OF PAGING AND SEGMENTATION OVERHEAD Not To Be Reproduced 15-19 MDD-003 _M_U_L_T_I_C_S__V_I_R_T_U_A_L__M_E_M_O_R_Y _P_R_O_B_L_E_M_S ox MULTICS FILE I/O IS OFTEN LESS EFFICIENT THEN SPECIAL CASED METHODS BASED ON KNOWN ACCESS PATTERNS ox THE SYSTEM'S SEGMENT SIZE DOES NOT GENERALIZE UPWARD TO HANDLE VERY LARGE DATA BASES. ALTERNATE (KLUDGY) METHODS MUST BE USED (SUCH AS MSF'S) ox THE OVERHEAD TO TOUCH A PAGE OF ONE HUNDRED DIFFERENT SEGMENTS IS CONSIDERABLY MORE THAN THE OVERHEAD TO TOUCH ONE HUNDRED PAGES OF THE SAME SEGMENT. (IE: SPARSE AND INFREQUENT ACCESSING IS EXPENSIVE) ox LACK OF EXPLICIT I/O CONTROL MAKES OVERALL SYSTEM RELIABILITY SUFFER SINCE FULL RECOVERY FROM A SYSTEM CRASH REQUIRES THE SUCCESSFUL FLUSHING OF ALL PAGES FROM MAIN MEMORY [] hcs_$force_write MAY BE USED BY THOSE APPLICATIONS REQUIRING SUCH RELIABILITY ----------------------------------------------------------- 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