Betriebssysteme KU - Einführungstutorium

Ähnliche Dokumente
Betriebssysteme KU - Einführungstutorium

Betriebssysteme KU - Einführungstutorium

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming

Technische Informatik 1

Betriebssysteme Vorstellung

Echtzeit-Multitasking

Paging. Einfaches Paging. Paging mit virtuellem Speicher

Was machen wir heute? Betriebssysteme Tutorium 2. Organisatorisches. Frage 2.1.a. Theorieblätter Abgabe. Antwort. Probleme mit OS/161?

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Wie groß ist die Page Table?

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Technische Informatik 1 - Übung 3 3. & 4. November Philipp Miedl

Embedded-Linux-Seminare. Linux als Betriebssystem

Grundlagen Rechnerarchitektur und Betriebssysteme

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Kapitel VI. Speicherverwaltung. Speicherverwaltung

Bibliotheks-basierte Virtualisierung

Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008

Rechnernutzung in der Physik. Betriebssysteme

A Kompilieren des Kernels B Lineare Listen in Linux C Glossar Interessante WWW-Adressen Literaturverzeichnis...

Betriebssysteme I: Speicherverwaltung (Teil A: Adress-Bindung)

Die Linux Kernel Virtual Machine - Wo steht der Linux Hypervisor? 2. März 2008

Linux Paging, Caching und Swapping

Betriebssysteme BS-V SS Hans-Georg Eßer. Foliensatz V: Ulix: Interrupts und Faults Ulix: System Calls. Dipl.-Math., Dipl.-Inform.

Betriebssysteme Kap B: Hardwaremechanismen

Hardware Virtualisierungs Support für PikeOS

Smartphone Entwicklung mit Android und Java

Linker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft

Verteilte Systeme. Verteilte Systeme. 5 Prozeß-Management SS 2016

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Kernel Programmierung unter Linux. Programmierung von Kernelmodulen. Referent Klaus Ruhwinkel

Betriebssysteme Teil 10: Virtueller Speicher

Intel x86 Bootstrapping

Operating System Kernels

Threads and Scheduling

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

Prozesse und Threads. Peter Puschner Institut für Technische Informatik

Übersicht. Virtueller Speicher CPU-Modi Virtuelle Maschinen. ISM SS Teil 4/ProtectionI

Betriebssysteme KU - Bewertung A2 - WS 15/16

ARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH

Echtzeitprogrammierung und Echtzeitverhalten von Keil RTX. Frank Erdrich Semester AI 7

Entwicklungstand der GUI

Was machen wir heute? Betriebssysteme Tutorium 12. Organisatorisches. Frage 12.1.a. Programmieraufgaben Vorstellung. Antwort

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen

Vorlesung Betriebssysteme I

Im Kapitel Resourc Manager werden die verschiedenen Möglichkeiten der Überwachung von Messwerten eines Server oder Benutzers erläutert.

Konzepte von Betriebssystem Komponenten. Aufbau eines Modernen Betriebssystems (Windows NT 5.0)

User Level Device Driver am Beispiel von TCP

Betriebssysteme Kap A: Grundlagen

Assembler - Einleitung

Systemstart und Programmausführung

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

D i g i t a l l a b o r

Der Scheduler von Windows Konzepte und Strategien

Hardware-basierte Virtualisierung

Embedded OS für ARM Cortex Microcontroller

1.7 Assembler Programmierung

Domänenanalyse Threadverwaltung/Scheduling

Virtuelle Maschinen Konzept von VMWare

Grundlagen von Python

RealTime Linux. Paul Seidel Seminar Prozessteuerung und Robotik WS 08/09 Lehrstuhl BS und Middleware Prof. Polze Hasso-Plattner-Institut Potsdam

Betriebssysteme 13/14

Cloud Management und Automatisierung mit Open Source Software. Michael Eichenberger Time to Market 24. Mai 2013

Einführung in die technische Informatik

Projekt für Systemprogrammierung WS 06/07

Betriebssystemschichten ( )

C. Betriebssystem-Strukturen C.1 Monolithische Betriebssysteme

Windows CE. Process Control and Robotics. Fabian Garagnon

Performance Messungen von FreeRTOS und

Vorlesung Rechnerarchitektur. Einführung

Linux Memory Management für MySQL

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur

Linux Kernel Hacking

oscan ein präemptives Echtzeit-Multitasking-Betriebssystem

Hardware-basierte Virtualisierung

Linux wird echtzeitfähig: RT-Extension vs. PREEMPT_RT

Technische Referenz - Q&A (Fragen und Antworten) TSD-QA89 (2011/11)

Die L4-Mikrokern. Mikrokern-Familie. Hauptseminar Ansätze für Betriebssysteme der Zukunft. Michael Steil. Michael Steil

3. Unix Prozesse. Betriebssysteme Harald Kosch Seite 57

6.Vorlesung Betriebssysteme Hochschule Mannheim

HYPER - THREADING HYPER-THREADING TECHNOLOGY SERGE FOPOUSSI. Serge Fopoussi UNIVERSITÄT BREMEN SEMINAR RECHNERARCHITEKTUR. Prof. Dr.

Übung zu Grundlagen der Betriebssysteme. 13. Übung

Speicherverwaltung (Swapping und Paging)

Betriebssystem? Übersicht. Ziele. Grundlagen. Das ist nur die Oberfläche... Wissen, was man unter einem Betriebssystem versteht

Systemsoftware (SYS)

Kapitel 6 Speicherverwaltung Seite 1 zum Teil nach: Silberschatz&Galbin, Operating System Concepts, Addison-Wesley)

Realisierung: virtueller Prozessor: der reale Prozessor wird periodisch dem Programm zugewiesen Im Prozessor: durch Task-Status Segment (TSS)

Übung zur Einführung in die digitale Signalverarbeitung

Neues vom STRIP Forth-Prozessor

x86 Open Source Virtualisierungstechniken Thomas Glanzmann

Funktionskapselung in Steuergeräten

Transkript:

Betriebssysteme KU - Einführungstutorium SWEB-Tutoren 5. Oktober 2008

1 Grundlagen 2 SWEB 3 Kernel Basics Memory Management Details 4 Userspace 5 Hacking 6 Beispiele 7 Assignment 0

Aufgaben eines Betriebssystems Ressourcenverwaltung Speicher CPU-Zeit (Scheduling - welcher Thread kommt wann dran) I/O (z.b. Kommunikation mit Keyboard, Maus, Festplatte,...) Interrupts Schnittstelle zwischen Applikation ( Userprogramm ) und Hardware Zugriff auf Festplatte/Dateisystem Einlesen von gedrückten Tasten einer Tastatur Erzeugung weiterer Prozesse Ausführen von Binaries etc Realisierung über System Calls genauere Erklärung in VO

Schon Wieder Ein Betriebssystem SWEB Mercurial http://hg.sharesource.org/sweb SWEB Bug Tracker http://sweb.sharesource.org/ Book of SWEB http://www.iaik.tugraz.at/content/teaching/ bachelor_courses/betriebssysteme/practicals/ Newsgroup: Alles was die Übung angeht in Bezug auf SWEB news://news.tugraz.at:119/tu-graz.lv.bs.sweb

SWEB Installation 1 Klonen von SWEB $ hg clone http : / / hg. sharesource. org/sweb 2 Initialisieren des make Systems (auch beim Hinzufügen von neuen Dateien!) $ cmake. 3 bauen von SWEB $ make 4 Starten mit bochs $ make bochs

SWEB-Kernel geschrieben in Assembler, C, C++ Aufteilung in architekturabhängigen Code (x86) sweb/arch allgemeinen Code sweb/common weder Exceptions noch STL verwendbar Ersatz: Template-Datenstrukturen Array List Map etc common/include/util

Memory-Management im SWEB-Kernel Paging physikalische Speicher in Seiten fixer Größe (4kiB bzw. 4MiB) unterteilt Seiten vom PageManager verwaltet Speicher ist virtuell: Adressen laufen durch Memory-Management-Unit (=MMU) Mappen von virtuellen auf physikalische Adressen dynamische Speicherverwaltung im Kernel: KernelMemoryManager (=KMM) new/delete/new[]/delete[] rufen die Funktionen des KMM auf -> können ohne Probleme verwendet werden (nur im Kernel!)

Memory Aufteilung

Protection Betriebssystemfunktionalität muss vor bösen oder fehlerhaften Userprogrammen geschützt werden ausführbare Instruktionen eingeschränkt Zugriff nur auf bestimmten Speicherbereich Kernel: privilege level 0 Userspace: privilage level 3 wenn besondere Funktionalität benötigt -> Kernel fragen : System Call

System Calls für Userprogramme normale C-Libraryfunktionen über Trapdoor Sprung in den Kernel Space in SWEB: Interrupt Context Switch in den Kernel Mode Abarbeitung der gewünschten Routine Rücksprung in den Usermode

Threading verschieden Dienste/Programme wollen gleichzeitig ausgeführt werden -> Multithreading Thread: Ausführungsstrang Klasse Thread Userprocess assoziiert mit einem Binary (durch Loader geladen) eigener Speicherbereich -> Pages eigener Stack für Userspace (eine Page) ein (oder mehrere?) Ausführungsstränge (Threads) Klasse UserProcess

Interrupts Hardware vs. Software Interrupts Ablauf Unterbrechung des aktuellen Programmablaufes Sicherung des aktuellen Zustandes Abarbeitung des Interrupt Handlers Rückkehr zum vorherigen Programmablauf In SWEB verwendet für Timer PageFault System Call yield etc.

Userspace geschrieben in C (keine Klassen etc.) es gibt keine dynamische Speicherverwaltung (malloc/free) in sweb/userspace C-library sweb/userspace/libc bietet Funktionen wie printf, scanf, putchar, getchar, atoi,... Ort für den Userspace-Code von System Calls Anwenderprogramme sweb/userspace/tests Ort für Testprogramme

Hacking SWEB Exceptions gibt es nicht Klassen ableiten kein Problem Statische Objekte: keine Initialisierung besser: Singleton keine FPU im Kernel Interrupts Abschalten: nein! höchstens es geht nicht anders Stack Begrenzung 8kiB/4kiB keine Rekursionen! debug Outputs

Beispiel Page Manager: Wie bekommt man eine freie Seite? Hält Bitmap für alle Pages Anforderung einer freien Seite PageManager : : getfreephysicalpage Freigeben einer Seite PageManager : : freepage wird z.b. verwendet von Loader : : loadonepagesafebutslow

Beispiel: kurzer Blick auf Kernel Memory Manager Hält double-linked list für allokierbaren sowie allokierten Speicher im Kernel Anforderung eines Speicherbereichs KernelMemoryManager : : allocatememory Freigeben einer Seite KernelMemoryManager : : freememory

Beispiel System Call: Lesen von der Tastatur read wird indirekt vom Userspace Programm stdin_test.c aufgerufen: 1 stdin test.c 2 scanf.c: scanf 3 scanf.c gets 4 read.c read 5... 6 Syscall::read

Beispiel Threading: Laufende Threads? Anzeigen der Threadliste mit F12 Erstellen eines neuen Threads in main.cpp Ableiten von der Klasse Thread überladen der Run Methode Hinzufügen zur Liste der laufenden Threads Scheduler : : instance() >addnewthread

Beispiel Interrupts: InterruptUtils jedem Interrupt wird eine Funktion zugewiesen, die ausgeführt werden soll, wenn dieser Auftritt. siehe: arch_interrupts.s InterruptUtils.cpp zum Beispiel: ERROR_HANDLER (0,# DE : Divide by Zero )

Assignment 0 jeder hat eine Frage auszuarbeiten http://www.iaik.tugraz.at/content/teaching/ bachelor_courses/betriebssysteme/practicals/ Abgabe: in einer Woche (Anwesenheitspflicht) Leistung: mündliche Präsentation ca. 2 bis 3 min Tafel Source Code wichtig: finden aller benötigten Source Dateien Verstehen aller relevanten Funktionen und Methoden Ablauf verstanden haben und erklären können