Affiliation:
1. Computer Science Laboratory, Xerox PARC, 3333 Coyote Hill Road, Palo Alto, California
Abstract
We describe the results of examining two large research and commercial systems for the ways that they use threads. We used three methods: analysis of macroscopic thread statistics, analysis the microsecond spacing between thread events, and reading the implementation code. We identify ten different paradigms of thread usage:
defer work, general pumps, slack processes, sleepers, one-shots, deadlock avoidance, rejuvenation, serializers, encapsulated fork and exploiting parallelism
. While some, like
defer work
, are well known, others have not been previously described. Most of the paradigms cause few problems for programmers and help keep the resulting system implementation understandable. The
slack process
paradigm is both particularly effective in improving system performance and particularly difficult to make work well. We observe that thread priorities are difficult to use and may interfere in unanticipated ways with other thread primitives and paradigms. Finally, we glean from the practices in this code several possible future research topics in the area of thread abstractions.
Publisher
Association for Computing Machinery (ACM)
Reference19 articles.
1. Accetta R. Baron W. Bolosky D. Golub R. Rashid A. Tevanian M. Young "Mach: A New Kernel Foundation for UNIX Development." Proceedings of the Summer 1986 USENIX Conference July 1986. Accetta R. Baron W. Bolosky D. Golub R. Rashid A. Tevanian M. Young "Mach: A New Kernel Foundation for UNIX Development." Proceedings of the Summer 1986 USENIX Conference July 1986.
2. EmbeddedButtons
3. Using continuations to implement thread management and communication in operating systems
Cited by
10 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Responsive parallelism with futures and state;Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation;2020-06-06
2. Fairness in responsive parallelism;Proceedings of the ACM on Programming Languages;2019-07-26
3. Competitive parallelism: getting your priorities right;Proceedings of the ACM on Programming Languages;2018-07-30
4. Responsive parallel computation: bridging competitive and cooperative threading;Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation;2017-06-14
5. Efficient Execution of Bursty Applications;IEEE Computer Architecture Letters;2016-07-01