Top Banner
Betriebssystembaukästen – THINK und OSKit 1 Aspektorientierte Programmierung Betriebssystembaukästen THINK und OSKit Referent: Tobias Jordan
38

Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Sep 04, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 1

Aspektorientierte Programmierung

BetriebssystembaukästenTHINK und OSKit

Referent: Tobias Jordan

Page 2: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 2

Inhalt

● Motivation● OSKit

– Übersicht: Idee / Komponenten– Design und Implementierung– OSKit in der Praxis

● THINK– das THINK Framework– Implementierung: KORTEX– Praxisbeispiele

● Bewertung / Ausblick

Page 3: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 3

Motivation

● Immer wiederkehrende Aufgaben beim Betriebssystembau

● Betriebssystemkomponenten– Bootloader– Gerätetreiber– Debugging– Memory Management– ... und jetzt das eigentliche Betriebssystem

Page 4: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 4

Motivation (2)

● “Normale” Vorgehensweise– existierenden Code anderer Systeme anpassen– schwierig, da normalerweise viele

Abhängigkeiten bedacht werden müssen

Dateisystem

Synchronisation

MemoryManagement

swap() malloc()

lock()unlock()

Page 5: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 5

Motivation (3)

● Standardkomponenten– austauschbar– wiederverwendbar– sparen Zeit und Geld

● Wichtig:– Kapselung– Schnittstellenbeschreibung

Page 6: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 6

OSKit

● Flux Research Group, University of Utah– http://www.cs.utah.edu/flux/oskit– Fluke OS, basierend auf Mach und BSD

● OSKit: Sammlung von Betriebssystemkomponenten– Verwendbar als C-Libraries– COM-Schnittstellendefinitionen– einzelne Komponenten austauschbar

Page 7: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 7

OSKit - Struktur

Page 8: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 8

“Hello World” mit OSKit

#include <stdio.h>#include <oskit/clientos.h>#include <oskit/startup.h>#include <oskit/version.h>

int main(){        oskit_clientos_init();        oskit_print_version();        printf("Hello, World\n");        return 0;}

Page 9: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 9

OSKit – Design

● Libraries– werden wie gewohnt zum eigenen Code

dazugelinkt– unabhängig: benötigen keine anderen Pakete

● “Separabiltiy” - Separierbarkeit– “glue code” um das Austauschen einzelner

Komponenten zu ermöglichen– function overriding

● z.B. putchar() oder malloc()– dynamisches Binden

Page 10: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 10

COM Interfaces

● Sprachunabhängiges Protokoll zur Komponenten-/Schnittstellenbeschreibung

● Implementation Hiding● Interface Extension/Evolution

– verschiedene “Sichten” auf ein Objekt– Beispiel: bufio-Interface “erweitert” blkio-

Interface– “Open Implementation”: Implementierungs-

eigenschaften Teil eines erweiterten Interfaces

Page 11: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 11

OS

Kit

– d

ynam

isch

es B

ind

en

Page 12: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 12

Performance

● OSKit-Beispielanwendung: Messen von TCP Bandbreite und Latenzzeiten

Page 13: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 13

TCP Bandbreite

TCP-Bandbreite in Mbit/s, gemessen mittels ttcp zwischen zwei PentiumPro-Rechnern mit 200 MHz, verbunden durch 100 Mbps Ethernet.

Page 14: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 14

TCP Latenz

TCP Latenz in µs, gemessen mit rtcp

Page 15: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 15

Performance: Ergebnis

● Bandbreite:– Senden

● FreeBSD: mbuf, unzusammenhängend● Linux: skbuff, zusammenhängend● Umwandlung erfordert manchmal Umkopieren

– Empfangen● keine Probleme

● Latenz– glue code

Page 16: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 16

OSKit in der Praxis

● Fluke OS– treibende Kraft

● Standard ML– funktionale Programmiersprache mit Augenmerk

auf Nebenläufigkeit– benötigt Zugriff auf Context Switching Code– ML/OS auf OSKit-Basis innerhalb eines

Semesters fertiggestellt– ähnliche Projekte – ohne OSKit – brachten

jahrelang keine Ergebnisse

Page 17: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 17

OSKit in der Praxis (2)

● SR/OS● Java/OS

– Kaffe JVM auf OSKit “portiert”– “Hello World” nach 14 Stunden– nach 3 Wochen gleiche Funktionalität wie Suns

JavaOS● diverse andere Projekte

– Mungi, NILO, L4-Ports, Fiasco, Network Storage Corporation, MzScheme, Janos, (oskitdoom, GNU HURD)

Page 18: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 18

OSKit – Bewertung

● Pro:– Sehr einfache Handhabung

● siehe Praxisberichte

– Konzept der Trennung der Belange

● Kontra:– Teilweise zu „grobkörnig“

– Teilweise unflexibel

Page 19: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 19

THINK

● THink Is Not a Kernel● Framework zum komponentenbasierten Bau

von Betriebssystemkernen– Komponenten verschiedenster Größe– flexibles Bindungsmodell– Bindung zur Laufzeit

● KORTEX– Komponentenbibliothek auf THINK-Basis

Page 20: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 20

THINK – Konzepte

● Domains– Ressourcen-, Sicherheits- und Isolationsgrenzen

● Komponenten– Laufzeitobjekte

● “Interfaces” - Schnittstellen– werden in Java definiert

● Bindungen– Verbindungen zwischen Interfaces

● Namen

Page 21: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 21

THINK – Namen/Bindungen

Page 22: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 22

THINK – Implementierung

● In C aus Performancegründen

Page 23: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 23

THINK – Implementierung (2)

Page 24: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 24

THINK – Code Generatoren

● Open Interface Compiler– erstellt C-/Assembler-Code aus den Java-

Schnittstellenbeschreibungen● Off-line Configurator

– erstellt Kernel-Images aus UML-Beschreibungen– löst Abhängigkeiten zwischen Komponenten

Page 25: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 25

KORTEX

● Komponentenbibliothek für PowerPC– HAL-Komponenten

● Exceptions, MMU, PCI, IDE, Ethernet, Grafik

– Speicherverwaltung– Scheduler/Threads– Netzwerk

● Ethernet, ARP, IP, UDP, TCP, SunRPC

– Dateisysteme● ext2, NFS

Page 26: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 26

KORTEX (2)

● weitere Komponenten– Service-Komponenten

● dynamic linker/loader

● application loader

– Interaktions-Komponenten● stellen Bindungen bereit

– POSIX-Komponenten

Page 27: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 27

KORTEX – HAL Beispiel

Page 28: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 28

Ressourcenmanagement

● “Ressource Manager” teilt Ressourcen zu– Threads Scheduler– Netzwerksessions Protokolle

Page 29: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 29

Thread-/Schedulerkomponenten

● drei preemptive Scheduler– kooperativ, round-robin, prioritätsbasiert– basierend auf HAL-Exception-Komponente,

daher sehr performant

Page 30: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 30

Interaktions-Komponenten

● Lokale Bindung– für Komponenten derselben Domain

● Syscalls– Aufruf von Kerneldiensten aus Applikationen– Exception Exception-Handler Komponente

● Upcalls / Signale– Mitteilen von Kernel-Ereignissen an

Applikationen– Kernel Signal-Handler-Komponente

Page 31: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 31

Interaktions-Komponenten (2)

● Synchrones LRPC– Kommunikation zwischen Applikationen– benutzt Syscall und Upcall

● Remote RPC– Kommunikation zwischen Kerneln auf

verschiedenen Rechnern– benutzt Netzwerkkomponenten– kann durch Syscall/Upcall auch auf

Applikationsebene benutzt werden

Page 32: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 32

Pra

ktis

che

Um

setz

un

g

Page 33: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 33

Praktische Umsetzung (2)

vgl.: Linux 2.4 getpid-Syscall: 217 Zyklen

Page 34: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 34

Weitere Tests

● PlanP-Bridge– Sprache zur Programmierung aktiver

Netzwerkkomponenten

– Durchsatz des dedizierten KORTEX-Kerns besser als unter Solaris/Linux

● Kaffe – Java VM– Thread-Performanz besser als unter Linux

● Ausnutzung der HAL-Komponenten

Page 35: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 35

DOOM

Page 36: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 36

THINK/OSKit: Unterschiede

● THINK: Bindungskonzept– dadurch zusätzliche Abstraktionsebene

● OSKit verwendet viel “Legacy Code”, KORTEX eigene Komponenten– OSKit-Komponenten dadurch “grobkörniger”

● OSKit enthält keine speziellen Frameworks– KORTEX: Frameworks zu Kommunikation und

Ressourcenverwaltung

Page 37: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 37

Bewertung, Ausblick

● Zentrales Thema: Trennung der Belange– bei beiden Baukästen objektorientierter Ansatz– Aber: bei manchen querschneidenden Belangen

keine objektorientierte Kapselung möglich

Lösung: aspektorientierte Programmierung

Page 38: Betriebssystembaukästen THINK und OSKit - cs.fau.de fileBetriebssystembaukästen – THINK und OSKit 3 Motivation Immer wiederkehrende Aufgaben beim Betriebssystembau Betriebssystemkomponenten

Betriebssystembaukästen – THINK und OSKit 38

Quellen

● Webseiten der einzelnen Projekte:– The OSKit Project: http://www.cs.utah.edu/flux/oskit/

– THINK – Home Page: http://think.objectweb.org/

● Referenzen:– The Flux OSKit: A Substrate for OS and Language

Research– The Flux OS Toolkit: Reusable Components for OS

Implementation– THINK: A Software Framework for Component-based

Operating System Kernels