TL;DR: This chapter discusses Programming for the Real World, or How to Choose an Operating System Performance in Real-Time Systems, and I/O for the real world.
Abstract: Preface. Part 1: Programming for the Real World. Chapter 1: Introduction What's POSIX? Doing More the POSIX Way The POSIX Environment The Applications Are Varied The Problems Are the Same Some Solutions to These Problems What POSIX Does Not Do. Chapter 2: The POSIX Way What POSIX Is Compile-Time Checking Run-Time Checking Headers and Namespace Pollution Who's Got What? Conclusion. Chapter 3: The Basics of Real-Time: Multiple Tasks Doing Everything at Once Running in Cycles Multiple Processes Signals Conclusion Exercises. Chapter 4: Better Coordination: Messages, Shared Memory, and Synchronization Communicating Between Processes POSIX.1 Communication: Pipes and FIFOs System V Message Queues POSIX.4 Message Queues POSIX.4 Shared Memory and File Mapping Synchronizing Multiple Processes Conclusion Exercises. Chapter 5: On Time: Scheduling, Time, and Memory Locking Trying to Make Things Happen On Time Rates and Responses Standard Scheduling Solutions Under UNIX Portable Real-Time Scheduling: the POSIX.4 Scheduling Interfaces Making Things Happen On Time Keeping Your Memory Handy: UNIX and POSIX Memory Locking Brass Tacks Nice but Not Necessary: How to Make the Time Readable Conclusion Exercises. Chapter 6: I/O for the Real World I/O Is Everything I/O in Real-Time Systems UNIX Has a Problem with Real-Time I/O Standard UNIX Facilities for Real-World I/O Achieving Greater Control over File Operations Asynchronous I/O: I/O While You Don't Wait Deterministic I/O Conclusion Exercises. Chapter 7: Performance, or How to Choose an Operating System Performance in Real-Time Systems Measuring the Right Thing Metrics for POSIX Systems Conclusion Exercises. Part 2: Manpages.... Part 3: Solutions to Problems Appendix A: Exercise Code. Chapter 3: The Basics of Real-Time: Multiple Tasks. Chapter 4: Better Coordination: Messages, Memory, and Synchronization. Chapter 5: On Time: Scheduling, Time, and Memory Locking. Chapter 6: I/O for the Real World. Chapter 7: Performance, or How To Choose an Operating System. Bibliography. Index. List of Figures. 1-1 Mandatory and optional parts of POSIX.1 and POSIX.4 1-2 Real-time control loop-one device 1-3 Real-time control loop-multiple devices 1-4 Terminals and server 1-5 Multiple servers 2-1 Cross development 2-2 POSIX conformance checking-basic outline 4-1 Result of simultaneous dequeue by two processes 4-2 mmap is used for mapping differing sorts of objects 4-3 How mmap's arguments refer to the mapped region 4-4 A counting semaphore over time 4-5 Mutex and condition variables 5-1 Real-time device monitoring and control 5-2 Race condition when setting an absolute timer by yourself 5-3 Layers of software between you and an errant program 6-1 Normal UNIX disk layout and optimal layout for sequential access 6-2 How AIO proceeds 6-3 Asynchronous I/O error and return status 6-4 Race condition between seek and read/write 6-5 Preventing bad things from happening 7-1 The computer responds 7-2 Layers of an I/O implementation 7-3 Non-contested use of semaphores 7-4 Two processes (P) signalling each other with semaphores (S) 7-5 A generic performance measurement 7-6 Responsiveness measurement application 7-7 External measurement of interrupt and task response. List of Tables. 1-1 Status of POSIX standards as of April, 1994 2-1 The Menu for POSIX.1 Functionality 2-2 The Menu for POSIX.4 Functionality 2-3 _POSIX_VERSION Possible Values 2-4 POSIX Feature Limits: Maxima 2-5 POSIX Feature Limits: Minimum Requirements 2-6 sysconf Options 2-7 pathconf and fpathconf Options 2-8 POSIX Reserved Namespaces 3-1 Signals Required by POSIX (Default Action Termination) 3-2 POSIX Optional Signals 4-1 Coordination Mechanisms 4-2 How to Get Various Shared Memory and File Mapping Facilities 5-1 Example rate-monotonic priority ssignments
TL;DR: An application program interface that enables applications to use application-defined scheduling algorithms in a way compatible with the scheduling model defined in POSIX, and is currently implemented on MaRTE OS.
Abstract: Presents an application program interface (API) that enables applications to use application-defined scheduling algorithms in a way compatible with the scheduling model defined in POSIX. Several application-defined schedulers, implemented as special user threads, can coexist in the system in a predictable way. This API is currently implemented on our operating system MaRTE OS. We plan to propose it for a future revision of the POSIX standard.
TL;DR: This work provides a program logic for specifying a core subset of the sequential POSIX file system, and for reasoning abstractly about client programs working with the file system.
Abstract: We provide a program logic for specifying a core subset of the sequential POSIX file system, and for reasoning abstractly about client programs working with the file system.
TL;DR: Applications of the kernel range from evaluating the overhead of new language features in Ada 95 and its runtime system, verifying static timing predictions on a bare machine, to providing the operating system for small embedded system that require a high timing predictability.
Abstract: MiThOS (Micro-kernel Threads Operating System) is an experimental operating system for embedded systems. The system kernel is a first implementation of the POSIX Minimal Real-Time System Profile. It is based on prior work of a library implementation of Pthreads (POSIX threads). The system is fully preemptive. It supports multi-threading within a single process environment with shared kernel and user space, i.e. real-time tasks are mapped onto POSIX threads. It exhibits remarkable timing predictability intended for hard real-time requirements. This is achieved by a careful design of only few device drivers. The system has been implemented and tested on the SPARC VME architecture. The system includes a fast context switching algorithm for the SPARC which outperforms the context switch under SunOS and matches the performance under Solaris. It supports selective enabling and disabling of hardware components (MMU, caches, etc.) since its sources are available. Furthermore, an implementation-defined extension of POSIX threads for deadline scheduling is presented. Overall, the system exhibits slightly faster performance than SunOS 4.x and is considerably more predictable in its timing behavior. Applications of the kernel range from evaluating the overhead of new language features in Ada 95 and its runtime system, verifying static timing predictions on a bare machine, to providing the operating system for small embedded system that require a high timing predictability.
TL;DR: A framework for developing and using a library of POSIX compatible application-defined schedulers is proposed and an API based in this framework is presented and some functionality has been added to it, including fault-tolerance capabilities.
Abstract: Developing real-time applications using the POSIX standard API guarantees applications portability at the source code level. However, POSIX standard includes just fixed-priority scheduling and it is not always suited to fulfill the requirements of every real-time system. Recently, an API to use application-defined scheduling algorithms in a way compatible with POSIX was proposed. This model allows the implementation of different scheduling policies in a portable way. Nevertheless, this API is more intended for kernel programmers than for real-time application developers. In this paper, a framework for developing and using a library of POSIX compatible application-defined schedulers is proposed. An API based in this framework is presented and some functionality has been added to it, including fault-tolerance capabilities. With the proposed API, a library of application-defined schedulers can be used to develop real-time applications in a consistent and efficient way. The proposal has been implemented in RTLinux along with a library including many scheduling policies and results of the evaluation of the implementation are presented.