Proceedings of the 10th Workshop on Programming Languages and Operating Systems最新文献

筛选
英文 中文
Cache-Line Transactions: Building Blocks for Persistent Kernel Data Structures Enabled by AspectC++ 缓存行事务:由aspectc++支持的持久内核数据结构的构建块
Proceedings of the 10th Workshop on Programming Languages and Operating Systems Pub Date : 2019-10-27 DOI: 10.1145/3365137.3365396
Marcel Köppen, J. Traue, C. Borchert, J. Nolte, O. Spinczyk
{"title":"Cache-Line Transactions: Building Blocks for Persistent Kernel Data Structures Enabled by AspectC++","authors":"Marcel Köppen, J. Traue, C. Borchert, J. Nolte, O. Spinczyk","doi":"10.1145/3365137.3365396","DOIUrl":"https://doi.org/10.1145/3365137.3365396","url":null,"abstract":"With the availability of systems that contain large amounts of byte-addressable non-volatile memory (NVRAM), there is a growing need for data structures that can be mapped into a process's address space and be used without data (de-)serialization. While NVRAM is able to retain memory contents during system failure and power loss, data consistency has to be preserved by using transactional operations for data manipulation. This paper describes a lightweight and efficient transaction mechanism for small data structures in memory-mapped NVRAM. The size per data structure is limited to half a cache-line, so that the approach cannot serve as a general purpose mechanism for arbitrary applications, but could be used within an operating system as a low-level building block for more complex data structures. By using aspect-oriented programming with AspectC++, the mechanism can be used in an almost transparent manner, which helps to avoid many possible sources for bugs.","PeriodicalId":193757,"journal":{"name":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","volume":"226 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133510287","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 5
Exploring Rust for Unikernel Development 探索Rust用于Unikernel开发
Proceedings of the 10th Workshop on Programming Languages and Operating Systems Pub Date : 2019-10-27 DOI: 10.1145/3365137.3365395
Stefan Lankes, Jens Breitbart, Simon Pickartz
{"title":"Exploring Rust for Unikernel Development","authors":"Stefan Lankes, Jens Breitbart, Simon Pickartz","doi":"10.1145/3365137.3365395","DOIUrl":"https://doi.org/10.1145/3365137.3365395","url":null,"abstract":"System-level development has been dominated by programming languages like C/C++ for decades. These languages are inherently unsafe, error-prone, and a major reason for vulnerabilities. High-level programming languages with a secure memory model and strong type system are able to improve the quality of the system software. In this paper, we explore the programming language Rust for kernel development and present RustyHermit, which is a unikernel completely written in Rust without any C/C++. We show that the support for RustyHermit can be transparently integratable in the Rust toolchain and common Rust applications are build-able on top of RustyHermit. Previously, we developed the C-based unikernel HermitCore with a similar design to RustyHermit and we are able to compare both kernels. We show that the performance of both kernels is similar and only ~3.27 % of RustyHermit relies on unsafe code, that cannot be checked by the compiler in detail.","PeriodicalId":193757,"journal":{"name":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","volume":"53 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127853164","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 15
Rethinking Communication in Multiple-kernel OSes for New Shared Memory Interconnects 基于新共享内存互连的多内核操作系统通信反思
Proceedings of the 10th Workshop on Programming Languages and Operating Systems Pub Date : 2019-10-27 DOI: 10.1145/3365137.3365399
A. Barbalace, Pierre Olivier, B. Ravindran
{"title":"Rethinking Communication in Multiple-kernel OSes for New Shared Memory Interconnects","authors":"A. Barbalace, Pierre Olivier, B. Ravindran","doi":"10.1145/3365137.3365399","DOIUrl":"https://doi.org/10.1145/3365137.3365399","url":null,"abstract":"Future computer platforms will likely be built with a multitude of on-chip and off-chip processing units being potentially of different ISAs, OS-capable, and sharing memory with a form of consistency. Multiple-kernel OSes, from multikernels to single-system image OSes, have been demonstrated to mange such platforms efficiently, but they assume no shared memory between kernels as a founding principle. This position paper proposes a new multiple-kernel OS design, which leverages consistent shared memory across homogeneous and heterogeneous processing units in a machine. Among other benefits, this design enables porting commodity SMP OSes to such future platforms, capitalizing on their shared memory programming model, and extend them to multiple-kernel OSes. Herein we present such design, based on two new software primitives tackling the problem of sharing and data format differences between eventually heterogeneous computing units: typed shared memory and type-morphable executable code. We also describe an initial implementation built around Popcorn Linux for x86 and ARM.","PeriodicalId":193757,"journal":{"name":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","volume":"72 1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123099315","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
A Persistent Problem: Managing Pointers in NVM 一个持久的问题:管理NVM中的指针
Proceedings of the 10th Workshop on Programming Languages and Operating Systems Pub Date : 2019-10-27 DOI: 10.1145/3365137.3365397
Daniel Bittman, P. Alvaro, E. Miller
{"title":"A Persistent Problem: Managing Pointers in NVM","authors":"Daniel Bittman, P. Alvaro, E. Miller","doi":"10.1145/3365137.3365397","DOIUrl":"https://doi.org/10.1145/3365137.3365397","url":null,"abstract":"Byte-addressable non-volatile memory (NVM) placed alongside DRAM promises a fundamental shift in software abstractions, yet many approaches to using NVM promise merely incremental improvement by relying on old interfaces and archaic abstractions. We assert that redesigning the core programming model presented by the operating system is vital to best exploiting this technology. We are developing Twizzler, an OS that presents an effective programming model for NVM sufficient to construct persistent data structures that can be easily and globally shared without serialization costs. We consider and evolve a key-value store that runs on Twizzler, and demonstrate how our programming model improves programmability with early experiments indicating performance need not be lost and may be improved.","PeriodicalId":193757,"journal":{"name":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","volume":"17 1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126964950","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 7
Taxonomy of Package Management in Programming Languages and Operating Systems 程序设计语言和操作系统中的包管理分类
Proceedings of the 10th Workshop on Programming Languages and Operating Systems Pub Date : 2019-10-27 DOI: 10.1145/3365137.3365402
Hisham H. Muhammad, L. V. Real, Michael Homer
{"title":"Taxonomy of Package Management in Programming Languages and Operating Systems","authors":"Hisham H. Muhammad, L. V. Real, Michael Homer","doi":"10.1145/3365137.3365402","DOIUrl":"https://doi.org/10.1145/3365137.3365402","url":null,"abstract":"Package management is instrumental for programming languages and operating systems, and yet it is neglected by both areas as an implementation detail. For this reason, it lacks the same kind of conceptual organization: we lack terminology to classify them or to reason about their design trade-offs. In this paper, we share our experience in both OS and language-specific package manager development, categorizing families of package managers and discussing their design implications beyond particular implementations. We also identify possibilities in the still largely unexplored area of package manager interoperability.","PeriodicalId":193757,"journal":{"name":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121610460","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Wait-Free Code Patching of Multi-Threaded Processes 多线程进程的无等待代码补丁
Proceedings of the 10th Workshop on Programming Languages and Operating Systems Pub Date : 2019-10-27 DOI: 10.1145/3365137.3365404
Florian Rommel, Lennart Glauer, Christian J. Dietrich, Daniel Lohmann
{"title":"Wait-Free Code Patching of Multi-Threaded Processes","authors":"Florian Rommel, Lennart Glauer, Christian J. Dietrich, Daniel Lohmann","doi":"10.1145/3365137.3365404","DOIUrl":"https://doi.org/10.1145/3365137.3365404","url":null,"abstract":"In the operation and maintenance phase of a deployed software component, security and bug-fix updates are regular events. However, for many high-availability services, costly restarts are no acceptable option as the induced downtimes lead to a degradation of the service quality. One solution to this problem are live updates, where we inject the desired software patches directly into the volatile memory of a currently running process. However, before the actual patch gets applied, most live-update methods use a stop-the-world approach to bring the process into a safe state; an operation that is highly disruptive for the execution of multi-threaded programs. In this paper, we present a wait-free approach to inject code changes into a running multi-threaded process. We avoid the disruption of a global barrier synchronization over all threads by first preparing a patched clone of the process's address space. Into the updated address space, we gradually migrate individual threads at predefined quiescence points while all other threads make uninterrupted progress. In a first case study with a simple network service, we could completely eliminate the impact of applying a live update on the request latency.","PeriodicalId":193757,"journal":{"name":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129949684","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Trials and Tribulations in Synthesizing Operating Systems 综合操作系统的考验与磨难
Proceedings of the 10th Workshop on Programming Languages and Operating Systems Pub Date : 2019-10-27 DOI: 10.1145/3365137.3365401
Jingmei Hu, Eric Lu, David A. Holland, Ming Kawaguchi, Stephen Chong, M. Seltzer
{"title":"Trials and Tribulations in Synthesizing Operating Systems","authors":"Jingmei Hu, Eric Lu, David A. Holland, Ming Kawaguchi, Stephen Chong, M. Seltzer","doi":"10.1145/3365137.3365401","DOIUrl":"https://doi.org/10.1145/3365137.3365401","url":null,"abstract":"Recent advances in program synthesis convinced us that it was the right time to transform the process of porting an operating system into a program synthesis problem. We set out to synthesize the needed machine dependent code for an existing operating system. This undertaking proved far more challenging than we anticipated. We summarize our experience and lessons learned and propose next steps in realizing such an undertaking.","PeriodicalId":193757,"journal":{"name":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121143195","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
Fork/Wait and Multicore Frequency Scaling: a Generational Clash 分叉/等待和多核频率缩放:世代冲突
Proceedings of the 10th Workshop on Programming Languages and Operating Systems Pub Date : 2019-10-27 DOI: 10.1145/3365137.3365400
D. Carver, Redha Gouicem, Jean-Pierre Lozi, Julien Sopena, Baptiste Lepers, W. Zwaenepoel, Nicolas Palix, J. Lawall, Gilles Muller
{"title":"Fork/Wait and Multicore Frequency Scaling: a Generational Clash","authors":"D. Carver, Redha Gouicem, Jean-Pierre Lozi, Julien Sopena, Baptiste Lepers, W. Zwaenepoel, Nicolas Palix, J. Lawall, Gilles Muller","doi":"10.1145/3365137.3365400","DOIUrl":"https://doi.org/10.1145/3365137.3365400","url":null,"abstract":"The complexity of computer architectures has risen since the early years of the Linux kernel: Simultaneous Multi-Threading (SMT), multicore processing, and frequency scaling with complex algorithms such as Intel® Turbo Boost have all become omnipresent. In order to keep up with hardware innovations, the Linux scheduler has been rewritten several times, and many hardware-related heuristics have been added. Despite this, we show in this paper that a fundamental problem was never identified: the POSIX process creation model, i.e., fork/wait, can behave inefficiently on current multicore architectures due to frequency scaling. We investigate this issue through a simple case study: the compilation of the Linux kernel source tree. To do this, we develop SchedLog, a low-overhead scheduler tracing tool, and SchedDisplay, a scriptable tool to graphically analyze SchedLog's traces efficiently. We implement two solutions to the problem at the scheduler level which improve the speed of compiling part of the Linux kernel by up to 26%, and the whole kernel by up to 10%.","PeriodicalId":193757,"journal":{"name":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129647722","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Enveloping Implicit Assumptions of Intrusive Data Structures within Ownership Type System 所有权类型系统中侵入性数据结构的隐含假设
Proceedings of the 10th Workshop on Programming Languages and Operating Systems Pub Date : 2019-10-27 DOI: 10.1145/3365137.3365403
Keunhong Lee, Jeehoon Kang, Wonsup Yoon, Joongi Kim, S. Moon
{"title":"Enveloping Implicit Assumptions of Intrusive Data Structures within Ownership Type System","authors":"Keunhong Lee, Jeehoon Kang, Wonsup Yoon, Joongi Kim, S. Moon","doi":"10.1145/3365137.3365403","DOIUrl":"https://doi.org/10.1145/3365137.3365403","url":null,"abstract":"Intrusive data structures (IDSes) are heavily used in system programming, where achieving high performance is one of the most important design goals. Yet, they are not supported in today's ownership type system that offer memory-safety without garbage collection. Instead, IDSes force programmers to choose either unsafety or runtime overhead. This limitation stems from the implicit assumptions pertaining to the memory layouts and access patterns created by IDSes. In this paper, we propose a new technique, referred to as ownership pooling, which defines ownership for IDSes. Ownership pooling consists of three new types, FieldOf, OwnershipPool, and Shared, and their conversion rules. We implemented the proposed types within Rust's type system and compared its performance capabilities against the existing memory-safe implementations and the C++ implementation without memory safety as baseline. The performance of our implementation shows far better performance than that of the existing memory-safe ones and comparable to that of C++ implementation without memory safety.","PeriodicalId":193757,"journal":{"name":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114859141","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Cocoon
Proceedings of the 10th Workshop on Programming Languages and Operating Systems Pub Date : 2019-10-27 DOI: 10.1145/3365137.3365398
Bernhard Heinloth, Marco Ammon, D. T. Nguyen, Timo Hönig, V. Sieh, Wolfgang Schröder-Preikschat
{"title":"Cocoon","authors":"Bernhard Heinloth, Marco Ammon, D. T. Nguyen, Timo Hönig, V. Sieh, Wolfgang Schröder-Preikschat","doi":"10.1145/3365137.3365398","DOIUrl":"https://doi.org/10.1145/3365137.3365398","url":null,"abstract":"As computer processors and their hardware designs continuously evolve, operating systems provide many different assembly-level implementations for the same functionality. This enables support for new platforms and ensures backward compatibility for older ones at the same time. However, the source code of operating systems grows more complex and becomes much harder to maintain. In this paper we explore ways to build made-to-measure system software by relegating work to the compiler which has necessary knowledge about the system at hand. We propose Cocoon, an approach for compiling a system-tailored and -optimized kernel at boot time. For two operating systems (i.e., Linux and FreeBSD) we demonstrate the soundness of the approach by hands of a prototypical implementation. The implementation shows various aspects of Cocoon, such as the ability to remove hard-to-maintain code while preserving and even increasing the system performance.","PeriodicalId":193757,"journal":{"name":"Proceedings of the 10th Workshop on Programming Languages and Operating Systems","volume":"191 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129707519","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
相关产品
×
本文献相关产品
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信