Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der...

31
bs-6 1 7 Ein/Ausgabe

Transcript of Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der...

Page 1: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

bs-6 1

7 Ein/Ausgabe

Page 2: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

Page 3: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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*/

Page 4: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

Page 5: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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)

Page 6: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

Page 7: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

Page 8: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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)

Page 9: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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.

Page 10: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

Page 11: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

Page 12: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

Page 13: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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.ä. **)

Page 14: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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 !

Page 15: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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)

Page 16: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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.)

Page 17: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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 !

Page 18: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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“:

Page 19: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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.

Page 20: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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)

Page 21: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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.

Page 22: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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.

Page 23: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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.)

Page 24: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

.....

Page 25: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

bs-6 25

Implementierung der Bibliothek benutzt entweder

Systemaufrufe oder beauftragt Window-Server-Prozess

Programmiersprachen bauen ihre eigenen Bibliothekendarauf auf

Page 26: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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 * }

Page 27: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

Page 28: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

Page 29: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

Page 30: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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

Page 31: Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle.

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)