Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows...

120
Vorlesung Betriebssysteme I Thema 1: Einführung Robert Baumgartl 12. Oktober 2015 1/34 Organisatorisches 2/0/2, d. h., 90’ Vorlesung und 90’ Praktikum pro Woche Vorlesung dienstags 15:10 Uhr, Z 211 Lehrender: Prof. Robert Baumgartl Kontakt: [email protected] dem Subject bitte „[BS1]“ voranstellen Tel. 462 2510 Raum Z 357 Praktikum in Linux-Laboren (Z 136c/Z 146a) Betreuung durch mich und Laboringenieure (Herr Schubert, Herr Paul) Start: 12. 10. 2015 Prüfung: Klausur, 90’, Voraussetzung: Beleg 2/34

Transcript of Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows...

Page 1: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Vorlesung Betriebssysteme IThema 1: Einführung

Robert Baumgartl

12. Oktober 2015

1 / 34

Organisatorisches

I 2/0/2, d. h., 90’ Vorlesung und 90’ Praktikum pro WocheI Vorlesung dienstags 15:10 Uhr, Z 211I Lehrender: Prof. Robert BaumgartlI Kontakt:

I [email protected] dem Subject bitte „[BS1]“ voranstellenI Tel. 462 2510I Raum Z 357

I Praktikum in Linux-Laboren (Z 136c/Z 146a)I Betreuung durch mich und Laboringenieure (Herr Schubert,

Herr Paul)I Start: 12. 10. 2015

I Prüfung: Klausur, 90’, Voraussetzung: Beleg

2 / 34

Page 2: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Vorkenntnisse

Bitte um Handzeichen – Wer hat schonI mit Windows gearbeitet?I mit Linux (o. a. Unix) gearbeitet?I einen der Editoren vi oder emacs genutzt?I in C programmiert?I make eingesetzt?I fork() beim Programmieren benutzt?I in der Open-Source-Community mitgewirkt?I einen Treiber geschrieben?

3 / 34

Vorkenntnisse II

Wer weiß, was das macht:

char *foo(char *dest, const char *src){

while(*dest++ = *src++);}

. . . und das?

bash$ :(){ :|:&};:

(Vorsicht! Nicht ausprobieren!)

4 / 34

Page 3: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Wozu befassen wir uns mit Betriebssystemen?... es gibt doch Windows!

Einige Gedanken:I Grundlagenfach der InformatikI BS gehören zu den komplexesten Softwaresystemen

überhaupt!I aktiver Forschungsgegenstand

I Betriebssysteme-SicherheitI SkalierbarkeitI SensornetzeI Echtzeitbetriebssysteme

I Linux!I und zuguterletzt: Wir wollen doch kompetent die Frage

beantworten, ob Linux oder Windows besser ist?!

5 / 34

Vorläufige Themenübersicht

1. Einführung2. Linux in a Nutshell3. Dateisystem4. Grundlegende Begriffe, Teil 25. Aktivitäten6. Kommunikation7. Scheduling8. Threads (Aktivitäten, die zweite)9. Synchronisation

7 / 34

Page 4: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Einige Aspekte von Betriebssystemen

I BedienungI AdministrationI Programmierung für BetriebssystemeI Programmierung von BetriebssystemenI Abstraktionen für Aktivitäten (Prozesse, Threads,

Coroutinen, Fibers, Tasks)I FehlertoleranzI Security & SafetyI Forensik

8 / 34

Ziel des Kurses

Vermittlung von vorwiegend praktischen Kenntnissen zuI Nutzung elementarer WerkzeugeI Automatisierung von BedienhandlungenI Interaktion zwischen Applikationen und

Betriebssystem(en)I Struktur und Vorgängen innerhalb von BetriebssystemenI Unix-artigen und Windows-Betriebssystemen

9 / 34

Page 5: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Eine kurze Geschichte der . . . BetriebssystemeAndrew Tanenbaum unterscheidet 4 Epochen

1. 1945-55 – ElektronenröhrenI keine Betriebssysteme

2. 1955-65 – TransistorenI Mainframes – kommerzielle ComputerI Batchsysteme (Ziel: maximale Rechnerauslastung)

3. 1965-75 – niedrig integrierte SchaltkreiseI IBM System/360→ OS/360 (Ziel: Kompatibilität)I Multiprogramming (mehrere Ausführungseinheiten

gleichzeitig)I SpoolingI Timesharing (Ziel: Reduktion der Systemantwortzeit)I MULTICS (ambitioniert, aber erfolglos)I Minicomputer (kleiner als Mainframe; DEC PDP-1. . . -11)I UNIX (portabel, offen, kollaborativ entwickelt)

10 / 34

Eine kurze Geschichte der . . . BetriebssystemeAndrew Tanenbaum unterscheidet 4 Epochen

4. 1975-heute — hoch integrierte SchaltkreiseI 1976: Prozessor Zilog Z80→ CP/MI etwa ab 1977: Homecomputer (Apple II, C64, . . . )I 1979: Prozessor i8088; PCI 1980: QDOS→ MS-DOSI 1984: Apple Macintosh→ MacOS (GUI)I 1985: Microsoft Windows 1.0I 1992: Linux

11 / 34

Page 6: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Plattformen fürs „Personal Computing“

I verkaufte „PersonalComputing Units“ proJahr

I Quelle:http://twitpic.com/87nbjj

12 / 34

GUI von MacOS (1984)

(http://upload.wikimedia.org/wikipedia/en/5/50/Apple_Macintosh_Desktop.png)

13 / 34

Page 7: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Betriebssysteme

Es gibt:I Windows-Familie (2.0→ 10)I LinuxI MacOS X

... das wars, oder?I MS-DOS, RTEMS, QNX, FreeBSD, SymbianOS, PalmOS,

RTAI, HP-UX, BeOS, Minix, Chorus, L4, Mach, Amoeba,OS/390, DCP, TOS, CP/M, VMS, eCos, Contiki, OS/2 . . .

I vgl. http://de.wikipedia.org/wiki/Liste_der_Betriebssysteme

14 / 34

Betriebssysteme

Es gibt:I Windows-Familie (2.0→ 10)I LinuxI MacOS X

... das wars, oder?I MS-DOS, RTEMS, QNX, FreeBSD, SymbianOS, PalmOS,

RTAI, HP-UX, BeOS, Minix, Chorus, L4, Mach, Amoeba,OS/390, DCP, TOS, CP/M, VMS, eCos, Contiki, OS/2 . . .

I vgl. http://de.wikipedia.org/wiki/Liste_der_Betriebssysteme

15 / 34

Page 8: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

UNIX

I . . . ist kein Betriebssystem, sondern eine ganze FamilieI Name ist ein Wortspiel aus dem Vorgänger „Multics“ und

„unique“I zusammen mit der Programmiersprache C in den 70er

Jahren entwickeltI einige Vertreter: *BSD, System V, Linux, HP-UX, AIX,

Solaris, MinixI sogar Microsoft hat ein UNIX entwickelt: XENIX (es ist

aber schon lange tot)I der zugehörige Standard heißt POSIXI beliebt vor allem im Serverbereich (aber nicht nur!)I Nutzer haben mit Vorurteilen zu kämpfen . . .

16 / 34

Lizensierungsaspekte

2 grundlegende Ideen:I Closed Source: Quellcode ist geheim,

„Betriebsgeheimnis“, steht i. a. nur dem Hersteller zurVerfügung

I Open Source: Quellcode steht prinzipiell jedem zurVerfügung→ kann modifiziert und weiterverteilt werden(und soll dazu ermuntern)

18 / 34

Page 9: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Kommerzielle Lizenzen

I kann (muss aber nicht) Einblick in Quellcode umfassen(z. B. für nichtkommerzielle Zwecke)

I erfordert meist Vertrag („End User License Agreement“(EULA))

I typische EULAs sind im EU-Raum jedoch unwirksam (zumGlück)

Kosten für:I EntwicklungswerkzeugeI Bibliotheken (z. B. für Protokollstacks oder zum Debugging)I Royalties: pro Installation auf ZielgerätI (Schulung der Entwickler)

19 / 34

GNU General Public License (GPL)

I Richard Stallman, 1989I Kurzform:

1. Das Werk darf für beliebige Zwecke verwendet werden(auch kommerziell).

2. Das Werk darf beliebig weitergegeben werden, kostenlosoder kostenpflichtig. Der Quelltext (auch eigenerModifikationen) ist mitzuliefern.

3. Das Werk darf beliebig modifiziert werden.4. Es dürfen keine Einschränkungen an diesen Regeln

erfolgen.I enthält sog. starkes „Copyleft“: erzwingt die

Weiterverbreitung von aus freien Werken abgeleitetenWerken→ niemand kann die Verbreitung einesursprünglich freies Werk verhindern („Virulenz“)

I wichtigste Open-Source-LizenzI Beispiele: Linux, eCos, GCC, emacs, vi

20 / 34

Page 10: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Nachteile der GPL

I untersagt das Vermischen von GPL-Code mit Code, derunter inkompatibler Lizenz steht (also alle closed source,aber auch freie Software)

I → Binärtreiber bestimmter Grafikkarten sind eigentlichillegal im Linux-Kern (geduldet; „tainted kernel“)

I erschwert die Migration zu freier Software, da inUnternehmen existierende kommerzielle Software nichtohne weiteres in diese integriert werden kann

I Verletzungen werden verfolgt! (gpl-violations.org)

21 / 34

Wozu benötigen wir nun ein Betriebssystem?

1. Bereitstellen von Diensten und dafür notwendigenAbstraktionen (z. B. „Prozess“, „Datei“, „Gerätetreiber“u. v. a. m.)

2. Ressourcenverwaltung inklusive Protokollierung3. Koordinierung paralleler Abläufe4. Basis für Schutz und Sicherheit

22 / 34

Page 11: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Klassifizierung von Betriebssystemen

Kriterium: NutzeranzahlI Single-User-BSI Multi-User-BS

Kriterium: Anzahl unabhängiger AktivitätenI Single-Tasking-BSI Multi-Tasking-BS

Kriterium: Kommunikation mit der UmweltI BS zur Stapelverarbeitung (Batchbetrieb)I interaktives BSI BS für autonome Systeme

23 / 34

Klassifizierung von Betriebssystemen II

Kriterium: VerteilungI lokales BSI verteiltes BS

Kriterium: Zielarchitektur/EinsatzzweckI ServerbetriebssystemI eingebettetes BetriebssystemI EchtzeitsystemI Mainframe-BSI BS für Personal ComputerI BS für Smart CardI BS zur Ausbildung/Lehre

24 / 34

Page 12: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Apropos: welches Betriebssystem wird eingebetteteingesetzt?

Quelle: http://www.eetimes.com/document.asp?doc_id=126308325 / 34

Interaktion mit dem Betriebssystem

Paradigmen:I vorwiegend textorientiert (Konsole, Shell,

Eingabeaufforderung)I grafische Oberfläche (Windows, KDE, Windowmaker)

Die Frage Was ist besser? führt unausweichlich zu ÄrgerI keine Frage des Betriebssystems sondern der

persönlichen Vorliebe

26 / 34

Page 13: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Modellierung und Strukturierung von BS

Problem: BS gehören zu den komplexesten Softwaresystemenüberhaupt!→ durch Lesen des Programmcodes kaum zuverstehenTechnik: Durch Reduktion der möglichenKommunikationsbeziehungen zwischen KomponentenÜbersicht schaffen.

27 / 34

Modell 1: Monolithisches System

I Andrew Tanenbaum: “The Big Mess”I jede Routine, Funktion, . . . darf jede andere im System

rufen unübersehbare Vielfalt potentiellerKommunikationsbeziehungen

I kein Information HidingI BS = Sammlung von FunktionenI typisch für „historisch gewachsene“ SystemeI effizient!

28 / 34

Page 14: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Modell 2: Geschichtetes System

I Kommunikation nur zwischen Instanzen benachbarterSchichten

I Beispiel: OSI-Schichtenmodell der ISO fürKommunikationsprotokolle (7 Schichten)

I leider kein vergleichbarer Standard in der BS-Technologieetabliert

Steuerungshierarchie

DiensthierarchieApplikation

Hardware

Betriebssystem−Kern

Gerätetreiber

Dateisystem

Abbildung: Beispiel für ein geschichtetes System

I Gefahr der Ineffizienz29 / 34

Variante: quasikonsistente Schichtung

I Schichtung nicht zwingend:

"Betriebssystem"

Applikationen

Hardware

I/OBIOS

DOS

COMMANDApplikation

CPU

Abbildung: Quasikonsistente Schichtung im MS-DOS

30 / 34

Page 15: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Beispiel für ein komplex geschichtetes ModellMark Russinovitch et al: Windows Internals. 6th ed., Microsoft Press, 2012, S. 47

CHAPTER 2 System Architecture 47

Windows, and Chapter 4 details management mechanisms such as the registry, service processes, and Windows Management Instrumentation . Other chapters explore in even more detail the internal structure and operation of key areas such as processes and threads, memory management, security, the I/O manager, storage management, the cache manager, the Windows file system (NTFS), and networking .

System Processes

Services Applications EnvironmentSubsystems

Windows

SUA

Windows DLLs

NTDLL.DLL

System Service Dispatcher

(Kernel mode callable interfaces)

I/Omanager

Plug and Playm

anager

Object

manager

Cachem

anager

Securityreferencem

onitor

Mem

orym

anager

Processm

anager

Configurationm

anager

Advanced localprocedure

call

WindowsUSER,GDI

Graphicsdrivers

Hardware abstraction layer (HAL)

Hardware interfaces (buses, I/O devices, interrupts,interval timers, DMA, memory cache control, etc.)

Systemthreads

Userapplication

Subsystem DLLs

Device and filesystemdrivers

Kernel

User mode

Kernel mode

Windows DLLsWindows DLLsWindows DLLsWindows DLLs

Service host

Windows DLLs

Print spooler

Sessionmanager

Windows DLLs

Local sessionmanager

Windows DLLs

Service control manager

Local SecurityAuthority

Windows DLLs

Windows DLLs

Winlogon

Windows DLLs

Wininit

FIGURE 2-3 Windows architecture

31 / 34

Modell 3: Client-Server-Modell

I Diensterbringung durch eine zentrale InstanzI Client wendet sich mit Dienst-Wunsch an ServerI Server erbringt gewünschten Dienst, wenn möglichI Beispiele: Speicherverwaltung im BS, NTP-Server,

Drucker-Server, . . .I sog. Mikrokern-Architekturen wenden das Prinzip

konsequent auf BS-Komponenten an

32 / 34

Page 16: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Zusammenfassung: Was haben wir gelernt?

1. Es gibt viele BS2. Was ist UNIX?3. Lizensierung: Closed Source vs. Open Source4. Klassifikationskriterien von BS5. Modellierung/Strukturierung von BS:

I monolithischI geschichtetI Client-Server-Beziehungen

33 / 34

Literaturvorschläge

I Andrew S. Tanenbaum: Modern Operating Systems.Pearson Education

I Richard Stallings: Operating Systems. Fifth Edition,Prentice-Hall

I Dokumentation der Geschichte desWindows-Betriebssystems: http://www.winhistory.de/

I Ellen Siever, Stephen Figgins, Robert Love, ArnoldRobbins: Linux in a Nutshell. Sixth Edition, O’Reilly, 2009

I Cameron Newham: Learning the Bash Shell. Third Edition,O’Reilly, 2005

34 / 34

Page 17: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Vorlesung Betriebssysteme IThema 2: Linux in a Nutshell

Robert Baumgartl

05. 11. 2013

1 / 24

Linux

I bekanntestes Open-Source-Projekt weltweitI Multiuser-Multitasking-BetriebssystemI Unix-artigI Schöpfer: Linus TorvaldsI primär kommandoorientiert, aber auch mit vielen

(schönen) bunten Oberflächen bedienbarI außerordentlich gut skalierbarI für sehr viele Plattformen verfügbar (Auswahl): IA-32,

IA-64, Sun SPARC, Motorola 68000, PowerPC, ARM, IBMS/390, MIPS, HP PA-RISC, Atmel AVR32, AD Blackfin

2 / 24

Page 18: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Im Anfang war ein Posting . . .

From: [email protected] (Linus Benedict Torvalds)Newsgroups: comp.os.minixSubject: What would you like to see most in minix?Summary: small poll for my new operating systemMessage-ID: <[email protected]>Date: 25 Aug 91 20:57:08 GMTOrganization: University of Helsinki

Hello everybody out there using minix -

I’m doing a (free) operating system (just a hobby, won’t be big andprofessional like gnu) for 386(486) AT clones. This has been brewingsince april, and is starting to get ready. I’d like any feedback onthings people like/dislike in minix, as my OS resembles it somewhat(same physical layout of the file-system (due to practical reasons)among other things).

I’ve currently ported bash(1.08) and gcc(1.40), and things seem to work.This implies that I’ll get something practical within a few months, andI’d like to know what features most people would want. Any suggestionsare welcome, but I won’t promise I’ll implement them :-)

Linus ([email protected])

PS. Yes - it’s free of any minix code, and it has a multi-threaded fs.It is NOT protable (uses 386 task switching etc), and it probably neverwill support anything other than AT-harddisks, as that’s all I have :-(.

3 / 24

Evolution

I 17. September 1991: Version 0.01: 241 KiB, 8413 LoC1

I 13. März 1994: Version 1.0.0: 563 KiB, 170.581 LoCI 9. Juni 1996: Version 2.0.0: 2.015 KiB, 716.119 LoCI 9. Oktober 2008: Version 2.6.26.6, mehr als 8 Millionen

LoCI 2012: Version 3.6, knapp 15 Millionen LoCI neueste Version stets hier: http://kernel.org/

1Lines of Code (Programmzeilen)4 / 24

Page 19: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Kernel vs. System

Mit Linux i. e. S. ist der Kernel, d. h. , das eigentlicheBetriebssystem gemeint.Zu einem Linux-System gehört jedoch viel mehr:I Basiswerkzeuge zur BedienungI Kommandointerpreter (Shell): bash, ksh, csh, tcshI Entwicklungswerkzeuge: gcc (GNU Compiler Collection)I (textbasierte) ApplikationenI grafische Basisschnittstelle: X Window SystemI FenstermanagerI grafische Applikationen→ Gesamtsystem wird manchmal (korrekter) GNU/Linuxgenannt.

5 / 24

Distributionen

I sind Zusammenstellungen des Kernels, von Applikationenund Werkzeugen zur Konfiguration, die ein lauffähigesGesamtsystem erzeugen

I vereinfachen den Konfigurations- und Updateaufwandbeträchtlich (Paketmanagement)

I unterscheiden sich in vielen Einzelaspekten:I hauptsächliches Einsatzziel Desktoprechner, Server,

eingebettetes SystemI Einstellung zu proprietären KomponentenI Sprachanpassung (Lokalisierung)I . . .

I Frage nach der besten Distribution führt gemeinhin zuMeinungsverschiedenheiten

6 / 24

Page 20: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Beispiele für populäre Distributionen

Name MerkmalGentoo das System wird grundlegend aus den Quellen er-

zeugtFedora freies Linux der Fa. Red HatSUSE Distribution der Fa. Novell (frei und kommerziell)Debian frei, stabil, (meist) etwas veraltete ApplikationenUbuntu anfängerfreundlich, freiKnoppix bekannte Live-DistributionDVL für die Ausbildung in BS-SicherheitOpenmoko spezialisiert für Smartphones

Siehe auch:http://de.wikipedia.org/wiki/Liste_von_Linux-Distributionenhttp://upload.wikimedia.org/wikipedia/commons/8/8c/Gldt.svg

7 / 24

Womit mache ich . . .

Textverarbeitung? openoffice, LATEXKinoabend? mplayer, totemInstant Messaging? gajimDiashows? gqview, display

Bildbearbeitung? gimp, ImagemagickWWW-Recherche? firefox, iceweasel, epiphanyNotensatz? lilypondFunktionsplotting? gnuplotVektorgrafik? xfigProgrammeingabe? vi, emacs, joe

8 / 24

Page 21: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Qual der (Editor-)Wahl

vi

I auf jedem UNIX-System vorhandenI effizient, leichtgewichtigI arbeitet im Terminal

emacs

I kann alles: editieren, Mail und News lesen, browsen,Terminal bedienen, Kuchen backen . . .

I sehr flexibelI schwierig zu konfigurieren (Lisp)I grundlegende Edit-Kommandos sind die gleichen wie in

der Bashjoe ist ein Behelf, der nicht an die Mächtigkeit der anderenbeiden Editoren heranreicht

9 / 24

Neal Stephenson über Emacs

“I use Emacs, which might be thought of as athermonuclear word processor. It was created byRichard Stallman; enough said. It is written in Lisp,which is the only computer language that is beautiful.It is colossal, and yet it only edits straight ASCII textfiles, which is to say, no fonts, no boldface, nounderlining. If you are a professional writer i.e., ifsomeone else is getting paid to worry about how yourwords are formatted and printed, Emacs outshines allother editing software in approximately the same waythat the noonday sun does the stars. It is not justbigger and brighter; it simply makes everything elsevanish.”

(Neal Stephenson, In the Beginning . . . was the Command Line)

10 / 24

Page 22: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Grafische Nutzeroberflächen

I K Desktop Environment (KDE)I GNOMEI WindowMakerI XfceI IonI awesome

Unterscheidungskriterien:I ’Look & Feel’I TastaturbedienbarkeitI Umfang (Startzeit, Ressourcenbedarf)

Frage nach dem besten Windowmanager→ Chaos.

11 / 24

Womit schaue ich Dokumente an?

Extension Betrachter.chm xchm.djvu djview.doc openoffice, abiword.dvi xdvi.jpg gqview.pdf acroread, xpdf, evince.ps gv

.svg Browser

12 / 24

Page 23: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Erste Hilfe

I man <kommando> zeigt die zugehörige ManualseiteI info <kommando> dito, jedoch mit emacs-SteuerungI apropos <begriff> zeigt zum Suchbegriff gehörige

KommandosI der Schalter --help gibt zu vielen Kommandos nähere

ErklärungenI Das WWW bietet eine Fülle von Hilfen für alle Probleme

rund um Linux

13 / 24

Das Manual

I Manual-Seiten sind in verschiedene Kategorien eingeteilt(man man)

I Shellbefehle, z. B. openI Systemrufe, z. B. open()I Bibliotheksfunktionen, z. B. fopen()

I mehrere Sektionen pro Seite: NAME, SYNTAX,BESCHREIBUNG, OPTIONEN, DATEIEN, SIEHE AUCH,FEHLER, und AUTOR

I Humorige Bemerkungen sind häufig, vgl. man 3 gets(unter BUGS) oder man rtfm (, sofern installiert)

14 / 24

Page 24: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Die 20 wichtigsten Kommandos – Teil 1

Kdo. Zweckls Verzeichnisanzeige (list)

cd Verzeichniswechsel (change dir)cp Kopieren von Dateien (copy)mv Bewegen von Dateien/Verzeichnissen (move)rm Löschen von Dateien/Verzeichnissen (remove)

mkdir Verzeichnis anlegen (make dir)rmdir Verzeichnis löschen (remove dir)

chmod Rechte einer Datei ändern (change mode)less seitenweise Anzeige von Dateiencat Anzeige des Dateiinhalts (catalogue)

w zeigt an, wer eingeloggt ist (und was er tut)

15 / 24

Die 20 wichtigsten Kommandos – Teil 2

Kdo. Zweckgrep Suche von Zeichenkettenfind Suche nach Dateien

man Anzeige von Manualseitenps Anzeige von Prozessstatistiken (process state)kill Zustellung von Signalenbg Programm in den „Hintergrund“ schicken (background)top Anzeige der rechenintensivsten Prozesse

mount Datenträger einbinden (montieren)du Anzeige des Platzbedarfs von Dateien (disk usage)ln Anlegen eines Verweises (Links)

aber: nicht jedes zweibuchstabige Kürzel ist ein Kommando!16 / 24

Page 25: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Konzept: „Alles ist eine Datei“

3 Kategorien von Dateien:1. „gewöhnliche“ Datei = unstrukturierte Strom von Bytes2. Verzeichnis (Directory) = Datei, die Verzeichniseinträge

enthält3. Spezialdateien:

I Links (Hard Links, symbolische Links)I Geräte (zeichen- oder blockorientiert)I „named pipes“ (FIFOs)I Sockets

Vorteil: einheitliche Behandlung der abstrahierten Objekte.

17 / 24

Die Shell

I normaler Nutzerprozess, der kontinuierlich1. Kommandos einliest,2. diese ausführt,3. etwaige Ausgaben des Programms am Bildschirm darstellt.

I verschiedene: csh, tcsh, ksh, bashI Folgen von Shell-Kommandos nennt man ShellscriptI da die Shell auch Konstrukte für Verzweigungen, Schleifen

und Funktionsaufrufe mitbringt, handelt es sich um eineProgrammiersprache.

I mächtiges Werkzeug

18 / 24

Page 26: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Einfaches Shellscript

#!/bin/bash

# some sanity checksif test ! -x ‘which mac‘ ; then

printf "Please install mac first. Aborting.\n">&2

exit 127fiif test ! -x ‘which lame‘ ; then

printf "Please install lame first. Aborting.\n">&2

exit 127fi

# do the workfor FILE in *.ape ; do

mac "$FILE" "${FILE/ape/wav}" -dlame -h -b320 "${FILE/ape/wav}" "${FILE/ape/mp3}"rm -f "${FILE/ape/wav}"

doneexit 0

19 / 24

Shell vs. Grafikoberfläche - kein Widerspruch

Abbildung: Bla20 / 24

Page 27: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Kurzer Rundgang durchs Dateisystem

. . . machen wir interaktiv.

21 / 24

Was haben wir gelernt?

1. UNIX (in der Gestalt von Linux) ist sehr mächtig und sehrflexibel; es erfordert jedoch eine PortionEinarbeitungsaufwand.

2. Die Shell wird interaktiv bedient.3. Shellscripts sind Kommandofolgen der Shell; die Syntax ist

ein wenig kryptisch, man kann sie aber meistern.4. Das Dateisystem ist ein hierarchischer Baum.

22 / 24

Page 28: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Literaturvorschläge

I Linus Torvalds und David Diamond: Just for Fun. Wie einFreak die Computerwelt revolutionierte, dtv, 2002

I http://www.bin-bash.de/

24 / 24

Page 29: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Vorlesung Betriebssysteme IThema 3: Dateisystem

Robert Baumgartl

9. Februar 2015

1 / 35

Wozu ein Dateisystem?

Aufgaben von Dateisystemen:I Verwirklichung sinnvoller Abstraktionen zum Strukturieren

der abzulegenden Information (Datei, Verzeichnis)I Management des Freispeichers

Herausforderungen:I Langsamkeit der Medien, da meist mechanische

Operationen notwendigI Umfang der InformationenI Fehlertoleranz

Heterogenität:I magnetische MassenspeichermedienI optischeI elektrische

2 / 35

Page 30: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Aufbau einer Festplatte

I Stapel von rotierenden Magnetplatten, konstanteRotationsgeschwindigkeit (CAV – Constant AngularVelocity)

I Rotationsgeschwindigkeit ca. 5400 – 15000 min−1

I 2-16 PlattenI konzentrische Spuren (Tracks), ca. 10.000 pro OberflächeI übereinanderliegende Spuren bilden einen sog. ZylinderI kleinste ansprechbare Einheit: physischer Block („Sektor“;

512 Byte), z.B. 150-300 Sektoren pro SpurI 1 Schreib-Lesekopf pro Plattenoberfläche, radiale

Bewegung aller Köpfe gemeinsam

3 / 35

Aufbau einer Festplatte

I historisch: Adressierung eines Sektors über {Zylinder,Kopf, Sektor}-Tripel (Cylinder, Head, Sector – CHS)

I heute: Logical Block Addressing (LBA), einfacheDurchnumerierung aller Blöcke

I physisches Layout vor Nutzer verborgen: AbbildungLogischer Blocknummern auf Physische Blocknummern(LBN→ PBN) durch Festplattenelektronik

4 / 35

Page 31: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Schematischer Aufbau einer Festplatte

Platte

SpurZylinder

Abbildung: Seitenansicht

Spur

Sektor

Abbildung: Draufsicht

5 / 35

Optische Medien: Compact Disc (CD)

Grundlage: Red Book Standard von Philips und Sony

Standard Kürzel BemerkungenRed Book CD-DA Audio-CD

Yellow Book CD-ROMGreen Book CD-I CD Interactive

Blue Book CD-Extra Audio+Daten-CDOrange Book CD-R[W] Recordable CDs

White Book Video-CD- Photo CD

Tabelle: Übersicht relevanter CD-Standards

6 / 35

Page 32: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Fakten zur CD

I Abtastung mittels eines Infrarotlasers, unterschiedlichesReflexionsverhalten von Pits und Lands

I eine (!) Spur (Breite: 0.5 µm), von innen nach außengelesen, Abstand 1.6 µm

I konstante Speicherdichte→ Constant Linear Velocity(CLV)→ variable Umdrehungsgeschwindigkeit je nachPosition auf Medium

I 2 (CD-Audio) bzw. 3 unabhängigeFehlerkorrektur-Schichten:

I Symbol: 8 Bit Payload pro 14 Bit-Symbol (Eight-to-FourteenModulation, EFM)

I Frame: SYNC + CTL + 32 Symbole (∑

588 Bit, davon 24Byte Nutzlast)

I Sektor: 98 Frames á 24 Byte Nutzlast = 2352 Byte LängeI kleinste adressierbare Einheit: Sektor (CD-ROM)

7 / 35

Welche Dateisysteme gibt es?

BS DateisystemMS-DOS FAT12, FAT16

Windows 9x VFATWindows NT. . . Vista NTFS

MacOS HFSLinux ext2fs, ext3fsOS/2 HPFS

Tabelle: Betriebssystemspezifische Dateisysteme

Gute BS lesen auch die Dateisysteme der „Konkurrenz“, soferndiese offen liegen.Zusätzlich gibt es BS-übergreifende Dateisysteme, z. B.IS09660 (Dateisystem der CD-ROM) oder CIFS.

8 / 35

Page 33: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Grundlegende Abstraktionen: Datei

Datei = „Ansammlung“ von Nutzdaten + AttributeBeispiele typischer Attribute:I Schutz: Wer darf welche Operation mit Datei ausführen?I Eigentümer der DateiI Beschränkungen der erlaubten Operationen (Read-Only)I Beschränkungen der Sichtbarkeit der Datei (Hidden Flag,.dateiname)

I DateinameI Zeitstempel (letzter Zugriff, letzte Änderung, Kreation)I Größe der DateiI Stellung des Dateipositionszeigers→ stat-Kommando unter Linux

9 / 35

Typen von Dateien

Unterscheidung von DateitypenI durch Attribute (Dateinamen, ASCII/binary-Flag),I durch Dateinamen,I durch Magic Word.

Ein Magic Word ist eine charakteristische Bytesequenz amBeginn der Datei, anhand derer ihr Typ identifiziert werdenkann.

Sequenz BedeutungJFIF JPEG File Interchange Format

GIF89a Graphics Interchange Format (V.89a)#!/bin/bash Shell-Skript

ELF Executable and Linkable Format

Tabelle: Beispiele für Magic Words

10 / 35

Page 34: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Beispiele: JFIF, PDF

robge@ilpro121:~/txt/job/htw/bs1$ hexdump -C pic/tux2.jpg00000000 ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 48 |ÿØÿà..JFIF.....H|00000010 00 48 00 00 ff db 00 43 00 01 01 01 01 01 01 01 |.H..ÿÛ.C........|00000020 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................|

*00000050 01 01 01 01 01 01 01 01 01 ff db 00 43 01 01 01 |.........ÿÛ.C...|00000060 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 |................|...robge@ilpro121:~/txt/job/htw/bs1$ hexdump -C select-pages.pdf00000000 25 50 44 46 2d 31 2e 34 0a 38 20 30 20 6f 62 6a |%PDF-1.4.8 0 obj|00000010 20 3c 3c 0a 2f 4c 65 6e 67 74 68 20 31 32 35 20 | <<./Length 125 |00000020 20 20 20 20 20 20 0a 2f 46 69 6c 74 65 72 20 2f | ./Filter /|00000030 46 6c 61 74 65 44 65 63 6f 64 65 0a 3e 3e 0a 73 |FlateDecode.>>.s|00000040 74 72 65 61 6d 0a 78 da 8d 8e 31 0a c3 30 0c 45 |tream.xÚ..1.Ã0.E|00000050 77 9f e2 5f c0 8a 24 47 ae bc 17 4a c6 9c a1 43 |w.â_À.$G...JÆ.¡C|...

11 / 35

Dateinamenskonventionen

Jedes Dateisystem hat Regeln zum Aufbau einesDateinamens:FAT (File Allocation Table) – MS-DOSI „berüchtigte“ 8.3-KonventionI .COM, .EXE – ausführbare DateienI .BAT – Batchdateien (analog zu Shellskripten)

VFAT – ab Windows 95I bis 255 Zeichen langI Unicode-kodiertI keine Unterscheidung von Groß- und Kleinschreibung

UnixI unterscheidet Groß- und KleinschreibungI name.ext eigentlich unüblich, aber trotzdem genutzt

12 / 35

Page 35: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Wurzelverzeichnis, Pfadtrenner

WurzelverzeichnisVFAT: C:\, D:\, . . . , Z:\Unix: /VMS: [000000]

Betriebssystem TrennsymbolWindows \

Unix /

Multics >

VMS :

Tabelle: Trennsymbole für Pfadangaben

13 / 35

(Abstrakte) Operationen über Dateien

Operation BemerkungenOpen Vor eigentlichem Zugriff erforderlichRead (sequentiell)Write (sequentiell)Seek Verstellen des DateipositionszeigersClose nicht vergessen

Append Anfügen von Daten an DateiendeTruncate Datei verkürzen (z. B. auf 0)Rename Datei umbenennen

14 / 35

Page 36: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Anmerkungen

I Dateien müssen vor Zugriff geöffnet werden.I Lese- und Schreiboperationen nutzen gemeinsam den

DateipositionszeigerI Dieser steht initial auf Position 0 und kann mittels

Seek-Operation beliebig versetzt werden.I Lesen und Schreiben versetzt den Dateipositionszeiger

ebenfalls.I Wird beim Zugriff das Ende der Datei erreicht, wird i. A.

EOF (End of File) gemeldetI Um mit dem Inhalt einer Datei zu arbeiten, muss diese in

den Hauptspeicher transferiert oder eingeblendet werden.

15 / 35

Dateifunktionen der C-Bibliothek

Funktion Semantikfopen() Eröffnen

fclose() Schließenfread() Lesen

fwrite() Schreibenfprintf() (formatiertes) Schreiben

feof() Test auf Dateiendeferror() Test auf Fehlerfseek() Versetzen des Positionszeigersftell() Abfrage desselbigenflock() Sperren einer Datei

mehr: man 3 stdio

16 / 35

Page 37: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

C-Bibliotheksfunktionen

I gepuffertI definiert in stdio.h

I geöffnete Datei wird durch FILE* identifiziertI stdin, stdout, stderrI betriebssystemeunabhängig (portabel)I standardisiert nach ANSI C3.159-1989

17 / 35

Systemrufe zur Dateiarbeit (Unix)

Operation Semantikopen() Eröffnen der Dateiread() Leseoperation

write() Schreiboperationlseek() Verstellen des Dateipositionszeigersclose() Schließen der Dateilink() Verweis (Hard Link) auf Datei anlegen

rename() Datei umbenennenmmap() Datei in Hauptspeicher einblenden

18 / 35

Page 38: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Unix-Systemrufe zur Dateiarbeit

I definiert in <unistd.h>I standardisiert in POSIXI portabel nur in Unix-BetriebssystemenI geöffnete Datei wird durch Dateideskriptor (integer)

identifiziert

19 / 35

Funktionen zur Dateiarbeit (Win32) – kleine Auswahl

Operation SemantikCreateFile() Öffnen (kein Witz!)ReadFile() LesenWriteFile() Schreiben

SetFilePointer() Dateipositionszeiger setzenCloseFile() Schließen der Datei

CreateHardLink() (Hard Link) anlegenMoveFile() Datei umbenennen (u. a.)

CreateFileMapping() Datei in Hauptspeicher einblenden

20 / 35

Page 39: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Systemrufe zur Dateiarbeit (Windows)

I MSDN listet 114 Funktionen zur Arbeit mit DateienI Identifikation geöffneter Objekte mit Handles

Beispiel:

HANDLE WINAPI CreateFile(LPCTSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile

);

21 / 35

Einige typische Datei-Kommandos in Unix

Kommando Semantikcp Kopieren (copy)mv Bewegen (move)rm Löschen (remove)ln Verweis anlegen (link)

chmod Ändern der Zugriffsrechte (change mode)chown Ändern des Eigentümers (change owner)

dd Umleitung von Strömenshred sicheres Löschen

stat Anzeige der Dateiattribute

22 / 35

Page 40: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Kommandos über Massenspeicher und Dateisystem

Kommando Zweckdu Schätzen des Speicherbedarfs eines Verzeich-

nissesdf Anzeige Belegungszustand

fdisk Partitionierungmount Montieren des Datenträgers

mkfs Anlegen eines Dateisystemsfsck Prüfen (und Reparieren) der Integrität des

Dateisystemshdparm Detailinformationen zum Massenspeicher

23 / 35

Verzeichnisse („Ordner“)

I Organisation der Dateien auf MassenspeicherI üblich: Hierarchie von VerzeichnissenI bevorzugte Datenstruktur: Baum, gerichteter Graph

A B C

a a b c c c

Wurzelverzeichnis

Nutzerverzeichnisse

Dateien

Abbildung: Zweistufiges Dateisystem

24 / 35

Page 41: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Hierarchien von Verzeichnissen

A B C

ca bB B C

bC C

ccc c

Wurzelverzeichnis

Nutzerverzeichnisse

Unterverzeichnisse

der Nutzer

Nutzerdateien

Abbildung: Typisches hierarchisches Dateisystem

25 / 35

Unix-Systemrufe über Verzeichnissen

mkdir() Anlegen eines neuen Verzeichnissesrmdir() Löschen eines Verzeichnisses

opendir() Eröffnenclosedir() Schließenreaddir() Sequentielles Lesen der Einträge eines V.scandir() Gezieltes Suchen von Einträgen innerhalb eines

V.rewinddir() Zurückstellen des Eintragszeigerssymlink() Anlegen eines Soft Link

26 / 35

Page 42: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Verweise (Links)

I zusätzliche Verweise auf VerzeichniseinträgeI Sinn: Vermeidung von Dateikopien, Vereinfachung der

Aktualisierung, Erhöhung der FlexibilitätI UNIX: 2 Typen – Soft Links, Hard LinksI Systemrufe link(), symlink()I Kommando ln zum Anlegen

27 / 35

Verweise auf Dateien und Verzeichnisse

A B C

cB B C

bC C

ccc c

l l2

Abbildung: Beispiele für Verweis auf Datei (rot) und Verzeichnis (blau)

28 / 35

Page 43: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Zugriffsrechte von Dateien

Abstraktion zur Beschränkung des ZugriffsWozu?I Schaden durch

I unkundige Nutzer,I bösartige Nutzer undI fehlerhafte Software

zu minimierenAllgemeines Modell: ZugriffsmatrixI Spalten: (passive) Objekte, z. B. Dateien, die

Zugriffsbeschränkungen unterliegenI Zeilen: (aktive) Subjekte, z. B. Nutzer oder Prozesse,

deren Zugriff beschränkt werden sollI Inhalt der Elemente: erlaubte Operationen, gewährte

Rechte

29 / 35

Beispiel zur Zugriffsmatrix

Datei 1 Datei 2 Datei 3 Datei 4Nutzer A Own/R/W Own/R/WNutzer B R Own/R/W W RNutzer C R/W R Own/R/W

I Zugriffsmatrix i. a. spärlich besetztI → zwei Wege der Dekomposition

30 / 35

Page 44: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Dekomposition der Zugriffsmatrix

Access Control List (ACL)I Dekomposition der Zugriffsmatrix nach ObjektenI für jedes Objekt wird gespeichert, welches Subjekt welche

Operation mit ihm ausführen darfI im Beispiel:

I Datei 1: A(OWN/R/W), B(R), C(R/W)I Datei 2: B(OWN/R/W), C(R)I Datei 3: A(OWN/R/W), B(W)I Datei 4: B(R), C(OWN/R/W)

Capability ListI Dekomposition der Zugriffsmatrix nach SubjektenI für jedes Subjekt wird gespeichert, auf welche Objekte es

wie zugreifen darf

31 / 35

Beispiele

I Read-Only Flag im MS-DOSI rwxrwxrwx-Abstraktion im klassischen UNIXI rwlidka-Rechte im Andrew File System (AFS); (für

Verzeichnisse): read, write, lookup, insert, delete, lock,administer

32 / 35

Page 45: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Zugriffsrechte in Unix

I jede Datei hat 3 Rechte: Lesen, Schreiben, AusführenI Rechte werden für 3 Kategorien von Nutzern vergeben:

den Eigentümer, die Gruppe, alle anderen Nutzer desSystems

I ⇒ 3x3 Bits, die gesetzt oder gelöscht sein könnenI Ausführungsrecht für Verzeichnis: man darf

hineinwechselnI Änderung mittels chmod-Kommando

Beispiel:

~> chmod u+rwx g+r-wx o-rwx foo.sh~> ls -l foo.sh-rwxr----- 1 robge robge 4 2008-10-28 10:26 foo.sh

33 / 35

Ausgabe des Kommandos ls -l

−rw−r−−−−− 1 robge if 353400 2008−10−28 10:03 foo.txt

Rechte

des E

igentü

mers

Rechte

der

Gru

ppenm

itglie

der

Rechte

der

restlic

hen N

utz

er

Typ der Datei

Anzahl Verzeichnisse

Gruppe

Größe

Modifikation

Zeitpunkt der letztenEigentümer Name

Abbildung: Ausgebenene Informationen bei ls -l

34 / 35

Page 46: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Zusammenfassung: Was haben wir gelernt?

I Was sind Datei und Verzeichnis?I Dateityp, Namenskonventionen, PfadsymboleI Was versteht man unter Links?I typische Kommandos, C-Funktionen und Systemrufe zur

DateiarbeitI Wie werden Zugriffsrestriktionen für Dateien realisiert?

35 / 35

Page 47: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Vorlesung Betriebssysteme IThema 4: Grundlegende Begriffe, Teil 2

Robert Baumgartl

9. Februar 2015

1 / 19

Begriffe: Schnittstelle

I beschreibt den statischen Aspekt einerKommunikationsbeziehung

I Kommunikation über Schnittstelle kann synchron undasynchron erfolgen

I kann in Hardware oder in Software vorliegen

Hardwareschnittstellen – BeispieleI Peripheral Component Interconnect (PCI)I Controller Area Network (CAN)I InfiniBand

Softwareschnittstellen = Gesamtheit aller nutzbarenFunktionen einer Bibliothek, eines Betriebssystems, einerMiddleware (aka API – Application Programmer’s Interface)Beispiele: POSIX, Win32, Qt-API

2 / 19

Page 48: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Begriffe: Protokoll

I beschreibt den dynamischen Aspekt einer Kommunikation(also den Ablauf)

I BeispieleI Timingdiagramme für das SignalspielI Semantikbeschreibung von SystemrufenI Präzedenzen für den Aufruf von Funktionen

Protokoll und Schnittstelle bedingen einander!Es gibt proprietäre und offene Schnittstellen und Protokolle.

3 / 19

Beispiel für (Teil einer) Protokollbeschreibung

Start

read() write()

open()

close()

Abbildung: Typische Präzedenzen bei Funktionen eines Dateisystems

4 / 19

Page 49: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

ProtokollbeispielKommunikation eines Kunden mit dem Clerk bei McDonald’s

t

"Hi."

"Hi."

"A Burger."

"Anything else?"

"No"

"Drink?"

"Large Coke."

"Takeaway?"

"No."

{"Hi", "Hello"}

Clerk Customer

{"Burger", "Fries",

"Chicken"}

{"Yes", "No"}

{"Coke", "Fanta", "Sprite"}

{"small", "medium", "large"} x

{"Yes", "No"}

"$4.99"

pay

"Bye."

"Bye."

{"Bye", "Get lost!"}

time

"Whaddaya wanna?"

computation

5 / 19

Aktivitäten und Ressourcen

In einem Rechensystem gibt es zwei Kategorien vongrundsätzlichen Objekten

1. Aktivitäten: das, was abgearbeitet wirdI TaskI ProzessI ThreadI RoutineI ...I (siehe später)

2. Ressourcen: das, was Aktivitäten „zum Leben“ benötigen

6 / 19

Page 50: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Ressourcen

I „alles das, was keine Aktivität ist“I Aktivitäten konkurrieren um RessourcenI existieren in allen Schichten eines SystemsI Beispiele: Datei, Festplatte, Programmcode,

HauptspeicherblockI = Hardware und alle passiven Abstraktionen eines

Rechensystems (d. h. auch CPU und Geräte)I besitzen zu jedem Zeitpunkt einen inneren Zustand

(z. B. CPU: Gesamtheit der Inhalte aller Register)I Ressourcen werden durch Aktivitäten angefordert,durch

eine zentrale Instanz zugeteilt und nach Nutzung durch dieAktivität zurückgegeben(← Protokoll!)

7 / 19

Entziehbare Ressourcen

Def. Eine entziehbare Ressource kann nach ihrer Zuteilung derAktivität jederzeit entzogen werden. Der Vorgang ist für dieAktivität transparent.Ablauf:

1. Aktivität anhalten2. Zustand der Ressource sichern (z.B. auf Datenträger

schreiben)3. [Ressource anderweitig verwenden]4. Zustand der Ressource restaurieren5. Aktivität fortsetzen

Voraussetzung für Entziehbarkeit:I Zustand der Ressource ist vollständig auslesbarI Zustand der Ressource kann beliebig manipuliert werden.

8 / 19

Page 51: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Entziehbare Ressourcen - Beispiele

I CPU (Zustand kann in den Hauptspeicher ausgelagertwerden)

I Hauptspeicherblock (Zustand kann auf Massenspeicherausgelagert werden)

I Datei

Die meisten Ressourcen sind nicht entziehbar:I CPU-CacheI DruckerI Netzwerkkarte

9 / 19

Exklusiv nutzbare Ressourcen

Def. Eine exklusiv nutzbare Ressource darf zu jedem Zeitpunktmaximal von einer Aktivität genutzt werden.I Beispiele: Hardware, (beschreibbarer) Speicher, zum

Schreiben eröffnete DateiI BS muss Exklusivität durchsetzen (→

Synchronisationsmechanismen)I Zuteilung kann mittels verschiedener Strategien erfolgen:

I FairnessI Minimierung der WartezeitI Garantie einer maximalen Wartezeit

10 / 19

Page 52: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Klassifikation und Beispiele für Ressourcen

entziehbar nicht entziehbarProzessor, Speicher Datei, alle verbrauchbaren BMgleichzeitig nutzbar exklusiv nutzbarProgrammcode, Datei, Speicher Prozessor, Drucker, Signalwiederverwendbar verbrauchbarProzessor, Datei, Speicher Signal, Nachricht, Interruptphysisch logisch oder virtuellProzessor, Speicher, Geräte Datei, Signal, Prozessor (!)

Tabelle: Klassifikation von Ressourcen

11 / 19

Ressourcentransformation

log. Block, z.B. 4 kB

Byte einer Datei

phys. Sektor, 512 Byte

Ebene des Filesystems

Hardware−Ebene

Ebene der Treiber

Applikationsebene

Abbildung: Transformation der Ressource physischer Sektor in Datei

Es kann dabei sogar eine neue Qualität entstehen:

Speicher + Identifikator + Programmcode = neuer Prozess

12 / 19

Page 53: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

User Mode und Kernel Mode

I Idee: nur in einem privilegierten Modus (Kernel Mode)dürfen alle Operationen ausgeführt werden (z.B. Zugriff aufdie Hardware, Manipulation von systemrelevantenDatenstrukturen wie der Prozesstabelle)

I dieser ist dem Betriebssystem vorbehaltenI Applikationen werden in einem restriktiven Modus (User

Mode) ausgeführt (z.B. erfolgt automatische Prüfung derGültigkeit jeder Speicherreferenz)

I bei Verletzung der Restriktionen wird die Applikationabgebrochen

I Unterscheidung Kernel Mode vs. User Mode analog zurEinteilung Administratoren vs. gewöhnliche Nutzer

I Ziel: Etablierung eines grundlegenden Schutzkonzeptes

13 / 19

User Mode und Kernel Mode

Was darf man nur im Kernel Mode?I neuen Prozess erzeugenI Treiber ins System laden oder daraus entfernenI generell: Diensterbringung des BetriebssystemsI nicht jedoch: typische Adminaufgaben

Die CPU muss User Mode/Kernel Mode unterstützen, d.h.,verschiedene Privilegierungsmodi unterscheiden.

14 / 19

Page 54: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Systemruf

Damit der „gewöhnliche“ Nutzer die Funktionen des Kernelsüberhaupt anwenden darf, gibt es den Mechanismus desSystemrufs.

I BS bietet dem Programmierer Funktionen, diese werdenüber Systemrufe zur Verfügung gestellt

I Gesamtheit aller Systemrufe eines BS ist dessenApplication Programmer’s Interface (API)

I Nutzung analog den Funktionen einer Bibliothek mit einemUnterschied: Diensterbringung erfolgt im Kernel Mode

I → gewöhnlicher Funktionsaufruf als Mechanismusunbrauchbar!

I Systemrufe können blockieren!

15 / 19

Prinzip eines Systemrufs

eintrittSystem−

System−austritt

User Mode Kernel Mode

System−

dienst

Applikation Betriebssystem

Systemruf

16 / 19

Page 55: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Ablauf eines Systemrufs

2

3

5

dispatch

syscall

syscall

handler

6

7 8

10

11

4

1

9

push nbytes

push &buffer

push fd

call read

adjust stack

put # for read in register

return to caller

TRAP into kernelcall

library

program

user

user space

kernelspace

count = read(fd, buffer, nbytes);

Abbildung: Allgemeiner Ablauf eines Systemrufs read()

17 / 19

Ablauf von WriteFile() in Windows 2000/XP/Vista

Return to Caller

int 0x2e

Do the Operation

Return to Caller

Return to Caller

Software Interrupt

Win32 application

KERNEL32.DLL

Call NtWriteFile()

Call WriteFile(...)

Dismiss Interrupt

Call NtWriteFile()

WriteFile() in

NtWriteFile()

in NTDLL.DLL

SystemService in

NTOSKRNL.EXE

NtWriteFile() in

NTOSKRNL.EXE

Kernel Mode

User Mode

Win32−

specific

Used by all

subsystems

Quelle: David Solomon, Inside Windows XP, Microsoft Press, 200018 / 19

Page 56: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Was haben wir gelernt?

1. Protokoll und Schnittstelle2. Ressourcen

I entziehbareI exklusiv nutzbareI Ressourcentransformation

3. Kernel Mode und User Mode4. Was ist ein Systemruf?

19 / 19

Page 57: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Vorlesung Betriebssysteme IThema 5: Aktivitäten

Robert Baumgartl

9. Februar 2015

1 / 34

Prozesse

Def. Ein Prozess ist ein in Ausführung befindliches Programm.

I Lebenszyklus: Erzeugung→ Abarbeitung→ BeendigungI benötigt Ressourcen bei Erzeugung (Hauptspeicher,

eineindeutigen Identifikator PID, Programmcode)I benötigt weitere Ressourcen im Laufe seines Lebens, nicht

mehr benötigte Ressourcen gibt er i. a. zurückI Jeder Prozess besitzt einen virtuellen Prozessor, d. h.

CPU wird zwischen allen Prozessen geteilt (jeder erhältCPU für eine gewisse Zeitspanne, vgl. folgende Abbildung)

I Hauptmerkmal: Jeder Prozess besitzt einen eigenenAdressraum (jeder Prozess denkt gewissermaßen, er seiallein im System)

I Jeder Prozess besitzt einen Vaterprozess sowie u. U.Kindprozesse

2 / 34

Page 58: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Virtuelle vs. reale CPU

virtuelle

CPU

virtuelle

CPU

virtuelle

CPU

P1

...

...

...

...

...

...

P2 P3

CPU

reale

...

...

Transformation

Px

Abbildung: Virtuelle vs. reale CPU

I Umschaltung zwischen Prozessen: Context Switch durchdas Betriebssystem

3 / 34

Zustandsmodell eines Prozesses

Drei grundlegende Globalzustände werden stetsunterschieden:

aktiv : Prozess wird abgearbeitet. Er besitzt alleangeforderten Ressourcen und die CPU.

bereit : Prozess besitzt alle angeforderten Ressourcenjedoch nicht die CPU.

wartend : Prozess wartet auf Zuteilung einer durch ihnangeforderten Ressource und wird nichtabgearbeitet.

34

1

2

bereit aktiv

wartend

4 / 34

Page 59: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Zustandsübergänge (Transitionen) bei Prozessen

1. aktiv→ bereit: Aktiver Prozess wird verdrängt (Ursachez. B. höherpriorisierter Prozess wurde bereit oderZeitscheibe abgelaufen)

2. bereit→ aktiv: wie 1.3. aktiv→ wartend: Aktiver Prozess geht in Wartezustand (er

hat eine Ressource angefordert, deren Zuteilung ihmverweigert wurde; er blockiert)

4. wartend→ bereit: wartender Prozess erhält angeforderteRessource schließlich zugeteilt.

5 / 34

Zustandsübergänge cont’d

I bereit→ wartend: unmöglich (ein bereiter Prozess kannnichts tun, also auch keine Ressource anfordern, die ihmverweigert wird)

I wartend→ aktiv: nicht sinnvoll (Prozess erhält eineRessource, auf die er wartet, rückgebender aktiverProzess würde für Ressourcenrückgabe „bestraft“)

I Es gibt stets einen aktiven Prozess (CPU kann nicht„leerlaufen“), falls keine Nutzarbeit anliegt Idle-Prozess

I Jede Ressourcenanforderung wird irgendwann erfüllt.I Prozesszustandsdiagramme in realen Systemen sehen

häufig komplexer aus (sind es aber nicht).

6 / 34

Page 60: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Prozesszustände im Linux-Kernel 2.6

fork() and creates

a new process

existing task calls

(task is terminated)

TASK_ZOMBIE

task forks

schedule() calls context_switch()

scheduler dispatches task to run:

task exits via do_exit()

by higher priority task

task is preempted

task sleeps on wait queue

for a specific event

event occurs and task is woken up

and placed back on the run queue

not running)

(ready but

TASK_RUNNING

(running)

TASK_RUNNING

or

(waiting)

TASK_INTERRUPTIBLE

TASK_UNINTERRUPTIBLE

Quelle: Robert Love, Linux Kernel Development, 20057 / 34

Prozesszustände im Windows NT/2000/XP

Terminated

Running

Initialized

Ready

Standby

Transition

Waiting

Set object to

signaled state

Resources

become

available

Thread

waits on

an object

handle

Execution

completes

Reinitialize

thread object

Create and initialize

Place in

ready queue

Select for

execution

Preempt

Resources

unavailable

Preempt

(or time quantum ends)

Contex−switch to it

and start its execution

(dispatching)

Quelle: David Solomon, Inside Windows 2000, Microsoft Press,2000

8 / 34

Page 61: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Speicherabbild

I jeder Prozess besitzt eigenen Adressraum (Größesystemabhängig, typisch 232 Bytes)

I Adressraum ist exklusiv (Ausnahme:Shared-Memory-Segmente)

I Bestandteile (Abb. 10) eines Adressraums in UNIX:I Text: ProgrammcodeI Data: initialisierte DatenI BSS: uninitialisierte Daten, “Heap”I Stack

9 / 34

Prinzipieller Adressraumaufbau eines Prozesses

(BSS)

Stack

initialisierte Daten

uninitialisierte Daten

Text

null−initialisiert

aus Datei eingelesen

durch

Heap

High

Low

Umgebung, Argumente

"break"

exec()

10 / 34

Page 62: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Prozessverwaltung

I Prozesse werden unterbrochen und fortgesetzt (Wechselzwischen bereit und aktiv)

I → alle Informationen, die für Fortsetzung benötigt werden(= Mikrozustand), müssen archiviert werden

I → Prozesstabelle aka Process Control Block (PCB)I konkrete Ausprägung der Parameter stark systemabhängigI Beispiel eines Eintrags: Tabelle 1I Linux: struct task_struct ininclude/linux/sched.h; ca. 1.7 kBytes groß

11 / 34

Mikrozustand eines Prozesses

Prozessverwaltung Speicherverwaltung Dateiverwaltung

Register Zeiger auf Text-Segment Wurzelverzeichnis

Befehlszeiger Zeiger auf Data-Segment Arbeitsverzeichnis

Flagregister Zeiger auf Stack offene Dateideskriptoren

Globalzustand User ID

Priorität Gruppen-ID

Prozess-ID

ID des Vaters

Zeitstempel

erhaltene CPU-Zeit

Tabelle: Typischer Eintrag in der Prozesstabelle

12 / 34

Page 63: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Informationen zu Prozessen: das Kommando ps

gibt tabellarisch zu jedem Prozess des Nutzers ausI PID (Prozess-ID)I TTY (das zugehörige Terminal)I Zustand (Status) des ProzessesI die bislang konsumierte CPU-ZeitI das zugrundeliegende Kommando

13 / 34

Kommando ps (Fortsetzung)

Kommandoswitches von ps, die Sie brauchen werden:-A listet alle Prozesser listet alle bereiten Prozesse (, die sich die CPU teilen)X gibt Inhalt des Stackpointers und einiger weiterer Register

ausf zeichnet Verwandtschaftsverhältnisse mit ASCII-Grafik

(besser: pstree-Kdo.)-l langes Format (zusätzlich UID, Parent PID, Priorität,

Größe)Ein falscher Kommandozeilenparameter gibt eine kurzeZusammenfassung der gültigen Switches aus.

Achtung: Die Syntax der Optionen von ps ist kompliziert;manchmal mit vorangestelltem ’-’, manchmal ohne.

14 / 34

Page 64: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Weitere wichtige Prozess-Kommandos

I top - kontinuierliche ProzessbeobachtungI pstree - (text-)grafische Veranschaulichung von

ProzessverwandschaftenI pgrep - Suche nach Prozessen mittels regulärer

Ausdrücke

Beispiel:

pgrep -l "[[:alpha:]]*d\>"

listet die PID und Namen aller Daemon-ProzesseI nice - Setzen der ProzessprioritätI kill - Senden von Signalen

15 / 34

Erzeugung von Prozessen

I Nur ein Prozess kann einen anderen Prozess erzeugen(lassen), z. B. durch

I Doppelklick auf ein IconI Eingabe eines KommandosI Abarbeitung eines SkriptesI Bootvorgang des Rechners

I Mechanismus: SystemrufI UNIX: fork()I Win32: CreateProcess()

I erzeugter Prozess landet zunächst im Bereit-Zustand

16 / 34

Page 65: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Beispiel: Prozesserzeugung im Shellskript

#!/bin/bash

# number of xterms to startif [ "$1" == "" ]then

iterations=1else

iterations=$1fi

# do the (dirty) workfor (( count=0; count < $iterations; count++))do

xterm &done

# finish(ed)exit 0

17 / 34

Erzeugung eines Unix-Prozesses mittels fork()

pid_t fork (void) ;I erzeugt identische Kopie des rufenden Prozesses, mit

differierendem PID und PPID (Parent Process Identificator)I beide Prozesse setzen nach fork() fort und sind fortan

unabhängig voneinanderI Es ist nicht vorhersehbar, ob Vater oder Sohn zuerstfork() verlassen

I Resultat:I Vater: -1 im Fehlerfalle, PID des Sohnes ansonstenI Sohn: 0

I Vater-Sohn-VerwandschaftI Vater und Sohn arbeiten identischen Code ab, haben aber

private Variablen

18 / 34

Page 66: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Typischer Einsatz von fork()

int main(int argc, char* argv[]){

pid_t ret;

ret = fork();if (ret == -1) {

printf("fork() failed. Stop.\n");exit(EXIT_FAILURE);

}if (ret == 0) { /* Sohn */

printf("Ich bin der Sohn!\n");exit(EXIT_SUCCESS);

}else { /* Vater */

printf("Ich bin der Vater!\n");printf("Der PID des Sohnes betraegt %d.\n", ret);exit(EXIT_SUCCESS);

}}

19 / 34

Wieviel Prozesse schlafen?

#include <unistd.h>

int main(void){

fork();fork();fork();sleep(60);

return 0;}

20 / 34

Page 67: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Variablen sind privat

int var = 42;

int main(int argc, char* argv[]){

pid_t ret;if ((ret = fork())== -1) {

printf("fork() failed. Stop.\n");exit(EXIT_FAILURE);

}if (ret == 0) { /* Sohn */

var = 32168;printf("Sohns ’var’ hat den Wert %d.\n", var);sleep(5);printf("Sohns ’var’ hat (immer noch) den Wert %d

.\n", var);exit(EXIT_SUCCESS);

}else { /* Vater */

sleep(2);printf("Vaters ’var’ hat den Wert %d.\n", var);exit(EXIT_SUCCESS);

}}

21 / 34

Die Bibliotheksfunktion system()

int system (const char∗ string) ;

I führt das Kommando string mittels /bin/sh -c ausI string kann Kommando und dessen Parameter enthaltenI kehrt erst zurück, wenn Kommando beendet wurdeI kombiniert fork() und exec()

22 / 34

Page 68: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Überlagerung des Prozessabbilds mittels execl()

I execl() übernimmt (u. a.) eine Pfadangabe einerausführbaren Binärdatei als Parameter

I ersetzt den aktuell abgearbeiteten Programmcode durchdiese Binärdatei

I springt diesen Code sofort an und beginnt, diesenabzuarbeiten

I kehrt nur im Fehlerfalle zurück (z. B. bei falscherPfadangabe)

I Rückkehr in Ausgangsprozess unmöglich (!)I Systemruf-Familie: 5 Rufe mit sehr ähnlicher Semantik

(execl(), execle(), execv(), execlp() undexecvp())

I erzeugt keinen neuen Prozess

23 / 34

Überlagerung des Prozessabbilds mittels execl()

#include <unistd.h>#include <stdio.h>#include <stdlib.h>

int main(int argc, char* argv[]){

int ret;

printf("%s vor Aufruf von execl()\n", argv[0]);ret = execl("/bin/ls", "ls", NULL);if (ret == -1) {

printf("execl() ging schief. Und nun?\n");exit (EXIT_FAILURE);

}/* wird nicht erreicht ! */printf("%s nach Aufruf von execl()\n", argv[0]);exit (EXIT_SUCCESS);

}

24 / 34

Page 69: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Beendigung von Prozessen

Beendigung kann selbst oder durch anderen Prozess erfolgen(falls dieser die Rechte dazu besitzt)I Selbstbeendigung:

I Verlassen von main(),I return innerhalb von main(),I exit() an beliebiger Stelle im Programm, z. B. als Folge

eines FehlersI Fremdbeendigung:

I Zustellung eines Signals durch anderen ProzessI fataler Fehler durch den Prozess selbst (Division durch Null,

illegale Instruktion, Referenz eines ungültigen Zeigers, . . . )

25 / 34

Möglichkeit zur Beendigung: durch das System

#include <stdio.h>

int main(int argc, char* argv[]){

int ret = 42;int x = 0;

ret = ret / x;printf("Geschafft!\n");return 0;

}

Abarbeitung:

robge@ilpro121:~> ./div-by-zeroGleitkomma-Ausnahme

26 / 34

Page 70: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Möglichkeit der Beendigung: exit (mit Rückkehrcode)

Listing 1: Generierung eines Rückkehrcodes (retval.c)#include <stdlib.h>

int main(int argc, char* argv[]){

if (argc==2) {exit (atoi(argv[1]));

}else {

exit(42);}

}

Listing 2: Abfrage des Rückkehrcodes im Shellskript#!/bin/bash./retval 14echo $?./retvalecho $?

27 / 34

Synchronisation mittels wait()

pid_t wait( int ∗status) ;I bringt den rufenden Prozess in den WartezustandI dieser wird (automatisch) wieder verlassen, wenn ein

(beliebiger) Kindprozess terminiertI falls kein Kindprozess existiert, wird einfach fortgesetztI status enthält Statusinformationen zum Kindprozess

(u. a. Rückkehrcode)I Resultat:

I -1 bei FehlerI PID des beendeten Kindprozesses ansonsten

→ zur Synchronisation zwischen Vater und Sohn nutzbar

28 / 34

Page 71: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Beispiel 1 zu wait()

#include <sys/types.h>#include <sys/wait.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>

int main(int argc, char* argv[]){pid_t ret;

ret = fork();if (ret == -1) {perror("fork");exit(EXIT_FAILURE);

}if (ret == 0) { /* Sohn */printf("Sohn geht schlafen...\n");sleep(10);printf("Sohn erwacht und endet.\n");exit(EXIT_SUCCESS);

}else { /* Vater */printf("Vater wartet auf Sohns Ende.\n");ret = wait(NULL);if (ret == -1) {perror("wait");exit(EXIT_FAILURE);

}printf("Vater endet (nach Sohn).\n");exit(EXIT_SUCCESS);

}}

29 / 34

Beispiel 2 zu wait()

#include <stdio.h>#include <unistd.h>#include <sys/wait.h>

int main(int argc, char* argv[]){

sleep(20);fork(); /* 1. */sleep(20);fork(); /* 2. */wait(NULL);sleep(20);fork(); /* 3. */sleep(20);return 0;

}

Wann sind welche Prozesse im System?

30 / 34

Page 72: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

fork(), exec() und wait() zusammen: eine Shell

Eine Shell tut im Prinzip nichts weiter als:1: loop2: Kommando→ von stdin einlesen3: fork()4: Sohnprozess überlagert sich selbst mit Kommando &&

Vater wartet auf die Beendigung des Sohnes5: end loop

Beispiel: minishell.c (extern, da zu groß)

31 / 34

Windows: CreateProcess()

I keine Verwandtschaft zwischen Prozessen→ keineHierarchie

I legt neuen Adressraum an (→ neuer Prozess)I startet in diesem einen Thread, der das angegebene

Programm ausführtI gewissermaßen Hintereinanderausführung von fork()

und exec()

BOOL CreateProcess (LPCTSTR lpApplicationName, // pointer to name of executable moduleLPSTR lpCommandLine, // pointer to command line stringLPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,BOOL bInheritHandles, // handle inheritance flagDWORD dwCreationFlags,LPVOID lpEnvironment, // pointer to new environment blockLPCTSTR lpCurrentDirectory, // pointer to current directory nameLPSTARTUPINFO lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation

);

32 / 34

Page 73: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Ist das alles zu Aktivitäten?

Mitnichten!

I vfork(), clone(), . . .I ThreadsI Coroutinen und FibersI KommunikationI Synchronisation

33 / 34

Was haben wir gelernt?

1. Begriff des Prozesses2. Zustände und Transitionen zwischen ihnen3. Prozesserzeugung in Unix mittels fork()4. Überlagerung des Prozessabbilds mittels exec()5. Methoden der Prozessbeendigung6. einfache Synchronisation mittels wait()

34 / 34

Page 74: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Vorlesung Betriebssysteme IThema 6: Kommunikation

Robert Baumgartl

9. Februar 2015

1 / 38

Einige Gedanken

Kommunikation = Übertragung von Informationen zwischenAktivitäten

I meist mit Synchronisation (d. h., zeitlicher Koordination)verbunden

I Synonym: Inter Process Communication (IPC)I Vielzahl an Mechanismen, „historisch gewachsen“I Teilnehmer benötigen gemeinsam genutzte RessourceI Identifikation/Authentisierung der Teilnehmer erforderlich

2 / 38

Page 75: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Beispiele für IPC-Mechanismen (Auswahl)

I DateiI PipeI SignalI benannte Pipe (FIFO)I SocketI gemeinsam genutzer Speicher (Shared Memory)I NachrichtenI MailboxenI speichereingeblendete Datei (memory-mapped File)I entfernter Prozeduraufruf (Remote Procedure Call)I ClipboardI . . .

3 / 38

Kategorisierung von IPC-Mechanismen

Interprozeßkommunikation (IPC)

Synchronisation Kommunikation

speicherbasiert strombasiert nachrichtenbasiertSemaphore Signale

Shared Memory Pipe

Named Pipe

Message Passing

Message Queue

4 / 38

Page 76: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Kommunikationsbeziehungen

Anzahl der Teilnehmer:I 1:1I 1:mI n:1I n:m

Gleichzeitigkeit von Hin- und Rückkanal:I unidirektionalI bidirektional

weitere Aspekte:I lokale vs. entfernte KommunikationI direkte vs. indirekte Kommunikation

5 / 38

Synchrone und Asynchrone Kommunikation

Sendeoperation (Send)I synchron: Sender wartet (blockiert), bis Empfänger die

Information entgegengenommen hat (implizite Quittung)I asynchron: Sender setzt nach dem Senden einer

Nachricht sofort seine Arbeit fort („No-Wait-Send“, „Fireand Forget“); Beispiel: Telegramm

Empfangsoperation (Receive)I synchron: Die Empfangsoperation blockiert den

Empfänger so lange, bis Information eintrifft.I asynchron: Empfänger liest Information, falls empfangen

wurde und arbeitet anschließend weiter, auch wenn nichtsempfangen wurde

6 / 38

Page 77: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Synchrone vs. Asynchrone Operationen

synchrone Operationen:I direkte Zustellung der Informationen (ohne

Zwischenspeicher)I implizite EmpfangsbestätigungI i. a. einfacher zu programmierenI standardmäßig arbeiten Kommunikationsoperationen in

Unix synchronasynchron:I Nachricht muss zwischengespeichert werdenI Vorteil: wenn ein kommunizierender Prozess abbricht,

dann wird der Partner nicht unendlich blockiertI kein Deadlock möglich (gegenseitige Blockierung infolge

fehlerhafter Programmierung)I Benachrichtigung des Empfängers u. U. kompliziert

7 / 38

Verbindungsorientierte und verbindungsloseKommunikation

verbindungsorientiert verbindungslos3 Phasen: 1 Phase:

Ablauf Aufbau der VerbindungDatenübertragung Datenübertragung

Abbau der Verbindung(analoges) Telefon Telegramm

Beispiele TCP IPPipe Signal

8 / 38

Page 78: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Verbindungsarten

Unicast Punkt-zu-Punkt-Verbindung, Direktverbindung, 2Teilnehmer

Multicast 1 Sender, mehrere (aber nicht alle) Empfänger,Gruppenruf

Broadcast 1 Sender, alle Empfänger (z. B. eines Subnetzes)

9 / 38

Kommunikation über Datei

I ältester IPC-MechanismusI Sender schreibt Daten in DateiI Empfänger liest Daten aus DateiI nachteilig: zweimaliger Zugriff auf MassenspeicherI aber: es gibt auch Dateisysteme im RAMI nachteilig: überlappender Zugriff durch Sender und

EmpfängerI Lösung: Sperren der Datei (File Locking), z. B. mittelslockf()

I Beispiel: filelock.c (extern)I Problem: Sperren setzt Wohlverhalten voraus

10 / 38

Page 79: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Kommunikation mittels Pipe („Röhre“)

int pipe(int filedes[2]);

I liefert Feld von 2 Dateideskriptoren zurück (einer zumLesen, einer zum Schreiben)

I Zugriff wie auf eine Datei (read(), write(), close()),jedoch kein open(), lseek()

I Datenübertragung innerhalb eines Prozesses sinnlos?!I Woher weiß Empfänger, dass die Pipe existiert?

11 / 38

Vorgehensweise

1. Prozess ruft pipe()→ Pipe wird durch BS angelegt.2. Prozess ruft fork() (Deskriptoren werden vererbt!).3. Jeder Prozess schließt einen seiner Deskriptoren.

(Verständigung erfolgt)4. Datenübertragung mittels read() bzw. write()5. Beide Prozesse rufen close()→ Pipe wird nach zweitem

close() durch BS vernichtet

12 / 38

Page 80: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Veranschaulichung der Pipe-Erstellung

R W

fd[0] fd[1]

R W

fd[0] fd[1]

1

2

3

W R

4

fork()

fd[1] fd[0]

π π1 2

W

fd[1]fd[0]

R

Daten

13 / 38

Eigenschaften der Pipe

I stets unidirektional (→ für bidirektionale Übertragung 2Pipes nötig)

I keine Synchronisation beim Schreiben (Daten werden imKern gepuffert)

I Schreiboperationen, die weniger als PIPE_BUF1 Datenumfassen, müssen atomar (in einem Rutsch) erfolgen.

I keine persistente Ressource (verschwindet nach letztemclose())

I nur zwischen verwandten Prozessen möglich!

1Linux gegenwärtig: 4096 Bytes; vgl. limits.h14 / 38

Page 81: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Pipe: problematische Situationen

I Lesen von einer eröffneten Pipe, die keine Daten enthält,blockiert. Wird danach die Schreibseite geschlossen, kehrtread() mit Resultat 0 zurück.

I Leseoperation aus Pipe mit ungültigem Filedeskriptor –liefert Fehler EBADF (Bad File Descriptor)

I Leseoperation aus Pipe, die nach Schreibvorganggeschlossen wurde – liefert zunächst Daten, dann 0 alsResultat =̂ End of File (EOF)

I Schreiboperation auf Pipe, deren Leseseite geschlossen –liefert Signal SIGPIPE an schreibenden Prozess

I Prozess(e) enden mit eröffneter Pipe – Filedeskriptorenwerden bei Prozessbeendigung automatisch geschlossen

Literatur: man 7 pipe

15 / 38

Anwendungsbeispiel

Pipe-Operator (‘|’) der Shell zur Verknüpfung von stdout desSenders mit stdin des Empfängers:

robge@ipaetz2:~$ du | sort -n -r | less

Beispiel 2: simplepipe.c (extern)

16 / 38

Page 82: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Putting it all together: popen()

FILE *popen(const char *cmd, const char *type);

I legt eine Pipe an, forkt den rufenden Prozess und ruft imKind eine Shell auf, die cmd ausführt

I Resultat: Zeiger auf I/O-Strom, derI mit stdin von cmd verbunden ist, wenn type == "w"

oderI mit stdout von cmd verbunden ist, wenn type == "r".I Lese- oder Schreiboperation geschehen also mit Pipe, die

mit ge-fork()-tem Prozess cmd verbunden istI muss mit pclose() geschlossen werdenI erleichtert Kommunikation C-Programm↔

Shellkommando

Beispiel: popen.c (extern)

17 / 38

Signale

I Mittel zur Signalisierung zwischen Prozessen bzw. BS undProzessen

I Übermittlung einer Information, ohne dass Prozess aktivbeteiligt

I Ursprung: UNIXI Generierung→ Zustellung→ Behandlung (Reaktion auf

Signal)I jedes Signal hat Nummer, Name, DefaultaktionI meist (aber nicht immer) keine DatenübertragungI Verwandschaft der Partner ist nicht notwendig

18 / 38

Page 83: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Signale – Prinzipieller Ablauf

1. Sende-Prozess generiert ein Signal2. System stellt das Signal dem Empfänger-Prozess zu3. Wenn Empfänger Signalhandler installiert hat→ Aufruf

des Signalhandlers (asynchron zur Programmausführung)4. Wenn kein Signalhandler installiert→ Ausführung der

Default-Aktion (z. B. Abbruch, Ignorieren)

19 / 38

Signale unter Unix (Übersicht)

Name Def.-Aktion SemantikSIGHUP Abbruch Verbindung beendet (Hangup)SIGINT Abbruch CTRL-C von der TastaturSIGILL Abbruch Illegale Instruktion

SIGKILL Abbruch Sofortige BeendigungSIGSEGV Coredump Segmentation ViolationSIGPIPE Abbruch Schreiben in ungeöffnete Pipe

SIGCHLD Ignoriert Kind-Prozess beendetSIGSTOP Stop Anhalten des ProzessesSIGTSTP Stop CTRL-Z von der TastaturSIGCONT Fortsetzen eines angehaltenen Prozesses

Tabelle: Auswahl von Signalen nach POSIX

vollständige Übersicht: man 7 signal

20 / 38

Page 84: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Senden von Signalen an der Kommandozeile

Senden mit dem (externen) Kommando kill:

robge@hadrian:~$ while true ; do echo -n; done &[1] 6578robge@hadrian:~$ kill -SIGQUIT 6578[1]+ Verlassen while true; doecho -n;done

Generierung bestimmter Signale auch mit der Tastatur möglich:

Signal erzeugende TastaturkombinationSIGINT Ctrl-C

SIGQUIT Ctrl-4 oder Ctrl-\SIGTSTP Ctrl-Z

21 / 38

Signale in der Bash

Einrichtung eines Signalhandlers mittels trap

#!/bin/bashtrap "echo CTRL-C gedrà 1

4ckt. Na fein." SIGINTtrap "echo CTRL-Z gedrà 1

4ckt. Mach ruhig weiter so."SIGTSTP

trap "echo Auch SIGQUIT kann mir nix anhaben."SIGQUIT

echo Entering loopwhile true ; do echo -n ; done

Handler wirdI (asynchron) angesprungen,I ausgeführt, undI es wird am Unterbrechungspunkt fortgesetzt.

Handler darf nur (externe) Kommandos enthalten, keineBash-Instruktionen.

22 / 38

Page 85: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Noch ein Bash-Beispiel

laufschrift.c (extern)

Probieren Sie:

robge@hadrian:~$ ps x | grep "./laufschrift"5341 pts/5 S+ 0:00 ./laufschrift5343 pts/0 S+ 0:00 grep ./laufschrift

robge@hadrian:~$ kill -SIGSTOP 5341robge@hadrian:~$ kill -SIGCONT 5341robge@hadrian:~$ kill -SIGSTOP 5341usw.

23 / 38

Signale in C – Teil 1: Senden

int kill(pid_t pid, int sig);I sendet das durch sig spezifizierte Signal an Prozess mit

PID pid

I Zuvor wird geprüft, ob der ausführende Nutzer dazuberechtigt ist.

I Spezifikation des Signals: SIGHUP, SIGQUIT, SIGKILLusw., vgl. Headerdatei bits/signum.h

I wenn pid == -1, dann wird das betreffende Signal anjeden Prozess geschickt, für den der Nutzer dieses Rechthat (Vorsicht!)

24 / 38

Page 86: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Was passiert nun bei Zustellung eines Signals?

Behandlung bei Zustellung:I nichtabfangbares Signal (KILL, STOP)→ zugeordnete

Aktion {Abbruch, Stop} wird ausgeführtI abfangbares Signal: wenn kein Signalhandler installiert→

Default-Aktion {Abbruch, Stop, Ignorieren} ausgeführtI wenn entsprechender Handler installiert→ Handler wird

(asynchron zur Programmausführung) aufgerufenAnmerkungen:I abfangbares Signal kann auch ignoriert werden

25 / 38

Signale in C – Teil 2: Installation eines Signalhandlers

void (*signal(int signum, void (*handler)(int)))(int);

fieses Konstrukt; Analyse:I signal() ist ein SystemrufI übernimmt 2 Parameter:

I signum – Nummer des Signals, für das ein Handlerinstalliert werden soll

I handler – Zeiger auf eine Funktion, die einen Integerübernimmt und nichts zurückliefert

I Rückgabewert: Zeiger auf eine Funktion, die einen Integerübernimmt und nichts zurückliefert (genauso wiehandler())

26 / 38

Page 87: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Was bedeutet das?

I Handler ist die Funktion, die angesprungen wird, sobalddas entsprechende Signal zugestellt wird

I Parameter des Handlers ist die (konkrete) Nummer desSignals, da es jederzeit möglich ist, einen Handler fürverschiedene Signale zu installieren

I Resultat:I SIG_ERR bei FehlerI ansonsten Zeiger auf den vorherigen Handler

I Anstatt des Handlers kann auch übergeben werden:I SIG_IGN→ Signal soll ignoriert werdenI SIG_DFL→ Default-Aktion wird eingestellt.

27 / 38

Beispiel 1: Handler für SIGINT (Ctrl-C)#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>

long inc = 1;

void ctrl_c_handler (int c){inc = ( (inc==1) ? -1 : 1);return;

}

int main(void){long count;sig_t ret;

ret = signal(SIGINT, (sig_t) &ctrl_c_handler);if (ret == SIG_ERR) {perror("signal");exit(EXIT_FAILURE);

}

/* output count continuously */for (count=0; ; count+=inc) {printf("%08li\n", count);

}exit(EXIT_SUCCESS);

}

(signalhandler.c)28 / 38

Page 88: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Weitere Beispiele zu Signalen

I Signal bei Ende eines Kindprozesses: sigchld.c (extern)I Redefinition des Handlers im Handler: catch_ctrl_c.c

(extern)I Selbstabbruch nach definierter Zeitspanne: alarm.c

(extern)

29 / 38

Zwischenfazit: Signale unter POSIX

4 „klassische“ Funktionen:I kill()

I signal()

I pause() - wartet (passiv) auf ein SignalI alarm() - definiert eine Zeitspanne, bis SIGALRM

zugestellt wird („Der Wecker klingelt.“)

30 / 38

Page 89: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Nachteile und Unzulänglichkeiten von Signalen

I unzuverlässigI keine NutzdatenübertragungI keine PriorisierungI keine Speicherung (in Warteschlange)

modernere (aber kompliziertere) Signalbehandlung:sigaction(), sigprocmask() & Co.

31 / 38

Gemeinsam genutzter Speicher (Shared Memory)

I Idee: Kommunikation über gemeinsamen SpeicherI keine implizite Synchronisation (!)I ohne Adressräume problemlos implementierbarI bei virtuellem Speicher Funktionen des BS nötig:

I Anlegen des SegmentesI Einblenden in beide AdressräumeI (Datenübertragung)I Ausblenden aus allen AdressräumenI Zerstören des Segments

I Zugriff auf gemeinsam genutzten Speicher über Zeiger,überlagerte Datenstrukturen (→ effizient), kein Systemrufnötig

I UNIX: shmget(), shmat(), shmdt(), shmctl()I Segmente sind i.a. persistent (überleben den anlegenden

Prozess)

32 / 38

Page 90: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Nachrichtenaustausch (Message Passing)

Prinzip1. Sender konstruiert Nachricht und trägt diese in einen

Puffer ein2. Sender ruft Funktion send()

3. Nachricht wird durch das System transportiert4. Empfänger ruft Funktion receive(), der er einen Puffer

übergibt, in den die Nachricht kopiert wirdAnalogie: Briefsendung

33 / 38

Nachrichtenaustausch (Message Passing)

DiskussionI notwendig, wenn kein gemeinsamer Speicher existiert

(z. B. in verteilten Systemen)I jedoch auch mit gemeinsamem Speicher möglich

(z. B. Unix)I zwei grundlegende Operationen: send(), receive()I synchrone und asynchrone Operation möglich

Beispiele:I Message Passing Interface (MPI)I Nachrichtenwarteschlangen POSIX (msgrcv(),msgsnd() usw.)

34 / 38

Page 91: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Synchroner und asynchroner Nachrichtenaustausch

π 1 π 2

send()

receive()

π 1 π 2 π 1 π 2

Zeit

receive()

send()

send()

receive()

I. II. III.

Abbildung: I./II. – blockierend, III. nichtblockierend (asynchron)

35 / 38

Kommunikation über Sockets

. . . in der LV „Rechnernetze“

36 / 38

Page 92: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Was haben wir gelernt?

1. Was sind IPC-Mechanismen?2. ausführlich kennengelernt:

I Datenaustausch mittels DateiI die „klassische“ Unix-PipeI Signale (zumindest in der Bash)

3. kurz angerissenI Shared MemoryI Message Passing

4. nicht behandeltI SocketsI named Pipes

37 / 38

Testfragen

1. Beschreiben Sie den Ablauf bei der Zustellung einesSignals!

2. Was ist der Unterschied zwischen synchronem undasynchronem Senden beim Message Passing?

3. Entwerfen Sie ein C-Programm, das einen Sohn erzeugtund diesem mittels einer Pipe eine Nachricht zukommenlässt!

4. Welchen Kommunikationsmechanismus würden Sieeinsetzen, wenn Sie Daten übertragen müssen und dieTeilnehmer nicht verwandt sind?

5. Was ist ein persistenter Kommunikationsmechanismus?

38 / 38

Page 93: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Vorlesung Betriebssysteme IThema 7: Zuteilung des Prozessors

Robert Baumgartl

27. Januar 2015

1 / 33

Prozessorzuteilung (Scheduling)

I = Beantwortung der Frage:„Welche Aktivität soll zu einem bestimmtenZeitpunkt abgearbeitet werden (und für wielange)?“

I Komponente im Betriebssystem: der Scheduler (Planer)I Verfahren zur Ermittlung einer Abarbeitungsplans

(Schedule)

2 / 33

Page 94: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Typische Zielgrößen

Je nach betrachteter Systemklasse (z. B. Batchsysteme,Interaktive Systeme, Echtzeitsysteme) existieren verschiedenezu optimierende Parameter:I mittlere Reaktionszeit aller ProzesseI mittlere Verweilzeit aller Prozesse (turnaround time)I maximale CPU-AusnutzungI maximale Anzahl gleichzeitiger DatenströmeI Garantie einer maximalen ReaktionszeitI Fairness: n Prozesse→ jeder 1/n der ProzessorzeitI Quality-of-Service (QoS): „Jeder bekommt so viel, wie er

bezahlt hat.“I Ausschluss des Verhungerns einzelner Prozesse

3 / 33

Planung anderer Ressourcen

Außer dem Prozessor können (müssen aber nicht) diefolgenden Ressourcen geplant werden:I Hauptspeicher,I Aufträge an den Massenspeicher,I Kommunikationsbandbreite,I InterruptsI . . .

Beispiel: Linux besitzt einen sog. I/O-Scheduler, derFestplattenaufträge plant (d. h. , ggf. umsortiert).

4 / 33

Page 95: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Beispiel: Schedulingebenen in einem Batch-System

CPU

Haupt−

speicher

Disk

Admission

Scheduler

Scheduler

CPU

Memory

Scheduler

Input Queue

Arriving Job

Quelle: Andrew Tanenbaum, Modern Operating Systems. 2000,S. 141

5 / 33

Off-Line- vs. On-Line-Verfahren

Off-LineI komplette Ermittlung des Abarbeitungsplans vor

Inbetriebnahme des SystemsI Zur Laufzeit des Systems wird der vorbereitete Plan

abgearbeitet (keine Entscheidungen mehr notwendig).I inflexibelI sehr hohe Auslastung möglichI Startzeitpunkte, Ausführungszeiten, Abhängigkeiten aller

Aktivitäten müssen a priori bekannt sein.I z. B. bei autonomen oder Echtzeit-SystemenI situationsspezifische Pläne möglich, System unterscheidet

mehrere Modi

6 / 33

Page 96: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Off-Line- vs. On-Line-Verfahren

On-LineI Auswahl des jeweils nächsten abzuarbeitenden Prozesses

erfolgt zur Laufzeit des Systems.I Flexibel: System kann auf Änderungen verschiedener

Parameter, Umwelteinflüsse, Nutzeranforderungenreagieren

I keine Zeit für langwierige Auswahlverfahren→Kompromiss zwischen Optimalität des ausgesuchtenProzesses und Dauer für die Entscheidung notwendig.

Typische interaktive Betriebssysteme wie Windows oder Linuxplanen on-line.

7 / 33

Beispiel für Off-Line-Scheduling

Ein (nicht näher spezifiziertes) Rechensystem bestehe aus 3Prozessen, die wiederum aus den folgenden unabhängigenTeilprozessen bestehen (benötigte Rechenzeit in Klammern):

P1 : { p11(3), p12(2), p13(2), p14(5) }P2 : { p21(5), p22(7) }P3 : { p31(5), p32(2) }

Außerdem bestehen die folgenden expliziten zeitlichenAbhängigkeiten zwischen den Teilprozessen:

p21 vor p12, p12 vor p22, p13 vor p31,p14 vor p32, p22 vor p32.

Darüberhinaus müssen die Teilprozesse ein- und desselbenProzesses hintereinander liegen.

8 / 33

Page 97: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Präzedenzgraph

Die zeitlichen Abhängigkeiten veranschaulicht man am bestenin einem Präzedenzgraphen:I einen Knoten für jeden TeilprozessI eine Kante zwischen zwei Knoten genau dann, wenn der

erste Knoten beendet sein muss, bevor der zweitegestartet werden darf

3

p

p

p

21

5

2

12

13

2

22

7

14

5

31

5 32

2

11p

p

p

p

p

Abbildung: Präzedenzgraph des Beispielprozesssystems

9 / 33

Ableitung eines Schedules (off-line)

Verfahren:1. Bildung der Bereit-Menge B (enthält alle Prozesse, die

abgearbeitet werden können)2. Auswahl von n Prozessen aus B (n ist die

Prozessoranzahl, im einfachsten Falle also 1) nachvorgegebenem Kriterium (z. B. „den kürzesten Prozesszuerst“)

3. Planung der ausgewählten Prozesse für bestimmteZeitspanne (im einfachsten Falle: für eine Zeiteinheit)

4. Falls noch nicht alle Prozesse geplant sind→ Goto 15. Stop

10 / 33

Page 98: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Anwendung auf Beispieltaskmenge

I n = 2 (z. B. Dualcore-Prozessor)I Auswahl des jeweils kürzesten Prozesses (Shortest Job

Next)I Abarbeitung ohne Unterbrechung, wenn einmal gestartet

(Run-to-Completion)

Zeit B Auswahl0 p11,p21 p11,p21

3 (p21) (p21)5 p12 p12

7 p13,p22 p13,p22

9 p14,p31 p14

14 p31 p31

19 p32 p31

Tabelle: Schedulingzeitpunkte für Beispiel

11 / 33

Resultierender Schedule

0 2 4 6 8 10 12 14 16 18 20 22

p21

p11 p12 p13

p22

p14 p31 p32P1

P2

Abbildung: Off-Line Schedule für Beispieltaskmenge und ohneUnterbrechungen

I Resultat: Gantt-Diagramm (benannt nach demUnternehmensberater (!) Henry L. Gantt)

I Komplettierung des letzten Teilprozesses zu t = 21I Prozessoren nicht voll ausgelastet (idle time); Ursache:

Präzedenzen zwischen Teilprozessen

12 / 33

Page 99: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Zeitgesteuertes Scheduling

I alle Abläufe im System erfolgen in festem zeitlichenRahmen, periodisch

I keine Interrupts→ keine unvorhergesehenen AktivitätenI Kommunikation mit externe Komponenten: Abfragen

(Polling)I typisch für autonome und EchtzeitsystemeI Nutzung von off-line ermittelten Schedules, zwischen

denen umgeschaltet werden kann (Moduswechsel)I Beispiel: Medienzugriffsverfahren Time Division Multiple

Access (TDMA)

13 / 33

Time Division Multiple Access

Prinzip:I Übertragungszeit wird in (unendlich viele) Perioden fester

Länge aufgeteiltI innerhalb jeder Periode erhält jeder (potentielle)

Kommunikationsteilnehmer 1/n der Periodenlänge, einensog. Slot

I in seinem Slot kann jeder senden oder nichtI → keine Kollisionen möglich

t1 2 3 4 5 6 7

Slot

Periode

0

Prozess sendet nicht.

...

14 / 33

Page 100: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Ereignisgesteuertes Scheduling

Prinzip:I System reagiert auf Einflüsse von außen (Interrupts)I Aktivitäten werden als Reaktion auf Interrupts bereitI prinzipiell keine Garantie von Ausführungszeiten möglich,

da Auftrittszeitpunkte von Interrupts nicht vorhersehbarI typisch für interaktive SystemeI Beispiel: Grafische Benutzeroberflächen (Ereignisse:

Mausbewegung, Klick, Tastendruck, aber auch Interruptdurch die Netzwerkkarte)

15 / 33

Was passiert denn eigentlich beim Interrupt?

Instruktion n

Instruktion n+1

Instruktion n+2

Instruktion 2

Instruktion 1

IRET

Interrupt

Interruptservice−Prozess

Routine (ISR)

Abbildung: Ablauf einer Interruptbehandlung (vereinfacht)

I Interrupts sind asynchron zum ProgrammablaufI Quellen: Geräte (I/O), Programm, Betriebssystem

16 / 33

Page 101: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Interrupt: Ablauf in der CPU

Device controller orother system hardwareissues an interrupt

Processor finishesexecution of currentinstruction

Processor signalsacknowledgmentof interrupt

Processor pushes PSWand PC onto controlstack

Processor loads newPC value based oninterrupt

Save remainder ofprocess stateinformation

Process interrupt

Restore process stateinformation

Restore old PSWand PC

Hardware Software

Figure 1.10 Simple Interrupt Processing(William Stallings: Operating Systems. 6th ed., Pearson, 2009)

17 / 33

Schedulingzeitpunkt beim On-Line Scheduling

Unterbrechung eines aktiven Prozesses:I durch das BS, (prinzipiell) jederzeit (präemptives

Multitasking):I wenn ein Prozess blockiert (z. B. an Ressource),I wenn ein Prozess bereit wird (z. B. als Reaktion auf einen

Interrupt oder durch eine Ressourcenfreigabe),I wenn ein Prozess endet.

I durch das BS, jedoch nur an bestimmten Stellen,sogenannten Preemption Points

I freiwillig, an bestimmten Stellen, z. B. Systemruf(kooperatives Multitasking)

I nach Komplettierung einer Aktivität (run-to-completion)

18 / 33

Page 102: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Prioritäten und Priorisierung

I (gewollt) unfair, Prozesse besitzen unterschiedlicheWichtigkeit

I einfachste Möglichkeit: Fixed External Priorities (FEP))I d. h. , jeder Prozess erhält vor der Laufzeit des Systems

einen Parameter fest zugeordnet, der seine Wichtigkeitausdrückt, seine Priorität

I zur Laufzeit wird stets der höchstpriorisierte unter allenbereiten Prozessen ausgewählt

19 / 33

Prioritäten zum zweiten

Implizite Prioritäten: ein bestimmter Parameter jedesProzesses wird „zweckentfremdet“ zur Bestimmung derPriorität herangezogen.Beispiele:I Länge des JobsI verbleibende AbarbeitungszeitI Zeit seit letzter AktivierungI Deadline (Zeit bis zur unbedingten Komplettierung)

20 / 33

Page 103: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Statische und dynamische Prioritäten

Statisch: Priorität eines Prozesses ist konstant.I einfacher SchedulerI gut zu analysierenI nicht besonders flexibel (was ist, wenn sich die Wichtigkeit

eines Prozesses ändert?)Dynamisch: Priorität eines Prozesses ändert sich mit der Zeit.I periodische Neuberechnung (Aufwand!)I erlaubt situationsspezifische AnpassungenI schwieriger zu analysieren

21 / 33

Uniprozessor- vs. Multiprozessor-Scheduling

I zusätzlich nötige Entscheidung, wo Prozess abgearbeitetwird

I Ziel: Load BalancingI zu starr: möglicherweise schlechte Ausnutzung der

ProzessorenI zu flexibel: häufiger Wechsel des Prozessors (Thrashing)→ sehr hoher Overhead

I ideal: auf einem unbeschäftigten Prozessor fortsetzenI günstig: Prozessor, auf dem der Prozess unterbrochen

wurde (Cache, TLB)I Parameter Affinität des Prozesses zu einem bestimmten

Prozessor

22 / 33

Page 104: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Round Robin – Zeitscheibenverfahren

Idee: Jeder Prozess erhält den Prozessor für eine bestimmteZeitspanne (Quantum tq), dann ist der nächste dran.

I Grundgedanke: FairnessI tq klein→ Umschaltaufwand im Verhältnis zur Nutzarbeit

groß, kleine Reaktionszeit pro ProzessI tq groß→ relativer Umschaltaufwand klein, Reaktionszeit

pro Prozess großI wichtiger Parameter: Umschaltzeit tcs (Context Switch

Time)I Reaktionszeit eines Prozesses abhängig von tcs, Anzahl

Prozesse, tqI häufig Kombination mit Prioritäten (RR innerhalb einer

Prioritätsklasse)

23 / 33

Veranschaulichung Round-Robin

P1P1

cst

t q

rspt

2P 3P... ...

Abbildung: Parameter beim Zeitscheibenverfahren

24 / 33

Page 105: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Beispiel: Einfache Batch-Verfahren

First In First Out (FIFO, FCFS)I Prozesse werden in der Reihenfolge ihres Eintreffens

(vollständig abgearbeitet)I fairI leicht zu analysieren (→Warteschlangentheorie)

Shortest Job Next (SJN)I Idee: schnell ein paar kurze Jobs fertigstellen, bevor alle

auf einen langen Job warten müssen.I Prozess mit der kürzesten Dauer wird ausgewählt,

run-to-completionI Ausführungszeit muss bekannt seinI minimiert mittlere Verweilzeit (tv ) und mittlere Wartezeit

(tw )I ungerecht, Verhungern möglich

25 / 33

Beispiel zu SJN

4 Beispieltasks:

Job DauerJ1 6J2 8J3 7J4 3

J4 J1 J3 J2

0 3 9 16 24

Abbildung: Resultierender SJN-Schedule

tw =0 + 3 + 9 + 16

4= 7 tv =

3 + 9 + 16 + 244

= 13

26 / 33

Page 106: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Unix

I zeitscheibengesteuert (Quantum)I versucht, 2 Klassen von Prozessen zu unterscheiden und

getrennt zu behandeln:1. interaktive („I/O-bound“)2. (vorwiegend) rechnende („compute-bound“)

I Rechnende Prozesse nutzen ihre Zeitscheibe voll ausI Interaktive Prozesse nutzen ihre Zeitscheibe häufig nicht

aus (warten auf Interaktion durch Nutzer oder Gerät; d. h.blockieren häufig)

I wenn Zeitscheibe nicht ausgenutzt, wird Priorität (leicht)erhöht→ Unix bevorzugt interaktive Prozesse:

I interaktive Prozesse reagieren besserI rechnende Prozesse werden etwas benachteiligt

27 / 33

Linux?

I dynamische Prioritäten mit ZeitscheibenI genaues Verfahren ziemlich kompliziertI jeder interaktive Prozess besitzt einen sog. nice-ValueI dieser beschreibt, wie der betreffende Prozess im

Vergleich zu anderen interaktiven Prozessen priorisiertwird

I -20: höchste PrioritätI 0: defaultI 19: niedrigste Priorität

I Kommandos nice und renice (für bereits laufendeProzesse) ändern diesen Wert

~> renice 20 -p 2419524195: old priority 0, new priority 19

Achtung: normale Nutzer dürfen Priorität nur monoton ändern.

28 / 33

Page 107: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Anzeige Priorität und nice-Wert mittels top

top - 14:31:23 up 3:28, 6 users, load average: 1.68, 0.67, 0.30Tasks: 91 total, 4 running, 87 sleeping, 0 stopped, 0 zombieCpu(s): 42.1%us, 44.7%sy, 13.2%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 256396k total, 239564k used, 16832k free, 31364k buffersSwap: 1048568k total, 84k used, 1048484k free, 100936k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND3735 root 16 0 161m 12m 4400 R 50.9 4.9 3:08.68 Xorg

24194 robge 15 0 7404 3216 2244 S 26.6 1.3 1:59.25 xterm24195 robge 39 19 5672 2636 1412 R 15.6 1.0 2:08.29 bash23793 robge 15 0 9640 5808 4272 S 6.0 2.3 0:01.57 WindowMaker23928 robge 15 0 7408 3260 2264 R 0.3 1.3 0:01.82 xterm

1 root 15 0 1948 648 552 S 0.0 0.3 0:01.14 init2 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/03 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/04 root 10 -5 0 0 0 S 0.0 0.0 0:00.08 events/05 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khelper6 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kthread9 root 17 -5 0 0 0 S 0.0 0.0 0:00.00 kblockd/0

10 root 19 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid104 root 10 -5 0 0 0 S 0.0 0.0 0:00.02 kseriod138 root 15 0 0 0 0 S 0.0 0.0 0:00.01 pdflush139 root 15 0 0 0 0 S 0.0 0.0 0:00.08 pdflush140 root 10 -5 0 0 0 S 0.0 0.0 0:01.04 kswapd0

29 / 33

Scheduling in Windows 2000/XP/Vista

I prioritätsgesteuert, präemptiv

31

16

15

1

0

"real−time" levels

variable levels

system level

Abbildung: Prioritätsstufen im Windows 2000/XP

30 / 33

Page 108: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Scheduling in Windows 2000/XP/Vista

I Round-Robin bei Threads gleicher PrioritätI Länge des Quantums differiert für Desktop- und

Server-Variante (Server: 6fach länger!)I Quantum wird für Vordergrundthreads verdoppeltI temporäre Prioritätsanhebung (Priority Boost) in den

Levels 1-15 u. a. beiI Komplettierung einer I/O-OperationI Fensterthreads, die in den Vordergrund gelangen,I Gefahr des Verhungerns.

31 / 33

Prinzip des Priority Boost

tq

prioritätBasis−

Priorität

aktiv wartend aktiv preempted aktiv

Zeit

32 / 33

Page 109: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Was haben wir gelernt?

1. on-line vs. off-line Scheduling2. zeitgesteuertes vs. ereignisgesteuertes Scheduling3. Interrupts4. kooperatives vs. präemptives Multitasking5. statische vs. dynamische Prioritäten6. Round Robin; Einfluss der Zeitscheibenlänge7. Priority Boost

33 / 33

Page 110: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Vorlesung Betriebssysteme IThema 8: Threads (Aktivitäten, die zweite)

Robert Baumgartl

28. 01. 2014

1 / 22

Threads (Leichtgewichtsprozesse)

I Prozess = Container für Ressourcen + (ein)identifizierbarer Handlungsablauf (“Thread of Execution”)

I Idee: Trennung beider Konzepte:I Prozess = Container für Ressourcen (passiv)I Thread = identifizierbarer unabhängiger Handlungsablauf

(aktiv)I → ein oder mehrere Threads pro Prozess möglich, diese

teilen sich die Ressourcen des ProzessesI → parallele Abarbeitung innerhalb eines Adressraums

Der Begriff „Thread“ ist auch im Deutschen weitestgehendetabliert, die korrekte Übersetzung „Faden“ benutzen nurFanatiker. Eher wird noch „Leichtgewichtsprozess“ eingesetzt.

2 / 22

Page 111: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Veranschaulichung mehrerer Threads

...

...

...

...

...

...

P1

...

...

P3...

...

P2P1

...

...

Abbildung: Übergang von mehreren Prozessen zu mehreren Threadsin einem Prozess

3 / 22

Konsequenzen

I Thread kann nur innerhalb eines Prozesses existieren!I alle Threads eines Prozesses teilen sich dessen

Ressourcen und Adressraum bis auf die Register und denStack

I ⇒ kein Schutz zwischen Threads eines ProzessesI Kooperation im Vordergrund

dem Prozess gehörend jedem Thread gehörendAdressraum Program Counter

Globale Variablen Registereröffnete Dateien Stack (!)

Signale automatische VariablenKindprozesse Globalzustand

Tabelle: Gemeinsame und private Ressourcen von Threads einesProzesses (Beispiele)

4 / 22

Page 112: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Warum Threads?

I feingranulare Parallelität der VerarbeitungI Erzeugung/Vernichtung viel schneller als von ProzessenI effektive Ausnutzung mehrerer CPUs/KerneI Umschaltung zwischen Threads eines Prozesses schnellI Dekomposition in Threads liefert Performancegewinn,

insbesondere wenn Ein-/Ausgabe-beschränkteFunktionalität

Abbildung: Textverarbeitung mit 3 Threads (Tanenbaum: ModernOperating Systems, S.95)

5 / 22

Variante 1: User-Level-Threads

I Threads werden im User Mode (d.h., ohne Interventionund Wissen des Betriebssystems) erzeugt, synchronisiert,vernichtet

I Threadbibliothek, die Routinen zum Erzeugen, Beenden,Synchronisieren und Umschalten von Threads realisiert,erforderlich

I Threadbibliothek übernimmt Management aller Threads(speichert deren Zustandsinformationen)

I Umschaltungvorgang: Sichern und Restaurieren desThread-Kontextes (alle Register)

I kooperatives Programmiermodell: jeder Thread mussfreiwillig (ab und zu) den Prozessor abgeben

I Kernel hat kein Wissen über Threads, kennt (undverwaltet) nur Prozesse

I m:1-Abbildung, d. h. , allen Threads ist genau eineKernel-Aktivität zugeordnet, nämlich der zugehörigeProzess

6 / 22

Page 113: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Veranschaulichung von User-Level-Threads

...

...

...

...

...

...

...

...

P1

Thread Library

T1 T2 T3

User Mode

Kernel Mode

Abbildung: User-Level-Threads

7 / 22

User-Level-Threads, cont’d

Bewertung:+ kann (auch) für Betriebssystem implementiert werden,

welches kein Threadkonzept kennt (z. B. MS-DOS)+ Threadoperationen besonders schnell, da kein

Kernein-/austritt, kein Flush der Prozessorcaches, keinAdressraumwechsel

– blockierender Systemruf blockiert alle Threads einesProzesses (verhindert Parallelität), Abhilfe:

? nichtblockierende Systemrufe? im Vorhinein ermitteln, ob Ruf blockieren wird (z. B. mittelsselect()); wenn ja, dann Weiterarbeit eines anderenThreads

– Page Fault blockiert alle Threads eines Prozesses– kooperatives Programmiermodell mit freiwilliger Abgabe

des Prozessors erforderlich (da keine unterbrechendeInstanz aka Betriebssystem)

8 / 22

Page 114: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Variante 2: Kernel-Level-Threads

I 1:1-Abbildung (jedem Thread ist genau eine Aktivität desKernels zugeordnet)

I Threads im Kernel verwaltet, dieser verteilt Threads aufalle existierenden Kerne

I Threadoperationen teurer, da mit Systemruf (~eintritt,~austritt) verbunden (z. B.CreateThread() in Win32)

I Kombinationen aus User-Level- und Kernel-Level-Threadssind ebenfalls möglich

9 / 22

Veranschaulichung von Kernel-Level-Threads

...

...

...

...

...

...

...

...

P1

CPU

T1 T2 T3

User Mode

Kernel Mode

Abbildung: Kernel-Level-Threads

10 / 22

Page 115: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Transition single-threaded→ multi-threaded

Komplexität der Umwandlung traditioneller sequentiellerProgramme in multithreaded applications darf nichtunterschätzt werden!Einige Problemkreise:I globale Systemvariablen, wie errno stehen nur einmal pro

Prozess zur VerfügungI nicht reentranter Code, z. B. in Bibliotheken, muss vor

gleichzeitigem Betreten durch mehrere Threads geschütztwerden

I Signale sind meist prozessspezifischI Management mehrerer Stacks bei User-Level-Threads

11 / 22

Threads in Windows

I Windows-Welt: beginnend ab Windows NT (Win32-API)sind Kernel-Level-Threads im System verankert.

I CreateProcess() legt einen neuen Adressraum an undstartet in ihm einen (ersten) Thread

I mittels CreateThread() können in einem existierendenProzess weitere Threads gestartet werden

I User-Level-Threads existieren zusätzlich: die sogenannten Fibers

I d. h. , es können mehrere User-Level-Threads (Fibers) ineinem Kernel-Level-Thread existieren

12 / 22

Page 116: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Threads in Linux

I ab Kernel 2.0 Bibliothek LinuxThreadsI weitgehend, aber nicht vollständig, POSIX-kompatibelI limitiert (max. Threadanzahl 8192)I nicht allzu performantI daher ab 2002 Entwicklung der Native POSIX Thread

Library (NPTL)I behebt diese Nachteile, voll POSIX-kompatibelI 1:1-Implementierung (1 Thread pro Kernelaktivität)I andere Unixe besitzen u. U. andere

Thread-Implementierungen, die aber stets POSIX-Threadsrealisieren

Abfrage der installierten Thread-Version in Linux:~> getconf GNU_LIBPTHREAD_VERSION

13 / 22

POSIX-Threads (Pthreads)

I POSIX standardisiert ein Thread-API für Unix-artigeBetriebssysteme

I API wird Pthreads genanntI Standard enthält keine Aussage zur Implementierung der

Funktionen (z. B., ob Kernel- oder User-Level-Threadsrealisiert werden sollen)

I man 7 pthreads

I auch für Win32 verfügbar (pthreads-w32)

14 / 22

Page 117: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Pthreads-API – Übersicht

pthread_create() Anlegen eines neuen Threadspthread_join() Warten auf Ende des Threadspthread_exit() Beenden des rufenden Threads

pthread_detach() Abkoppeln vom Vaterpthread_kill() Zustellung eines Signals an Thread

pthread_attr_init() Init der Thread-Attributepthread_mutex_lock()

pthread_mutex_unlock()

}Synchronisation am Mutex

pthread_cond_init() Anlegen einer Bedingungsvariablepthread_cond_wait()

pthread_cond_signal()

}Sync. an Bedingungsvariable

Tabelle: Einige Funktionen der Pthreads-API

15 / 22

Pthreads-Programmierung

I #include <pthread.h>

I Linken mit Schalter -lpthreadI Funktionsnamen beginnen stets mit pthread_I alle Funktionen liefern 0 wenn erfolgreich, -1 bei FehlerI Threads eines Prozesses kommunizieren über

gemeinsame (globale) VariableI IPC nur zu Threads anderer Prozesse

16 / 22

Page 118: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Hello, world mittels Pthreads

# inc lude <pthread . h># inc lude < s t d i o . h># inc lude < s t d l i b . h>

# de f ine MAXITER 200000

void ∗ t h read_ f ( vo id ∗arg ){

p r i n t f ("world!\n" ) ;p th read_ex i t (NULL) ;

}

i n t main ( vo id ){

p thread_t a ;i n t r e t ;

p r i n t f ("Hello, " ) ;r e t = pthread_create (

&a , /∗ p o i n t e r to v a r i a b l e con ta in ing thread ID ∗ /NULL, /∗ p o i n t e r to thread a t t r i b u t e s ∗ /( vo id∗) &thread_f , /∗ thread f u n c t i o n ∗ /NULL) ; /∗ p o i n t e r to argument ∗ /

i f ( r e t != 0) {pe r ro r ("creating 1st thread" ) ;e x i t ( EXIT_FAILURE ) ;

}p th read_ jo in ( a , NULL) ;e x i t (EXIT_SUCCESS) ;

}

17 / 22

Erzeugung eines Threads

int pthread_create(pthread_t *tid, pthread_attr_t

*attr, void* (*start_fkt)(void*), void *arg);

I erzeugt neuen ThreadI *tid: Identifikator des neuen ThreadsI *attr: legt Attribute des Threads festI *start\_fkt: StartfunktionI *arg: Zeiger auf (beliebiges) Datum, welches der Thread

als Parameter erhältI keine Vater-Sohn-Beziehungen; jeder darf create-n und

join-en

18 / 22

Page 119: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Join und Detach

int pthread_join(pthread_t tid, void **ret);

I Analogon zum waitpid(), wartet auf Ende des Threads mitId tid

I Rückgabewert über retI erst nach join() wird der Thread vernichtet (analog

Zombie-Status)

int pthread_detach(pthread_t tid);

I macht den Thread un-join-bar, d.h., er wird sofortvernichtet, wenn er seine Startfunktion verlässt

19 / 22

GNU Portable Threads (GNU Pth)

I User-Level-Threads für UnixI m:1-ImplementierungI http://www.gnu.org/software/pth/I kooperatives Multitasking mit PrioritätenI Linken mit Schalter -lpth

20 / 22

Page 120: Vorlesung Betriebssysteme I - htw-dresden.derobge/bs1/vl/bs1-all.pdf · procedure call Windows USER, GDI Graphics drivers Hardware abstraction layer (HAL) Hardware interfaces (buses,

Hello, world! mit GNU Pth

# inc lude <pth . h># inc lude < s t d i o . h># inc lude < s t d l i b . h>

void ∗pth_thread ( vo id ∗arg ){

p r i n t f ("world\n" ) ;p t h _ e x i t (NULL) ;

}

i n t main ( vo id ){

p th_ t t i d ;

i f ( ! p t h _ i n i t ( ) ) {p r i n t f ("No pth lib available\n" ) ;e x i t ( EXIT_FAILURE ) ;

}p r i n t f ("Hello, " ) ;

t i d = pth_spawn (PTH_ATTR_DEFAULT, &pth_thread , NULL) ;i f ( ! t i d ) {

p r i n t f ("Could not spawn thread\n" ) ;e x i t ( EXIT_FAILURE ) ;

}

p t h _ j o i n ( t i d , NULL) ;

r e t u r n 0 ;}

21 / 22

Was haben wir gelernt?

I Threads sind eine Abstraktion zur effizientenParallelisierung von Programmabläufen.

I Kernel-Level-Threads↔ User-Level-ThreadsI Windows bringt beide Arten „von Haus aus“ mitI wichtigste Implementierung unter Unix/Linux: PthreadsI pthread_create() startet einen neuen ThreadI pthread_exit() beendet einen Thread (oder: Verlassen

der Threadfunktion)

22 / 22