KIT – The cooperation of Forschungszentrum Karlsruhe GmbH and Universität Karlsruhe (TH) SYSTEM ARCHITECTURE GROUP, KARLSRUHE UNIVERSITY A Microkernel.

Slides:



Advertisements
Similar presentations
Unmodified Device Driver Reuse and Improved System Dependability via Virtual Machines J. LeVasseur V. Uhlig J. Stoess S. G¨otz University of Karlsruhe,
Advertisements

Slide 19-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 19.
Threads, SMP, and Microkernels
ASU Real-Time Operating System. Supervised by: Dr. Mohammed Sobh.
Chorus and other Microkernels Presented by: Jonathan Tanner and Brian Doyle Articles By: Jon Udell Peter D. Varhol Dick Pountain.
ECE 526 – Network Processing Systems Design Software-based Protocol Processing Chapter 7: D. E. Comer.
CS 550 Comparative Operating Systems
Contiki A Lightweight and Flexible Operating System for Tiny Networked Sensors Presented by: Jeremy Schiff.
Embedded Real-time Systems The Linux kernel. The Operating System Kernel Resident in memory, privileged mode System calls offer general purpose services.
1 Network Packet Generator Characterization presentation Supervisor: Mony Orbach Presenting: Eugeney Ryzhyk, Igor Brevdo.
Improving IPC by Kernel Design Jochen Liedtke Shane Matthews Portland State University.
Figure 1.1 Interaction between applications and the operating system.
OS Organization. OS Requirements Provide resource abstractions –Process abstraction of CPU/memory use Address space Concurrency Thread abstraction of.
DNS Client API. Utilizing DNS Functionality Baseline Application Kernel, Stack, BSP DNS Integral DNSAddServer() DNSRemoveServer() DNSGetServers() DNSgethostbyname()
Stack Management Each process/thread has two stacks  Kernel stack  User stack Stack pointer changes when exiting/entering the kernel Q: Why is this necessary?
1 Design and Performance of a Web Server Accelerator Eric Levy-Abegnoli, Arun Iyengar, Junehwa Song, and Daniel Dias INFOCOM ‘99.
1 Unmodified Device Driver Reuse and Improved System Dependability via Virtual Machines Joshua LeVasseur, Volkmar Uhlig, Jan Stoess, and Stefan G¨otz University.
CS533 Concepts of Operating Systems Jonathan Walpole.
LWIP TCP/IP Stack 김백규.
Chapter 2: Operating-System Structures. 2.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Jan 14, 2005 Operating System.
LWIP TCP/IP Stack 김백규.
Three fundamental concepts in computer security: Reference Monitors: An access control concept that refers to an abstract machine that mediates all accesses.
Kernel, processes and threads Windows and Linux. Windows Architecture Operating system design Modified microkernel Layered Components HAL Interacts with.
IT COOKBOOK Windows Network Programming. Chapter 01. Intro. to Network and Socket Programming.
Copyright © George Coulouris, Jean Dollimore, Tim Kindberg This material is made available for private study and for direct.
Windows NT Operating System. Windows NT Models Layered Model Client/Server Model Object Model Symmetric Multiprocessing.
Advanced Design and System Patterns The Microkernel Pattern.
Slide 3-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 3.
Increasing Web Server Throughput with Network Interface Data Caching October 9, 2002 Hyong-youb Kim, Vijay S. Pai, and Scott Rixner Rice Computer Architecture.
4061 Session 25 (4/17). Today Briefly: Select and Poll Layered Protocols and the Internets Intro to Network Programming.
Scott Ferguson Section 1
1 Choices “Our object-oriented system architecture embodies the notion of customizing operating systems to tailor them to support particular hardware configuration.
Intel Research & Development ETA: Experience with an IA processor as a Packet Processing Engine HP Labs Computer Systems Colloquium August 2003 Greg Regnier.
Porting IPN2220AP on Embedded System SW Engineer:Yeh, Chih Hao, Embedded System Inprocomm, Inc, Taiwan.
Networking Implementations (part 1) CPS210 Spring 2006.
A. Frank - P. Weisberg Operating Systems Structure of Operating Systems.
MK++ A High Assurance Operating System Kernel Shai Guday David Black.
1.1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Lecture 2: OS Structures (Chapter 2.7)
The Performance of Micro-Kernel- Based Systems H. Haertig, M. Hohmuth, J. Liedtke, S. Schoenberg, J. Wolter Presentation by: Tim Hamilton.
Linux Architecture Overview.
CENG334 Introduction to Operating Systems 1 Erol Sahin Dept of Computer Eng. Middle East Technical University Ankara, TURKEY URL:
1 Lab. 6 Communication Between DSP and PC  OSI seven layers:  App –HTTP –FTP  Transport –TCP –UDP  Network –IP  Data Link –EMAC  Physical –PHY *
System Programming Basics Cha#2 H.M.Bilal. Operating Systems An operating system is the software on a computer that manages the way different programs.
The L4 Microkernel Presented by: Martin Roehricht Nirav Mehta Matthew Garland Chris Schulze.
Overview of today’s lecture Major components of an operating system Structure and internal architecture of an operating system Monolithic Vs Micro-kernels.
Tgt: Framework Target Drivers FUJITA Tomonori NTT Cyber Solutions Laboratories Mike Christie Red Hat, Inc Ottawa Linux.
SOCKET PROGRAMMING Presented By : Divya Sharma.
Introduction to Operating Systems Concepts
Computer System Structures
Computer System Structures
LWIP TCP/IP Stack 김백규.
Lecture 4: Operating System Structures
Operating System Structure
Unit OS2: Operating System Principles
Network Architecture Introductory material
KERNEL ARCHITECTURE.
Review of Important Networking Concepts
OS Organization.
QNX Technology Overview
Sarah Diesburg Operating Systems COP 4610
Mid Term review CSC345.
Chapter 1 Introduction to Operating System Part 5
B.Ramamurthy Chapter 2 : Appendix
Operating System 4 THREADS, SMP AND MICROKERNELS
Linux Architecture Overview.
Prof. Leonardo Mostarda University of Camerino
Operating Systems: A Modern Perspective, Chapter 3
OS Organization.
System Calls System calls are the user API to the OS
Operating Systems Structure
Presentation transcript:

KIT – The cooperation of Forschungszentrum Karlsruhe GmbH and Universität Karlsruhe (TH) SYSTEM ARCHITECTURE GROUP, KARLSRUHE UNIVERSITY A Microkernel API for Fine-grained Decomposition Sebastian Reichelt, Jan Stoess, Frank Bellosa

Component model Interfaces Microkernel OS Decomposition Sebastian Reichelt, Jan Stoess, Frank Bellosa A Microkernel API for Fine-grained Decomposition 2/11 Kernel Packets MicrokernelMicrokernel Threads Address spaces IPC Threads Address spaces IPC TCP/IP stack Device driver Threads IPC Address spaces Data location? Data transfer? Split state? System knowledge? Data location? Data transfer? Split state? System knowledge? Ease of development? Reuse? Granularity? Ease of development? Reuse? Granularity?

Microkernel Our Approach Sebastian Reichelt, Jan Stoess, Frank Bellosa A Microkernel API for Fine-grained Decomposition 3/11 Packets MicrokernelMicrokernel Component model TCP/IP stack Device driver Interfaces Function calls Servers Local objects Function calls Local objects References Servers References Component model Data location? Data transfer? Split state? System knowledge? Data location? Data transfer? Split state? System knowledge?

Designing for Decomposition Sebastian Reichelt, Jan Stoess, Frank Bellosa A Microkernel API for Fine-grained Decomposition 4/11 Server Existing microkernels: Microkernel Threads Address spaces IPC Create thread Send IPC Receive IPC Task Server Our microkernel: Component model Servers Local objects References Provided interface Required interfaces Threading options Component

Reference Management Sebastian Reichelt, Jan Stoess, Frank Bellosa A Microkernel API for Fine-grained Decomposition 5/11 Microkernel

Reference Management Sebastian Reichelt, Jan Stoess, Frank Bellosa A Microkernel API for Fine-grained Decomposition 6/11 open connection TCP/IP stack TCP connection send packet Client Microkernel

Prototype Multi-server OS (~4 man-months) Basic servers (memory, scheduling,...) Drivers (standard PC hardware, PCI, Ethernet) Decomposed TCP/IP stack Linux ABI implementation (partial) Kernel (~2 man-months) IA-32 implementation Servers in kernel mode Sebastian Reichelt, Jan Stoess, Frank Bellosa A Microkernel API for Fine-grained Decomposition 7/11 Linux lwIP Evaluation: granularity, reuse, performance

Granularity Sebastian Reichelt, Jan Stoess, Frank Bellosa A Microkernel API for Fine-grained Decomposition 8/11 MinimumMaximumAverage Lines of code Bytes Linux ABI layer As fine-granular as desired Size of a server:

Reuse Sebastian Reichelt, Jan Stoess, Frank Bellosa A Microkernel API for Fine-grained Decomposition 9/11 RTL-8139 driver ported from Linux (~1 man-month): lines of code e.g. calls via interfaces instead of directly queue-based packet processing Reuse possible with little effort

Performance Sebastian Reichelt, Jan Stoess, Frank Bellosa A Microkernel API for Fine-grained Decomposition 10/11 OperationPentium 4Core 2 Cross-component call/return (kernel mode) 4623 Function call/return119 cycles OperationPentium 4Core 2 Cross-component call/return (inter-AS) L4Ka round-trip IPC Low performance overhead

Conclusion Microkernel APIs enforce system structure Existing APIs  distributed systems Development, reuse, and granularity problems Our approach: component model as API More general abstractions related to decomposition (servers, interfaces, calls, references, local objects,...) Derived microkernel design Networking-capable prototype OS Good granularity and reuse, promising performance Sebastian Reichelt, Jan Stoess, Frank Bellosa A Microkernel API for Fine-grained Decomposition 11/11 Demo today

Example Sebastian Reichelt, Jan Stoess, Frank Bellosa A Microkernel API for Fine-grained Decomposition File VFS::getFile(const char *name, Size nameSize) { for (unsigned int i = 0; i < fsCount; i++) { if (fs[i].matches(name, nameSize)) { return fs[i].ref->getFile(name + fs[i].nameSize, nameSize - fs[i].nameSize); } THROW(EFileNotFound); } File VFS::getFile(const char *name, Size nameSize) { for (unsigned int i = 0; i < fsCount; i++) { if (fs[i].matches(name, nameSize)) { return fs[i].ref->getFile(name + fs[i].nameSize, nameSize - fs[i].nameSize); } THROW(EFileNotFound); } automatic reference counting automatic locking/unlocking