- Sponsor:
- sigops
This volume contains the proceedings of the Eleventh Workshop on Programming Languages and Operating Systems (PLOS 2021). The PLOS workshop series brings together people from the programming language and operating system communities to discuss emerging work at the intersection of these fields. It is a venue for discussing new visions, experiences, problems, and solutions arising from the application of advanced programming and software engineering concepts to operating systems construction, and vice versa.
Proceeding Downloads
AnyCall: Fast and Flexible System-Call Aggregation
Operating systems rely on system calls to allow the controlled communication of isolated processes with the kernel and other processes. Every system call includes a processor mode switch from the unprivileged user mode to the privileged kernel mode. ...
Asterope: A Cross-Platform Optimization Method for Fast Memory Copy
Critical operations are often implemented in roughly the same way across multiple platforms, but differently by software systems running on the same platform. This observation is arguably justified by the potential restrictions of each software system, ...
Files-as-Filesystems for POSIX Shell Data Processing
The POSIX shell is 'stringy', and its ecosystem primarily supports line-oriented formats. While such formats are popular and common, contemporary programming often involves semi-structured data, like JSON or YAML. Dealing with such formats, the shell's ...
Decoupling Application Logic from Persistent Memory Frameworks with AspectC++
Over the past decade, various systems and software libraries have been developed that provide crash consistency on byte-addressable persistent memory. They often require programmers to adapt their code significantly or to use special compiler plugins. ...
PyMM: Heterogeneous Memory Programming for Python Data Science
While persistent memory (PMEM) is a promising technology, leveraging it with legacy applications is non-trivial. This is primarily because legacy applications assume all memory is volatile and there is no notion of crash-consistency or state recovery. ...
FlashCube: Fast Provisioning of Serverless Functions with Streamlined Container Runtimes
Fast provisioning of serverless functions is salient for serverless platforms. Though lightweight sandboxes (e.g., containers) enclose only necessary files and libraries, a cold launch still requires up to a few seconds to complete. Such slow ...
Using Coroutines for Multi-core Preemptive Scheduling
The advent of multi-core processors has increased the demand for programming concurrent systems. In this paper, we explore the use of SIMULA style coroutines and other primitives as a basis for defining a broad class of high-level concurrency ...
Understanding the Overheads of Hardware and Language-Based IPC Mechanisms
A recent surge of security attacks has triggered a renewed interest in hardware support for isolation. Extended page table switching with VMFUNC, memory protection keys (MPK), and memory tagging extensions (MTE) are just a few of the hardware isolation ...
CppSig: Extracting Type Information for C-Preprocessor Macro Expansions
For decades, the C programming language proved to be a cornerstone of system-software ecosystems, leaving us with billion lines of existing source code. From today's perspective of object-oriented and functional languages, C itself seems rather limited ...
Generating correct initial page tables from formal hardware descriptions
Modern hardware platforms are increasingly complex and heterogeneous. System software uses a hodgepodge of different mechanisms and representations to express the memory topology of the target platform. Considerable maintenance effort is required to ...
Isolation in Rust: What is Missing?
Rust is the first practical programming language that has the potential to provide fine-grained isolation of untrusted computations at the language level. A combination of zero-overhead safety, i.e., safety without a managed runtime and garbage ...
How ISO C became unusable for operating systems development
The C programming language was developed in the 1970s as a fairly unconventional systems and operating systems development tool, but has, through the course of the ISO Standards process, added many attributes of more conventional programming languages ...
- Proceedings of the 11th Workshop on Programming Languages and Operating Systems