46
Folie 1 Betriebssysteme 1 Thomas Kolarz

Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  1  Betriebssysteme  1   Thomas  Kolarz  

Page 2: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  2  Betriebssysteme  1   Thomas  Kolarz  

Betriebssysteme  I  -­‐  Inhalt  

0. Einführung,  Geschichte  und  Überblick  1.    Prozesse  und  Threads  

(die  AbstrakFon  der  CPU)  

2.  Speicherverwaltung  (die  AbstrakFon  des  Arbeitsspeichers)  

3.  Dateisysteme  (die  AbstrakFon  der  PlaPe)  

4.  Eingabe  und  Ausgabe  

5.  VerFefung  am  Beispiel  von  Linux  

6.  Virtuelle  Maschinen  und  Verteilte  Systeme  

Page 3: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  3  

Einleitung  -­‐  Geschichte  -­‐  Linux  SchniPstellen  -­‐  Linux  Kernstruktur  

Prozesse  und  Threads  in  Linux  -­‐  Prozesse  in  Linux  -­‐  Prozesserzeugung  mit    f  o  r  k  -­‐  Threads  in  Linux  -­‐  Der  System  Call    c  l  o  n  e  -­‐  Scheduling  und  Prioritätenklassen  -­‐  Die  Linux  Run-­‐Queue  -­‐  StaFsche  und  Dynamische  Prioritäten  

Signale  und  Pipes  in  Linux  -­‐  Signale  in  Linux  -­‐  Der  Signal  System  Call  -­‐  Signalgruppen  und  SignalfunkFonen  -­‐  (namenlose)  Pipes  -­‐  Benannte  Pipes  (FIFOs)  

Betriebssysteme  1   Thomas  Kolarz  

5.    Ver@efung  am  Beispiel  von  Linux  

Page 4: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  4  

Linux  Bootvorgang  -­‐  Phase  1:  HW-­‐Boot  -­‐  Phase  2:  Bootcode  -­‐  Phase  3:  Start  des  Kernels  -­‐  Phase  4:  init-­‐Prozess  -­‐  Phase  5:  Bootskripte  

Linux  Speicherverwaltung  -­‐  Speicherverwaltung  in  Linux  -­‐  Segmente  in  Linux  -­‐  Memory-­‐mapped  Dateien  -­‐  Systemaufrufe  zur  Speicherverwaltung  -­‐  ImplemenFerung  der  Speicherverwaltung  -­‐  Verwaltung  des  physischen  Speichers  -­‐  Seitendeskriptoren  -­‐  Zonendeskriptoren  -­‐  Knotendeskriptoren  -­‐  Verwaltung  des  virtuellen  Speichers  -­‐  vm_area_struct  Einträge  -­‐  Paging  in  Linux  -­‐  Der  Seitenersetzungsalgorithmus  

Betriebssysteme  1   Thomas  Kolarz  

5.    Ver@efung  am  Beispiel  von  Linux  

Page 5: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  5  

Linux  Dateisysteme  -­‐  Dateien  -­‐  Links  -­‐  Zeichen-­‐  und  Blockdateien  -­‐  Mounten  von  Dateisystemen  -­‐  Einige  wichFge  Verzeichnisse  -­‐  Dateisystem  Systemaufrufe  -­‐  Das  VFS  von  Linux  -­‐  Das  ext2-­‐Dateisystem  -­‐  Zugriff  auf  eine  Datei  -­‐  Audau  einer  Verzeichnisdatei  -­‐  Das  Öffnen  einer  Datei  -­‐  I-­‐Node  Struktur  -­‐  Filedeskriptoren  -­‐  Open  File  DescripFon  Table  -­‐  Journaling  Dateisysteme  -­‐  ext3,  ext4  und  ReiserFS  -­‐  Das  /proc-­‐Dateisystem  -­‐  NFS  (Network  File  System)  

Betriebssysteme  1   Thomas  Kolarz  

5.    Ver@efung  am  Beispiel  von  Linux  

Page 6: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  6  

Ein-­‐/Ausgabe  in  Linux  -­‐  ImplemenFerung  der  Ein-­‐/Ausgabe  -­‐  Spezialdateien  -­‐  Blockdateien  -­‐  Zeichendateien  -­‐  Hauptgeräte-­‐  und  Nebengerätenummer  -­‐  Gerätetreiber  und  FunkFonsprinzip  -­‐  Linux  Kernmodule  -­‐  Beispiel  NetzwerkimplemenFerung  -­‐  Sockets  -­‐  Socket-­‐Typen  

Sicherheit  in  Linux  -­‐  Benutzer  (UID  und  GID)  -­‐  Schutzrechte  -­‐  SETUID-­‐Bit  -­‐  Sicherheits-­‐Systemaufrufe  -­‐  Erweiterte  Schutzrechte  -­‐  Beispiel:  login-­‐Prozess  -­‐  Access  Control  Lists  

Betriebssysteme  1   Thomas  Kolarz  

5.    Ver@efung  am  Beispiel  von  Linux  

Page 7: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  7  

Datei  

Eine  Datei  in  Linux  ist  eine  Folge  von  0  oder  mehr  Bytes,  die  beliebige  InformaFonen  enthalten.  

Betriebssysteme  1   Thomas  Kolarz  

Linux  Dateisysteme      

         

  Es  wird  zunächst  keine  Unterscheidung  zwischen  ASCII-­‐,  Binär-­‐  und  sonsFgen  Dateien  getroffen.  

  Dateinamen  sind  auf  255  Zeichen  begrenzt  (inkl.  Erweiterungen).  Alle  ASCII-­‐Zeichen  ausser  „blank“  sind  erlaubt.  

  Dateiendungen  (hinter  dem  Punkt)  können  beliebig  lang  sein  und  Dateien  können  mehrere  Endungen  haben  (z.B.  prog.c.txt.gz).  KonvenFonen  für  die  Endungen  werden  vom  BS  nicht  erzwungen.  

Page 8: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  8  Betriebssysteme  1   Thomas  Kolarz  

Links  

Page 9: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  9  Betriebssysteme  1   Thomas  Kolarz  

Links  

         

Symbolische  Links  

  Spiegelt  das  Objekt  scheinbar  an  einer  besFmmten  Stelle  des  Dateisystems.  

  Es  wird  ein  eigener  I-­‐Node  angelegt,  der  den  Namen  (vollständigen  Pfad)  der  Datei  enthält  auf  die  verwiesen  wird,  bzw.  auf  den  Pfad  zeigt.  

  Wird  das  Ziel  gelöscht  ,  dann  verbleibt  der  Link,  zeigt  jedoch  ins  Leere.  

Ein  Link  stellt  eine  Verbindung  zwischen  Filesystem-­‐Objekten  her.  

Page 10: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  10  Betriebssysteme  1   Thomas  Kolarz  

Links  

         

Harte  Links  

  Ein  harter  Link  entspricht  einem  weiteren  Dateinamen  für  eine  vorhandene  Datei.  Es  gibt  keinen  eigenen  I-­‐Node,  der  exisFerende  I-­‐Node  der  Datei  wird  genutzt.    

  In  diesem  I-­‐Node  gibt  es  einen  Zähler,  der  für  jeden  Link  um  1  erhöht  wird.  Dieser  steht  ursprünglich  auf  1  für  den  eigentlichen  Namen  der  Datei.    

  Ist  z.B.  eine  Datei  unter  dem  Namen  A  als  auch  unter  dem  harten  Link  B  erreichbar,  dann  wird  die  Datei  und  der  zugehörige  I-­‐Node  erst  gelöscht,  wenn  A  und  B  gelöscht  sind.  

  Nur  das  Löschen  von  A  oder  B  vermindert  lediglich  den  Zähler  im  I-­‐Node  um  1.  Für  das  Löschen  der  Datei  und  des  I-­‐Nodes  muss  der  Zähler  auf  0  stehen.  

Page 11: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  11  

Neben  den  regulären  Dateien  unterstützt  Linux  auch  Zeichen  und  Blockdateien.  

Betriebssysteme  1   Thomas  Kolarz  

Zeichen-­‐  und  Blockdateien      

         

  Zeichendateien  modellieren  serielle  Ein-­‐/Ausgabegeräte,  z.B.  Tastaturen,  Drucker  (öffnen  und  lesen  von  /dev/Py  liest  von  der  Tastatur,  öffnen  und  schreiben  von  /dev/lp  schreibt  auf  den  Drucker)  

  Blockdateien,  op  mit  Namen  wie  /dev/hd1,  können  zum  Lesen  und  Schreiben  von  rohen  PlaPenparFFonen  unabhängig  vom  Dateisystem  verwendet  werden.  Dabei  wird  die  I-­‐Node  und  Dateistruktur  vollkommen  ignoriert.  

  Bei  mehreren  PlaPen  wird  auf  jeder  ein  abgeschlossenes  Dateisystem  mit  eigenem  Wurzelverzeichnis  angelegt.  Das  Gerät  muss  dann  durch  einen  Namen  (z.B.  C:,  D:)  idenFfiziert  werden.  

  In  Linux  kann  eine  PlaPe  (oder  anderes  LW)  in  den  Dateibaum  eine  anderen  PlaPe  eingebunden  werden  –  moun@ng  genannt.  

Page 12: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  12  Betriebssysteme  1   Thomas  Kolarz  

„Mounten“  von  Dateisystemen      

Page 13: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  13  Betriebssysteme  1   Thomas  Kolarz  

Einige  wich@ge  Verzeichnisse  in  Linux  

Page 14: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  14  Betriebssysteme  1   Thomas  Kolarz  

Linux  Dateisystem  -­‐  Systemaufrufe  

Page 15: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  15  Betriebssysteme  1   Thomas  Kolarz  

Das  VFS  von  Linux  

  Die  obere  SchniPstelle  zu  den  Benutzerprozessen  bilden  die  Standard-­‐POSIX-­‐Aufrufe,  wie  open,  read,  write,  lseek,  etc.  

  Die  SchniPstelle  nach  unten,  die  VFS-­‐SchniPstelle,  ist  durch  4  SchlüsselobjekPypen  und  zugehörigen  OperaFonen  definiert,  die  das  spezielle  Dateisystem  unterstützen  muss.    

Page 16: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  16  Betriebssysteme  1   Thomas  Kolarz  

Das  VFS  von  Linux  

Virtual  File  System  

VFS  verbirgt  vor  den  Prozessen  der  höheren  Ebene  und  den  Anwendungen  die  Unterschiede  zwischen  den  vielen  Dateisystemen,  die  von  Linux  unterstützt  werden.  

VFS  definiert  eine  Menge  von  grundlegenden  Abstrak@onen  sowie  Opera@onen  des  Dateisystems,  die  auf  diesen  AbstrakFonen  zugelassen  sind.  

Das  VFS  bildet  die  einheitliche  SchniPstelle,  in  die  alle  Dateisystemtreiber  integriert  werden  können  (z.B.  ext2,  ext3,  ext4,  ReiserFS  4,  FAT,  NTFS,  …..).  

Die  Aufgabe  der  Dateisystemtreiber  ist  es  die  VFS  FunkFonsaufrufe  auf  das  spezielle  Dateisystem  umzusetzen.  

Page 17: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  17  Betriebssysteme  1   Thomas  Kolarz  

Das  VFS  von  Linux  

Die  4  wich@gsten  Dateisystemstrukturen  im  VFS  

Der  Superblock:  enthält  kriFsche  InformaFonen  über  das  Layout  des  Dateisystems.  

Der  Inode  (o.  V-­‐Node):  beschreibt  genau  eine  Datei  (auch  Geräte  und  Verzeichnisse  werden  als  Datei  repräsenFert  und  haben  ebenfalls  einen  zugehörigen  Inode).  

Dentry:  Datenstruktur,  die  Verzeichniseinträge  repräsenFert;  werden  durch  das  System  nebenher  erzeugt.  Verzeichniseinträge  werden  in  einem  Dentry-­‐Cache  gepuffert  (z.B.  Einträge  für  /,  /usr,  /bin).  

File:  Diese  Datenstruktur  ist  eine  speicherinterne  Darstellung  einer  geöffneten  Datei.  

Page 18: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  18  Betriebssysteme  1   Thomas  Kolarz  

Das  VFS  von  Linux  

und  zusätzlich  die  aktuelle  PosiFon  in  der  offenen  Datei    

sind  nur  im  RAM  gespeichert  

öffnen  einer  Datei  

abhängig  vom  konkreten  Dateisystem  

Page 19: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  19  Betriebssysteme  1   Thomas  Kolarz  

Das  VFS  von  Linux  

         

  Das  VFS  hat  nichts  mit  der  Art  der  Speicherung  der  Daten  auf  der  PlaPe  zu  tun,  dafür  ist  das  tatsächlich  verwendete  Dateisystem  verantwortlich.  

  Das  VFS  kommt  erst  dann  zum  Einsatz,  wenn  auf  eine  besFmmte  Datei  zugegriffen  wird.  Dann  wird  eine  virtuelle  (temporäre)  Struktur  im  Speicher  erzeugt,  über  die  sämtliche  Zugriffe  auf  die  Datei  umgesetzt  werden.  

  Ein  konkretes  Dateisystem,  sehr  ähnlich  zu  VFS,  ist  ext2.  

Page 20: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  20  Betriebssysteme  1   Thomas  Kolarz  

Das  ext2-­‐Dateisystem  von  Linux  

         

  Die  ParFFon  ist  in  Gruppen  von  Blöcken  aufgeteilt.  

  Der  erste  Block  in  einer  Gruppe  ist  der  Superblock  mit  den  Infos  über  das  Layout  des  Dateisystems  (wie  #I-­‐Nodes,  #PlaPenblöcke,  Zeiger  auf  die  Liste  der  freien  Blöcke.  

  Gruppendeskriptor  enthält  die  Infos  über  die  PosiFon  der  Bitmaps  für  I-­‐Nodes  und  freie  Blöcke  in  der  Gruppe  und  die  Anzahl  der  Verzeichnisse.  

Page 21: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  21  Betriebssysteme  1   Thomas  Kolarz  

Das  ext2-­‐Dateisystem  von  Linux  

  Die  Block-­‐  und  die  I-­‐Node  Bitmaps  sind  genau  ein  Block  groß.  Die  Bitmaps  vereinfachen  die  Verwaltung  der  Datenblöcke  und  I-­‐Nodes.  

  Mit  1KB  Blöcken  limiFert  dieser  Entwurf  eine  Blockgruppe  auf  8192  Blöcke  und  8192  I-­‐Nodes  (d.h.  eine  Blockgruppe  hat  insgesamt  …..?)    

  Die  I-­‐Nodes  selbst  sind  durchnummeriert  (beginnend  mit  1).  Jeder  I-­‐Node  ist  128  Byte  lang  und  beschreibt  genau  eine  Datei  (sehr  großen  Dateien  werden  durch  die  indirekten  Zeiger  im  I-­‐Node  beschrieben.)  

Page 22: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  22  Betriebssysteme  1   Thomas  Kolarz  

Das  ext2-­‐Dateisystem  von  Linux  

         

  I-­‐Nodes,  die  Verzeichnissen  zugeordnet  sind,  verteilen  sich  über  die  PlaPenblock-­‐gruppen  hinweg.  

  Ext2  versucht  gewöhnliche  Dateien  in  der  gleichen  Blockgruppe  wie  das  zugehörige  I-­‐Node  unterzubringen  –  vorausgesetzt  es  ist  genügend  Platz.    

  Sehr  große  Dateien  sind  zwangsläufig  auf  viele  Blockgruppen  verteilt.  

Page 23: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  23  Betriebssysteme  1   Thomas  Kolarz  

Zugriff  auf  eine  Datei  

o  p  e  n    (Pfadname)  

Zeiger  auf  I-­‐Node  des  akt.  Verzeichnis  im  Prozessdeskriptor  

Zeiger  auf  /-­‐Verz.  I-­‐Node  ist  dem  BS  bekannt  

relaFv   absolut  

im  I-­‐Node  Zeiger  auf  Verz.-­‐datei,  mit  weiteren  I-­‐Node-­‐Nrn.  

……..  

……..  

I-­‐Node  des  Zielverz.  enthält  den  Zeiger  auf  die  Ziel-­‐Verzeichnisdatei  

im  I-­‐Node  Zeiger  auf  Verz.-­‐datei,  mit  weiteren  I-­‐Node-­‐Nrn.  

Page 24: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  24  Betriebssysteme  1   Thomas  Kolarz  

AuYau  einer  Verzeichnisdatei  

Inhalt  einer  Verzeichnisdatei  

42  anstaP  19!!  

Page 25: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  25  

  Jede  Verzeichnisdatei  besteht  aus  einer  Anzahl  von  ganzen  PlaPenblöcken.  

  In  der  Verzeichnisdatei  liegen  die  Einträge  für  Dateien  und  Verzeichnisse  in  unsorFerter  Reihenfolge  vor,  wobei  jeder  Eintrag  seinem  Vorgänger  direkt  folgt.    

  Einträge  können  nicht  über  mehrere  PlaPenblöcke  gehen,  so  dass  am  Ende  eines  PlaPenblocks  op  einige  ungenutzte  Bytes  liegen.  

  Jeder  Eintrag  besteht  aus  4  Feldern  gleicher  Länge  und  einem  Feld  variabler  Länge.  

     1.  Feld:  I-­‐Node  Nummer  des  folgenden  Eintrags  

     2.  Feld:  Gesamtlänge  des  Eintrags  

     3.  Feld:  Eintrag  Typ  (Datei  =  F  oder  Verzeichnis  =  D)  

     4.  Feld:  Länge  des  Dateinamens  

     5.  Feld:  Dateiname  

Betriebssysteme  1   Thomas  Kolarz  

AuYau  einer  Verzeichnisdatei    

Page 26: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  26  

  Da  Verzeichnisse  linear  durchsucht  werden,  kann  es  lange  dauern,  Einträge  am  Ende  großer  Verzeichnisses  zu  finden,  insbesondere  bei  zusätzlich  langen  Pfaden.    

  Deshalb  verwaltet  das  System  einen  Cache  für  die  Verzeichnisse  auf  die  vor  kurzem  zugegriffen  wurde,  den  sog.  Dentry-­‐Cache.  

  Der  Dentry-­‐Cache  enthält  zu  jedem  kürzlich  gelesenen  Verzeichnis  die  zugehörige  I-­‐Node-­‐Nummer  (und  die  Blockgruppe).  

  Eine  Konsequenz  der  verkePeten  Suche  ist,  dass  der  Zugriff  mit  relaFven  Pfade  (die  op  wesentlich  kürzer  sind)  schneller  sein  kann  als  der  mit  absoluten.  

       

Betriebssysteme  1   Thomas  Kolarz  

Suchvorgang  beim  Öffnen  einer  Datei    

Page 27: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  27  Betriebssysteme  1   Thomas  Kolarz  

Suchvorgang  beim  Öffnen  einer  Datei    

/home/thomas/file.c  

I-­‐Node  2  für  /  wird  gelesen  und  das  entsprechende  Verzeichnis  für  /  geöffnet  

I-­‐Node  Nr.  für  home  wird  gesucht  

home-­‐I-­‐Node  wird  gelesen  und  das  entsprechende  Verzeichnis  für  home  geöffnet  

I-­‐Node  Nr.  für  thomas  wird  gesucht  

thomas-­‐I-­‐Node  wird  gelesen  und  das  entsprechende  Verzeichnis  für  thomas  geöffnet  

I-­‐Node  Nr.  für  file.c  wird  gesucht  

file.c-­‐I-­‐Node  wird  gelesen  und  file.c  kann  geöffnet  werden  

Page 28: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  28  

  Wird  eine  Datei  geöffnet,  dann  wird  der  zugehörige  I-­‐Node  in  der  I-­‐Node  Tabelle  gespeichert.    

  Die  I-­‐Node  Tabelle  ist  eine  Datenstruktur  im  Kern,  die  alle  I-­‐Nodes  der  aktuell  geöffneten  Dateien  und  Verzeichnisse  enthält.  

  Insbesondere  ist  der  I-­‐Node  des  aktuellen  „working  directories“  in  dieser  Tabelle.  

  Indiziert  ist  diese  Tabelle  mit  den  zugehörigen  I-­‐Node  Nummern.  

       

Betriebssysteme  1   Thomas  Kolarz  

Die  I-­‐Node  Tabelle    

Page 29: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  29  Betriebssysteme  1   Thomas  Kolarz  

I-­‐Node  Struktur  in  Linux    

Page 30: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  30  Betriebssysteme  1   Thomas  Kolarz  

I-­‐Node  Struktur      

  Das  folgende  Bild  enthält  neben  der  Open  File  DescripFon  Table  auch  noch  die  I-­‐Nodes,  mit  den  3  Zeigern  auf  die  indirekten  Adressierungen.  

  Mit  den  direkten  ersten  12  Zeigern  ließen  sich  bei  4  KB  Blöcken  gerade  mal  Dateien  bis  zu  einer  Größe  von  48  KB  adressieren  und  verwalten.  

  Mit  dem  ersten  indirekten  Zeiger  ist  nun  ein  weiterer  Block  von  4  KB  adressiert,  der  jedoch  kein  einfacher  Datenblock  ist,  sondern  weitere  Zeiger  auf  zusätzliche  Datenblöcke  enthält.  

  Ein  4  KB  Block  enthält  (bei  32-­‐Bit  Zeigern)  damit  weitere  1024  Zeiger,  womit  genau  4  MB  an  Datenblöcken  zusätzlich  adressiert  werden  können.  

Page 31: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  31  Betriebssysteme  1   Thomas  Kolarz  

Filedeskriptoren  und  I-­‐Nodes  

Page 32: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  32  Betriebssysteme  1   Thomas  Kolarz  

Open  File  Descrip@on  Table      

  Die  „open  file  descripFon  table“  liegt  zwischen  der  Tabelle  der  Dateideskriptoren  und  der  I-­‐Node  Tabelle  

  In  dieser  Tabelle  wird  i.w.  die  DateiposiFon  der  geöffneten  Datei  verwaltet.  

  Durch  die  Entkopplung  von  den  fd‘s  bzw.  den  I-­‐Nodes  hat  man  die  entsprechende  Flexibilität,  um  die  geöffnete  Dateien  mehreren  Prozessen  gleichzeiFg  zu  Verfügung  zu  stellen,  so  dass  die  SchreibposiFon  synchronisiert  wird.  

       

Page 33: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  33  Betriebssysteme  1   Thomas  Kolarz  

Journaling  Dateisysteme      

  Zur  Vermeidung  von  Datenverlust  durch  Stromausfall  müsste  ein  Dateisystem  jede  Änderung  an  einem  Datenblock  sofort  auf  die  PlaPe  zurückschreiben.  

  Auf  Grund  des  Aufwands  ist  dies  prakFsch  unmöglich,  deshalb  gibt  es  eine  Verzögerung  von  bis  zu  30  Sekunden  bevor  die  Veränderungen  geschrieben  werden.    

  Um  das  Dateisystem  robuster  zu  machen,  wurden  Journaling-­‐Dateisysteme  entwickelt.  Die  Grundidee  ist:  

Verwaltung  eines  Journals,  

in  dem  alle  OperaFonen  des  Dateisystems  sequenziell  beschrieben  sind,  d.h.  sämtliche  Änderungen  von  Daten  oder  Metadaten  (I-­‐Nodes,  Superblock,  usw.)  werden  auf  die  PlaPe  in  das  Journal  geschrieben,  aber  nicht  an  der  richFgen  Stelle.    

Page 34: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  34  Betriebssysteme  1   Thomas  Kolarz  

Journaling  Dateisysteme      

  Entdeckt  das  System  während  des  Neustarts,  dass  das  Dateisystem  nicht  ordentlich  ausgehängt  wurde,  kann  das  Jounal  durchlaufen  werden  und  die  beschriebenen  Änderungen  des  Dateisystems  werden  ausgeführt.  

  Das  Jounal  ist  eine  Datei,  die  als  zirkulärer  Puffer  angelegt  ist.  

  Die  Jounal  OperaFonen  werden  nicht  im  Jounal  eingetragen.  Es  wird  ein  eigenes  JBD  (Journaling  Block  Device)  benutzt,  um  die  Lese-­‐/SchreiboperaFonen  des  Journals  durchzuführen.  

Page 35: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  35  Betriebssysteme  1   Thomas  Kolarz  

Linux  ext3-­‐Dateisystem      

  ext3  ist  zu  100%  abwärtskompaFbel  zu  ext2.  

  Ein  ext2-­‐Dateisystem  kann  in  ein  ext3  konverFert  werden  und  umgekehrt.  

  Der  wesentliche  Unterschied  zwischen  ext2  und  ext3  ist,  dass  ext3  ein  Jounal-­‐fähiges  Dateisystem  ist.  Die  3  folgenden  Modi  sind  möglich:  

1.  Im  Journal-­‐Mode  werden  alle  Veränderungen  an  Metadaten  und  normalen  Dateien  protokolliert.  

2.  Im  writeback-­‐Mode  werden  nur  die  Veränderungen  an  den  Metadaten  protokolliert.  Die  anderen  werden  mit  der  üblichen  Verzögerung  (befinden  sich  zunächst  nur  im  Arbeitsspeicher,  ohne  Protokoll)  geschrieben.  Es  kann  dabei  zu  Inkonsistenzen  kommen.  

3.  Im  ordered-­‐Mode  werden  diese  Inkonsistenzen  verhindert  (ist  jedoch  langsamer),  da  die  Dateien  unmiPelbar  geschrieben  werden,  wenn  die  Metadaten  protokolliert  werden.  

Page 36: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  36  Betriebssysteme  1   Thomas  Kolarz  

ext4  und  ReiserFS      

  Den  Nachfolger  ext4  von  ext3  gibt  es  seit  2009.  Beide  Dateisysteme  können  problemlos  ineinander  konverFert  werden.  

  ext4  unterstützt  Dateisysteme  bis  zu  einer  Größe  von  einem  Exabyte,  sowie  Nanosekunden  genaue  Timestamps  für  Dateien.  

  mit  ext4  ist  eine  größere  Anzahl  von  Unterverzeichnissen  pro  Verzeichnis  möglich  (die  zugehörigen  I-­‐Nodes  müssen  bei  ext2  alle  in  derselben  Blockgruppe  stehen).  

  ReiserFS  ist  ebenfalls  jounaling-­‐fähig  und  gilt  als  äusserst  performant.  

Page 37: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  37  Betriebssysteme  1   Thomas  Kolarz  

Das  /proc-­‐Dateisystem      

  Für  jeden  Prozess  im  System  gibt  es  unter  /proc  ein  Verzeichnis.  Der  Name  des  Verzeichnisses  ist  die  PID,  z.B.:  /proc/3456  

  In  dem  Verzeichnis  befinden  sich  Dateien,  die  InformaFonen  über  den  Prozess  enthalten,  wie  Umgebungsvariablen,  Signalmasken,  zugehörige  Tasks  und  vieles  mehr  

  Die  Dateien  exisFeren  nicht  auf  der  PlaPe.  Sie  werden  bei  Bedarf  aus  dem  aktuellen  Prozess  ermiPelt  (liegen  im  Arbeitsspeicher)  

Page 38: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  38  Betriebssysteme  1   Thomas  Kolarz  

Das  NFS-­‐Dateisystem      

  Das  NFS  (Network  File  System)  der  Firma  Sun  ist  auf  allen  modernen  Linux  Systemen  vorhanden.    

  Dateisysteme  auf  verschiedenen  Rechnern  können  damit  zu  einem  logischen  Ganzen  zusammengefasst  werden.  

  Die  Grundidee  von  NFS  ist,  dass  eine  beliebige  Anzahl  von  Clients  und  Servern  ein  Dateisystem  gemeinsam  nutzen  kann.  

Page 39: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  39  Betriebssysteme  1   Thomas  Kolarz  

Das  NFS-­‐Dateisystem      

Page 40: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  40  Betriebssysteme  1   Thomas  Kolarz  

Das  NFS-­‐Dateisystem      

  Jeder  NFS-­‐Server  exporFert  ein  oder  mehrere  Verzeichnisse  für  den  Zugriff  von  en�ernten  Clients.  

  Mit  einem  Verzeichnis  werden  auch  sämtliche  Unterverzeichnisse  freigegeben.  

  Die  Liste  der  Verzeichnisse,  die  ein  Server  exporFert  befindet  sich  normalerweise  in  /etc/exports  (siehe  auch  man  exports).    

 Ein  einfaches  Beispiel  für  exports:  

 /home/opt      (ro)  

 /home/User  192.168.0.0/24  (rw)  

 Das  erste  Verzeichnis  /home/opt  ist  für  alle  Clients  freigegeben,  aber  nur  read-­‐only.  

 Das  zweite  Verzeichnis  /home/User  ist  für  alle  Clients  aus  dem  Netz  192.168.0  zum  Lesen  und  Schreiben  freigegeben.  

Page 41: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  41  Betriebssysteme  1   Thomas  Kolarz  

Das  NFS-­‐Dateisystem      

  Clients  greifen  auf  exporFerte  Verzeichnisse  zu,  indem  sie  diese  einbinden.  

  Der  Mountpunkt  des  Clients  ist  vollständig  lokal,  der  Server  weiß  nicht,  wo  seine  Verzeichnisse  auf  den  Clients  eingebunden  werden.    

  NFS  unterstützt  heterogene  Systeme  (d.h.  die  Server  bzw.  Clients  müssen  nicht  unbedingt  Linux  Systeme  sein  und  können  unterschiedliche  BS  haben).  

  Sowohl  auf  dem  Server  als  auch  auf  den  Clients  muss  der  RPC-­‐Dienst  (Remote  Procedure  Call)  laufen,  damit  die  Server  und  Clients  miteinander  kommunizieren  können.  

Page 42: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  42  Betriebssysteme  1   Thomas  Kolarz  

Das  NFS-­‐Dateisystem      

  Die  SchniPstelle  zwischen  Client  und  Server  ist  durch  zwei  Protokolle  definiert.  

  Das  erste  Protokoll  ist  für  das  Einhängen  zuständig:  

.  

Client   Server  

Pfadname  des  gewünschten  Verzeichnisses  

Datei-­‐Handle:  Dateisystemtyp  PlaPe  u.  I-­‐Node-­‐Nr.  des  Verz.  SicherheitsinformaFonen,  ….  

Page 43: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  43  Betriebssysteme  1   Thomas  Kolarz  

Das  NFS-­‐Dateisystem      

  Das  zweite  Protokoll  dient  dem  Zugriff  auf  Dateien  und  Verzeichnisse.  

  Clients  können  Nachrichten  an  die  Server  schicken,  um  Verzeichnisse  zu  manipulieren  oder  Dateien  zu  lesen  und  zu  schreiben.  Die  meisten  Linux  Systemaufrufe  werden  von  NFS  unterstützt,  mit  Ausnahme  von  open  und  close  (werden  bei  NFS  nicht  benöFgt).  

.  

Client   Server  

lookup  mit  Dateiname    

Datei-­‐Handle:  mit  dem  die  Datei  idenFfiziert  werden  kann  

  Die  weiteren  Systemaufrufe  nutzen  diesen  Datei-­‐Handle,  z.B.  beinhaltet  der  read  den  Datei-­‐Handle,  die  PosiFon  ab  der  gelesen  werden  soll  und  die  Byte-­‐Anzahl.  

.  

Page 44: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  44  Betriebssysteme  1   Thomas  Kolarz  

Das  NFS-­‐Dateisystem      

  Jeder  dieser  Nachrichten  ist  in  sich  abgeschlossen,  d.h.  der  Server  braucht  sich  nichts  zu  der  Verbindung  zu  merken.  

  Falls  also  ein  Server  abstürzt,  ist  keine  InformaFon  über  offene  Dateien  verloren,  da  es  keine  gibt.  

  Ein  Server,  der  keinen  ZustandsinformaFonen  über  offene  Dateien  verwaltet,  wird  zustandslos  (stateless)  genannt.  

  Eine  Weiterentwicklung  von  NFS,  die  Version  NFSv4  wurde  vereinfacht  und  arbeitet  als  ein  zustandsbeha_etes  Dateisystem.  Hier  gibt  es  dann  auch  wieder  die  open  OperaFon.  

.  

Page 45: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  45  Betriebssysteme  1   Thomas  Kolarz  

Das  NFS-­‐Dateisystem      

R-­‐Node  

Page 46: Betriebssysteme&1& Thomas&Kolarz Folie&1& · 2010. 6. 15. · Betriebssysteme&1& Thomas&Kolarz Folie&2& Betriebssysteme*I,*Inhalt 0. Einführung,&Geschichte&und&Überblick& 1. &&Prozesse&und&Threads&

Folie  46  Betriebssysteme  1   Thomas  Kolarz  

Zusammenfassung      

  Der  zentrale  Teil  des  Dateikonzepts  in  Linux  ist  das  VFS.  Mit  diesem  Konzept  hat  der  Benutzer  eine  einheitliche  SchniPstelle  auf  die  verschiedensten  Dateisysteme  und  braucht  sich  demzufolge  nicht  mehr  um  die  Details  zu  kümmern.  

  Das  VFS  ermöglicht  dann  den  Zugriff  auf  das  konkrete  Dateisysteme  wie  z.B.  NTFS,  FAT,  ext2  (kommt  VFS  am  nahesten),  ext3,  ext4,  /proc,  oder  NFS.  

  Das  Dateisystem  ist  eigentlich  ein  sehr  wichFger  Spezialfall  der  allgemeineren  Ein-­‐und  Ausgabe  und  der  damit  verbundenen  KommunikaFon  mit  Geräten.  

  Dieser  enge  Zusammenhang  ist  in  Linux  in  besonderer  Form  berücksichFgt,  da  Geräte  in  Linux  als  spezielle  Dateien  dargestellt  werden.  Die  Ausgabe  auf  einem  Gerät  wird  damit  z.B.  zum  Schreiben  in  eine  Datei.  

.