Systems Programming: Coping with Parallelism

Creating operating system components and subsystcms in today's large processors generally requires dealing with more than one CPU operating in parallel against a shared memory. While "applications" are typically shielded from the effects of parallelism, components and subsystems ususally are designed in such a way that some level of understanding is required. This paper concentrates on the pitfalls awaiting the proprammer in a parallel (or even a multiprogramming) environment when shared data structures (control blocks) are referenced and altercd by muitipie processes (tasks). The focus is on the IBM Systemi 370 architecture because of its multiple CPU architecture and the powerful "compare and swap" instruction. The paper reviews some architectural groundrules that a parallel programmer must understand, presents problems that must often be solved in a parallel environment, then describes solutions such as usage of compare and swap, locks, and single-process schemes. Kernels of code are used to illustrate problems and solutions.

By: R. Kent Treiber

Published in: RJ5118 in 1986

LIMITED DISTRIBUTION NOTICE:

This Research Report is available. This report has been submitted for publication outside of IBM and will probably be copyrighted if accepted for publication. It has been issued as a Research Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM prior to publication should be limited to peer communications and specific requests. After outside publication, requests should be filled only by reprints or legally obtained copies of the article (e.g., payment of royalties). I have read and understand this notice and am a member of the scientific community outside or inside of IBM seeking a single copy only.

rj5118.pdf

Questions about this service can be mailed to reports@us.ibm.com .