Abstract | ||
---|---|---|
UNIX provides a programming model for the user which gives an illusion of multiprocessing. On uniprocessors, this illusion works well, providing communication paths, firewalls between processes and a simple programming environment. Unfortunately, the normal UNIX model does not provide the capabilities to take full advantage of modern multiprocessor hardware. This results from a design which uses data queueing and preemption to provide the multiprocessing illusion, which are unnecessary on a true multiprocessor. The recent proposed addition of threads to CMU’s MACH kernel shows that there are other effective programming models that may be supported in UNIX as well. This model provides for sharing the virtual address space of a process by breaking the process into several lightweight contexts that may be manipulated more quickly than a normal process. Unfortunately, this model raises questions about support for normal UNIX semantics, as well as thread scheduling performance and kernel overhead. This paper describes a programming model which goes beyond the simple concept of threads, providing a much broader range of resource sharing while retaining the key parts of the UNIX process model. Instead of threads, the concept of a process is retained along with most of it’s semantics. As usual, the fundamental resource shared is the virtual address space. In addition, open file descriptors, user and group ID’s, the current directory, and certain other elements of the process environment may be shared also. This makes for easy construction of useful servers and simple concurrent applications, while still providing high-performance support for more computationally intensive applications. This implementation, labelled process share groups, allows normal process actions to take place easily, such as system calls, page faulting, signalling, pausing, and other actions which are ill-defined within the threads model. The paper describes the philosophy which drove the design, as well as details of the implementation, which is based on, and upwardly compatible with, ATu0026T 5.3 UNIX. Performance of normal UNIX processes is maintained while providing high-performance share group support. |
Year | Venue | Keywords |
---|---|---|
1988 | USENIX Winter | resource sharing |
Field | DocType | Citations |
Preemption,Programming paradigm,Directory,Computer science,Virtual address space,Unix,Thread (computing),Multiprocessing,File descriptor,Operating system | Conference | 1 |
PageRank | References | Authors |
0.75 | 0 | 2 |
Name | Order | Citations | PageRank |
---|---|---|---|
J. M. Barton | 1 | 1 | 0.75 |
J. C. Wagner | 2 | 1 | 0.75 |