Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der...
-
Upload
engelbert-gegner -
Category
Documents
-
view
102 -
download
0
Transcript of Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der...
bs-6 1
7 Ein/Ausgabe
bs-6 2
Zur Erinnerung:
Moderne Betriebssysteme verbergen die Spezifika der
verschiedenen E/A-Geräte hinter der Systemschnittstelle
– so gut es geht.
Beispiel Unix: was steckt hinter einem Kanal ?
Ein Programm weiß i.d.R. nicht, ob mit read(0,buffer,n)
von der Tastatur,
aus einer Datei,
aus dem Netz,
aus einer Pipe,
..... gelesen wird
fstat(channel,&status)
liefert in status erschöpfende Information darüber,was hinter channel steckt:
mode_t st_mode; /* File mode (see mknod(2)) */ (7.1)ino_t st_ino; /* Inode number */dev_t st_dev; /* ID of device containing */ /* a directory entry for this file */dev_t st_rdev; /* ID of device */ /* This entry is defined only for */ /* char special or block special files */nlink_t st_nlink; /* Number of links */uid_t st_uid; /* User ID of the file's owner */gid_t st_gid; /* Group ID of the file's group */off_t st_size; /* File size in bytes */time_t st_atime; /* Time of last access */time_t st_mtime; /* Time of last data modification */time_t st_ctime; /* Time of last file status change */ /* Times measured in seconds since */ /* 00:00:00 UTC, Jan. 1, 1970 */long st_blksize; /* Preferred I/O block size */blkcnt_t st_blocks; /* Number of 512 byte blocks allocated*/
bs-6 4
Grobe Klassifizierung von E/A-Geräten – 2 Klassen:
blockorientiert (block I/O):
- Platten
- CD-ROM
- Magnetband
... weitere externe Speichermedien
zeichenorientiert (character I/O):
- Tastatur
- Maus
- Drucker
- Plotter
... weitere eigentliche E/A-Geräte
bs-6 5
7.1 Explizite Gerätebenutzung
Pionierleistung von Unix:
Geräte werden als Gerätedateien (special files)
eingeführt, die Gerätebeschreibungen enthalten,
(block special files und character special files);
open erzeugt Kanal zwischen Prozess und Gerät.
Beispiel: nach fd = open("/dev/lp",O_WRONLY)
drucken mit write(fd,"hello",5)
bs-6 6
Typische Namenskonvention für Gerätedateien: /dev/..., z.B.
/dev/dsk0 Platte, genauer „logische Platte“ = dsk1 zusammenhängender Bereich dsk2 auf realer Platte (partition) ....
/dev/lp Drucker, falls nur einer (sonst lp1,lp2,..)
/dev/tty0 Datenstationen/Terminals/Modems tty1 ....
/dev/tty Pseudo-Gerätedatei: control terminaldes aktuellen Prozesses
/dev/null Pseudo-Gerätedatei: Abfalleimer
bs-6 7
Einrichtung von Gerätedateien gemäß der realen Peripherie:
mknod(path,mode,dev)
erzeugt Gerätedatei mit Namen path,
und Gerätebeschreibung dev;mode bestimmt u.a. den Schutzstatus, aber auch
- block special file oder- character special file (oder- Verzeichnis, normale Datei, benannte Pipe).
dev hat 2 Komponenten:
major device number Geräteart ( Treiber)
minor device number Gerätenummer
bs-6 8
Achtung:
mknod kann nur vom Super-User ausgeführt werden
(EUID = 0)
mknod sollte den Schutzstatus i.d.R. so setzen, dass
Normalsterblichen kein Zugriff gewährt wird
– abgesehen von Ausnahmen wie
/dev/tty , /dev/null ...
Systemprozess darf aber zugreifen,
z.B. Drucker-Spooler beginnt seine Tätigkeit mit
fd = open("/dev/lp",O_WRONLY)
bs-6 9
Gerätespezifische Steuerungsfunktionen:
ioctl(channel,command,arg)
übermittelt dem Treiber hinter channel (falls vorhanden)
einen Befehl command mit Parametern arg, z.B.
(Bandlaufwerk:) Band zurückspulen
(Datenübertragung:) Geschwindigkeit einstellen
(Tastatur:) Modus u.a. setzen (7.2.1)
..... etc. etc.
Bemerkung: Dieser Systemaufruf ist nicht privilegiert –
wer im Besitz des channel ist, darf ihn benutzen.
bs-6 10
7.2 Asynchrone serielle Schnittstellen
übertragen Daten byteweise (dabei bitweise seriell).
Typische angeschlossene Geräte:
Tastatur, Maus, Bildschirm, Modem
Pufferung der Bytes
per Hardware (Gerätesteuerung) und/oder Software
bs-6 11
Rechnerbenutzung früher häufig so:
Großrechner mit vielen „unintelligenten Terminals“
mit Tastatur und zeichenorientiertem Bildschirm,
eines davon als Konsole (console) für den Systemverwalter
Heute meist alternativ
Konsole mit Graphikbildschirm und Maus in Kleinrechner integriert (PC, Laptop, Handheld)
X-Terminal mit X Window Server Software – am Netz
Thin Clients intelligente Terminals – über Spezialnetz
bs-6 12
RS-232 ist Hardware-Standard
für asynchron-serielle Kommunikation
über Terminals und Modems
– auch heute noch aktuell:
für in Fenstern simulierte Terminals !
Gerätesteuerung für Terminal/Konsole
kennt Befehle zum Lesen/Schreiben von Bytes,
praktiziert begrenzte Pufferung der Bytes,
generiert Unterbrechungen, z.B. auf Tastendruck,
fungiert evtl. als Multiplexer für viele Terminals
bs-6 13
7.2.1 Tastatur
kann in (mindestens) 2 Betriebsarten benutzt werden
(Unix: „line discipline“):
Zeichenorientierter Modus (non-canonical/raw mode):
jedes getippte Zeichen wird sofort an den
Benutzerprozess weitergegeben *
Zeilenorientierter Modus (canonical/cooked mode):
Eingabe wird zeilenweise an den Benutzerprozess
weitergegeben (mit Vorverarbeitung von ^C , ^D ,Korrekturzeichen [Rücktaste] u.ä. **)
bs-6 14
! Pufferung eingegebener Zeichen durch den Treiber
ist bei beiden Modi unverzichtbar –
im Interesse des Benutzerkomforts:
manchmal tippt der Benutzer schneller als das Programm liest ! *
* Tanenbaum: „System designers who do not allow users to type far ahead ought to be tarred and feathered, or worse yet, be forced to use their own system.“
! Im zeilenorientierten Modus können die gepufferten
Zeichen modifiziert werden, bevor die Zeile an den
Benutzerprozess weitergegeben wird !
bs-6 15
Pufferung erfolgt
entweder in separat für jedes Terminal
bereitgestelltem Puffer
oder unter Verwendung eines Puffer-Pools
bei sehr vielen Terminals
(alte Großrechner-Technologie),
aber nicht gegen Überlauf gesichert: bei extremem
Voraustippen können Zeichen verloren
gehen (i.a. aber akustisches Warnsignal)
bs-6 16
! Bildschirm ist nicht unabhängig von der Tastatur:
Echo der getippten Zeichen auf dem Bildschirm
wird durch die Treiber bewerkstelligt,
im zeilenorientierten Modus vor dem
Weiterreichen an das Programm.
Echo kann vom Benutzerprogramm
abgeschaltet werden, z.B. für Passwort-Eingabe.
(Sehr alte Geräte, z.B. mit Ausgabe auf Papier statt Bildschirm, arbeiteten wie Schreibmaschinen, d.h. mit „eingebautem Hardware-Echo“; Passwörter wurden durch Überschreiben unleserlich gemacht.)
bs-6 17
Alle gewünschten Einstellungen
können programmgesteuert vorgenommen werden,
in Unix mittels
ioctl(channel,command,arg)
Details zu command,arg : man termio
Mittels einer ladbaren keymap kann die Zuordnung
von Tasten zu Zeichen flexibel gehalten werden !
bs-6 18
7.2.2 Zeichenorientierter Bildschirm
Sowohl reguläre Ausgabe als auch Eingabe-Echo
werden in Ausgabepuffer plaziert und von dort an
das Gerät weitergegeben ( Zeichensalat möglich).
Bildschirm plaziert eintreffendes Zeichen automatisch hinter
dem letzten Zeichen bzw. am Beginn der nächsten Zeile.
Steuerungsmöglichkeiten für die Darstellung
nicht über ioctl, sondern „Schreiben von Steuerzeichen“:
bs-6 19
ANSI-Norm für Bildschirmsteuerung:
Steuerzeichen ESC ( = 0x1B)
(escape character, Ausweichzeichen, Fluchtsymbol)
und nachfolgenden Steuerwerten ermöglicht
Umsetzen des Schreibzeigers und andere Sonderfunktionen.
Beispiele: [nA für „n Zeilen aufwärts“
[nD für „n Stellen nach links“
[2J für „Bildschirm löschen“
u.a.m.
bs-6 20
7.2.3 Modem
bietet eine Fülle von Einstellungsmöglichkeiten
betr. Übetragungsgeschwindigkeit,Parity Bit,.....
und eine Fülle von Spezialfunktionen
betr. Herstellen einer Verbindung,Schließen einer Verbindung,.....,
alles mittels ioctl(channel,command,arg)
bs-6 21
7.2.4 Universal Serial Bus - USB
dient als Multiplexer
für mehrere langsame serielle Geräte,
wird von einem Treiber betrieben,
der für alle Geräte zuständig ist;
daher können Geräte während des Betriebs
angeschlossen und entfernt werden.
bs-6 22
7.3 Graphikbildschirm
praktiziert meistens Rastergraphik (raster/bitmap graphics) *:
„Bildschirminhalt ist nicht Ergebnis einer Ausgabe-operation, sondern sichtbar gemachter Speicher.“
Realer Adressraum des Rechners umfasst
Videospeicher (video RAM)
mit 1 Bit – 4 Bytes pro Pixel (oder Zeichen),
dessen Inhalt über einen video controller angezeigt wird.
bs-6 23
Fenstersystem (window system) =
Systemsoftware, die Rasterbildschirmgeräte
(einschließlich Tastatur und Maus) unterstützt,
entweder als Teil des Betriebssystem-Kerns(z.B. MS Windows)
oder als Systemprozess(e) im Benutzer-Modus(z.B. X Window System, M.I.T.)
bs-6 24
Allgemeine E/A-Prinzipien von Fenstersystemen:
Ereignisschlange (statt Eingabezeichenfolge) steuert
die Aktivität eines mit Fenstern arbeitenden Programms
Ereignis wird von Maus oder Tastatur generiert
und enthält Positionsdaten der Maus
Graphik-Bibliothek stellt massenhaft Routinen zur
komfortablen graphischen Ausgabe zur Verfügung,
insbesondere zur Manipulation von Fenstern und
standardisierten graphischen Elementen
.....
bs-6 25
Implementierung der Bibliothek benutzt entweder
Systemaufrufe oder beauftragt Window-Server-Prozess
Programmiersprachen bauen ihre eigenen Bibliothekendarauf auf
bs-6 26
7.3.1 Beispiel MS Windows
ermöglicht Benutzung des Fenstersystems über Systemaufrufe
Beispiel Hauptprogramm:
HWND hwnd = CreateWindow(...);.....while(GetMessage(&msg,NULL,0,0)) {
..... // dispatch message * }
bs-6 27
Beispiel Ausgabe in Fenster:
HDC hdc = GetDC(hwnd);// open device context
TextOut(hdc,x,y,psText,iLength);// output PostScript text
Rectangle(hdc,xleft,ytop,xright,ybottom);// draw rectangle
ReleaseDC(hwnd,hdc);// close device context
bs-6 28
Beispiel Bit-Map-Kopieren:
BitBlt(dsthdc,dx,dy,width,height, srchdc,sx,sy,SRCCOPY);
„Bit Block Transfer“, kopiert Rechteck von Pixels
vom Fenster srchdc in das Fenster dsthdc
Schriftarten als Bit Maps? In allen Größen ??
TrueType fonts: Umrisse durch Punktfolgen beschreiben
und nach Größenanpassung ausfüllen
bs-6 29
7.3.2 X Window System
entwickelt am M.I.T., 1980
Client/Server-Architektur, lokal oder übers Netz
X-Server betreibt Bildschirm im Auftrag der X-Klienten (z.B. in Adressraum, der den Videospeicher einschließt) und informiert Klienten über Maus/Tastatur-Ereignisse
leicht auf beliebige Systeme aufsetzbar, sogar auf Windows
weit verbreitet für Unix-Varianten
X-Terminal = Rechner, der nur einen X-Server enthält
bs-6 30
! X Server ist nur für elementare Rastergraphik und
Ereignismeldung zuständig
Klientenseitig:
umfangreiche Bibliotheken für Graphik
und Interaktionselemente (widgets)
separater Prozess Window Manager
unterstützt die eigentliche Fensterverwaltung
bs-6 31
7.3.3 Thin Clients
Thin Client = Rasterbildschirm-Terminal,
das nur mit Pixel-Rechtecken beschickt wird
billig, extrem einfache Geräteschnittstelle
leistungsfähiger Server (Großrechner?) erforderlich
Beispiel: Sun SLIM (stateless low-level interface machine)