TI Evolving the UNIX System Interface to Support Multithreaded Programs. OR SRC LT 21 MN September DY 28 YR 1987 AU Paul R. McJones AU Garret F. Swart. PA 100 pages. AB Multiple threads (program counters executing in the same address space) make it easier to write programs that deal with related asynchronous activities and that execute faster on shared-memory multiprocessors. Supporting multiple threads places new constraints on the design of operating system interfaces. Part I of this report presents guidelines for designing (or redesigning) interfaces for multithreaded clients. We show how these guidelines were used to design an interface to UNIX-compatible file and process management facilities in the Topaz operating system. Two implementations of this interface are in everyday use: a native one for the Firefly multiprocessor, and a layered one running within a UNIX process. Part II is the actual programmer's manual for the interface discussed in Part I. CO UNIX was designed to support client address spaces containing exactly one program counter. This assumption about a UNIX process has had a remarkably pervasive influence on the interface to the UNIX kernel. This report documents a successful project to provide an alternative interface, for multithreaded address spaces, to the UNIX file and process facilities. Single-threaded processes using the UNIX kernel interface, and multithreaded processes using the alternative, can cohabit the same system and cooperate. Part I of the report is a paper that discusses the general issues and solutions. Part II is a programmer's manual for the new interface. The inclusion of this second part will allow the interested reader to answer quite detailed questions about how the system may be used. The techniques discussed in Part I will apply to efforts to provide a more modern, multithreaded interface to other operating systems with single-threaded client interfaces. Michael Schroeder