2.2 Adressraumverwaltung Code und Daten Einfachster Fall: 0 length-1.

Slides:



Advertisements
Ähnliche Präsentationen
Ext2. Geschichte Minixerhebliche Beschränkungen extfs ext2erstmals aufhebung aller drängenden Beschränkungen ext3erweiterung um Journaling.
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
Ausführen.
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
1 Spezielle Packages des Java SDK (1.4) java.nio.
2 Systemdienste Wiederholungsempfehlung: Rechnerorganisation Beachte: Systemaufrufe sind sprachunabhängig. Ihre Beschreibung bezieht sich daher auf das.
Vs Klassifizierung von Kommunikationsdiensten synonym:Nachrichtensystem/dienst(message service) Kommunikationssystem/dienst(communication service)
der Universität Oldenburg
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
ARRAY oder FELD oder VEKTOR
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
PS: Basisinformationstechnologie Jens Alvermann
Tag 2 Look-up-Tabellen, Zufallszahlen, Listen, Speichermanagement und Dateiverwaltung Quelle: 3D-Spiele mit C++ und DirectX in 21 Tagen, Alexander.
1A: POSIX POSIX (Portable Operating System) ist ein Standard für UNIX-Systeme. Er dient dazu, Programme portabel unter UNIX und Derivaten zu tauschen und.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Bs Kommunikation Kommunikation zwischen Benutzerprozessen (IPK) stellt andere Anforderungen als auftragsorientierte Kommunikation in mikrokernbasierten.
DbjFileManager Paul Fruntzek Michael Stanek. Überblick Unterste Ebene im Schichtenmodell Schnittstelle zum BS (Low-Level) Aufgabenbereich: Persistente.
Programmierung 1 - Repetitorium
UNIX-Dateisystem Vortrag: Ronny Kuhnert am
DVG Dateien. DVG Die Klasse File Die Klasse File stellt die Verbindung zwischen dem File-System des Rechners und dem JAVA-Programm her.
Datenströme DVG Datenströme.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Dateisysteme Marcel Waldvogel. Marcel Waldvogel, IBM Zurich Research Laboratory, Universität Konstanz, , 2 Dateisysteme Was ist eine Datei?
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Permanente Datenspeicherung
Bs Gemeinsame Datensegmente am Beispiel Solaris [Beachte: Unix/Linux setzen keine Hardware-Segmentierung voraus und sprechen daher statt von.
Bs Verzeichnisdateien Anstelle eines zentralen Verzeichnisses: Menge von Verzeichnisdateien (directory files), die selbst in Verzeichnissen verzeichnet.
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Programmieren in C Module und Bibliotheken Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Dateien
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Blockseminar Allgemeine Technologien II Dozent: P. Sahle März 2009 PHP in HTML Referentin: Angela Brinck.
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
2.3 Implementierung von Prozessen
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Bs-61 6 Dateiverwaltung. bs-62 Datei (file) = abstraktes Datenobjekt mit folgenden Eigenschaften:  persistent ( = langzeitgespeichert auf Platte oder.
Bs Dateien als Segmente Idee:Datei = persistentes Segment Konsequenzen:  Datei kann in virtuellen Adressraum eingeblendet werden (memory-mapped.
Bs Der Speicherverwalter Speicherverwalter (memory manager) = im einfachsten Fall ein Systemprozess, der für die Umlagerung der Seiten (page.
6.4.4 Berechtigungen (Capabilities)
Übung Betriebssystem, Uni Innsbruck 1 Projekt1: Prozesse unter Unix Teil I Grundlagen von Unix.
Bs Segmentierung Adressraum besteht aus mehreren Segmenten (segments), die unabhängig voneinander manipulierbar sind. Segmentierungsstruktur ist.
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
Ein- und Ausgabe von Daten -Routinen zum einlesen von Rohdaten -Einlesen von der Tastatur -Routinen zum Einlesen und speichern von Bildern -Angabe eines.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Die Bourne-Shell (cygwin), UNIX- Tools und treetagger Seminar: Strukturierung und Analyse linguistischer Korpusdaten Leiter: Leiter: Dr. Christian Riepl.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Einflußreiche Systeme Dr. Wolfgang Wörndl.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Kommunikation von Prozessen Signale und Pipes Alexander Sczyrba
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Prozesse Alexander Sczyrba Jan Krüger.
Netzwerk - Programmierung
Programmieren in C Dateien
Allgemeine Technologien 2
Netzwerk - Programmierung
Programmieren in C Module und Bibliotheken
Netzwerk - Programmierung
Implementieren von Klassen
 Präsentation transkript:

2.2 Adressraumverwaltung Code und Daten Einfachster Fall: 0 length-1

2.2 Adressraumverwaltung Code und Daten Einfachster Fall: 0 length-1 CodeDaten Besser: getrennte Segmente, schreibgeschützer Code 0 cl-1 0 dl-1

Unix: 3 Segmente (oder mehr) mit variable Länge Code Keller (stack) statische Daten Halde Längenänderung durch brk Überlauf (und durch exec, Programm laden,  2.3) brk(addr), sbrk(incr) lässt das Datensegment bis Adresse addr-1 reichen bzw. verlängert das Datensegment um incr Fehler ENOMEM beim Überschreiten der maximalen Segmentgröße

Achtung: brk wird typischerweise von der Haldenverwaltung einer höheren Programmiersprache eingesetzt, nicht vom Programmierer Beispiel C: malloc impliziert ein sbrk, wenn die Halde überläuft

Weitere Operationen bei Betriebssystemen  mit reichhaltiger strukturierten Adressräumen  mit überlappenden Adressräumen z.B. mmap, munmap,...

2.3 Ein/Ausgabesystem ist meist geräteunabhängig realisiert: Prozess verfügt über Ein/Ausgabekanäle (channels, ports, open files,...) hinter denen sich Datenquellen/senken verbergen (Geräte, Dateien, Prozesse,...). Kanal = gepufferter Strom von Bytes Kanalnummer (in Unix „file descriptor“) 0, 1, 2,... identifiziert Kanal Kanal kann auch über mehrere Nummern identifiziert werden.

Standardkanäle in Unix, vom Befehlsinterpretierer (Shell) so eingerichtet: 0Standard-Eingabekanal (standard input, stdin), häufig verbunden mit der Tastatur 1Standard-Ausgabekanal (standard output, stdout) häufig verbunden mit dem Bildschirm 2 Standard-Fehlerkanal (standard error, stderr) häufig verbunden mit dem Bildschirm ! Ein Kanal kann auch gleichzeitig Ein- und Ausgabekanal sein !

Prozess P Prozess Q Scanner 4 Dateisystem

ProzesseKanalnummernKanälez.B. Dateien 1 3 P 5 2 Q 3 Kanalnummern, Kanäle und Datenquellen/senken: pos s.u.

Ein/Ausgabe-Operationen: read(channel,buffer,nbytes) liest – sobald Bytes im Kanal vorhanden – maximal nbytes Bytes von channel nach buffer und liefert die Anzahl der gelesenen Bytes (weniger gelesen wird z.B. bei Dateiende oder Zeilenende [beim Lesen von der Tastatur]) Fehler:  ungültige Kanalnummer  Kanal ist nur Ausgabekanal  nicht behebbarer Lesefehler

write(channel,buffer,nbytes) schreibt – sobald Platz im Kanal vorhanden – maximal nbytes Bytes von buffer nach channel und liefert die Anzahl der geschriebenen Bytes (i.d.R. = nbytes ) Fehler:  ungültige Kanalnummer  Kanal ist nur Eingabekanal  nicht behebbarer Schreibfehler

close(channel) macht die Kanalnummer channel ungültig; falls dies die letzte gültige Nummer für den Kanal war, wird dieser gelöscht. Fehler EBADF falls ungültige Kanalnummer channel dup(channel) liefert neue – zuvor ungültige – Kanalnummer, die jetzt den gleichen Kanal wie channel identifiziert; gewählt wird die kleinste der ungültigen Nummern. Fehler EBADF falls ungültige Kanalnummer channel

dup2(old,new) vereinbart, dass die Kanalnummer new den gleichen Kanal wie old identifiziert; falls die Nummer new schon vorher einen Kanal bezeichnete und falls sie die letzte Nummer für diesen Kanal war, wird der Kanal gelöscht. Fehler EBADF falls ungültige Kanalnummer old

2.4 Interprozesskommunikation (inter-process communication, IPC) erfolgt typischerweise über Ein/Ausgabekanäle, in Unix u.a. über Pipes („Rohre“): Pipe =Puffer für Bytes (endliche Kapazität PIPE_MAX ) (Variante: Puffer-Paar für bidirektionale Kommunikation) Bytes senden mit write Bytes empfangen mit read

Operation pipe(channel) mit int channel[2] erzeugt Pipe und richtet einen Eingabekanal für das Empfangen und einen Ausgabekanal für das Senden ein; channel[0] wird mit der Nummer des Eingabekanals belegt, channel[1] wird mit der Nummer des Ausgabekanals belegt, Fehler EMFILE beim Überschreiten der maximalen Anzahl von Kanälen u.a.

Fehler beim Benutzen von Pipes: Kopf des Puffers ist keinem Kanal mehr zugeordnet  write generiert Unterbrechung SIGPIPE Ende des Puffers ist keinem Kanal mehr zugeordnet und der Puffer ist leer  read erkennt „Dateiende“ (end-of-file) Zyklisch über Pipes verbundene Prozesse und alle Puffer voll und alle Prozesse hängen in write  Verklemmung, nicht gemeldet!

Typische Benutzung von Pipes: pipe(channel); if(fork()!=0) { /* parent process */... write(channel[1],...)... else { /* child process */... read(channel[0],...)... zuzüglich Fehlerbehandlung Beachte: Kindprozess erbt Kanäle des Erzeugerprozesses

2.5 Dateiverwaltung Dateien werden durch Namen identifiziert: einfacher Dateiname, z.B. sort Pfadname (pathname), z.B. /usr/bin/sort Verschiedene Dateiarten (Untertypen von „Datei“ in OO BS):  Daten  Programm  Verzeichnis, Ordner (directory, folder)  Pseudodatei (special file): E/A-Gerät  u.a.

Prozess besitzt aktuelles Verzeichnis (working directory): alle Pfadnamen, die nicht mit / beginnen, werden automatisch vorne um den Namen des aktuellen Verzeichnisses erweitert Operation chdir(name) mit char *name setzt das aktuelle Verzeichnis auf name Fehler ENOENT wenn das Verzeichnis name nicht existiert u.a.

Erzeugen und Öffnen von Dateien: open(name,flags) erzeugt und/oder öffnet die Datei name gemäß den Angaben in flags und liefert die Nummer eines Kanals, über den auf die Datei zugegriffen werden kann. Die flags sind u.a. O_CREAT erzeugen, falls nicht vorhanden O_RDONLY nur Lesezugriff O_WRONLY nur Schreibzugriff O_RDWR Lese- und Schreibzugriff Fehler EACCES wenn gewünschter Zugriff nicht erlaubt u.a.

Direktzugriff möglich mit lseek(channel,offset,whence) setzt die Zugriffsposition in der über channel erreichbaren Datei bei whence = 0 auf offset, bei whence = 1 auf aktuelle Position + offset, bei whence = 2 auf Dateilänge + offset. Fehler ESPIPE wenn channel sich auf eine Pipe bezieht u.a.

Laden von Programmen mit Varianten von exec, z.B. execv(program,argv) mit char *argv[] ersetzt das laufende Programm durch das in der Datei program vorgefundene Programm, springt an den Anfang von main und übergibt dabei die Zeichenketten im Feld argv als Parameter für main. Routinen für die Unterbrechungsbehandlung gehen verloren ! Fehler EACCES wenn Datei nicht als Programm ladbar u.a.

+ weitere Operationen für Abfragen/Setzen von Dateieigenschaften Maßnahmen zum Zugriffsschutz usw.

2.6 C-Bibliotheken Dringende Leseempfehlung zu Unix: man –s1 intro Benutzerschnittstelle (Shell) man –s2 intro Systemschnittstelle man –s3 intro Weitere Bibliotheken /usr/include Help-Dateien.h /usr/lib Bibliotheken

2.6.1 Weitere Bibliotheken man –s3 intro liefert eine Übersicht über die in Abschnitt 3 der Dokumentation beschriebenen Bibliotheken für C mit einer Vielzahl von Prozeduren („C library functions“) jenseits der in Abschnitt 2 beschriebenen Systemaufrufe, z.B.

malloc (2.2  )2.2 printf formatierte Ausgabe auf stdout fopen gepufferte Datei-Ein/Ausgabe fread... sqrt,...mathematische Funktionen etc.

2.6.2 Nichtsequentielle Benutzung Falls Threading unterstützt wird – Achtung bei nebenläufiger Benutzung von Bibliotheken! Nicht jede Prozedur ist thread-safe! Gegebenenfalls Sperrsynchronisation vornehmen! Z.B. in Solaris ist jeder Bibliotheksprozedur zugeordnet ein MT-Level (multi-threading level): Unsafe, Safe, MT-Safe, Async-Signal-Safe

Unsafe:unsicher Beispiel: rand (3) Safe:sicher Beispiel: malloc (3) MT-Safe:sicher, mit interner Nebenläufigkeit Beispiel: sqrt (3) Async-Signal-Safe:wie MT-Safe, sogar beim Auftreten von (Software-)Unterbrechungen (durch Unterbrechungsunterdrückung während kritischer Abschnitte) Beispiel: write (2) + Varianten