Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Bs-61 7 Ein/Ausgabe. bs-62 Zur Erinnerung: Moderne Betriebssysteme verbergen die Spezifika der verschiedenen E/A-Geräte hinter der Systemschnittstelle."—  Präsentation transkript:

1 bs-61 7 Ein/Ausgabe

2 bs-62 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

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

4 bs-64 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

5 bs-65 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)

6 bs-66 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 terminal des aktuellen Prozesses /dev/null Pseudo-Gerätedatei: Abfalleimer

7 bs-67 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

8 bs-68 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)

9 bs-69 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) 7.2.1.....etc. etc. Bemerkung:Dieser Systemaufruf ist nicht privilegiert – wer im Besitz des channel ist, darf ihn benutzen.

10 bs-610 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

11 bs-611 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

12 bs-612 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

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

14 bs-614 ! 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 !

15 bs-615 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)

16 bs-616 ! 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.)

17 bs-617 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 !

18 bs-618 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:

19 bs-619 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.

20 bs-620 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)

21 bs-621 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.

22 bs-622 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.

23 bs-623 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.)

24 bs-624 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.....

25 bs-625 Implementierung der Bibliothek benutzt entweder Systemaufrufe oder beauftragt Window-Server-Prozess Programmiersprachen bauen ihre eigenen Bibliotheken darauf auf

26 bs-626 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 * }

27 bs-627 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

28 bs-628 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

29 bs-629 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

30 bs-630 ! 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

31 bs-631 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)


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

Ähnliche Präsentationen


Google-Anzeigen