Browse Prior Art Database

DYNAMIC PROGRAM UPDATING IN A DISTRIBUTED COMPUTER SYSTEM

IP.com Disclosure Number: IPCOM000128761D
Original Publication Date: 1989-Dec-31
Included in the Prior Art Database: 2005-Sep-19

Publishing Venue

Software Patent Institute

Related People

Mark Edward Segal: AUTHOR [+3]

Abstract

By its very nature, computer software is constantly changing. Change may be necessary because new features were added to a program or because bugs were discovered in the current version. Sometimes change may be necessary when the specifications of the tasks a program must perform, how it must perform them, or the environment where the tasks must be performed have changed. Once the appropriate modifications have been made to a program, the old version may be stopped and the new version may be loaded and run. There are circumstances, however, where temporarily stopping a program while a new version is being loaded is not viable. This is primarily due to the significant cost of such an operation. This cost might be manifest in lost revenue (an airline reservation system or a telecommunications switching system) or in terms of danger to human life (a computer- controlled life-support system or an air-traffic control system). These costs are further exacerbated in a distributed computer system. With several computer programs interacting with each other over geographically distributed networks, not only must the cost of shutting down the systems be adequately addressed, but also the coordination of the shutdown between the various computers. If one computer in the network begins running the new software while other computers continue to run older versions, serious problems could develop if incompatible data were exchanged between computers. As computers are used in ways that affect our daily lives more and more, the number of programs that cannot easily be stopped (due to the critical nature of their functions) will continue to increase. Presumably, as we develop better tools for building computer systems, the complexity of the systems we create will also increase over time. Since programs will continue to evolve during their lifetime, the ability to avoid stopping a program while loading a new version will become even more critical in the future.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 2% of the total text.

Page 1 of 41

THIS DOCUMENT IS AN APPROXIMATE REPRESENTATION OF THE ORIGINAL.

(c) 1989 Mark Edward Segal, All Rights Reserved.

DYNAMIC PROGRAM UPDATING IN A DISTRIBUTED COMPUTER SYSTEM

Ph.D Thesis

by Mark Edward Segal

The University of Michigan, Computer and Communication Sciences

TABLE OF CONTENTS

DEDICATION ii

ACKNOWLEDGEMENTS iii

LIST OF FIGURES ix

CHAPTER

1. INTRODUCTION 1

1.1. A Dynamic Program Updating System 2

1.2. Organization of Dissertation 3

2. PREVIOUS WORK 5

2.1. Hardware Redundancy 5

2.2. Constructing Maintainable Software 6

2.3. Dynamic Type Replacement 7

2.4. Dynamic Updating in Server/Client Systems 8

2.5. Procedure-Oriented Dynamic Updating 11

2.6. Summary 18

3. OVERVIEW OF THE DYNAMIC PROGRAM UPDATING SYSTEM 19

3.1. Updating Nomenclature 19

3.2. Requirements for the Updating System 20

3.3. Synopsis of an Update 25

3.4. Criteria for Updating a Procedure 26

Dec 31, 1989

Page 1

Page 2 of 41

DYNAMIC PROGRAM UPDATING IN A DISTRIBUTED COMPUTER SYSTEM

3.5. Maintaining Consistency During an Update 33

3.6. Summary 38

4. ARCHITECTURE OF THE UPDATING SYSTEM 40

4.1. Procedure Binding 41

4.2. CPU Architectural Issues 46

4.3. A Virtual Memory Controller for the Updating System 48

4.4. Machine-Independent Updating System Virtual-Memory Primitives 52

4.5. Interfacing the Virtual-Memory Primitives with the Updating System 57

4.6. Summary 58

5. DISTRIBUTED ASPECTS OF THE UPDATING SYSTEM 60

5.1. Updating in Distributed Operating Systems 61

5.2. A Computing Paradigm for Updating in a Distributed Environment 63

5.3. Updating with RPCs 67

5.4. Summary 75

6. A PROTOTYPE UPDATING SYSTEM AND SAMPLE PROGRAM 76

6.1. The Prototype Updating System 77

6.2. The Program to be Updated 80

6.3. Updating the Packet Pumper 91

6.4. Performance of the Updating System 101

6.5. Summary 106

7. CONCLUSIONS AND FUTURE WORK 108

7.1. Research Contributions 108

7.2. Future Research Directions 111

7.3. Epilogue 113

BIBLIOGRAPHY 115

LIST OF FIGURES

Dec 31, 1989

Page 2

Page 3 of 41

DYNAMIC PROGRAM UPDATING IN A DISTRIBUTED COMPUTER SYSTEM

Figure

3.1. Active and Inactive Procedures 28

3.2. Active and Inactive Procedures with B d(Xnew) 29

3.3. Interprocedure Calling Conventions 35

3.4. An mprocedure mapping static data from Pold to Pnew 38

4.1. Implementing Binding with a Binding Table 43

4.2. Implementing Binding with Segmented Virtual Memory 51

5.1. A Remote Procedure Call 64

5.2. Active Criteria for a Distributed Update 73

6.1. A System-Level View of the Prototype Updating System 81

6.2. The Version 1 Packet Pumper Main Algorithm 82

6.3. route_packet Algorithm 83

6.4. The Version 3 Packet Pumper Main Algorithm 88

6.5. Version 2 to 3 route_packet Interprocedure Pseudo-code 89

6.6. Version 2 to 3 route_packet Mprocedure Pseudo-code 90

6.7. Ush Startup Screen 91

6.8. Pup Startup Screen 92

6.9. Selecting a Program and Host 92

6.10. Loading Version 1 of the Packet Pumper 93

6.11. Loading Version 2 of the Packet Pumper 94

6.12. Starting the Packet Pumper 94

6.13. Version 1 Packe...