Report of session on concurrency

J. Dennis, M. D. Schroeder
{"title":"Report of session on concurrency","authors":"J. Dennis, M. D. Schroeder","doi":"10.1145/800021.808269","DOIUrl":null,"url":null,"abstract":"This session was devoted to discussion of primitives for synchronizing the execution of concurrent processes. Jack Dennis introduced the session by noting that concurrent activity in a computer systems leads to the possibility of nondeterminacy. While most users with applications programs do not want nondeterminate results, some applications are inherently nondeterminate in part, e.g., an airline seat reservation system. At a lower level, the programmers of the operating system itself need to write both determinate and nondeterminate programs. The challenge is in providing primitives at each level in a system which guarantee determinacy when that is required, yet allow the construction of nondeterminate programs when that is required. As a basis for discussion, Dennis invited Rick Holt to make a short presentation on the levels in a computer system and their relationship to synchronizing primitives.\n Holt indicated that the principle reason we have concurrency in computer systems is the economic necessity to run I/O devices in parallel with the much faster central processors. There are also fancier reasons, like constructing nondeterminate computations. Concurrency is usually handled by embedding various synchronizing primitives in the system or in high-level programming languages. In order to decide what primitives are appropriate you need to know what problems are to be solved. The problems being solved depend in turn upon the level of the computer system being considered. A computer system can be divided into five levels: hardware, kernel, nucleus, subsystems, and applications. The kernel multiplexes the central processors, implementing processes. At this level very simple synchronization primitives may be sufficient, like turning off interrupts. A critical problem at this level is the processor allocation strategy and maintaining queues of waiting processes. The nucleus is responsible for sharing devices. We want to be able to write device managers that multiplex data paths and schedule the use of these paths. These managers can be built in two ways: distributed managers that execute as part of user processes or centralized managers that execute in their own processes. Dijkstra has told us how to handle the concurrency generated by decentralized managers using primitives like P and V. Message passing works for centralized managers. (Note that message buffers are an important system resource to be managed. They cannot be managed using message switching, so this management must occur in the kernel.) At the levels of subsystems and applications something more complex and specifically suited to certain applications may be required to control concurrency. At all levels concurrency is interrelated with problems of protection, reliability, and pre-emption. If we ignore these problems we will miss entirely the problems of implementing primitives to control concurrency. Holt also discussed the primitives used at the various levels in the SUE system, as described in his working paper.","PeriodicalId":161752,"journal":{"name":"SIGPLAN-SIGOPS Interface Meeting","volume":"160 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"SIGPLAN-SIGOPS Interface Meeting","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/800021.808269","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0

Abstract

This session was devoted to discussion of primitives for synchronizing the execution of concurrent processes. Jack Dennis introduced the session by noting that concurrent activity in a computer systems leads to the possibility of nondeterminacy. While most users with applications programs do not want nondeterminate results, some applications are inherently nondeterminate in part, e.g., an airline seat reservation system. At a lower level, the programmers of the operating system itself need to write both determinate and nondeterminate programs. The challenge is in providing primitives at each level in a system which guarantee determinacy when that is required, yet allow the construction of nondeterminate programs when that is required. As a basis for discussion, Dennis invited Rick Holt to make a short presentation on the levels in a computer system and their relationship to synchronizing primitives. Holt indicated that the principle reason we have concurrency in computer systems is the economic necessity to run I/O devices in parallel with the much faster central processors. There are also fancier reasons, like constructing nondeterminate computations. Concurrency is usually handled by embedding various synchronizing primitives in the system or in high-level programming languages. In order to decide what primitives are appropriate you need to know what problems are to be solved. The problems being solved depend in turn upon the level of the computer system being considered. A computer system can be divided into five levels: hardware, kernel, nucleus, subsystems, and applications. The kernel multiplexes the central processors, implementing processes. At this level very simple synchronization primitives may be sufficient, like turning off interrupts. A critical problem at this level is the processor allocation strategy and maintaining queues of waiting processes. The nucleus is responsible for sharing devices. We want to be able to write device managers that multiplex data paths and schedule the use of these paths. These managers can be built in two ways: distributed managers that execute as part of user processes or centralized managers that execute in their own processes. Dijkstra has told us how to handle the concurrency generated by decentralized managers using primitives like P and V. Message passing works for centralized managers. (Note that message buffers are an important system resource to be managed. They cannot be managed using message switching, so this management must occur in the kernel.) At the levels of subsystems and applications something more complex and specifically suited to certain applications may be required to control concurrency. At all levels concurrency is interrelated with problems of protection, reliability, and pre-emption. If we ignore these problems we will miss entirely the problems of implementing primitives to control concurrency. Holt also discussed the primitives used at the various levels in the SUE system, as described in his working paper.
关于并发的会话报告
本次会议专门讨论了同步并发进程执行的原语。Jack Dennis在介绍会议时指出,计算机系统中的并发活动会导致不确定性的可能性。虽然大多数使用应用程序的用户不希望得到不确定的结果,但有些应用程序本身就是不确定的,例如,航空公司的座位预订系统。在较低的层次上,操作系统本身的程序员需要编写确定性和非确定性程序。挑战在于在系统的每个级别上提供原语,在需要时保证确定性,但在需要时允许构造不确定的程序。作为讨论的基础,Dennis邀请Rick Holt对计算机系统中的级别及其与同步原语的关系做了简短的介绍。Holt指出,我们在计算机系统中使用并发的主要原因是,在运行速度快得多的中央处理器的同时,运行I/O设备是经济上的需要。还有一些更奇特的原因,比如构造不确定计算。并发性通常通过在系统或高级编程语言中嵌入各种同步原语来处理。为了决定什么原语是合适的,您需要知道要解决什么问题。要解决的问题依次取决于所考虑的计算机系统的水平。计算机系统可分为五个层次:硬件、内核、核心、子系统和应用。内核对中央处理器进行多路复用,实现进程。在这个级别上,非常简单的同步原语可能就足够了,比如关闭中断。这个级别的一个关键问题是处理器分配策略和维护等待进程队列。细胞核负责共享设备。我们希望能够编写多路数据路径和调度使用这些路径的设备管理器。这些管理器可以以两种方式构建:作为用户进程的一部分执行的分布式管理器或在自己的进程中执行的集中式管理器。Dijkstra告诉我们如何使用P和v等原语处理分散管理器生成的并发。消息传递适用于集中式管理器。(注意,消息缓冲区是需要管理的重要系统资源。它们不能使用消息交换进行管理,因此这种管理必须在内核中进行。)在子系统和应用程序的级别上,可能需要一些更复杂且特别适合某些应用程序的东西来控制并发性。在所有级别上,并发都与保护、可靠性和抢占等问题相关。如果我们忽略这些问题,我们将完全忽略实现原语来控制并发性的问题。Holt还讨论了在SUE系统的各个级别上使用的原语,正如他的工作论文中所描述的那样。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信