A Survey of Multiprocessor Operating System Kernels (DRAFT)
Total Page:16
File Type:pdf, Size:1020Kb
A Survey of Multiprocessor Operating System Kernels (DRAFT) Bodhisattwa Mukherjee ([email protected]) Karsten Schwan ([email protected]) Prabha Gopinath (gopinath [email protected]) GIT±CC±92/05 5 November 1993 Abstract Multiprocessors have been accepted as vehicles for improved computing speeds, cost/performance, and enhanced reliability or availability. However, the added performance requirements of user programs and functional capabilities of parallel hardware introduce new challenges to operating system design and implementa- tion. This paper reviews research and commercial developments in multiprocessor op- erating system kernels from the late 1970's to the early 1990's. The paper ®rst discusses some common operating system structuring techniques and examines the advantages and disadvantages of using each technique. It then identi®es some of the major design goals and key issues in multiprocessor operating systems. Is- sues and solution approaches are illustrated by review of a variety of research or commercial multiprocessor operating system kernels. College of Computing Georgia Institute of Technology Atlanta, Georgia 30332±0280 Contents 1 Introduction 1 2 Structuring an Operating System 4 2.1 Monolithic Systems ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 4 2.2 Capability Based Systems ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ 4 2.3 Message Passing Systems ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 6 2.4 Language Based Mechanisms £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 7 2.5 Object-Oriented and Object-Supporting Operating Systems ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 8 2.6 Vertical and Horizontal Organizations ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 9 2.7 Micro-kernel Based Operating Systems £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 10 2.8 Application-speci®c Operating Systems £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 11 3 Design Issues 12 3.1 Processor Management and Scheduling ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 12 3.1.1 Heavyweight Processes to Lightweight Threads ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 12 3.1.2 Scheduler Structures ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 14 3.1.3 Scheduling Policies ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 14 3.2 Memory Management ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 19 3.2.1 Shared Virtual Memory ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 19 3.2.2 NUMA and NORMA Memory Management ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 20 3.3 Synchronization ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 23 3.3.1 Locks £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 24 3.3.2 Other Synchronization Constructs £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 26 3.4 Interprocess Communication £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 26 3.4.1 Basic Communication Primitives ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 26 3.4.2 Remote Procedure Calls ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ 27 3.4.3 Object Invocations on Shared and Distributed Memory Machines ¢ ¡ ¡ £ ¤ 28 4 Sample Multiprocessor Operating System Kernels 28 4.1 HYDRA ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 28 4.1.1 Execution Environment and Processes ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 29 4.1.2 Objects and Protection ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ 30 4.1.3 HYDRA and Parallel Computing ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ 30 4.2 StarOS ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 30 4.2.1 Task Forces ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 32 4.2.2 Synchronization and Communication ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 33 4.2.3 Scheduling ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 33 4.2.4 Recon®guration ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 34 4.3 Mach ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¢ ¡ ¡ ¡ ¢ 34 i 4.3.1 Memory Management ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 35 4.3.2 Interprocess Communication ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 36 4.3.3 Scheduling ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 36 4.3.4 The Mach 3.0 Micro-kernel £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ 37 4.4 Elmwood £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 38 4.4.1 Objects and LONS ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 38 4.4.2 Processes and Synchronization ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 39 4.4.3 Interprocess Communication ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 39 4.5 Psyche £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 39 4.5.1 Synchronization £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 40 4.5.2 Memory Management ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 41 4.5.3 Scheduling ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 41 4.6 PRESTO £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 41 4.6.1 Customization ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 42 4.7 KTK ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ 42 4.8 Choices £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 45 4.8.1 Tasks and Threads ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 45 4.8.2 Interprocess Communication ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 45 4.8.3 Memory Management ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 46 4.8.4 Persistent Objects ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ 46 4.8.5 Exception Handling ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 46 4.9 Renaissance ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 46 4.9.1 Process Management ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ 47 4.9.2 Synchronization £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 47 4.10DYNIX ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 47 4.10.1Process Management and Scheduling ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 47 4.10.2Synchronization £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 48 4.10.3Memory Management ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 48 4.11UMAX ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ 48 4.11.1Process Management and Scheduling ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 48 4.11.2Synchronization £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 48 4.11.3Memory Management ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 48 4.12Chrysalis ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 48 4.12.1Process Management and Scheduling ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 49 4.12.2Memory Management ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 49 4.12.3Synchronization £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 49 4.13RP3 ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ 49 4.13.1Process Management and Scheduling ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ 50 4.13.2Memory Management ¡ ¡ ¡ ¢ ¡ £ ¤ £ ¡ ¡ ¢ ¡ ¡ ¢ ¡ ¡ £ ¤ £ ¡ ¢ ¡ ¡ ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ 50 4.14Operating Systems for Distributed Memory Machines ¡ ¢ ¡ ¡ ¢ ¡ £ ¡ ¢ ¡ ¡ ¢ ¡ ¡ ¡ ¢ 50 ii 5 Conclusions and Future Work 52 iii 1 Introduction Parallel processing has become the premier approach for increasing the computational power of modern supercomputers, in part driven by large-scale scienti®c and engineering appli- cations like weather prediction, materials and process modeling, and others, all of which require GigaFlop computing speeds and Terabytes of rapidly accessible primary and sec- ondary storage. However, perhaps more important than the HPCC applications named above are commercial motivations for the development of parallel machines, which include improved machine cost/performance, scalability to different application requirements, and enhanced reliability or availability. The purpose of this survey is to review some of the major concepts in operating systems for parallel machines, roughly re¯ecting the state of the art in the early 1990's. More impor- tantly, we identify the main research issues to be addressed by any operating system for a multiprocessor machine, and we review the resulting solution approaches taken by a variety of commercial and research systems constructed during the last decade. Moreover, it should be apparent to the reader upon ®nishing this paper that many of these solution approaches are and have been applied to both parallel and distributed target hardware. This `convergence' of technologies originally developed for parallel vs. distributed systems, by partially divergent technical communities and sometimes discussed with