Zbigniew S. Szewczak Systemy Operacyjne Wykład 5 System we/wy. Wydruk i grafika. Toruń, 2006
O czym będzie? Podsystem we/wy Pojęcia związane z grafiką Struktura systemu wydruku Unixowy system wydruku - LPRng Drukowanie w sieciach Microsoft Systemy wydruku NetWare LPD w systemach MSW System wydruku CUPS X-Window System Serwer XDM Przykłady Egzamin 2007
Podsystem we/wy Komputer wykonuje dwa podstawowe zadania przetwarza informacje obsługuje działania na wejściu i wyjściu Zadaniem systemu operacyjnego w odniesieniu do urządzeń we/wy jest zarządzanie operacjami we/wy sprawowanie nadzoru nad operacjami we/wy dopilnowywanie działania urządzeń we/wy Zadania te są realizowane w jądrze przez podsystem we/wy (ang. I/O subsystem)
Podsystem we/wy (c.d) Trzy kategorie urządzeń we/wy: pamięć zewnętrzna, sieć, interfejs z ludźmi Postawowe elementy podsystemu we/wy sprzętowe porty, szyny, sterowniki urządzeń (ang. device controllers) programowe moduły we/wy, moduły sterujące (ang. device drivers) tworzące interfejs dostępu podsytemu we/wy do urządzeń we/wy obsługa we/wy w jądrze systemu wywołania systemowe we/wy
Struktura jądra systemu Unix warstwa użytkownika pułapka program użytkownika biblioteki warstwa jądra interfejs funkcji systemowych podsystem plików cache (bufory) znakowe blokowe moduły sterujące podsystem zarządzania procesami komunikacja międzyprocesowa planista przydziału procesora zarządzanie pamięcią warstwa jądra warstwa sprzętu interfejs sprzętu sprzęt
UNIX - punkty wejścia do podprogramów obsługi we/wy podsystem plików open close read write ioctl open mount close umount read write podręczna pamięć buforowa tablica rozdzielcza urządzeń znakowych tablica rozdzielcza urządzeń blokowych open close read write ioctl open close strategia podprogram obsługi urządzenia punkty wejścia podprogram obsługi urządzenia podprogram obsługi przerwania podprogram obsługi przerwania wektor przerwań wektor przerwań przerwania od urządzeń
Sprzęt we/wy Niezwykła różnorodność urządzeń zewnętrznych Wspólne pojęcia port - punkt łączący przez który urządzenie kontaktuje się z komputerem szyna - wspólna wiązka przewodów do której są podłączone urządzenia układ szeregowy (ang. daisy chain) : A podłączone do B podłączone do C i C podłączone do portu sterownik (ang. controller) - zespół układów elektronicznych, które mogą kierować pracą portu, szyny lub urządzenia niekiedy wykonywany w postaci oddzielnej płyty z układami elektronicznymi zwanej adapterem głównym (ang. host adapter) - procesor, mikrokod, pamięć (np. SCSI, IDE)
Sprzęt we/wy (c.d.) W jaki sposób procesor przekazuje polecenia sterownikowi? sterownik ma rejestry do pamiętania danych i sygnałów sterujących do których pisze i z których czyta procesor specjalne rozkazy we/wy określające przesłanie danych na adres portu operacje we/wy odwzorowywane w pamięci operacyjnej (ang. memory-mapped I/O)- rejestry są odwzorowywane w przestrzeni adresowej procesora Niektóre komputery stosują obie metody RS232C - rejestry we/wy, bufory PC: kontroler grafiki - odwzorowywanie ekranu w pamięci
Sprzęt we/wy (c.d.) Port we/wy składa się z 4 rejestrów (dł. 1B-4B) stan (ang. status) - zawiera bity czytane przez procesor zakończenie polecenia,dostępność danych w rejestrze dane wyjściowe, wykrycie błędu sterowanie (ang. control) - zapisywany przez procesor rozpoczęcie polecenia, zmiana trybu pracy urządzenia (komunikacja pełnodupleksowa, szybkość portu) dane wejściowe (ang. data-in) - czytany przez procesor pobranie informacji z urządzenia dane wyjściowe (ang. data-out) - dane zapisywane przez procesor Układy FIFO - rozszerzają pojemność rejestrów
Odpytywanie Protokół interakcji pomiędzy sterownikiem a procesorem Uzgadnianie (ang. handshaking) między procesorem i sterownikiem Dwa bity do koordynowania relacji producentkonsument procesor sygnalizuje swoje życzenie - bit gotowości polecenia (ang. command-ready bit) w rejestrze poleceń (ang. command register) sterownik zaznacza swój stan - bit zajęte=1 (ang. busy) w rejestrze stanu
Przykład - procesor pisze do portu procesor powtarza czytanie bitu zajęte dopóty, dopóki bit ten nie zostanie wyczyszczony (tzn. ustawiony na 0) aktywne czekanie (ang. busy-waiting), odpytywanie (ang.polling) trzy cykle rozkazowe procesora do odpytania: czytanie rejestru urządzenia, operacja koniunkcji (wydobycie bitu zajętości), skok przy wartości niezerowej procesor ustawia bit pisania (ang. write bit) w rejestrze poleceń i wpisuje bajt do rejestru danych wyjściowych procesor ustawia bit gotowości polecenia w rejestrze poleceń gdy sterownik zauważy, że bit gotowości polecenia jest ustawiony wówczas ustawia bit zajęte sterownik czyta rejestr poleceń rozpoznaje polecenie pisania, czyta bajt z rejestru danych wyjściowych i wykonuje operację we/wy na urządzeniu sterownik czyści bit gotowości polecenia w rejestrze poleceń procesora oraz bit błędu (ang. error bit) w rejestrze stanu, aby powiadomić, że operacja we/wy zakończyła się pomyślnie, po czym czyści bit zajęte w rejestrze stanu, sygnalizując, że zakończył działanie
UNIX - odpytywanie terminala #include <fcntl.h> main() { register int i, n; int dp; char bufor[256]; /* otworz terminal do czytania, z opcja bez opoznienia */ if ((dp = open("/dev/tty", O_RDONLY O_NDELAY)) == -1) exit(15); n = 1; for (;;) /* dla kazdego */ { for (i = 0; i < n; i++) ; } } if (read(dp, bufor, sizeof(bufor)) > 0 ) { printf("wczytano za %d-tym razem\n", n); n--; } else /* brak danych, powrot - opcja bez opoznienia */ n++;
Przerwania Odpytywanie staje się niewydajne w sytuacji rzadkich przypadków gotowości urządzenia Osprzęt procesora ma scieżkę zwaną linią zgłaszania przerwań (ang. interrupt request line), którą procesor bada w cyklu rozkazu Sterownik zgłasza (ang. raises) przerwanie, procesor przechwytuje (ang. catches) przerwanie Jeśli procesor wykryje przerwanie od sterownika to przechowa dane określające bieżący stan (PC) i wykona skok do procedury obsługi przerwania (ang. interrupthandler) wykrycie przyczyny przerwania wykonanie niezbędnych czynności rozkaz powrotu z przerwania (ang. return from interrupt)
Cykl we/wy obsługiwany przerwaniami CPU 1 sterownik we/wy moduł sterujący urządzenia rozpoczyna operację we/wy między rozkazami procesor sprawdza występownie przerwań 2 rozpoczęcie operacji we/wy 3 7 procesor przyjmuje przerwanie i przekazuje sterowanie procedurze obsługi przerwania 4 gotowość wejścia, zakończone wyjście lub błąd 5 wygenerowanie przerwania we/wy procedura obsługi przerwania przetwarza dane, wykonuje powrót po przerwaniu 6 procesor podejmuje wykonywanie przerwanego zadania
Przerwania (c.d.) Sprzęt sterownika przerwań (ang. interrupt controller) oraz jednostka centralna powininy zapewnić 1. opóźnianie obsługi przerwania podczas działań krytycznych 2. brak odpytywania urządzeń w celu wykrycia sprawcy 3. przerwania wielopoziomowe o różnym priorytecie ad1. Dwie linie żądania przerwań przerwania niemaskowalne np. nieusuwalne błędy pamięci przerwania maskowalne (ang. mascable) pozwalają wyłączyć zgłoszenia żądań ad2. Mechanizm przerwania dostarcza adres obsługi przerwania, który znajduje się w tablicy zwanej wektorem przerwań (ang. interrupt vector)
Przerwania (c.d.) ad3. System poziomów priorytetów przerwań (ang. interrupt priority levels) umożliwia opóźnianie przez procesor obsługi przerwań niskopriorytetowych bez maskowania wszystkich przerwań i pozwala wywłaszczać procesy ich obsługi Mechanizm przerwania stosuje się również do obsługi sytuacji wyjątkowych (ang. exceptions) dzielenie przez 0, rozkaz uprzywilejowany Specjalny rozkaz nazywany przerwaniem programowym (ang. software interrupt) lub pułapką (ang. trap) o niskim priorytecie, który identyfikuje wymagana usługę jądra wykorzystane w realizacji funkcji (wywołania) systemowego: przechowanie stanu programu, przejście w tryb systemu, wykonanie zamawianej usługi
Pojęcia związane z grafiką Grafika Wektorowa lub rastrowa (bitmapowa) Formaty plików graficznych Kompresja Stratna: JPEG, TIFF Bezstratna: PNG, GIF, brak kompresji: BMP, XFC Obróbka plików (np. konwersja) Bitmapowa: ACDSee, Adobe Photoshop, Corel Painter, GIMP, InfranView Wektorowa: AutoCAD, CorelDraw, Adobe Illustrator, Inkscape, Xfig
Graficzne formaty danych GIF - Graphics Interchange Format (1987) kompresja LZW (patent, 1995), 256 kolorów, 72dpi JPEG - Joint Photographic Engineering Group PNG - Portable Network Graphics nie używa LZW, strony WWW TIFF - Tag Image File Format (1986) ftp.adobe.com/pub/adobe/devrelations/devtechnotes/pdffiles/tiff6.pdf BMP (Microsoft), PCX (Paintbrush), XFC (GIMP) wektorowe: EPS, WMF (Office), CDR (Corel), DRW (Micrografx)
InfranView 3.98
System wydruku Drukowanie jest bardzo istotną częścią każdego systemu operacyjnego W systemie wielodostępnym użytkownicy mogą dzielić drukarkę dzięki systemowi wydruku (ang. print spooling system) System wydruku umożliwia jednoczesne wczytywanie i interpretowanie zadań wydruku szeregowanie zadań wydruku wykonanie zadań wydruku obsługę błędów, zbieranie informacji rozliczeniowych jednocześnie drukarka jest zasobem niepodzielnym
System wydruku (c.d.) W systemie sieciowym mamy wiele połączonych systemów operacyjnych realizujących zadania wydruku w oparciu o model klient-serwer Sieciowy system wydruku wykorzystuje protokół sieciowy: SMB, TCP/IP, IPX/SPX lub inny do transferu zadań wydruku Serwery wydruku (ang. print spoolers) współpracują ze sobą w celu realizacji zleconych (ang. submit) zadań wydruku
Print spooling: filozofia Dokument wejściowy Program klienta Serwer lokalny filtr Drukarka lokalna Config Dokument wyjściowy SPOOL lokalny Serwer zdalny filtr Drukarka zdalna SPOOL zdalny Config Dokument wyjściowy
Języki poleceń drukarek PostScript (Charles W. Geschke & John E. Warnock, 1982, Xerox, Adobe) level 1,2,3 i Extreme (Supra) PCL (Printer Command Language, HP) PCL 1,2,3,4,5(np. LJ 5L),5E,5C,6 PDF (Portable Document Format, Adobe) dokumenty elektroniczne plug-in y
Typy połączeń równoległe -LPT EPP/ECP (Enhanced Parallel Port/ Enhanced Capabilities Port) 50kbps (Centronics) do 2Mbps (ECP) Szeregowe - COM RS232C (115,2Kbps) USB 2.0-480Mbps IrDA - Infrared Data Association (1933) IrDA 1.0: 115,2Kbps do 1m; VFIR; 16Mbps - odchylenie 30 Fire Wire - IEEE 1394 (400Mbps, 63 urządzenia) BlueTooth (1998) - 2,4Ghz (802.11), 1Mbps Sieć - IPX/SPX, NetBEUI, TCP/IP, IPP Drukarka lokalna, standard TCP/IP port
System sieciowy Linuxa Jądro systemu Linux realizuje protokoły sieciowe m.in. protokoły TCP/IP, IPX/SPX, SMB System Linux ma zaimplementowane systemy sieciowe NFS (Network File System) SMB (Server Message Block) - samba NCP (Network Control Program) - mars Generacja jądra systemu Linux - dodajemy obsługę drukowania (port równoległy, szeregowy, USB, PCMCIA, IrDA, WLAN)
Składniki systemu wydruku Elementy programowe potrzebne do realizacji zadań wydruku program serwera (ang. spooler) program klienta pliki konfiguracyjne kolejki do drukarek filtry komendy administracyjne Elementy sprzętowe : drukarki, papier, toner...
Oprogramowanie wydruku Dostępność oprogramowania Unix - dostępny w wersji źródłowej (lpd, LPRng,CUPS) ftp.lprng.com/pub/lprng - LPRng,filtry, LPRngTool ftp.enst.fr/pub/unix/a2ps - filtry(www.inf.enst.fr/~demaille/a2ps) www.apsfilter.org Windows NT/2K: klient jest częścią systemu, brak serwera Windows XP Prof.: klient i serwer Windows 9x - brak klienta i serwera http://tucows.icm.edu.pl/ Solstice - serwer i klient (trzeba kupić) Cygwin (biblioteka na Win32) +LPRng http://www.cygwin.com Linux -> Mars - protokół NCP Linux -> Samba - protokół SMB
Oprogramowanie wydruku (c.d.) ghostscript, ghostview - pakiet obróbki *.ps http://www.cs.wisc.edu/~ghost file - sprawdzanie typu pliku http://sourceforge.net/projects/gnuwin32 pakiet psutils http://knackered.knackered.org/agnus/psutils.html ImageMagick - konwesja formatów grafiki http://www.imagemagick.org pdftohtml http://sourceforge.net/projects/pdftohtml/ htmldoc - konwersja na ps i pdf http://www.easysw.com/htmldoc/ xpdf - www.foolabs.com/xpdf/
LPRng - struktura LPRng - University of Waterloo zastępuje przestarzały system wydruku BSD http://www.lprng.com LPRng-3.8.28.tgz - ostatnia wersja z 2 października 2004 r. reaktywacja 2006 Drukowanie w systemie LPRng serwer wydruku (ang. print spooler) : lpd kolejki spoolera: /var/spool/lpd konfiguracja: /etc/printcap, /etc/lpd.conf, /etc/lpd.perms klient: lpr, lpq, lprm (cancel) komendy administracyjne: lpc, lpstat
Funkcje serwera lpd - daemon, który kontroluje wszystko co jest drukowane {na komputerze z komputera} tryb lokalny spoolera zapamiętuje zadanie w kolejce szereguje zadania w kolecje wybiera zadania z kolejki dokonuje konwersji zadania za pomocą filtrów wysyła plik na konkretną drukarkę tryb zdalny spoolera - przesłanie (ang. forward ) zadania do zdalnego lpd
Funkcje klientów lpr - program użytkownika, który kontaktuje się z lpd i umieszcza zadanie w kolejce drukowania lpq - monitoruje zawartości kolejek lprm - usuwa zadania z kolejki lpc - zarządzanie daemonem lpd lpstat - emulacja Systemu V
Konfiguracja protokół - plik /etc/services printer 515/tcp #nr portu serwera lpd urządzenia we/wy - drukarki /dev/lp? ; /dev/ttys? plik konfiguracyjny drukarek /etc/printcap man printcap pliki konfiguracyjne lpd lpd.conf - konfiguracja demona lpd lpd.perms - kontrola dostępu do demona lpd
Definicje drukarek Plik /etc/printcap #drukarka lokalna lp alias1 alias2:\ # nazwy drukarki :cm=komentarz o drukarce:\ :lp=/dev/lp0: \ # nazwa urządzenia we/wy :sd=/var/spool/lpd/lp:\ #katalog spoolera :if=/usr/local/libexec/filters/lpf: \ #definiuje filtr :rg=printer: \ #grupa, która może używać tej drukarki :mx#0:\ # brak ograniczeń na wydruk :sh: # wyłącza drukowanie nagłówka
Definicje drukarek (c.d.) Plik /etc/printcap #drukarka zdalna lp1 alias3:\ :cm=drukarka na maszynie anna: \ :lp=:rm=anna:rp=lp: # drukarka lp@anna lp3 alias4:\ :cm=drukarka sieciowa HP \ :lp=158.75.2.16%9100 :sd=/var/spool/lpd/lp3 \ :lf=log:af=acct \ # log i rozliczenie do wydruku :if=/usr/local/sbin/lpf \ :mx#0:sh:
Printcap - opcje af - ścieżka do pliku rozliczeniowego br - szykość transmisji w baudach lf - log file lo - plik blokujący lp - urządzenie drukujące mx - wielkość zadania pl - długość strony w liniach pw - szerokość strony w znakach rm - zdalny host rp - zdalna drukarka sd - spool directory sh - drukowanie nagłówka
Przykłady - RedHat /etc/printcap - lokalny lp lab73-local:\ :sd=/var/spool/lpd/lp:\ :lp=/dev/lp0:\ :lpd_bounce=true:\ :if=/usr/share/printconf/mf_wrapper:\ :filter=/usr/libexec/filters/lpf: \ :ml=0:mx=0:sh: /etc/printcap - zdalny lp lab73-printer:\ :lp=:rm=158.75.12.73:rp=lp:mx#0:sh: /etc/rc.d/init.d/lpd restart
Konfiguracja graficzna Konfiguracja podczas instalacji Name of queue: lp Spool directory: /var/spool/lpd/lp PrintTool RedHat Control Panel->Printer Configuration->Add Local Printer - drukarka przyłączona do fizycznego portu Name: lp Spool Directory: /var/spool/lpd/lp Printer Device: /dev/lp1 Input Filter: select Remote Unix (lpd) Queue - drukarka zadalna (TCP/IP) Lan Manager Printer (SMB) - do komunikacji używamy SMB NetWare Printer (NCP) - do komunikacji używamy NCP
Uprawnienia do drukowania Plik /etc/group - definicje grupy użytkowników, którzy mogą drukować printer::17:root,ewa,jan,... plik /etc/hosts.lpd - lista maszyn, z których można drukować (BSD) plik /etc/lpd.perms - w pakiecie LPRng plik /etc/lpd.conf - w pakiecie LPRng
lpd.perms plik /etc/lpd.perms - zezwolenie na użycie komendy lpc rootowi na serwerze: ACCEPT SERVICE=C SERVER REMOTEUSE=root REJECT SERVICE=C zezwolenie na użycie komendy lpr tylko w sieciach 158.75.2.0 i 158.75.12.0 REJECT SERVICE=R NOT REMOTEIP=158.75.2.0/255.255.255.0 NOT REMOTEIP= 158.75.12.0/255.255.255.0 zezwolenie na użycie komendy lprm na drukarkę lp rootowi z lab73 ACCEPT SERVICE=M HOST=lab73 PRINTER=lp REMOTEUSER=root
Instalacja i testowanie LPRng Instalacja gunzip -c LPRng-<wersja>.tgz tar xvf - cd LPRng-<wersja>./configure --prefix=/usr --sysconfdir=/etc make clean all su make install Testowanie - wymaga uprawnień roota checkpc - służy do sprawdzenia konfiguracji checkpc -f -V - usuwa ewentualne błędy lpq lpc -P start
Klient lpd - Unix Zarządzanie wydrukiem lpc -S serwer -P drukarka komenda komenda = hold kill start stop status Drukowanie lpr -P drukarka nazwa.pliku sprawdzanie zadania w kolejce lpq -P drukarka usuwanie zadania z kolejki lprm -P drukarka nr_zadania
Klient lpd - Unix (c.d.) lpr -Pprinter@host lpr -Plp@lab73 lpr -Plp@158.75.12.73 lpr -Plp lprm -Pprinter <nr-zadania> lprm -Psmb 123 lpc -Pprinter lpc -Plp <start restart stop> lpq -Ppinter lpq -Plp
Samba - system wydruku System sieciowy Samba pozwala na dzielenie drukarek z klientami SMB Możliwe kombinacje serwer Samby <- klient Samby - lepiej użyć lpd serwer Samby <- klient Windows klient Samby -> udział drukarkowy klient Windows -> udział drukarkowy Samba (pośrednio) wykorzystuje demona wydruku lpd
Samba - system wydruku Elementy składowe konfiguracji plik /etc/printcap plik /etc/samba/smb.conf Elementy składowe oprogramowania LPRng Samba : program smbclient System Windows Drukarka pod Linuxem lub Windows
Definicja drukarki - Samba Plik /etc/printcap #drukarka na Windows smb remote-smbprinter:\ :cm=drukarka na W9x: \ :lp=/dev/null: \ :sd=/var/spool/lpd/lp: \ :if=/usr/local/sbin/smbprint-script:\ :sh: przykład skryptu smbprint-script #! /bin/sh /usr/bin/smbclient \\\\lab73\\druk -U guest -N -c ``print -``
Plik smb.conf Sekcja [printers] pozwala na dzielenie wszystkich drukarek zdefiniowanych w pliku /etc/printcap [printers] comment = Wszystkie drukarki path = /var/spool/samba #katalog spoolera drukarek SMB printable = yes #zasób drukarkowy guest ok = yes #dostęp gościnny Jeśli nie chcemy dzielić drukarek z /etc/printcap w sekcji [global] dajemy: load printers = no definiujemy udział indywidualny dla drukarki
Indywidualny udział drukarkowy [druk] comment = drukarka HP printable = yes print command = /usr/bin/lpr -r -P%p %s lpq command = /usr/bin/lpq -P%p lprm command = /usr/bin/lprm -P%p %j printing = LPRng read only = yes guest ok = yes comment - komentarz przy udziale [druk] printable - udział drukarkowy
Opcje udziałów drukarkowych (c.d.) print command - ustawia polecenie wydruku lpq command - ustawia polecenie przeglądania kolejki wydruku lprm command - ustawia polecenie usuwania wydruku z kolejki printing - system druku (BSD,LPRng,SYSV)
Interfejs graficzny. Testowanie Printtool pozwala na graficzne definiowanie drukarek SMB w pliku /etc/printcap program SWAT pozwala na definiowanie drukarek w pliku smb.conf http://localhost:901 Konfigurację testujemy za pomocą checkpc - /etc/printcap testparm - /etc/samba/smb.conf testprns <nazwa drukarki> /etc/printcap - sprawdza czy drukarka jest w pliku /etc/printcap smbclient -L localhost - listuje udziały (drukarkowe)
Klient Samby - Unix Smbclient - służy do przyłączenia drukarki smbclient \\\\lab73\\druk -U guest Password: <top-secret> smb:> print <plik> lub put <plik> Przykład innej natury smbclient \\\\lab73\\hplj5 -U guest -N -c print <plik>
Konfigurowanie klienta drukarki W9x W9x Otoczenie sieciowe - wybieramy drukarkę właściwości->instaluj Kreator dodawania drukarki dodaj drukarkę lokalną - port drukarki (LPT) sieciową producenci - HP drukarki - HP LaserJet 5L PCL właściwości->rozdzielczość-> 600 punktów na cal
Konfigurowanie klienta drukarki W9x (c.d.) Wydruk strony (testowej) na serwerze Samby pod Windows Tryby drukowania z Windows graficzny: wybór drukarki tekstowy: z linii komend NET USE, NET PRINT Udostępnianie drukarki Ustawienia->Drukarki->drukarka lokalna->właściwości-> ->Udostępnianie
Mars - system wydruku Serwer Mars wykorzystuje demona wydruku lpd do realizacji zleceń wydruku z systemu NetWare Elementy składowe konfiguracji /etc/nwserv.conf /etc/printcap Programy klienta (z pakietu ncpfs) nprint - program wydruku pqlist - program wypisujący dostępne drukarki w systemie NetWare
nwserv.conf - drukarki Konfiguracja - plik /etc/nwserv.conf # Section 21: print queues (optional) 21 LP - lpr - 21 LP_PS # Section 22: print server entries (optional) 22 LP_NWE LP 1 # Section 40ff: Some pathes (optional) 40 /var/spool/nwserv/.volcache 41 /var/spool/nwserv/.locks 42 /var/spool/nwserv 45 /var/nwserv/db 46 /var/nwserv/attrib
Drukarka dla NetWare Plik /etc/printcap #drukarka na serwerze NetWare nw remote-nwprinter:\ :cm=drukarka Novella : \ :lp=/dev/null: \ :sd=/var/spool/lpd/nw: \ :if=/var/spool/lpd/nprint-script:\ :sh: skrypt - nprint-script #! /bin/sh /usr/bin/nprint -S lab73 -U guest -P top-secret -q lp -
Pakiet ncpfs - NetWare Program klienta nprint -S server -U username -P password -q queuename nazwa_pliku nprint -S lab73 -U guest -P top-secret -q lp plik1 Program pomocnicze pqlist - listuje serwery drukarek pqlist -S lab73 -U guest -P top-secret pqrm - usuwa zadanie z kolejki Program serwera pserver - program, który dopisuje zadania z kolejek na serwerach NetWare do lpd Linuxie pserver -S server -U username -P password -q queue
Inni klienci NetWare Klienci Netware - Windows Netware Client 32 tryb graficzny Otoczenie sieciowe->netware Servers tryb tekstowy nlist printer nprint <plik> printer <printer> Klienci pod Linuxa Caldera (SCO): www.caldera.com - serwer wydruku
Klienci lpd dla W9x/NT Windows 9x ACITS LPR - darmowy klient dla celów niekomercyjnych Solstice - trzeba kupić Windows NT/2K/XP lpr - zawarty w systemie lpr -S 158.75.12.74 -P hp <plik> lpq -S 158.75.12.74 -P hp Windows 9x C:\WINNT\SYSTEM32 LPR.EXE, LPQ.EXE, LPHELP.DLL Cygwin (cygwin1.dll) + lpr z LPRng
ACITS LPR - klient lpd dla W9x University of Texas, Austin http://www.utexas.edu/academic/otl/software/lpr/ instalacja instlpr.exe dodaj drukarkę ACITS LPR Remote Printing hostname lub IP adres printer/nazwa kolejki drukowanie z linii komend ACITSLPR [-S <serwer>] [-P <printer>] [-O <filter>] [-R <remote port>] [-T <timeout>] [-B] [-# <copies>] filename1 filename2... filename (#####)
Print serwer dla Windows Windows NT4/2K/XP Panel Sterowania -> Dodaj/Usuń składniki systemu Windows -> Inne usługi plików i drukowanie w sieci -> Usługi drukowania dla systemu Unix lpd, lpr Windows XP obsługa protokołu IPP ograniczenie do 10 połączeń ProNFS 1.8 9x/ME/NT/2K/XP lpd, lpr Cygwin + LPRng
Windows XP wydruk Start->Drukarki i faksy Właściwości Start->Panel sterowania->narzędzia administracyjne- >Usługi-> Serwer wydruku Server XP Bufor wydruku Spooler XP IIS http http://localhost/printers Zapora: serwer WEB
CUPS Common UNIX Printing System - 1999 http://www.cups.org Historia Unix - Berkeley LPD (rfc1179), AT&T System V - 1970- LPRng, Palladin, PLP - lata 90 Internet Printing Protocol (IPP) definiuje rozszerzenia do protokołu HTTP w celu zrealizowania usług zdalnego wydruku CUPS 1.0 wykorzystuje IPP/1.0 CUPS jest oprogramowaniem GNU GPL Wersja 1.3 grudzień 2006
CUPS - architektura Scheduler config CUPS API imaging filtry backends Berkeley System V LPT LPD IPP SMB
CUPS konwersja
CUPS - struktura Scheduler - aplikacja w postaci serwera HTTP/1.1 Config - pliki konfiguracyjne config schedulera - (podobny do httpd.conf) pliki definiujące drukarki i klasy drukarek, kolejki pliki konwersji(magic rules) i typów MIME(text/plain,..) pliki PPD (PostScript Printer Description) - opisy drukarek CUPS API - funkcje realizujące kolejkowanie, wydruk, dostęp przez protokoły HTTP i IPP Backend - program wysyłający dane na port drukarki Filtry - program przetwarzający dane do wydruku Imaging - funkcje przetwarzania obrazu
CUPS - instalacja tar xvzf cups-1.2.x-source.tar.gz cd cups-1.2.x./configure make su - root make install
CUPS a LPRng CUPS - domyślny w RedHat 9.0 Instalacja LPRng montowanie płyty RH9(2) mount /dev/cdrom /mnt/cdrom cd /mnt/cdrom/redhat/rpms rpm -i LPRng-3.8.19-3.i386.rpm Wybór systemu wydruku alternatives --display print alternatives --config print
CUPS - konfigurowanie /etc/cups cupsd.conf - plik konfiguracyjny schedulera client.conf - plik konfiguracyjny klienta printer.conf - plik konfiguracyjny drukarek Print Manager - pasek Start Printtool dodanie drukarki lokalnej locally-connected: LaserJet dzielenie (ang. sharing) Action sharing: Enable LPD protocol wybór systemu sieciowego: SMB, NetWare,... http://localhost:631
CUPS - startowanie Automatyczne w trakcie startu systemu pasek Start -> Services wybór: cups-lpd, lpd,... Ręczne service cups start service cups restart service cups stop
System grafiki - założenia Większość współczesnych systemów operacyjnych jest wyposażona w użytkowy interfejs graficzny Sieciowy system operacyjny musi posiadać zaimplementowane narzędzia pozwalające na wykorzystanie tego interfejsu na zdalnych monitorach Model klient-serwer Protokól sieciowy powinien umożliwiać łączenie grafiki różnych systemów operacyjnych
Elementy grafiki Urządzenie wskazujące (ang.pointing device) np. myszka, gładzik (ang. touchpad) Okna (ang. windows) Fonty Ikony Menu aplikacji w pasku kontekstowe w miejscu kliknięcia Kontrolki (ang. widgets)
Przykład Apple System 7 (1991)
X Window System X Window System, lub też X11 albo X jest kompletnym interfejsem graficznym z okienkami przeznaczonym dla systemów uniksowych X-y zostały opracowane w ramach projektu Athena realizowanego przez MIT i DEC http://www.x.org XFree86 implementacja X-ów dla architektury i386 jest używana w Linuxie i Cygwinie ftp.xfree86.org/pub/xfree86 Inne implementacje: CDE, Open Look
X Window System (c.d.) X protokół Porty 6000-6063 Biblioteka Xlib Interfejs w C do protokołu X Linie i proste kształty Xt Intrinsics biblioteka do budowania kontrolek Biblioteki kontrolek Okno, pasek (ang. scroll bar), przycisk (ang. button) X Athena Widgets (Xaw), Motif, Gtk, Qt Rozszerzenia systemu X Windows GLI, DRI, DGA, LBX Dodatkowe serwery (np. fontów)
Przykład - kontrolki Qt 3.3.4
Architektura X Windows
X11 - hierarchia mechanizmów
Systemy grafiki na W9x/NT XFree86 może działać pod systemem Windows Cygwin - emulator Unixa na W98/NT/2K/XP + XFree86 cd xfree/xc-4-binaries/4.1.0/ gunzip extract.exe sh Xinstall.sh Solstice VNC Server Microsoft Terminal Services (XP Pulpit zdalny) http://www.microsoft.com/windows2000/technologies/terminal Inne produkty http://www.citrix.com/ http://www.metrolink.com/ Klient unixowy: rdesktop
Pojęcia związane z X-ami DISPLAY - zmienna środowiskowa <nazwa_komputera>:numer_displaya.numer_ekranu nazwa_komputera - specyfikuje maszynę numer_displaya - specyfikuje zwykle monitory z tą samą myszą i klawiaturą X serwer - program zajmujący się udostępnianiem zasobów graficznych X klient - program aplikacji, który wysyła żądania do X serwera (np. narysuj linię) Przykłady X klienta xterm - emuluje terminal, menedżer okien - zarządzanie oknami: twm, fvwm, olvwm, sawfish znitegrowane środowiska graficzne - GNOME, KDE, XFCE menedżer sesji XDM, GDM Pokaz działania Cygwin wirtualny RH9
Struktura X11 /usr/x11r6 - główny katalog /usr/x11r6/bin - programy X-owe /usr/x11r6/lib - biblioteki ładowalne /usr/x11r6/lib/x11 - pliki konfiguracyjne ( lub /etc/x11) /usr/x11r6/lib/x11/app-defaults - wartości domyślne /usr/x11r6/lib/x11/fonts - katalogi z fontami /usr/x11r6/lib/x11/rgb.txt - nazwy kolorów /usr/x11/xinitrc - plik inicjujący system X /etc/x11/.xresources - plik zasobów X /etc/x11/.xmodmap - plik konfigurujący urządzenia wejściowe systemu X /etc/x11/xdm -menedżer sesji systemu X
Przykład ps -ax PID TTY STAT TIME COMMAND 1? S 0:04 init... 600? S 0:00 xfs -droppriv -daemon -port -1 671 tty1 S 0:00 sh /usr/x11r6/bin/startx 678 tty1 S 0:00 xinit /etc/x11/xinit/xinitrc -- :0 679? S 0:01 /etc/x11/x :0 -auth /root/.xauthority 682 tty1 S 0:00 /usr/bin/gnome-session 696 tty1 S 0:00 gnome-smproxy --sm-client-id default0 702 tty1 S 0:00 enlightment -clientid default2 717 tty1 S 0:00 panel --sm-client-id default8
Działanie X-ów Jedyny fragment systemu X dowiązany do konkretnego sprzętu (t.j. karty grafiki, myszy i klawiatury) to X serwer Każda zdalna aplikacja realizowana przez serwer musi po uzyskaniu zgody na realizację wynegocjować warunki swego działania Problemy wynikające z tego to startowanie X serwera uwierzytelnianie aplikacji oraz cechy wspólne określenie wartości domyślnych (zasobów graficznych) aplikacji kontrola i obsługa czcionek (fontów)
Działanie X-ów (c.d.) Komenda X, initx, startx, xdm zamykanie Ctrl-Alt-Backspace Uwierzytelnianie xauth - program do uwierzytelniania dla X serwera xauth extract -$DISPLAY rsh pc1 xauth merge - xhost - dodawanie i usuwanie hostów uprawnionych do korzystania z X serwera (/etc/x0.hosts) xhost + - dodaj wszystkich opcje aplikacji (cechy wspólne) mogą być definiowe przez użytkownika z linii komend lub zapamiętane w bazie danych o zasobach rdb (resource database)
Opcje aplikacji -display host:0 -geometry szerokość x wysokość {+ -} XOFF {+ -} YOFF XOFF - odległość od lewego (+) lub prawego (-) marginesu w pixelach YOFF - odległość od górnego (+) lub dolnego (-) marginesu w pixelach xterm -geometry 80x24+30+200 -display lab78:0 +0+0-0+0 +0-0 -0-0
Opcje aplikacji (c.d.) -bg kolor - kolor tła -fg kolor - kolor tekstu -bd kolor - kolor brzegu -bw liczba - szerokość brzegu okna -fn font - nazwa czcionki dla tekstu Do obsługi bazy danych rdb wykorzystuje się program xset, którym użytkownik zmienia wartości domyślne (np. czcionki) zawarte w pliku.xresources i.xdefaults xset b on - włącza głośniczek Definicja myszy i klawiatury : Xmodmap
Obsługa czcionek Czcionki możemy brać z dysku lokalnego lub zdalnego (NFS) z serwera fontów xfs przez TCP/IP Narzędzia do obsługi czcionek xfd, xlsfonts - wylistowanie czcionek xfontsel - wyświetlenie czcionki xset - dodaje lub usuwa czcionkę xset +fp /usr/local/fonts/myfont xbdftopcf - konwertuje fonty bdf ( Bitmap Distribution Format) na pcf (Portable Compiled Format) mkfontdir - tworzy index w katalogu fonts.dir, z którego korzysta X serwer oraz serwer fontów xfs
Nazwy czcionek System nazw: X Logical Font Description (XFLD) -adobe-courier-medium-r-normal--8-80-75-75-m-50-iso8859-1*-fixed-boldr-normal--13-120-*-*-*-*-*-* adobe - właściciel courier - rodzaj medium - wielkość r - krój (rozmiar) normal - szerokość 8 - rozmiar w pixelach 80 - rozmiar w dzisiątkach punktów 75 - roździelczość w dpi m - font o stałej szerokości (p - proporcjonalny) iso8859-1 - zbiór znaków Latin1 (nadzbiór ASCII)