This document provides an introduction to GDB (GNU Debugger) including what it is, why it is useful, basic GDB commands, and examples of using GDB to debug a C program. Key points include:
- GDB is an interactive debugger that allows debugging of C/C++ programs.
- It helps developers find bugs by allowing them to watch/modify variables, determine why programs fail, and change program flow.
- Basic GDB commands demonstrated include breakpoints, backtraces, printing variables, and stepping through code.
- An example program is debugged using GDB to step through functions and view variable values.
Version DRAFT d'une formation Data Scientist que j'ai conçue à partir de sources diverses (voir références bibliographiques à la fin de chaque diapositive).
La formation est destinée aux personnes possédant des bases (~BAC+2) en statistiques et programmation (j'utilise R).
Je reste ouvert à tout commentaire, critique et correction. Je continuerai à mettre à jour les diapositives et à en ajouter d'autres si j'ai le temps.
This document provides information about personal styling and different body types. It discusses the roles of a personal stylist and different body shapes including triangle, inverted triangle, diamond, oval, and rectangle. For each body shape, it provides examples of flattering dressy, casual, and formal outfits. It also includes sections on self-image, color analysis, makeup tips, wardrobe organization, and fashion trends.
1 hour to browse the algos stars of machine learning. No code, big concepts with a little math. Linear regression, classification (logistic regression / svm / tree), neural network, deep learning...
The document discusses offloading in mobile cloud computing. It defines offloading as migrating data storage and computations from a mobile device to a remote cloud to improve performance and save energy. This is done to address limitations of mobile devices like poor battery life, limited storage, and resources. Offloading can take full or partial forms. Factors like bandwidth, amount of data, and computation are considered to determine if offloading improves performance or saves energy. Different types and topologies of offloading are also discussed.
This document provides an overview of diabetes mellitus (DM), including the three main types (Type 1, Type 2, and gestational diabetes), signs and symptoms, complications, pathophysiology, oral manifestations, dental management considerations, emergency management, diagnosis, and treatment. DM is caused by either the pancreas not producing enough insulin or cells not responding properly to insulin, resulting in high blood sugar levels. The document compares and contrasts the characteristics of Type 1 and Type 2 DM.
EB corbos and the L4Re microhypervisor: Open-source automotive safetyAlexander Much
This is the slide deck for a talk at Linaro Connect 2018 in Vancouver.
In the talk we show a reference architecture and implementation using open source components, L4Re hypervisor and the Adaptive AUTOSAR solution from Elektrobit
RISC-V Boot Process: One Step at a TimeAtish Patra
- OpenSBI is an open-source implementation of the RISC-V Supervisor Binary Interface (SBI) specifications. It provides runtime services in M-mode to facilitate booting of operating systems.
- OpenSBI supports various RISC-V platforms including SiFive boards, QEMU, and is integrated with projects like U-Boot and EDK2. It provides a standardized way for operating systems to interface with the underlying hardware.
- Future work includes supporting more platforms, implementing the SBI v0.2 specification, and enabling features like sequential CPU boot and hypervisor support. OpenSBI aims to establish a stable boot ecosystem for RISC-V.
The document summarizes how to write a character device driver in Linux. It covers the anatomy of a device driver including the user interface via device files, and kernel interfaces via file operations and major/minor numbers. It describes registering a character driver by defining file operations, reserving major/minor numbers, and associating them. Open and release functions handle initialization and cleanup. Read/write functions transfer data between userspace and hardware. Ioctl allows extending functionality.
How Linux Processes Your Network Packet - Elazar LeibovichDevOpsDays Tel Aviv
This document summarizes the journey of a packet through the Linux networking stack both from outside a host to a Docker container and from the host to the container. It explains that each Docker container has its own network namespace containing its network interfaces like a virtual network card. It then demonstrates how to use iptables to redirect incoming packets to a container's port using DNAT, solving the problem of accessing a container service from outside the host. The document provides an overview of Linux networking components like bridges, veth pairs, and network namespaces to explain how Docker integrates with the host network stack.
The document provides an overview of Linux interview essentials related to operating system concepts, system calls, inter-process communication, and threads. It discusses topics such as the role and components of an operating system, multi-tasking and scheduling policies, differences between function calls and system calls, static and dynamic linking, common code and stack errors, memory leaks, kernel modes, monolithic and micro kernels, interrupts, exceptions, system calls implementation in Linux, and synchronous vs asynchronous communication methods.
QEMU is an emulator that uses dynamic translation to emulate one instruction set architecture (ISA) on another host ISA. It translates guest instructions to an intermediate representation (TCG IR) code, and then compiles the IR code to native host instructions. QEMU employs techniques like translation block caching and chaining to improve the performance of dynamic translation. It also uses helper functions to offload complex operations during translation to improve efficiency.
Linux uses /proc/iomem as a "Rosetta Stone" to establish relationships between software and hardware. /proc/iomem maps physical memory addresses to devices, similar to how the Rosetta Stone helped map Egyptian hieroglyphs to Greek and decode ancient Egyptian texts. This virtual file allows the kernel to interface with devices by providing address translations between physical and virtual memory spaces.
Build your own embedded linux distributions by yocto projectYen-Chin Lee
The document discusses the Yocto Project, an open-source collaboration project that provides templates, tools, and methods for creating custom Linux-based systems for embedded products. It provides an overview of the key components of Yocto including Poky, BitBake, and metadata. It also summarizes how to get started with Yocto including downloading Poky, setting up the build environment, and building a minimal image that can be run in QEMU for testing purposes.
This document discusses how eBPF (extended Berkeley Packet Filter) can be used for kernel tracing. It provides an overview of BPF and eBPF, how eBPF programs are compiled and run in the kernel, the use of BPF maps, and how eBPF enables new possibilities for dynamic kernel instrumentation through techniques like Kprobes and ftrace.
Multicore processors are becoming prevalent due to the limitations of increasing single core clock speeds. This presents challenges for software to effectively utilize multiple cores. Functional programming is one option that avoids shared state and parallel access issues, but requires a significant mindset shift. Refactoring existing code using tools is another option to incrementally introduce parallelism. Hybrid approaches combining paradigms may also help transition. Key application areas currently benefiting include servers, scientific computing, and packet processing. However, significant existing code is not easily parallelized and performance gains have yet to be fully realized.
LAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common KernelLinaro
LAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common Kernel
Speakers: Juri Lelli
Date: September 26, 2016
★ Session Description ★
Walkthrough of the EAS kernel adaptation to the Android Common Kernel.
★ Resources ★
Etherpad: pad.linaro.org/p/las16-105
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-105/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
Vincent Van der Kussen discusses KVM and related virtualization tools. KVM is a kernel module that allows Linux to function as a hypervisor. It supports x86, PowerPC and s390 architectures. Key tools discussed include libvirt (the virtualization API), virsh (command line tool for libvirt), Qemu (runs virtual machines), and virt-tools like virt-install. The document provides an overview of using these tools to manage virtual machines and storage.
OVN provides virtual networking capabilities for Open vSwitch including logical switches, routers, security groups, and ACLs. It uses OVSDB to configure OVN components and provides native integration with OpenStack Neutron. OVN's architecture includes a northbound database for logical network definitions, a southbound database for physical mappings, and daemons like ovn-northd and ovn-controller that translate between the databases.
The document provides an introduction to Linux kernel modules. It discusses that kernel modules extend the capabilities of the Linux kernel by executing code as part of the kernel. It then describes the anatomy of a kernel module, including initialization and cleanup functions. The document demonstrates a simple "hello world" kernel module example and how to build, load and unload kernel modules. It also introduces the idea of character device drivers as a more advanced kernel module example.
Linux device drivers act as an interface between hardware devices and user programs. They communicate with hardware devices and expose an interface to user applications through system calls. Device drivers can be loaded as kernel modules and provide access to devices through special files in the /dev directory. Common operations for drivers include handling read and write requests either through interrupt-driven or polling-based I/O.
Kubernetes provides logical abstractions for deploying and managing containerized applications across a cluster. The main concepts include pods (groups of containers), controllers that ensure desired pod states are maintained, services for exposing pods, and deployments for updating replicated pods. Kubernetes allows defining pod specifications that include containers, volumes, probes, restart policies, and more. Controllers like replica sets ensure the desired number of pod replicas are running. Services provide discovery of pods through labels and load balancing. Deployments are used to declaratively define and rollout updates to replicated applications.
QNX Software Systems provides the QNX Neutrino real-time operating system, the QNX Momentics IDE, and support services. QNX Neutrino is a highly reliable, deterministic, and scalable microkernel RTOS that supports a variety of hardware platforms and development tools. It offers features such as fault tolerance, predictable performance, POSIX compliance, and high availability.
The promise of the IoT won’t be fulfilled until integrated
software platforms are available that allow software
developers to develop these devices efficiently and in
the most cost-effective manner possible.
This presentation introduces F9 microkernel, new open source
implementation built from scratch, which deploys
modern kernel techniques dedicated to deeply
embedded devices.
Xvisor is an open source lightweight hypervisor for ARM architectures. It uses a technique called cpatch to modify guest operating system binaries, replacing privileged instructions with hypercalls. This allows the guest OS to run without privileges in user mode under the hypervisor. Xvisor also implements virtual CPU and memory management to isolate guest instances and virtualize physical resources for multiple operating systems.
EB corbos and the L4Re microhypervisor: Open-source automotive safetyAlexander Much
This is the slide deck for a talk at Linaro Connect 2018 in Vancouver.
In the talk we show a reference architecture and implementation using open source components, L4Re hypervisor and the Adaptive AUTOSAR solution from Elektrobit
RISC-V Boot Process: One Step at a TimeAtish Patra
- OpenSBI is an open-source implementation of the RISC-V Supervisor Binary Interface (SBI) specifications. It provides runtime services in M-mode to facilitate booting of operating systems.
- OpenSBI supports various RISC-V platforms including SiFive boards, QEMU, and is integrated with projects like U-Boot and EDK2. It provides a standardized way for operating systems to interface with the underlying hardware.
- Future work includes supporting more platforms, implementing the SBI v0.2 specification, and enabling features like sequential CPU boot and hypervisor support. OpenSBI aims to establish a stable boot ecosystem for RISC-V.
The document summarizes how to write a character device driver in Linux. It covers the anatomy of a device driver including the user interface via device files, and kernel interfaces via file operations and major/minor numbers. It describes registering a character driver by defining file operations, reserving major/minor numbers, and associating them. Open and release functions handle initialization and cleanup. Read/write functions transfer data between userspace and hardware. Ioctl allows extending functionality.
How Linux Processes Your Network Packet - Elazar LeibovichDevOpsDays Tel Aviv
This document summarizes the journey of a packet through the Linux networking stack both from outside a host to a Docker container and from the host to the container. It explains that each Docker container has its own network namespace containing its network interfaces like a virtual network card. It then demonstrates how to use iptables to redirect incoming packets to a container's port using DNAT, solving the problem of accessing a container service from outside the host. The document provides an overview of Linux networking components like bridges, veth pairs, and network namespaces to explain how Docker integrates with the host network stack.
The document provides an overview of Linux interview essentials related to operating system concepts, system calls, inter-process communication, and threads. It discusses topics such as the role and components of an operating system, multi-tasking and scheduling policies, differences between function calls and system calls, static and dynamic linking, common code and stack errors, memory leaks, kernel modes, monolithic and micro kernels, interrupts, exceptions, system calls implementation in Linux, and synchronous vs asynchronous communication methods.
QEMU is an emulator that uses dynamic translation to emulate one instruction set architecture (ISA) on another host ISA. It translates guest instructions to an intermediate representation (TCG IR) code, and then compiles the IR code to native host instructions. QEMU employs techniques like translation block caching and chaining to improve the performance of dynamic translation. It also uses helper functions to offload complex operations during translation to improve efficiency.
Linux uses /proc/iomem as a "Rosetta Stone" to establish relationships between software and hardware. /proc/iomem maps physical memory addresses to devices, similar to how the Rosetta Stone helped map Egyptian hieroglyphs to Greek and decode ancient Egyptian texts. This virtual file allows the kernel to interface with devices by providing address translations between physical and virtual memory spaces.
Build your own embedded linux distributions by yocto projectYen-Chin Lee
The document discusses the Yocto Project, an open-source collaboration project that provides templates, tools, and methods for creating custom Linux-based systems for embedded products. It provides an overview of the key components of Yocto including Poky, BitBake, and metadata. It also summarizes how to get started with Yocto including downloading Poky, setting up the build environment, and building a minimal image that can be run in QEMU for testing purposes.
This document discusses how eBPF (extended Berkeley Packet Filter) can be used for kernel tracing. It provides an overview of BPF and eBPF, how eBPF programs are compiled and run in the kernel, the use of BPF maps, and how eBPF enables new possibilities for dynamic kernel instrumentation through techniques like Kprobes and ftrace.
Multicore processors are becoming prevalent due to the limitations of increasing single core clock speeds. This presents challenges for software to effectively utilize multiple cores. Functional programming is one option that avoids shared state and parallel access issues, but requires a significant mindset shift. Refactoring existing code using tools is another option to incrementally introduce parallelism. Hybrid approaches combining paradigms may also help transition. Key application areas currently benefiting include servers, scientific computing, and packet processing. However, significant existing code is not easily parallelized and performance gains have yet to be fully realized.
LAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common KernelLinaro
LAS16-105: Walkthrough of the EAS kernel adaptation to the Android Common Kernel
Speakers: Juri Lelli
Date: September 26, 2016
★ Session Description ★
Walkthrough of the EAS kernel adaptation to the Android Common Kernel.
★ Resources ★
Etherpad: pad.linaro.org/p/las16-105
Presentations & Videos: http://connect.linaro.org/resource/las16/las16-105/
★ Event Details ★
Linaro Connect Las Vegas 2016 – #LAS16
September 26-30, 2016
http://www.linaro.org
http://connect.linaro.org
Vincent Van der Kussen discusses KVM and related virtualization tools. KVM is a kernel module that allows Linux to function as a hypervisor. It supports x86, PowerPC and s390 architectures. Key tools discussed include libvirt (the virtualization API), virsh (command line tool for libvirt), Qemu (runs virtual machines), and virt-tools like virt-install. The document provides an overview of using these tools to manage virtual machines and storage.
OVN provides virtual networking capabilities for Open vSwitch including logical switches, routers, security groups, and ACLs. It uses OVSDB to configure OVN components and provides native integration with OpenStack Neutron. OVN's architecture includes a northbound database for logical network definitions, a southbound database for physical mappings, and daemons like ovn-northd and ovn-controller that translate between the databases.
The document provides an introduction to Linux kernel modules. It discusses that kernel modules extend the capabilities of the Linux kernel by executing code as part of the kernel. It then describes the anatomy of a kernel module, including initialization and cleanup functions. The document demonstrates a simple "hello world" kernel module example and how to build, load and unload kernel modules. It also introduces the idea of character device drivers as a more advanced kernel module example.
Linux device drivers act as an interface between hardware devices and user programs. They communicate with hardware devices and expose an interface to user applications through system calls. Device drivers can be loaded as kernel modules and provide access to devices through special files in the /dev directory. Common operations for drivers include handling read and write requests either through interrupt-driven or polling-based I/O.
Kubernetes provides logical abstractions for deploying and managing containerized applications across a cluster. The main concepts include pods (groups of containers), controllers that ensure desired pod states are maintained, services for exposing pods, and deployments for updating replicated pods. Kubernetes allows defining pod specifications that include containers, volumes, probes, restart policies, and more. Controllers like replica sets ensure the desired number of pod replicas are running. Services provide discovery of pods through labels and load balancing. Deployments are used to declaratively define and rollout updates to replicated applications.
QNX Software Systems provides the QNX Neutrino real-time operating system, the QNX Momentics IDE, and support services. QNX Neutrino is a highly reliable, deterministic, and scalable microkernel RTOS that supports a variety of hardware platforms and development tools. It offers features such as fault tolerance, predictable performance, POSIX compliance, and high availability.
The promise of the IoT won’t be fulfilled until integrated
software platforms are available that allow software
developers to develop these devices efficiently and in
the most cost-effective manner possible.
This presentation introduces F9 microkernel, new open source
implementation built from scratch, which deploys
modern kernel techniques dedicated to deeply
embedded devices.
Xvisor is an open source lightweight hypervisor for ARM architectures. It uses a technique called cpatch to modify guest operating system binaries, replacing privileged instructions with hypercalls. This allows the guest OS to run without privileges in user mode under the hypervisor. Xvisor also implements virtual CPU and memory management to isolate guest instances and virtualize physical resources for multiple operating systems.
F9 is a new open source microkernel designed for deeply embedded systems like IoT devices. It aims to provide efficiency, security, and a flexible development environment. F9 follows microkernel principles with minimal kernel functionality and isolates components as user-level processes. It uses capabilities for access control and focuses on performance through techniques like tickless scheduling and adaptive power management.
The lecture by Bjoern Doebel for Summer Systems School'12.
L4Linux, DDEkit, POSIX compatabls
SSS'12 - Education event, organized by ksys labs[1] in 2012, for students interested in system software development and information security.
1. http://ksyslabs.org/
10 - Architetture Software - More architectural stylesMajong DevJfu
The Microkernel pattern partitions an operating system into isolated, minimal components that communicate through a small, fixed message-passing interface, allowing components to be developed and upgraded independently while maintaining overall system stability and security.
The key problematic instructions for virtualization on ARM are those that change processor state or mode, access privileged resources, or cause unpredictable behavior when executed in user mode. These must be trapped and emulated by the virtual machine monitor.
* Know the reasons why various operating systems exist and how they are functioned for dedicated purposes
* Understand the basic concepts while building system software from scratch
• How can we benefit from cheap ARM boards and the related open source tools?
- Raspberry Pi & STM32F4-Discovery
The document summarizes the use of LLVM for code generation when recompiling Nintendo games as native games. LLVM provides a full compiler infrastructure that can be used to generate code for various platforms from a common intermediate representation (LLVM bitcode). The document discusses using LLVM for code generation from 6502 assembly to generate native code for emulation. Optimizations available through LLVM are also discussed.
The document discusses how a "Hello World" program works behind the scenes. It covers topics like compilation, linking, executable file formats, loading programs into memory, and process creation. The key points are:
1) A C program is compiled into an object file, then linked with library files to create an executable. The linker resolves symbols and relocates addresses.
2) Executable files use formats like ELF that contain machine code, data, symbol tables, and sections. Object files have a similar format.
3) When a program runs, the OS loads pages of the executable into memory as needed and sets up the process with its own virtual address space.
4) System calls
The Mars Pathfinder mission successfully demonstrated new landing techniques and returned valuable data from the Martian surface. However, it experienced issues with priority inversion in its VxWorks real-time operating system. The lower priority weather data collection task would occasionally prevent the higher priority communication task from completing before the next cycle began, resetting the system. Engineers traced the problem to the use of VxWorks' select() call to wait for I/O from multiple devices, allowing long-running lower priority tasks to block critical higher priority tasks.
Plan 9 was an operating system designed in the 1980s by Bell Labs as a distributed successor to Unix. It treated all system resources, including files, devices, processes and network connections, as files that could be accessed through a single universal file system interface. Plan 9 assumed a network of reliable file servers and CPU servers with personal workstations accessing aggregated remote resources through a high-speed network. It aimed to "build a UNIX out of little systems" rather than integrating separate systems.
Analysis of Practicality and Performance Evaluation for Monolithic Kernel and...CSCJournals
The microkernel system (as opposite to monolithic systems) has been developed for years, with the hope that microkernels could solve the problems of other operating systems. However, the evolution of the microkernel systems did not go as many people expected. Because of faultinesses of design in system structure, the performance of the first generation of microkernel operating systems was disappointing. The overhead of the system was too high to bear for users. However, the second-generation microkernel system uses an improved design architecture that could substantially reduce the overhead in the previous microkernel systems. This project evaluates the system performance of the MINIX3.1.2a with the performance of Linux by using Unixbench system evaluating tool. In this way, it could testify whether the microkernel systems could be more flexible, portable and secure than monolithic operating systems. Unixbench could give sufficient statistics on different capacities of MINIX3 and Linux, such as system call overhead, pipe throughput, arithmetic test and so on. The result illustrates MINIX3 has better performance on Shell Scripts running and Arithmetic test and Linux has better performance on other aspects such as system call overhead, process creation and so on. Furthermore, we provide a more detailed analyze on the microkernel Minix 3 system and propose a method that we could improve the performance of the MINIX3 system.
The document discusses microkernels, which are a minimal form of operating system kernel that provides only basic functionality like address space management, thread management, and inter-process communication. Traditional OS functions like device drivers and file systems are implemented as user-space servers that communicate via IPC. Early microkernels had poor IPC performance, but more optimized designs like L4 achieved much lower overhead. Modern microkernels are minimal and aim to implement all policy in user space for flexibility, while providing efficient IPC and other core mechanisms.
This document discusses operating system architecture and kernel types. It defines the kernel as the fundamental part of the OS that provides secure access to hardware and decides resource allocation. Kernels can take different forms: monolithic kernels have all services in kernel space for good performance but are difficult to maintain; microkernels minimize the kernel to essential functions and put most services in user space for better modularity but more overhead; hybrid kernels combine aspects of monolithic and microkernels; nano and exokernels are more minimal.
Communication takes place between user modules using message passing
Benefits:
Easier to extend a microkernel
Easier to port the operating system to new architectures
More reliable (less code is running in kernel mode)
More secure
Detriments:
Performance overhead of user space to kernel space communication
This document provides an overview of walking around the Linux kernel. It begins with a brief history of Linux starting with Richard Stallman founding GNU in 1984. It then discusses why an operating system is needed and what a kernel is. The document outlines the basic facilities a kernel provides including process management, memory management, and device management. It describes different kernel design approaches such as monolithic kernels, microkernels, and hybrid kernels. Finally, it provides some tips for hacking the Linux kernel such as installing development packages, configuring and compiling the kernel, checking hardware, and loading modules.
A monolithic kernel runs all operating system services and device drivers in the kernel space of memory. This provides rich hardware access but dependencies between system components mean a bug can crash the entire system. A microkernel moves most OS services like networking and filesystems into userspace processes or "servers" that communicate through a minimal kernel. This improves modularity and stability but incurs more overhead from frequent context switches between user and kernel mode.
A monolithic kernel runs all operating system services and device drivers in the kernel space of memory. This provides rich hardware access but dependencies between system components mean a bug can crash the entire system. A microkernel moves most OS services like networking and filesystems into userspace processes or "servers" that communicate through a minimal kernel. This improves modularity and stability but incurs more overhead from frequent context switches between user and kernel mode.
The kernel is the core component of an operating system that acts as a bridge between applications and hardware. It is responsible for low-level tasks like disk management, task management, and memory management. There are different types of kernels including monolithic, micro, hybrid, nano, and exo kernels. A monolithic kernel includes all operating system functionality in one memory space, while a microkernel only includes essential services in separate user and kernel memory spaces. Kernels must balance requirements for performance, size, and security depending on the system.
This document describes an operating systems course titled "Operating Systems 17CS64" at Canara Engineering College. The course is taught in the 6th semester and covers 10 hours of content over 3 modules - multithreaded programming, process scheduling, and process synchronization. Module 2 focuses on multithreaded programming concepts like threading models, thread libraries, and threading issues. It provides details on multithreading benefits and challenges.
Ok Labs Webinar Android Migration At The Speed Of LightOpen Kernel Labs
Open Kernel Labs is the global leader in open source virtualization software for mobile devices, consumer electronics and embedded systems. Backed by the largest, independent team of microkernel developers, the OKL4 embedded hypervisor is deployed on more than 250 million mobile phones worldwide. Chipset suppliers, handset OEMs, and mobile network operators depend on OK Labs to deliver high performance solutions that decrease BOM cost, reduce complexity and speed time-to-market.
Linux is a widely used open source operating system kernel that can also refer to full operating system distributions. It is commonly used in embedded systems due to its portability, modularity, and ability to run on hardware with limited resources. Device drivers can be dynamically loaded and unloaded from the Linux kernel as modules, allowing new functionality to be added without rebooting the system. This makes Linux well-suited for embedded device development.
This document provides an introduction to microkernel-based operating systems using the Fiasco.OC microkernel as an example. It outlines the key concepts of microkernels, including using a minimal kernel to provide mechanisms like threads and address spaces while implementing operating system services like filesystems and networking in user-level servers. It describes the objects and capabilities model of the Fiasco.OC microkernel and how it implements threads and inter-process communication. It also discusses how the L4 runtime environment builds further services on top of the microkernel to provide a full operating system environment.
امروزه مجازیسازی یکی از روشهای پرطرفدار برای پیادهسازی کارگزاران وب است. این فناوری موجب کاهش هزینههای تجارتهای کوچک میشود. مجازیسازی یکی از جنبههای مهم ارائه خدمات ابری است که حتی برای تجارتهای بزرگ نیز از جذابیت زیادی برخوردار است.
در این سخنرانی به امکاناتی همچون Control Groups و Containers که در نسخههای جدیدتر هسته سیستم عامل لینوکس پیادهسازی شده است میپردازیم. هرچند این امکانات مجازیسازی کامل را به ارمغان نمیآورند، اما بسیاری از مزایای آن را با سربار بسیار کم در سطح هسته فراهم میکنند. راه حلهایی همچون LXC و Docker بر اساس این امکانات توانستهاند به نتایج خوبی برسند که هم از لحاظ تجاری در خور توجه هستند و هم تبعات و کاربردهای امنیتی دارند.
Microx - A Unix like kernel for Embedded Systems written from scratch.Waqar Sheikh
Microx is a new operating system kernel designed for embedded systems. It is small, streamlined, and efficient. Microx is POSIX compliant and has a similar ABI to Linux, allowing Linux programs to run unmodified. It has a monolithic kernel design and supports over 150 system calls. Microx provides a capable UNIX-like kernel that is easy to customize and modify for embedded applications. It implements common kernel components like processes, memory management, filesystems, and networking. Benchmarking shows it has good performance compared to Linux. Microx also includes integrated firewall and quality of service functionality.
This document provides information about an OS lab manual, including definitions of operating systems, computer system components, Windows 2000 architecture and components, and other topics like LDAP, DNS, and Active Directory. Specifically, it defines operating systems, their goals, and components. It describes the Windows 2000 architecture in layers and subsystems. It also explains the Windows 2000 kernel, executive, and subsystems like object manager, virtual memory manager, and process manager.
The document provides an introduction to the Linux operating system, including:
- A brief history of UNIX and Linux, describing their origins in the 1960s-1990s.
- An overview of Linux distributions, kernels, features, and structure, explaining concepts like monolithic vs. microkernel designs.
- Descriptions of key Linux components like modules, eBPF, and the roles of processes, user mode, kernel mode, and context switches.
- Discussions of ongoing developments like extended BPF which allow more dynamic programmability of the Linux kernel.
Unikraft allows decomposing operating systems into modular libraries that can be selectively combined to build specialized unikernel images for applications. This avoids the bloat of general purpose operating systems while reducing development time compared to manually specialized systems. Unikraft provides a library pool and build system to select necessary components, target platforms, and automatically generate lean images for various use cases like IoT, cloud, and network functions virtualization.
PyPy takes a tracing just-in-time (JIT) compilation approach to optimize Python programs. It works by first interpreting the program, then tracing hot loops and optimizing their performance by compiling them to machine code. This JIT compilation generates and runs optimized trace trees representing the control flow and operations within loops. If guards placed in the compiled code fail, indicating the optimization may no longer apply, execution falls back to the interpreter or recompiles the trace with additional information. PyPy's approach aims to optimize the most common execution paths of Python programs for high performance while still supporting Python's dynamic nature.
This document discusses making Linux capable of hard real-time performance. It begins by defining hard and soft real-time systems and explaining that real-time does not necessarily mean fast but rather determinism. It then covers general concepts around real-time performance in Linux like preemption, interrupts, context switching, and scheduling. Specific features in Linux like RT-Preempt, priority inheritance, and threaded interrupts that improve real-time capabilities are also summarized.
Introduce Brainf*ck, another Turing complete programming language. Then, try to implement the following from scratch: Interpreter, Compiler [x86_64 and ARM], and JIT Compiler.
Build a full-functioned virtual machine from scratch, when Brainfuck is used. Basic concepts about interpreter, optimizations techniques, language specialization, and platform specific tweaks.
This presentation covers the general concepts about real-time systems, how Linux kernel works for preemption, the latency in Linux, rt-preempt, and Xenomai, the real-time extension as the dual kernel approach.
Faults inside system software were analyzed, with a focus on diagnosing faults in device drivers. Approaches to deal with faulty drivers included runtime isolation and static analysis. Runtime isolation involves running each driver in a separate process or virtual machine to isolate failures. Static analysis techniques inspect source code for issues like concurrency errors, protocol violations, and invalid register values without needing to execute the code. The talk provided statistics on driver faults, discussed the Linux driver model and common bug causes, and outlined techniques like instrumentation and specification-based development to improve driver correctness and security.
(Presentation at COSCUP 2012) Discuss why you should try to develop your own operating system and how you can speed up by taking the microkernel approach.
Technology Trends in 2025: AI and Big Data AnalyticsInData Labs
At InData Labs, we have been keeping an ear to the ground, looking out for AI-enabled digital transformation trends coming our way in 2025. Our report will provide a look into the technology landscape of the future, including:
-Artificial Intelligence Market Overview
-Strategies for AI Adoption in 2025
-Anticipated drivers of AI adoption and transformative technologies
-Benefits of AI and Big data for your business
-Tips on how to prepare your business for innovation
-AI and data privacy: Strategies for securing data privacy in AI models, etc.
Download your free copy nowand implement the key findings to improve your business.
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul
Artificial intelligence is changing how businesses operate. Companies are using AI agents to automate tasks, reduce time spent on repetitive work, and focus more on high-value activities. Noah Loul, an AI strategist and entrepreneur, has helped dozens of companies streamline their operations using smart automation. He believes AI agents aren't just tools—they're workers that take on repeatable tasks so your human team can focus on what matters. If you want to reduce time waste and increase output, AI agents are the next move.
HCL Nomad Web – Best Practices and Managing Multiuser Environmentspanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-nomad-web-best-practices-and-managing-multiuser-environments/
HCL Nomad Web is heralded as the next generation of the HCL Notes client, offering numerous advantages such as eliminating the need for packaging, distribution, and installation. Nomad Web client upgrades will be installed “automatically” in the background. This significantly reduces the administrative footprint compared to traditional HCL Notes clients. However, troubleshooting issues in Nomad Web present unique challenges compared to the Notes client.
Join Christoph and Marc as they demonstrate how to simplify the troubleshooting process in HCL Nomad Web, ensuring a smoother and more efficient user experience.
In this webinar, we will explore effective strategies for diagnosing and resolving common problems in HCL Nomad Web, including
- Accessing the console
- Locating and interpreting log files
- Accessing the data folder within the browser’s cache (using OPFS)
- Understand the difference between single- and multi-user scenarios
- Utilizing Client Clocking
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungenpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-nomad-web-best-practices-und-verwaltung-von-multiuser-umgebungen/
HCL Nomad Web wird als die nächste Generation des HCL Notes-Clients gefeiert und bietet zahlreiche Vorteile, wie die Beseitigung des Bedarfs an Paketierung, Verteilung und Installation. Nomad Web-Client-Updates werden “automatisch” im Hintergrund installiert, was den administrativen Aufwand im Vergleich zu traditionellen HCL Notes-Clients erheblich reduziert. Allerdings stellt die Fehlerbehebung in Nomad Web im Vergleich zum Notes-Client einzigartige Herausforderungen dar.
Begleiten Sie Christoph und Marc, während sie demonstrieren, wie der Fehlerbehebungsprozess in HCL Nomad Web vereinfacht werden kann, um eine reibungslose und effiziente Benutzererfahrung zu gewährleisten.
In diesem Webinar werden wir effektive Strategien zur Diagnose und Lösung häufiger Probleme in HCL Nomad Web untersuchen, einschließlich
- Zugriff auf die Konsole
- Auffinden und Interpretieren von Protokolldateien
- Zugriff auf den Datenordner im Cache des Browsers (unter Verwendung von OPFS)
- Verständnis der Unterschiede zwischen Einzel- und Mehrbenutzerszenarien
- Nutzung der Client Clocking-Funktion
Quantum Computing Quick Research Guide by Arthur MorganArthur Morgan
This is a Quick Research Guide (QRG).
QRGs include the following:
- A brief, high-level overview of the QRG topic.
- A milestone timeline for the QRG topic.
- Links to various free online resource materials to provide a deeper dive into the QRG topic.
- Conclusion and a recommendation for at least two books available in the SJPL system on the QRG topic.
QRGs planned for the series:
- Artificial Intelligence QRG
- Quantum Computing QRG
- Big Data Analytics QRG
- Spacecraft Guidance, Navigation & Control QRG (coming 2026)
- UK Home Computing & The Birth of ARM QRG (coming 2027)
Any questions or comments?
- Please contact Arthur Morgan at [email protected].
100% human made.
Generative Artificial Intelligence (GenAI) in BusinessDr. Tathagat Varma
My talk for the Indian School of Business (ISB) Emerging Leaders Program Cohort 9. In this talk, I discussed key issues around adoption of GenAI in business - benefits, opportunities and limitations. I also discussed how my research on Theory of Cognitive Chasms helps address some of these issues
How Can I use the AI Hype in my Business Context?Daniel Lehner
𝙄𝙨 𝘼𝙄 𝙟𝙪𝙨𝙩 𝙝𝙮𝙥𝙚? 𝙊𝙧 𝙞𝙨 𝙞𝙩 𝙩𝙝𝙚 𝙜𝙖𝙢𝙚 𝙘𝙝𝙖𝙣𝙜𝙚𝙧 𝙮𝙤𝙪𝙧 𝙗𝙪𝙨𝙞𝙣𝙚𝙨𝙨 𝙣𝙚𝙚𝙙𝙨?
Everyone’s talking about AI but is anyone really using it to create real value?
Most companies want to leverage AI. Few know 𝗵𝗼𝘄.
✅ What exactly should you ask to find real AI opportunities?
✅ Which AI techniques actually fit your business?
✅ Is your data even ready for AI?
If you’re not sure, you’re not alone. This is a condensed version of the slides I presented at a Linkedin webinar for Tecnovy on 28.04.2025.
Big Data Analytics Quick Research Guide by Arthur MorganArthur Morgan
This is a Quick Research Guide (QRG).
QRGs include the following:
- A brief, high-level overview of the QRG topic.
- A milestone timeline for the QRG topic.
- Links to various free online resource materials to provide a deeper dive into the QRG topic.
- Conclusion and a recommendation for at least two books available in the SJPL system on the QRG topic.
QRGs planned for the series:
- Artificial Intelligence QRG
- Quantum Computing QRG
- Big Data Analytics QRG
- Spacecraft Guidance, Navigation & Control QRG (coming 2026)
- UK Home Computing & The Birth of ARM QRG (coming 2027)
Any questions or comments?
- Please contact Arthur Morgan at [email protected].
100% human made.
Role of Data Annotation Services in AI-Powered ManufacturingAndrew Leo
From predictive maintenance to robotic automation, AI is driving the future of manufacturing. But without high-quality annotated data, even the smartest models fall short.
Discover how data annotation services are powering accuracy, safety, and efficiency in AI-driven manufacturing systems.
Precision in data labeling = Precision on the production floor.
What is Model Context Protocol(MCP) - The new technology for communication bw...Vishnu Singh Chundawat
The MCP (Model Context Protocol) is a framework designed to manage context and interaction within complex systems. This SlideShare presentation will provide a detailed overview of the MCP Model, its applications, and how it plays a crucial role in improving communication and decision-making in distributed systems. We will explore the key concepts behind the protocol, including the importance of context, data management, and how this model enhances system adaptability and responsiveness. Ideal for software developers, system architects, and IT professionals, this presentation will offer valuable insights into how the MCP Model can streamline workflows, improve efficiency, and create more intuitive systems for a wide range of use cases.
Dev Dives: Automate and orchestrate your processes with UiPath MaestroUiPathCommunity
This session is designed to equip developers with the skills needed to build mission-critical, end-to-end processes that seamlessly orchestrate agents, people, and robots.
📕 Here's what you can expect:
- Modeling: Build end-to-end processes using BPMN.
- Implementing: Integrate agentic tasks, RPA, APIs, and advanced decisioning into processes.
- Operating: Control process instances with rewind, replay, pause, and stop functions.
- Monitoring: Use dashboards and embedded analytics for real-time insights into process instances.
This webinar is a must-attend for developers looking to enhance their agentic automation skills and orchestrate robust, mission-critical processes.
👨🏫 Speaker:
Andrei Vintila, Principal Product Manager @UiPath
This session streamed live on April 29, 2025, 16:00 CET.
Check out all our upcoming Dev Dives sessions at https://community.uipath.com/dev-dives-automation-developer-2025/.
Procurement Insights Cost To Value Guide.pptxJon Hansen
Procurement Insights integrated Historic Procurement Industry Archives, serves as a powerful complement — not a competitor — to other procurement industry firms. It fills critical gaps in depth, agility, and contextual insight that most traditional analyst and association models overlook.
Learn more about this value- driven proprietary service offering here.
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfAbi john
Analyze the growth of meme coins from mere online jokes to potential assets in the digital economy. Explore the community, culture, and utility as they elevate themselves to a new era in cryptocurrency.
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc
Most consumers believe they’re making informed decisions about their personal data—adjusting privacy settings, blocking trackers, and opting out where they can. However, our new research reveals that while awareness is high, taking meaningful action is still lacking. On the corporate side, many organizations report strong policies for managing third-party data and consumer consent yet fall short when it comes to consistency, accountability and transparency.
This session will explore the research findings from TrustArc’s Privacy Pulse Survey, examining consumer attitudes toward personal data collection and practical suggestions for corporate practices around purchasing third-party data.
Attendees will learn:
- Consumer awareness around data brokers and what consumers are doing to limit data collection
- How businesses assess third-party vendors and their consent management operations
- Where business preparedness needs improvement
- What these trends mean for the future of privacy governance and public trust
This discussion is essential for privacy, risk, and compliance professionals who want to ground their strategies in current data and prepare for what’s next in the privacy landscape.
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveScyllaDB
Want to learn practical tips for designing systems that can scale efficiently without compromising speed?
Join us for a workshop where we’ll address these challenges head-on and explore how to architect low-latency systems using Rust. During this free interactive workshop oriented for developers, engineers, and architects, we’ll cover how Rust’s unique language features and the Tokio async runtime enable high-performance application development.
As you explore key principles of designing low-latency systems with Rust, you will learn how to:
- Create and compile a real-world app with Rust
- Connect the application to ScyllaDB (NoSQL data store)
- Negotiate tradeoffs related to data modeling and querying
- Manage and monitor the database for consistently low latencies
Book industry standards are evolving rapidly. In the first part of this session, we’ll share an overview of key developments from 2024 and the early months of 2025. Then, BookNet’s resident standards expert, Tom Richardson, and CEO, Lauren Stewart, have a forward-looking conversation about what’s next.
Link to recording, presentation slides, and accompanying resource: https://bnctechforum.ca/sessions/standardsgoals-for-2025-standards-certification-roundup/
Presented by BookNet Canada on May 6, 2025 with support from the Department of Canadian Heritage.
3. On μ-Kernel Construction
Jochen Liedtke (1953-2001)
15th ACM Symposium on Operating System
Principles (1995)
4. Use Case: Low-cost 3G Handset
• Mobile Handsets
– Major applications runs on Linux
– 3G Modem software stack runs on RTOS
domain
• Virtualization in multimedia Devices
– Reduces BOM (bill of materials)
– Enables the Reusability of legacy
code/applications
– Reduces the system development time Hypervisor
• Instrumentation, Automation
– Run RTOS for Measurement and
analysis
– Run a GPOS for Graphical Interface
5. original mobile phone: with Virtualization: single chip
two CPUs required
• Evoke’s UI functionalities including the
touch screen is owned by the Linux
apps while video rendering uses a
rendering engine running on BREW.
• When a user requests a BREW app,
Linux communciates with BREW in the
other VM to start up the app. The
BREW obtains access to the screen by
using a frame buffer from a shared-
memory mapping.
8. Definition of Kernel
• The fundamental part of an Operating System.
• Responsible for providing secure access to the machine’s hardware for
various programs.
• Responsible for deciding when and how long a program can use a certain
hardware (multiplexing).
10. Monolithic vs. Microkernel
Application Application Application Application
User mode
Supervisor mode System call : open_File
Network
Stack
FS
Monolithic kernel
H/W management Device
FS Driver
User mode
Thread Control Supervisor mode System call : open_File
Driver
Thread Control
IPC
Network stack H/W management
Hardware Hardware
11. Hybrid Kernel
• Combine the best of both worlds
– Speed and simple design of a monolithic kernel
– Modularity and stability of a microkernel
• Still similar to a monolithic kernel
– Disadvantages still apply here
• Example: Windows NT, BeOS, DragonFlyBSD
12. Exokernel
• Follows end-to-end principle
– Extremely minimal
– Fewest hardware abstractions as possible
– Just allocates physical resources to apps
• Old name(s): picokernel, nanokernel
• Example: MIT Exokernel, Nemesis, ExOS
13. Kernel Comparison
• Monolithic kernels
– Advantages: performance
– Disadvantages: difficult to debug and maintain
• Microkernels
– Advantages: more reliable and secure
– Disadvantages: more overhead
• Hybrid Kernels
– Advantages: benefits of monolithic and microkernels
– Disadvantages: same as monolithic kernels
• Exokernels
– Advantages: minimal and simple
– Disadvantages: more work for application developers
14. Definition of Microkernel
• A kernel technique that provides only the minimum
OS services.
– Address Spacing
– Inter-process Communication (IPC)
– Thread Management
– Unique Identifiers
• All other services are done at user space
independently.
15. Microkernel
Memory
User Program Managers
Device Drivers
User Mode
Address spacing Thread Unique
Management Identifiers
and IPC
Microkernel Mode
Hardware
16. Microkernel Advantage
• A clear microkernel interface enforces a more
modular system structure
• Servers can use the mechanisms provided by the
microkernel like any other user program.
• So server malfunction is as isolated as any other user
program’s malfunction
• The system is more flexible and tailorable. Different
strategies and APIs, implemented by different severs,
can coexist in the system
17. 3 Generations of Microkernel
• Mach, Chorus (1985-1994)
– replace pipes with IPC (more general)
– improved stability (vs monolithic kernels)
– poor performance
• L3 & L4 (1990-2001)
– Large improvements in IPC performance
– Written in assembly, poor portability
– only synchronus IPC (build async on top of sync)
– very small kernel: more functions moved to userspace
• seL4, Coyotos, Nova (2000-present)
– platform independence
– verification, security, multiple CPUs, etc.
18. 1st Generation: Chorus Nucleus
Supervisor
Dispatches traps, interrupts, and exceptions delivered by
hardware.
Real Time Executive
Controls allocation of processes and provides preemptive
scheduling
Virtual Memory Manager
Manipulates VM hardware and memory resources.
IPC
Provides message Exchanging and Remote Procedure Calls
(RPC).
19. 1st Generation: CMU Mach
Asynchronous IPC
Threads
Scheduling
Memory management
Resource access permissions
Device drivers (in some variants)
(All other functions are implemented outside kernel. )
API Size of Mach 3: 140 functions
20. Mach microkernel performance issues
Checking resource access permissions on system
calls.
Single user machines do not need to do this.
Cache misses
Critical sections were too large.
Asynchronus IPC
Most calls only need synchronus IPC.
Synchronous IPC can be faster than asynchronous.
Asynchronous IPC can be built on top of synchronous.
Virtual memory
How to prevent key processes from being paged out?
22. 3rd Generation: seL4
• [Elphinstone et al 2007, Klein et al 2009]
• Security-oriented design
– capability-based access control
– strong isolation
• Hardware resources subject to user-defined policies
– including kernel memory (no kernel heap)
– except time
– “Microhypervisor" concept
• Designed for formal verification
23. Classical L4 microkernel functionality
• Threads
• Scheduling
• Memory management
• (All other functions are implemented outside kernel)
• API size of L4: 7 functions
– Compare to 140 functions for Mach3
24. L4 Mimnimality Principle
• A concept is tolerated inside the microkernel only if
moving it outside the kernel, i.e., permitting
competing implementations, would prevent the
implementation of the system's required functionality.
• Fred Books on conceptual integrity [Mythical Man
Month]
– UNIX : Everything is a file
– Mach : IPC generalizes files
– L4 : Can it be put outside the kernel?
25. L4 Kernel size
• Line of Code in OKL4
– ~9k LOC architecture-independent
– 0.5–6k LOC architecture/platform-specific
• Memory footprint kernel (not aggressively minimized):
– Using gcc (poor code density on RISC/EPIC architectures)
Architecture Version Text Total
X86 L4Ka 52k 98k
Itanium L4Ka 173k 417k
ARM OKL4 48k 78k
PPC-32 L4Ka 41k 135k
PPC-64 L4Ka 60k 205k
MIPS-64 NICTA 61k 100k
25
26. What properties do we expect from
Kernel?
Every system call terminates
No exceptions thrown
No arithmetic problems (e.g., overflow, divide by zero)
No null pointer de-references
No ill-typed pointer de-references
No memory leaks
No buffer overflows
No unchecked user arguments
Code injection attacks are impossible
Well-formed data structures
Correct book-keeping
No two objects overlap in memory
29. Threads Tasks
• Represent unit of execution • Represent domain of protection and isolation
– Execute user code (application) • Container for code, data and resources
– Execute kernel code (system calls, page • Address space: capabilities + memory
faults, interrupts, exceptions) pages
• Subject to scheduling • management operations:
– Quasi-parallel execution on one CPU – Map: share page with other address
space
– Parallel execution on multiple CPUs
– Voluntarily switch to another thread – Grant: give page to other address
possible space
– Preemptive scheduling by the kernel – Unmap: revoke previously mapped
according to certain parameters page
• Associated with an address space
– Executes code in one task at one point
in time
(Migration allows threads move to
another task)
– Several threads can execute in one task
30. L4 uniprocessor microkernel
Thread Task's
address space
Abstraction and unit of
execution
Identified by thread ID Tread
execution
Consist of paths
Instruction pointer Code
Stack Data
Registers, flags…
Thread state
L4 manages (preserve) only
IP, SP and registers Stack
31. L4 uniprocessor micro kernel
Thread switch
Interrupt
Code Code
▪ ▪
▪ ▪
Stack Stack
Thread A Thread B
I P
S P
Flags
CPU
IP/SP/Flags.. IP/SP/Flags..
Kernel
Code Kernel stack Kernel stack
▪ ▪
▪ ▪
State State
MicroKernel
TCB A TCB B
32. L4 uniprocessor micro kernel
Scheduling
Scheduling implemented by kernel, based on
priorities
Timeslice donation
33. Address Space
3 management operations
Map/Unmap
Share/revoke page with other address space
Grant
give page to other address space
Flush
The owner of an address space can flush any of its pages.
Grant
Map Map
Map
Pager Pager User Address space
35. Messages: Copy Data
• Direct and indirect data copy
• UTCB message (special area)
• Special case: register-only message
• Pagefaults during user-level memory access possible
36. Page Fault Handling
• Page Faults are mapped to IPC
– Pager is special thread that receives page faults
– Page fault IPC cannot trigger another page fault
• Kernel receives the flexpage from pager and inserts mapping
into page table of application
• Other faults normally terminate threads
APP
P1
P0
App Fault P1 touches its P0 maps
own page and then P1
faults
38. Messages: Map Reference
• Used to transfer memory pages and capabilities
• Kernel manipulates page tables
• Used to implement the map/grant operations
39. Communications & Resource Control
• Need to control who can send data to whom
– Security and isolation
– Access to resources
• Approaches
– IPC-redirection/introspection
– Central vs. Distributed policy and mechanism
– ACL-based vs. capability-based
41. Unsolved Problems in original L4
• L4 solved performance issue [Härtig et al, SOSP’97]
– “... but left a number of security issues unsolved"
• Problems addressed by seL4: ad-hoc approach to
protection and resource management
– Global thread name space → covert channels
– Threads as IPC targets → insufficient encapsulation
– Single kernel memory pool → DoS attacks
– Insufficient delegation of authority → limited
flexibility, performance
43. How seL4 solves problem by designs
• Isolation: Memory management is user-level responsibility
– Kernel never allocates memory (post-boot)
– Kernel objects controlled by user-mode servers
• Performance: Memory management is fully delegatable
– Supports hierarchical system design
– Enabled by capability-based access control
• Realtime: “Incremental consistency” design pattern
– Fast transitions between consistent states
– Restartable operations with progress guarantee
• Verification: No concurrency in the kernel
– Interrupts never enabled in kernel
– Interruption points to bound latencies
– Clustered multikernel design for multicores
44. seL4 in the first sight
• Formal verification
– Functional correctness
– Security/safety properties
• No kernel heap: all memory left after
boot is handed to userland
– Resource manager can delegate to
subsystems
– Operations requiring memory
explicitly provide memory to kernel
• Result: strong isolation of subsystems
and high performance
– Operate within delegated resources
– No interference
45. Move to Capability based design
• Don't need global names (task/thread IDs)
– Names (or IDs) are only valid within a task and have
no meaning elsewhere
• Kernel objects are referenced through local IDs,
comparable to POSIX file descriptors or handles
• Creating a new (kernel) object returns an index into a
task-local table, where in turn the pointer to the object
is stored
• Kernel protects this capability table, therefore
unforgeable
47. Capability space
• In-kernel memory table with pointers to kernel objects
• Sending a message to thread A merely requires the
sender to have a capability to the portal cap
• Sender does not know which thread/task will receive it
• Receiver does not know who sent it (in general)
• Separation of subsystems, combinable, independent
48. Capabilities
• Kernel objects represent resources and communication
channels
• Capability
– Reference to kernel object
– Associated with access rights
– Can be mapped from task to another task
• Capability table is task-local data structure inside the kernel
– Similar to page table
– Valid entries contain capabilities
• Capability handle is index number to reference entry into
capability table
– Similar to file handle of POSIX
• Mapping capabilities establishes a new valid entry into
the capability table
49. Importance of Capabilities
• Everything is a file → Everything is a capability
• Object capabilities
– Tasks, threads, IPC portals, factories, semaphores
– Handles/pointers to kernel objects, can be created,
delegated and destroyed
• Memory capabilities
– Resembles virtual memory pages
– Sending (mapping) a memory capability established shared
memory between sender and receiver
• IO capabilities
– Abstraction for access to IO ports, delegating IO caps allows
the receiving Task/Address space to access denoted IO
ports
51. Revised IPC
• OS services provided by (protected) user-level server
processes
– invoked by IPC
• seL4 IPC uses a handshake through endpoints:
– Transfer points without storage capacity
– Message must be transferred instantly
• One partner may have to block
• Single copy user ➞ user by kernel
• Two endpoint types:
– Synchronous (Endpoint)
– asynchronous (AsyncEP)
53. L4 History: V2 API
Original version by Jochen Liedtke (GMD) » 93–95
“Version 2” API
i486 assembler
IPC 20 times faster than Mach [SOSP 93, 95]
Proprietary code base (GMD)
Other L4 V2 implementations:
L4/MIPS64: assembler + C (UNSW) 95–97
Fastest kernel on single-issue CPU (100 cycles on MIPS R4600)
Open source (GPL)
L4/Alpha: PAL + C (Dresden/UNSW), 95–97
First released SMP version (UNSW)
Open source (GPL)
Fiasco (Pentium): C++ (Dresden), 97–99, ongoing development
Open source (GPL)
53
54. L4 History: X.1 API
Experimental “Version X” API
Improved hardware abstraction
Various experimental features (performance, security,
generality)
Portability experiments
Implementations
Pentium: assembler, Liedtke (IBM), 97–98
Proprietary
Hazelnut (Pentium+ARM), C, Liedtke et al (Karlsruhe), 98–
99
Open source (GPL)
54
55. L4 History: X.2/V4 API
“Version 4” (X.2) API, 02
Portability, API improvements
L4Ka::Pistachio, C++ (plus assembler “fast path”)
x86, PPC-32, Itanium (Karlsruhe), 02–03
Fastest ever kernel (36 cycles on Itanium, NICTA/UNSW)
MIPS64, Alpha (NICTA/UNSW), 03
Same performance as V2 kernel (100 cycles single issue)
ARM, PPC-64 (NICTA/UNSW), x86-64 (Karlsruhe), 03–04
Open source (BSD license)
55
57. L4Linux
where virtualization comes from
Linux source has two cleanly separated parts
Architecture dependent
Architecture independent
In L4Linux
Architecture dependent code is modified for L4
Architecture independent part is unchanged
L4 not specifically modified to support Linux
58. L4Linux
where virtualization comes from
Linux kernel as L4 user service
Runs as an L4 thread in a single L4 address space
Creates L4 threads for its user processes
Maps parts of its address space to user process threads
(using L4 primitives)
Acts as pager thread for its user threads
Has its own logical page table
Multiplexes its own single thread (to avoid having to
change Linux source code)
59. L4Linux
where virtualization comes from
The statically linked and shared C libraries are
modified
Systems calls in the lib call the Linux kernel using IPC
For unmodified native Linux applications, there is a
“trampoline”
The application traps
Control bounces to a user-level exception handler
The handler calls the modified shared library
Binary compatible
60. Performance is not acceptable!
L4Linux [Härtig et al., SOSP’97]
5–10% overhead on macro-BMs
6–7% overhead on kernel compile
MkLinux (Linux on Mach):
27% overhead on kernel compile
17% overhead with Linux in kernel
61. NICTA L4 / OKL4
L4 implementations on
embedded processors
ARM, MIPS
Wombat: portable
virtualized Linux for
embedded systems
ARMv4/v5 thanks to fast
context-switching tricks
62. LmBench shows near native
performance with OKL4 3.0
on ARMv7 target
NetPerf
fully-loaded CPU and the
throughput degradation of the
virtualized is only 3% and 4%.
63. Codezero hypervisor
• Optimized for latest ARM cores (Cortex-A9/A15)
• L4 microkernel based design, written from scratch
• Capability based dynamic resource management
• Container oriented driver model: no modifications
required for Linux
65. Micro-hypervisor
• Microvisor – OKL4 4.0
• Research projects such as NOVA, Coyotos, and
seL4
• Aided by virtualizable ISA
• Microhypervisor • VMM
– the “kernel” part – the “userland” part
– provides isolation – CPU emulation
– mechanisms, no policies – device emulation
– enables safe access to
virtualization features to
userspace
67. Advantage of NOA architecture:
Reduce TCB of each VM
• Micro-hypervisor provides low-level protection
domains
– address spaces
– virtual machines
• VM exits are relayed to VMM as IPC with selective
guest state
• one VMM per guest in (root mode) userspace:
– possibly specialized VMMs to reduce attack surface
– only one generic VMM implemented
69. Learned from NICTA L4
Process-orientation wastes RAM
Replaced by single-stack (event-driven) approach
Virtual TCB array wastes VAS, TLB entries
without performance benefits on modern hardware
Capabilities are better than thread UIDs
Provide uniform resource control model & avoid
covert channels
Also: IPC timeouts are useless
Replaced by block/poll bit
Virtualization is essential
Re-think kernel abstractions
70. Generic parts in L4
Memory management
Page-fault handling
IPC Path
Mapping database
Base of the kernel debugger
Most code of L4 abstractions
Thread and address-space management
71. Processor-specific parts in L4
Basic data types
Processor abstraction
IRQ control, sleep-mode support
Atomic operations
Page tables
Parts of L4 abstractions
Switch of CPU and FPU state
CPU specific optimizations
72. Hotspot in performance view
Processor modes
mapping to kernel mode and user mode, mode switches
Processor state
context switches
MMU/TLB
specific address-space/page-table code
Caches
specific cache-consistency handling
Cache consistency must be maintained (critical for
task switches)
IRQ controller
abstract controller interface
73. Generic optimizations
Optimized data structures and code
Minimize memory accesses
Minimize cache and TLB footprint
Minimize number of instructions for frequently used
operations
Optimizations often depend on knowledge of HW
Cache size / associativity
TLB size / features (e.g., supported page sizes)
Available instructions in the ISA