Rozdział I
Wprowadzenie
W niniejszym rozdziale przedstawiono podstawowe wiadomości niezbędne do pobieżnego poznania problematyki związanej z systemami operacyjnymi oraz charakteru systemu operacyjnego Unix. Rozdział ten jest przeznaczony dla czytelników, którzy nie mieli okazji zetknąć się z tymi zagadnieniami, dlatego też przez innych może być pominięty bez uszczerbku dla lektury pozostałej części podręcznika. Użytkownik bardziej zaawansowany znajdzie szczegółowe omówienie opisywanych tutaj zagadnień w kolejnych rozdziałach.
Systemy komputerowe i systemy operacyjne
System komputerowy, w najprostszym ujęciu, to zestaw dwóch elementów: sprzętu (ang. hardwwe) i oprogramowania (ang. software) „ożywiającego" ten sprzęt, stanowiących tzw. zasoby systemu.
Zasoby systemu komputerowego to: jego procesor (ang. Central Processing Unit — CPU) — centralny element komputera wykonujący programy, pamięć operacyjna (w której są umieszczane wykonywane programy), programy, dane oraz różne urządzenia zewnętrzne (drukarki, terminale, pamięci dyskowe i taśmowe itp.). Najważniejszym elementem sprzętowym jest sam komputer. Niekiedy, tam gdzie pojawia się ten termin, będziemy mieli na myśli cały system komputerowy (komputer wraz z jego osprzętem i oprogramowaniem). Oprogramowanie współczesnych systemów komputerowych obejmuje często do kilku tysięcy programów, wśród których, wyróżnia się różne ich grupy.
Program to zbiór instrukcji zrozumiałych dla komputera, przechowywany na odpowiednim nośniku danych takim jak: dyskietki, dyski twarde, taśmy magnetyczne itp., na czas wykonania przenoszony do pamięci operacyjnej komputera. Mówimy, że komputer wykonuje program, gdy postępuje zgodnie z zapisanymi w nim instrukcjami, stanowiącymi odpowiedni opis (inaczej: algorytm) postępowania.
Dla umożliwienia pracy całości systemu komputerowego zawsze potrzebny jest pewien minimalny zestaw oprogramowania, nazywany systemem operacyjnym. Dla wielu typów obecnie produkowanych komputerów, szczególnie klasy PC, dostępnych jest kilka różnych systemów operacyjnych (często jednym z nich jest system Unix).
Przed każdym systemem operacyjnym stoją takie podstawowe zadania jak:
• efektywne wykorzystanie sprzętu;
• koordynowanie pracy sprzętu, programów i użytkowników;
• ułatwienie użytkownikom korzystania z komputera.
Realizując te zadania system operacyjny kontroluje niemal wszystkie czynności komputera i podłączonych do niego urządzeń. Decyduje w jaki sposób są wykonywane programy, przechowywane dane, drukowane wyniki obliczeń, wyświetlane obrazy na ekranie itp.
Ponieważ sprzęt komputerowy jest funkcjonalnie skomplikowany, zazwyczaj nie zezwala się programom na bezpośrednie korzystanie z możliwości sprzętu, zmuszając je do korzystania z niego za pośrednictwem systemu operacyjnego. Umożliwia to systemowi zachowanie kontroli nad pracą komputera, a jednocześnie uwalnia programistów piszących programy i innych użytkowników systemu od konieczności gruntownej znajomości zasad pracy komputera i podłączonych do niego urządzeń.
Budową systemu operacyjnego zależy od jego typu i przeznaczenia. W szczególnym przypadku może lo być pojedynczy program, jednakże ze względu na złożoność i wielość wykonywanych funkcji jest to zwykle kilka programów, z których pewien wyróżniony (lub icli grupa) nazywany jest jądrem systemu. Jądro jest uruchamiane jako proces pierwotny, sprawujący kontrolę nad całym systemem komputerowym. Każdy system operacyjny dostarczany jest z pewnym zestawem dodatkowych programów usługowych, wspomagających możliwości jądra. Są wśród nich zarówno programy odpowiedzialne za wykonywanie pojedynczych poleceń użytkownika jak i programy o bardziej rozbudowanym przeznaczeniu. Te ostatnie często określa się terminem aplikacje użytkowe lub oprogramowanie aplikacyjne.
1.2. Platformy sprzętowe systemów operacyjnych
Większość systemów operacyjnych powstałych przed Unixcm (koniec lat sześćdziesiątych) była przeznaczona dla jednego typu komputera. Było to zapewne wynikiem zarówno znacznych odrębności w stosowanych wówczas konstrukcjach sprzętowych jak i różnorodności rodzących się dopiero modeli systemów operacyjnych. Jedno jest jednakże pewne: opracowanie w tamtym okresie komercyjnego systemu operacyjnego dla nowego komputera było wyjątkowo trudne, kosztowne i czasochłonne (szacuje się, że opracowanie i rozwój systemu operacyjnego OS dla komputerów IBM-360/370 kosztowało około 5 tysięcy osobo-lat pracy). W laboratoriach czołowych światowych producentów komputerów i oprogramowania systemowego zaczęło więc dość wcześnie myśleć nad unifikacją konstrukcji sprzętowych i nad koncepcją takich systemów operacyjnych, które mogłyby pracować nie tylko na jednym łypie komputera, ale co najmniej całej ich rodzinie.
Z biegiem lat pojawił się modny obecnie termin platforma sprzętowa, który oznacza, z grubsza rzecz ujmując, jednolitą koncepcyjnie rodzinę komputerów, na których można uruchamiać dany system operacyjny lub system oprogramowania użytkowego. Daną rodzinę komputerów charakteryzuje podobna architektura (konstrukcja) oraz ten sam lub podobny typ zastosowanego procesora. Możemy więc mówić o platformie mikrokomputerów osobistych klasy PC, bazujących na procesorach x86 firmy Intel. platformach związanych z procesorami Motorola, SPARC itd.
W zakresie unifikacji konstrukcji komputerów bodajże największą role odegrały firmy DEC i IBM, natomiast w zakresie systemów operacyjnych największe w tym względzie osiągnięcia odnotowano w Laboratoriach Bella (część koncernu AT&T), gdzie opracowano
model systemu operacyjnego Unix, w dużym stopniu niezależnego od typu komputera i zrealizowano jego pierwszą wersję dla minikomputera PDP-7. Po nieodpłatnym udostępnieniu przez AT&T licencji na system Unix wielu amerykańskim uniwersytetom, rozpoczął się jego szybki rozwój i przystosowanie do pracy z różnymi komputerami. Przystosowanie to ułatwiał fakt, iż znaczna część jego kodu była napisana nie w asemblerze (języku wewnętrznym komputera), lecz w niezależnym od komputera jeżyku C. Oczywiście dla każdego typu komputera musiała być generowana odrębna wersja systemu, co dla nowego typu komputera wymagało wcześniejszego opracowania kompilatora języka C oraz realizacji w asemblerze jedynie tych fragmentów systemu, które są zwykle mocno zależne od sprzętu. Tak jest również dzisiaj.
Dzięki polityce licencyjnej AT&T (od pewnego czasu odpłatnej) oraz powstaniu szeregu instytucji zajmujących się standaryzacją systemu Unix, system ten jest dostępny dla większości produkowanych obecnie komputerów. Oczywiście na danym typie komputera mogą być instalowane tylko te wersje systemu, które są dla niego przeznaczone. Ponieważ nazwa Unix jest nazwą zastrzeżoną przez USL (filię AT&T, ostatnio wchodzącą w skład spółki o nazwie Univel), wielu producentów oferuje go pod innymi nazwami handlowymi. Nie zawsze zachowują się one identycznie, ale na tyle podobnie, że zwykli użytkownicy na ogół nie dostrzegają istotnych między nimi różnic.
1.3. Koncepcja „systemów otwartych"
W lalach osiemdziesiątych popularna stała się koncepcja tzw. systemów otwartych. Doświadczenia z wieloma standardami dotyczącymi systemów operacyjnych i procedur komunikacyjnych oraz konieczność ich współpracy w jednym systemie komputerowym zainicjowały prace nad ogólnymi regułami i modelami systemów otwartych. Otwartość ma zapewnić współdziałanie różnych systemów, wymienność danych i oprogramowania oraz swobodną rozbudowę i modernizację systemów.
Systemy otwarte (wg. założeń organizacji X/0pen) są środowiskami narzędzi informatyki, zrealizowanymi w oparciu o formalne i nieformalne standardy. Rozwiązania standardowe nie mogą być wyłączną własnością jednego dostawcy i muszą być ogólnie dostępne. Systemy otwarte gwarantują możliwość przenoszenia oprogramowania między systemami komputerowymi i tym samym pozwalają w pełni wykorzystać już istniejące komputerowe zasoby informacyjne oraz umożliwiają dość swobodny wybór dostawców sprzętu i oprogramowania. Z punktu widzenia użytkownika oznacza to:
• swobodę wyboru platformy sprzętowej:
• łatwy dostęp do dużego zestawu programów użytkowych;
• możliwość kontaktu z zewnętrznym światem komputerowym;
• ochronę doświadczenia i inwestycji użytkowników w dłuższym okresie czasu.
Postulaty zmierzające do uniezależnienia użytkowników komputerów od architektury systemów komputerowych, a szczególnie od takich jego elementów jak: lista rozkazów procesora, funkcje systemu operacyjnego, organizacja pamięci zewnętrznej — sięgają wczesnych lat sześćdziesiątych. Drogą do realizacji tych postulatów był rozwój oprogramowania narzędziowego (głównie języków programowania, systemów zarządzania bazami danych) i związane z nim prace standaryzacyjne oraz porozumienia producentów i użytkowników. Przedsięwzięcie to zaowocowało powstaniem semi-standardów, takich jak języki programowania: Cobol, Fortran, Pascal, C i SQL oraz systemów operacyjnych, takich jak Unix i MS-DOS oraz szeregu bibliotek i interfejsów użytkownika, na przykład X-Window, Motif, Open/Look, MS-Windows itp.
Współczesne kierunki rozwoju oprogramowania narzędziowego prowadza do coraz pełniejszego uniezależnienia oprogramowania użytkowego od platformy sprzętowej, na której ma być ono eksploatowane. Pozwala to na bogatsze wykorzystanie coraz to nowszego sprzętu komputerowego, bez konieczności rezygnacji z ogromnych inwestycji jaką stanowią już istniejące systemy informatyczne.
Korzyści wynikające ze spełnienia postulowanych przez X/0pen cech otwartości są oczywiste. Wynika z nich możliwość dość swobodnego wyboru platform sprzętowych (komputerów dowolnego producenta), pod warunkiem, że spełnione są postulały otwartości w zakresie oprogramowania narzędziowego, to znaczy, że dla nowego komputera dostępne są wcześniej używane systemy operacyjne, języki programowania, systemy zarządzania bazami danych itp., niezbędne do przeniesienia już posiadanego oprogramowania użytkowego. Wydaje się, że szczególnie ważną rolę odgrywają tutaj systemy zarządzania bazami danych (na przykład Informix. Ingres, Magie, Oracie. Progress, JAM), bazujące na językach czwartej generacji (4GL), szczególnie na języku SQL.
Użytkownicy muszą jednak pamiętać, że „otwartość", to nie tyle zgodność z pewną liczbą standardów i zaleceń, co również trwający proces stałego rozwoju idei. Kolejne edycje norm i zaleceń różnych międzynarodowych organizacji (na przykład IEEE, POSDC i X/0pen — opisywanych w kolejnym rozdziale) wyznaczają kolejne kroki tego procesu. Producenci sprzętu, oprogramowania systemowego i narzędziowego aktywnie w nim uczestniczą. Do liderów tych działań należą producenci systemów unixowych. w tym głównie: koncern AT&T (z podległymi mu firmami: Beli Labs. USL i USO), BSDI, Consensys. DEN, HP, OSN, SCO. SunSoft, a ostatnio Univel (spółka Novella z USL).
Ponieważ kolejne etapy rozwoju systemu Unix w znacznym stopniu pokrywają się z historią rozwoju idei otwartości w systemach informatycznych i znajdują w nim szerokie ich odzwierciedlenie, system Unix jest często traktowany jako wzorcowy system otwarty.
1.4. Konfiguracje sprzętowe Unixa
Konfiguracje sprzętowe systemów komputerowych pracujących pod kontrolą systemu Unix mogą być przeróżne. Mogą to być komputery klasy PC lub zwykle od nich wydajniejsze komputery z procesorami RISC, przeznaczone dla pojedynczego użytkownika (stacje robocze, ang. workslalions). jak również ich wieloterminalowe instalacje, bazujące na komputerach począwszy od wymienionych typów po duże superkomputery. Ponieważ system Unix jest znany przede wszystkim jako system wielodostępny, umożliwiający dostęp do komputera wielu osobom jednocześnie, w niniejszym rozdziale skoncentrujemy na krótko uwagę głównie na jego wieloterminalowych instalacjach. Ich cechą jest to, że występuje w nich co najmniej jeden komputer centralny (tzw. serwer lub host) z zainstalowanym
Unixem, do którego podłączona jest pewna liczba terminali, czyli urządzeń, za pośrednictwem których użytkownicy komunikują się z systemem. Ponadto poprzez łącze (kabel) sieci lokalnej mogą być do niego podłączone inne (niekoniecznie unixowe) komputery, w tym komputery klasy PC, używane między innymi w roli terminali.
Rysunek 1.1. Przekładowa konfiguracja unixowego systemu, komputerowego
1.4.1. Terminale
Terminale (zwane niekiedy „końcówkami") są urządzeniami służącymi do komunikowania się użytkowników z systemem komputerowym. Ich podstawowymi elementami są monitor i klawiatura. Terminale można podłączyć do komputera na kilka sposobów. Jednym z nich jest bezpośrednie podłączenie za pomocą multiplekserów i łączy szeregowych, innym zaś podłączenie poprzez kabel lokalnej sieci komputerowej (LAN) lub sieci telefonicznej. W obu przypadkach stosowane są różne rodzaje kabli i różne rodzaje pośredniczących urządzeń, jednakże rozwijanie tego zagadnienia wykracza poza ramy niniejszego rozdziału. Warto w tym miejscu zauważyć, że w systemach jednostanowiskowych klawiatura i monitor są zwykle podłączone bezpośrednio do komputera.
W charakterze terminali mogą być używane:
• klasyczne terminale znakowe;
• specjalizowane terminale graficzne;
• komputery (zwykle klasy PC) używane do naśladowania terminali.
We wszystkich trzech przypadkach do terminala mogą być podłączane lokalne drukarki, a w przypadku X-terminali również popularna „myszka" i inne urządzenia.
Większość odmian Unixa jest wyposażona w odpowiednie oprogramowanie (na przykład o nazwie UUCP) umożliwiające podłączenie terminala poprzez łącza sieci telefonicznej. Mogą to być zarówno łącza wydzielone (stałe — dzierżawione), jak i łącza zestawiane (komutowane) przez centralę telefoniczną na określony czas pracy.
1.4.1.1. Klasyczne terminale znakowe
Klasyczne terminale znakowe, zwane również „alfanumerycznymi" są zwykle terminalami • „nieinteligentnymi", realizującymi jedynie takie operacje jak: wyświetlanie pojedynczych znaków, pozycjonowanie kursora i ustawianie atrybutów znaków (rozjaśnienie, podkreślenie, podświetlenie tła), a w przypadku terminali kolorowych — sterownie kolorem. Terminale tego typu pozwalają zwykle operować pełnym 256 znakowym zestawem znaków, zawierającym między innymi znaki semigraficzne, stosowane do wyświetlania ramek.
1.4.1.2. Specjalizowane terminale graficzne
Specjalizowane terminale graficzne są zwykle terminalami „inteligentnymi", posiadającymi własną pamięć i specjalizowany procesor, umożliwiający autonomiczne wykonywanie pewnych operacji dotyczących ekranu, takich jak: rysowanie podstawowych figur geometrycznych, wypełnianie ich odpowiednim wzorem lub kolorem itp. Są to zwykle tak zwane X-tenninale specjalnie przystosowane do pracy w graficznym trybie „okienkowym", według standardu X-Window. Dla tego typu terminali dostępnych jest kilka standardowych graficznych interfejsów użytkownika (ang. Graphicul User Inierfuce — GUI), przez które należy rozumieć pewien zestaw oferowanych przez system środków i metod komunikowania się z systemem, cechujących się graficzną i okienkową prezentacją danych na ekranie oraz intensywnym wykorzystaniem „myszki", używanej do wskazywania wybieranych operacji i innych elementów zobrazowanych graficznie na ekranie. Większość GUI opiera się na graficznej warstwie oprogramowania X-Window. Najpopularniejsze z nich to:
• Motif — oprogramowanego przez organizację OSF;
• Open Look — oprogramowany przez firmy AT&T(USL) i Suń Microsystems,
Najwyższą warstwą tych interfejsów jest wyświetlany na ekranie pulpit narzędziowy (ang. desktop}, obsługiwany przez odpowiedni program korzystający z GUI. Zgodnie z tradycją pulpit laki jest wyposażony w rozwijane menu i pasek z graficznymi symbolami podręcznych narzędzi (najczęściej używanych funkcji). Wewnątrz okna pulpitu znajdują się poukładane według upodobań użytkownika obiekty. Pojęcie obiektu obejmuje symbole lub nazwy aplikacji (na przykład edytor tekstu) oraz różne specyficzne narzędzia, „kosz na śmieci" (skrytkę skasowanych plików), skrytkę pocztową itp. Do popularnych w Unixie pulpitów narzędziowych należą:
• X-Desktop — produkt firmy IXI Limited, oparty na Motif (firma la została wykupiona przez SCO i nazywa się SCO IXI);
• Open Windows — produkt firmy Sun Microsystems (oparty na Open Look),
opracowany w porozumieniu z AT&T.
Wszystkie z nich oferują metody interakcji z systemem podobne do oferowanych przez MS Windows, znanych ze środowiska komputerów klasy PC. Nie są zbyt powszechne, gdyż wymagają drogich specjalizowanych terminali oraz drogich interfejsów programowych.
1.4.1.3. Komputery naśladujące terminale
Komputery używane do naśladowania terminali, zwykle są to komputery klasy PC, muszą być wyposażone w odpowiednie oprogramowanie — pozwalające naśladować (emulować) tryb pracy właściwego terminala. Najczęściej naśladowanymi trybami pracy są: ANSI i VT-100/220/320. Komputery klasy PC są bardziej złożone i droższe od zwykłych terminali znakowych, jednakże są w nadzwyczaj atrakcyjne ze względu na to, że:
• są powszechnie dostępne;
• są elastyczne w naśladowaniu różnych terminali;
• mogą być używane do różnych celów.
Na ogół komputer PC jest wykorzystywany w charakterze terminala przez krótki czas, wykonując przez resztę czasu inne zadania. Niektóre programy emulujące terminale pozwalają użytkownikowi na szybkie przełączanie się pomiędzy pracą w trybie DOSa i Unixa.
Naśladowanie terminali znakowych
Dzięki odpowiedniemu oprogramowaniu (na przykład HP ARPA Servicesfor DOS, ICE), komputer klasy PC emulujący terminale znakowe może mieć następujące możliwości:
• Przełączanie pracy komputera PC pomiędzy sesję pracy Unixa i DOSa, bez potrzeby ponownego otwierania sesji pracy w Unixie, dzięki czemu użytkownik może mieć w danej chwili dostęp do obu systemów operacyjnych;
• Transfer (kopiowanie) plików pomiędzy DOSem i Unixem;
• Wykorzystanie drukarek unixowych z poziomu sesji DOSa i dosowych z poziomu sesji Unixa;
• Podłączenie unixowego systemu plików w odpowiednim katalogu DOSa, dzięki czemu pliki unixowe (z uwzględnieniem pewnych, opisywanych dalej, ograniczeń) można obsługiwać dosowymi poleceniami i programami, na przykład oglądać katalog w jednym z okien Norton Commandera. Podłączanie takie wymaga jednak zainstalowania na obu połączonych komputerach oprogramowania obsługującego protokoły TCP/IP i NFS.
Przedstawiony tutaj temat jest przedmiotem obszernego opisu w końcowej części podręcznika.
Naśladowanie X-terminali
W świecie Unixa coraz popularniejszy staje się graficzny interfejs użytkownika X-Window. Aplikacje wykorzystujące X-Window to najczęściej:
• programy komputerowego wspomagania projektowania (na przykład AutoCAD for Unix);
• graficzne interfejsy baz danych (na przykład Informix YiewPoint);
• graficzne programy biurowe, zwykle arkusze kalkulacyjne (na przykład Informix Wingz);
• oprogramowanie do przygotowania publikacji (na przykład FrameMaker).
Aby użytkownik Unixa miał dostęp do takich aplikacji, w systemie instalowane są między innymi specjalizowane terminale graficzne (X-terminale), pracujące w standardzie X-Window. Ich wadą jest stosunkowo wysoka cena oraz ograniczony (specjalizowany) zakres wykorzystania.
Wychodząc naprzeciw potrzebom tych użytkowników, którzy nie posiadają X-terminali, wiele firm oferuje emulatory X-terminali pracujące na komputerach PC w środowisku MS-Windows. Najbardziej znanym takim produktem jest PC-Xview for Windows amerykańskiej firmy NCD (dawniej GSS). Produkt ten kontaktuje się z komputerami unixowymi przez sieć Ethemet i protokół TCP/IP i zapewnia użytkownikom PC jednoczesny i przejrzysty dostęp do graficznych aplikacji MS-Windows oraz X-Window (Ingres Windows. Informix Wingz).
Emulatory X-terminali wydają się być rozwiązaniem idealnym dla użytkowników hybrydowych (mieszanych) sieci lokalnych (na przykład Novell NetWare i SCO Open Desktop) zamieniając wszystkie stacje sieci NetWare w namiastkę unixowych stacji roboczych i wydajne X-terminale.
1.4.1.4. Nazwy terminali
Każdy terminal podłączony do Unixa ma unikatową nazwę systemową, zaczynającą się od liter tty. Nazwa ta pochodzi od angielskiego słowa teletype, oznaczającego dalekopis, który w odległych latach sześćdziesiątych często był używany w roli terminala systemu komputerowego. Systemową nazwę danego terminala można wyświetlić wprowadzając na tym terminalu polecenie
tty
które wyświetli jego nazwę, na przykład:
/dev/tty01
1.4.1.5. Łącza terminalowe
Ze względu na oddalenie terminali od komputera łącza terminalowe można podzielić na dwa rodzaje: lokalne i zdalne.
Łącza lokalne, zależnie od rodzaju użytego kabla, pozwalają oddalić terminale od komputera na odległość od kilkunastu do kilkuset metrów, a w przypadku kabli światłowodowych nawet do kilku kilometrów.
Łącza zdalne pozwalają oddalić terminal na dowolną odległość od komputera. Najczęściej spotykanym rozwiązaniem jest stosowanie połączeń telefonicznych. Aby połączenie poprzez łącze telefoniczne było możliwe, cyfrowe informacje wysyłane z komputera do terminala muszą ulec przetworzeniu na sygnały analogowe, właściwe dla sieci telefonicznej. Proces ten nazywa się modulacją. Po stronie terminala sygnał ten musi być z powrotem przetworzony na sygnał cyfrowy w procesie demodulacji. Urządzeniem spełniającym oba zadania jest modem. Typowy schemat połączeń dla tego przypadku przedstawiono na rysunku 1.2.
W przypadku terminali emulowanych na komputerach PC włączonych do sieci lokalnej, łączem terminalowym jest kabel sieci LAN. Zaletą takiego rozwiązania jest wysoka szybkość transmisji, znacznie większa od uzyskiwanych na łączach szeregowych i modemowych.
Rysunek 1.3. Połączenie sieciowe
1.4.1.6. Konsola systemowa
Wyróżnionym rodzajem terminala w systemach wielodostępnych jest tak zwana konsola systemowa, zwana niekiedy konsolą operatora, jako że jest to terminal dedykowany głównie do wykorzystania przez operatora lub administratora systemu. Terminal taki jest połączony z komputerem za pośrednictwem specjalnego złącza lub jednego ze złącz, stosowanych dla innych terminali — zależnie od typu komputera. W przypadku komputerów PC rolę konsoli pełni sam komputer lub, jak kto woli, jego monitor i klawiatura.
Zwykli użytkownicy pracują w większości przypadków na pozostałych terminalach. Są one dostępne tylko wtedy, kiedy Unix pracuje w trybie wielodostępu.
1.4.1.7. Obsługa różnych typów terminali
System Unix jest przystosowany do obsługi systemów komputerowych, w których zainstalowano różne typy terminali. Aby było to możliwe, z każdą odmianą Unixa dostarczana jest baza danych opisująca własności funkcjonalne kilkuset terminali tekstowych, a w nowszych jego realizacjach często również terminali graficznych. Dla terminali tekstowych dostarczane są zwykle dwa warianty tych baz: termcap (starszy) i terminfo (nowszy). Oba warianty zawierają dla danego terminala opis jego klawiatury i kodów sterujących do obsługi ekranu (pozycjonowanie kursora, atrybuty tekstu, tła itp.). Niektóre pakiety oprogramowania (szczególnie te, które są przeznaczone do pracy również w innych systemach operacyjnych) posługują się jednakże własnymi opisami.
Możliwość jednoznacznego wskazania systemowi typu terminala związanego z danym łączem terminalowym lub z danym użytkownikiem komplikują następujące fakty:
• większość produkowanych terminali może pracować we własnym trybie lub w jednym z kilku innych, naśladujących tryby pracy terminali innych producentów;
• poszczególni użytkownicy Unixa mają prawo pracować na dowolnych terminalach i uruchamiać na nich różne programy, wymagające niekiedy różnych trybów pracy terminala.
Z powyższych powodów nie ma idealnego sposobu rozpoznawania lub wskazywania typu
terminala, dlatego też rozwiązaniem tych problemów zajmuje się administrator systemu.
Dla tych użytkowników, którzy pracują zawsze z tym samym terminalem, najprostszym sposobem wskazania trybu pracy terminala jest podanie nazwy tego trybu w zmiennej środowiskowej TERM i umieszczenie jej definicji w plikach startowych użytkownika (.profile — dla shella Bourne'a lub .cshrc i .login — dla C-shella; odpowiednikach dosowych plików ai.itoexec.bat i config.sys. czytanych przy otwieraniu na terminalu sesji pracy). Zmienna ta będzie wtedy inicjowana w chwili otwierania przez użytkownika sesji pracy. Wartość tej zmiennej (na przykład TTiKM=vtlOO) system traktuje jako odsyłacz do bazy terminfo, z której może pobrać opis wskazanego terminala (na przykład vtl00).
Aby ułatwić rozwiązywanie tego problemu w innych sytuacjach, Unix może korzystać z pliku /etc/ttytype, zawierającego dwukolumnową tablicę, w której w jednej kolumnie pamiętane są systemowe nazwy terminali (na przykład tty04, tty02), a w drugiej nazwy ustawionych trybów ich pracy (,na przykład vt100, ansi itp.). Istnieje więc możliwość dla danego terminala pobrania nazwy trybu jego pracy z tego pliku. Ponadto w pliku startowym danego użytkownika może być to tak opisane, że system pokazuje rozpoznaną nazwę i oczekuje na jej akceptację lub podanie innej.
Nazwa ustawionego trybu pracy terminala jest zapamiętywana w dostępnej dla użytkownika zmiennej środowiskowej TERM. Zmieniając jej wartość, użytkownik wskazuje aktualny tryb pracy terminala. Sposób tej zmiany dla interpreterów poleceń sh i csh jest nieco inny, na przykład chcąc ustawić tryb vtl00, należy wpisać polecenia:
w sh:
TERM=vt100; expoń TERM • w csh:
setenv TERM vtl00
Błędne ustawienie trybu pracy terminala na ogół nie ma znaczenia przy prostych pracach, na przykład zwykłej interakcji z systemem, jednakże może doprowadzić do kompletnego „zaśmiecenia" ekranu i zablokowania terminala (w przypadku programów wyświetlających ramki lub udostępniających pełnoekranowy tryb obsługi ekranu).
1.4.1.8. Klawiatura, ekran i znaki ASCII
Informacje wprowadzane z terminala są wpisywane przy pomocy klawiatury i przesyłane do komputera, a następnie wyświetlane na ekranie. Niestety, nie istnieje jeden standard klawiatury. Niemniej jednak, każda klawiatura terminala przeznaczonego do pracy z Unixem posiada możliwość wprowadzania dowolnego znaku spośród standardowego zestawu znaków ASCII (ang. American Standard Code for Information Interchange — Standardowy Kod Amerykański do Wymiany Informacji), z których większość jest rozmieszczona w sposób podobny jak w maszynie do pisania. Liczba i rozkład dodatkowych znaków i klawiszy zależy od typu klawiatury. Uwzględniając przyzwyczajenia użytkowników komputerów PC, coraz częściej producenci terminali dostarczają je z klawiaturami w standardzie tych
komputerów.
Wszystkie znaki terminali znakowych mają własne kody. Każdy kod składa się z 8 bitów
(l bajta). Unix używa zestawu znaków ASCII. Zawiera on 128 znaków:
• litery a - z, A - Z; cyfry 0-9;
• znaki specjalne: •~!@#$%^&*()-_=+[]{};::'", ../<>?;
• znak odstępu;
• znaki sterujące o kodach 0 - 31, nie mające reprezentacji graficznej.
Początkowo 7-bitowy kod ASCII wraz z pojawieniem się komputerów klasy PC został rozszerzony do wersji 8-bitowej, zawierającej 256 znaków, w tym szereg znaków narodowych oraz tzw. „znaków semigraficznych", umożliwiających wyświetlanie linii i ramek. Powstał w ten sposób rozszerzony kod ASCII, akceptowany przez większość obecnych odmian Unixa.
Na większości terminali rozszerzony zestaw znaków jest jednak dostępny tylko dla ekranu a nie klawiatury, w związku z czym powstają niekiedy problemy z wprowadzaniem znaków niedostępnych na klawiaturze, zwłaszcza o kodach z wartościami powyżej 127, na których standardowo są umieszczane litery narodowe, na przykład polskie. W przypadku polskich liter problem komplikuje się również z tego powodu, że w użyciu jest kilka „polskich standardów", z których najpopularniejsze to:
• Code Page 8859/2 — tak zwany ISO Latin 2 — oficjalna polska norma;
• Code Page 852 — tak zwany IBM Latin 2 — dominujący w DOSie, wspierany przez MS Windows i jego aplikacje oraz przez producentów wielu urządzeń peryferyjnych;
• Mazovia — nieoficjalny standard, szczególnie popularny wśród użytkowników DOSa, wypierany przez Code Page 852.
Ponieważ możliwość definiowania klawiatury jest dostępna tylko w niektórych odmianach Unixa (na przykład SCO UNIX/XENIX), najsensowniejsze w polskich warunkach wydaje się wyposażenie systemu tylko w terminale posiadające „wbudowane" polskie litery. Polecić można szczególnie niezawodne i tanie polskie terminale HETMAN 285, IKAR-IKT5E i AVT-220, udostępniające kilka polskich „standardów" polskich liter, i co najcenniejsze — wprowadzanie ich w wygodnej konwencji tzw. klawiatury programisty (Alt-litera: ace..., ACE...), znanej wszystkim polskim użytkownikom DOSa.
1.4.2. Stacje robocze
Stacje robocze (ang. workstations) to, w typowym znaczeniu minikomputery o stosunkowo dużej mocy obliczeniowej, zwykle zbudowane w oparciu o procesory RISC (o zredukowanej liczbie rozkazów). Są one przeznaczone do wyposażenia jednoosobowych stanowisk pracy wymagających dużych mocy obliczeniowych. Potencjalnie mogą pełnić również rolę komputera centralnego. Cechuje je zwykle wysokiej jakości monitor graficzny. Dedykowane są głównie do zastosowań inżynierskich i zaawansowanych zastosowań wydawniczych (DTP — ang. DeskTop Publishing). Stąd też instalowany na nich Unix jest zwykle wyposażony w nowoczesny interfejs graficzny, bazujący na technologii X-Window i Motif lub Open Look. W niektórych zastosowaniach wymogom stawianym stacjom roboczym mogą sprostać również „mocniejsze" modele mikrokomputerów klasy PC, szczególnie te oparte na procesorach i486 i Pentium.
1.4.3. Sieci komputerowe
Obecnie w coraz to większej liczbie firm stosowane są połączenia wielu komputerów w sieci komputerowe. Podstawowym celem działania sieci jest uzyskanie łączności z zasobami innych komputerów, na przykład wspólne korzystanie z plików i drukarek.
Wyróżnia się sieci lokalne (LAN — ang. Local Area Network), składające się z bezpośrednio połączonych komputerów, zlokalizowanych zwykle w ramach jednej firmy, oraz sieci rozległe (WAN— ang. Wide Area Network), o zasięgu jednego miasta, danego kraju lub o zasięgu międzynarodowym (często ze względu na skalę zasięgu wyróżnia się kilka typów tych sieci: miejskie, krajowe, międzynarodowe). W tym drugim przypadku jako łączy używa się nie stałych kabli, lecz łączy telefonicznych, radiowych lub innych konkurencyjnych rozwiązań. Znamienną cechą Unixa jest to, że jest on dość dobrze przygotowany do pracy w takich sieciach.
Komputery pracujące w sieciach mogą być komputerami równoprawnymi lub pracować w trybach klient-serwer:
• serwer (ang. server — usługodawca) — wyróżniony komputer świadczący usługi na rzecz mających z nim łączność innych komputerów, na przykład przechowujący pliki (ang. file server}, pośredniczący w przekazywaniu poczty (ang. mail server), itp.;
• klient (ang. client — usługobiorca) — komputer korzystający z usług innego komputera. Klientami są zwykle komputery o mniejszych od serwera mocach obliczeniowych, a ich głównym zadaniem jest maksymalnie przyjazna komunikacja z użytkownikiem i/lub odciążenie serwera z wielu zadań.
Systemy klient-serwer mają wiele zalet: łączą zalety dużych systemów jak i pojedynczych stanowisk pracy, pozwalają rozproszyć zasoby na większą liczbę komputerów i zarządzać nimi centralnie, rozłożyć obciążenie na wiele komputerów i przyśpieszyć obsługę użytkowników oraz zwiększyć ich maksymalną liczbę. Co jest niesłychanie cenne, przydzielenie komputerom wyspecjalizowanych zadań pozwala na łatwą współpracę różnych komputerów i różnych systemów operacyjnych.
Uwzględniając powyższe pojęcia, można wyróżnić dwa podstawowe rodzaje organizacji sieci:
• sieci z dedykowanym serwerem plików oraz stacjami roboczymi;
• sieci o równoprawnych serwerach, w których można korzystać z zasobów każdego z komputerów na warunkach równorzędności dostępu.
Podstawową różnicą pomiędzy systemami pracującymi w trybach serwer-terminal i serwer-klient są wymagania sprzętowe a tym samym koszty ich instalacji. Przykładowo, lokalna sieć komputerowa wymaga, aby w jej zakresie dane stanowisko było „klientem", serwerem (tak zwanym hostem) lub X-terminalem bądź komputerem osobistym pracującym w trybie terminala. Wszystkie te urządzenia powinny być wyposażone w karty sieciowe i połączone odpowiednim kablem, co rzutuje na wyższe koszty takiej realizacji. Ponadto niezależnie od rodzaju sieci (LAN lub WAN) w systemach klient-serwer obok serwera potrzebne są komputery pełniące rolę klientów a dla nich odpowiednie oprogramowanie. W „czystym" systemie wielodostępnym (serwer-terminal), tzn. zawierającym centralny komputer i podłączone do niego terminale, wszystkie zasoby komputera (w zakresie ustalonym przez
administratora) są dostępne poprzez terminale. W praktyce spotyka się również rozwiązania mieszane (rozdział 1.4, rysunek 1.1).
W trybie klient-serwer pracuje wiele aplikacji, szczególnie przeznaczonych do obsługi baz danych. Za tym typem przetwarzania przemawia jego wysoka efektywność, łatwość dostosowania do różnych platform sprzętowych, systemowych i sieciowych oraz bezpieczeństwo i scentralizowany dostęp do danych.
1.4.4. Dobór platformy sprzętowej dla systemu Unix
Przed zakupem systemu komputerowego wielu użytkowników zadaje sobie pytanie: jaką platformę sprzętową (komputer) wybrać? Niestety na takie pytania nie ma jednoznacznych odpowiedzi. Powinna to być przede wszystkim platforma taka, na którą można będzie zakupić potrzebne oprogramowanie, oraz taka, która wystarczy na przewidywane ekstremalne obciążenie systemu i zmieści się w pożądanych granicach cenowych. Poniżej podano kilka wskazówek, pomocnych przy określaniu platformy sprzętowej.
Pożądana wielkość pamięci operacyjnej RAM zależy między innymi od:
• wymagań odmiany systemu Unix (1-64 MB na własne potrzeby systemu;
zależnie od jego odmiany, skonfigurowania i zainstalowanych modułów systemu);
• liczby jednocześnie aktywnych użytkowników i używanego oprogramowania aplikacyjnego; przykładowo (i szacunkowo) na jednego użytkownika:
• 0.5 - 2 MB — typowe oprogramowanie biurowe (TexAss Window, Uniplex, MixPack), bazo-danowe aplikacje używające systemu Informix;
• 1-4 MB — bazo-danowe aplikacje używające systemów Oracie, FourGen, Ingres;
• 1.5-8 MB — oprogramowanie graficzne. Pożądana wielkość obszaru pamięci dyskowej zależy od:
• wymagań systemu operacyjnego i zainstalowanych jego modułów (10-300 MB);
• wymagań oprogramowania aplikacyjnego (2 - 200 MB);
• wielkości pamięci operacyjnej (istnieje konieczność zarezerwowania, opisywanego dalej, tzw. obszaru swapu o wielkości rzędu dwukrotnej pojemności RAM);
• wielkości baz danych;
• liczby kont użytkowników (przeciętnie 5 - 20 MB na użytkownika).
Moc obliczeniowa procesora, wbrew spotykanym niekiedy obiegowym opiniom, w zastosowaniach bazo-danowych może się okazać mniej istotna od architektury komputera i sposobu skonfigurowania systemu wielodostępnego. Odpowiednio dobrana wielkość pamięci operacyjnej, dobór pojemnych i szybkich dysków oraz równie szybkich kontrolerów dyskowych i terminalowych w konkretnym przypadku może mieć dużo większe znaczenie. Moc procesora może być bardzo istotna przykładowo w zastosowaniach graficznych, w tym dla systemów posługujących się nowoczesnymi graficznymi interfejsami do kontaktów z użytkownikami. W ostatecznym rachunku okazuje się bowiem, że o wydajności całego systemu komputerowego przesądza jego najsłabszy element. Dla ułatwienia oszacowania wielkości systemu komputerowego w tabeli 1.1 przedstawiono kilka przykładowych, intuicyjnie oszacowanych, konfiguracji komputerów klasy PC oraz komputerów z serii HP9000/S800 firmy HewlettPackard, pracujących pod kontrolą systemu operacyjnego Unix.
Tabela 1.1. Porównanie platform sprzętowych PC Intela i HP-9000/s800
Komputer
|
Pamięć operacyjna RAM (MB)
|
Zalecana pojemność dysku
|
Typowa liczba aktywnych użytkowników
|
PC 386/16 - 33SX
|
4-8
|
120 - 360 MB
|
6-12
|
PC 386/33 - 40DX PC 486/20 - 33SX
|
6-16
|
360 MB - l GB
|
12- 16
|
PC 486/33 - 50DX PC 486/50 - 66DX2
|
ISA 8-16 EISA 16 - 128
|
600 - 4 GB
|
12-24 16-32
|
PC Pentium
|
PCI 64-256
|
>2 GB
|
32 - 128
|
PC n-procesorów
|
64-512
|
>4 GB
|
64-512
|
HP 9000/817 HP 9000/827 HP 9000/847 HP 9000/867, H40
|
16 - 128 32 - 128 32 - 256 64-256
|
> 600 MB 1.3 GB >4 GB >4 GB
|
8-80 16 - 120 32 - 160 64-250
|
W celu porównywania mocy obliczeniowej swoich procesorów Intel wprowadził współczynnik o nazwie iCOMP. Podaje on pojedynczą liczbę, która obrazuje różnice w relatywnej sprawności pomiędzy produkowanymi przez firmę procesorami. Im większa liczba, tym szybszy procesor.
Rysunek 1.4. Testy iCOMP-Benchmarks procesorów Intela x86
Liczby umieszczone na rysunku 1.4 na końcu nazw procesorów Intela oznaczają szybkość zegara. Jak widać na rysunku, o szybkości procesora decyduje nie tylko szybkość zegara, ale i architektura samego procesora. Należy jednak pamiętać, że współczynnik iCOMP pozwala porównać relatywne szybkości samych procesorów, a nie komputerów.
O wydajności komputerów decyduje również wiele innych parametrów, takich jak: ogólna architektura komputera, wielkość pamięci operacyjnej (RAM) i podręcznej (ang. cache), rodzaj magistrali danych (ISA, EISA, MCA, Vesa-LB, PCI), rodzaj kontrolerów (kart) obsługujących poszczególne urządzenia, szybkość oraz skonfigurowanie dysków i w końcu - wydajność samego systemu operacyjnego. Należy podchodzić ostrożnie do wykorzystania współczynnika iCOMP do porównywania procesorów x86 innych producentów niż Intel, na przykład Advanced Micro Devices (AMD) lub Cyrix. Przykładowo procesor 486SLC 25 MHz Cyrixa ma wydajność niższą od wydajności 386DX-33 Intela, natomiast Cyrix 486 DLC 33 MHz osiąga wyniki podobne do 486SX-25.
Często spotykanym kryterium oceny komputerów, szczególnie klasy PC, jest wskaźnik MFLOPS (ang. Mega-FLOating-point instruction Per Second) — określający liczbę wykonywanych przez procesor operacji zmiennoprzecinkowych w czasie jednej sekundy.
Opracowywaniem testów mierzących rozliczne aspekty wydajności różnych typów komputerów zajmuje się kilka organizacji i firm, na przykład SPEC (ang. System Performance Evaluation Cooperative), TPPC (ang. Transaction Processing Performance Council — Rada Wydajności Przetwarzania Transakcyjnego, organizacja niekomercyjna utworzona przez wytwórców sprzętu i oprogramowania, zrzeszająca około 100 członków) oraz firma AIM.
Testy (benchmarki) organizacji TPPC to specjalne programy testujące, ukierunkowane na ocenę wydajności systemów komputerowych w zakresie przetwarzania transakcyjnego (dotyczącego odpowiednio zdefiniowanych operacji na bazie danych). W celu zobiektywizowania wyników, testowane systemy muszą spełniać, sprecyzowane przez TPPC, kryteria konfiguracji sprzętowej, programowej i parametrów baz danych. Istnieją trzy podstawowe zestawy tych testów:
• TPC-A — test z jednostką wydajności tpsA (liczbą transakcji na sekundę), mierzoną w warunkach pracy wielodostępnej i testowania typowych operacji bankowych. Istnieję dwie wersje tego testu: lokalna (ang. local) i rozległa (ang. wide), zależnie od tego czy terminale podłączone są przez sieć lokalną (LAN) czy rozległą (WAN).
• TPC-B — test z jednostką wydajności tpsB (liczbą transakcji na sekundę), mierzoną w warunkach pracy wsadowej i symulowaniu pracujących użytkowników przy transakcjach jak w teście TPC-A. Test jest ukierunkowany na ocenę nie tylko komputera ale i zainstalowanego na nim serwera bazy danych.
• TPC-C — test z jednostką wydajności tpmC (liczbą transakcji na minutę), mierzoną w oparciu o symulację systemu pełnej realizacji zamówień (nowe zamówienie, płatność, stan zamówienia, stan zapasów). Wyniki właśnie tego testu są najczęściej używane w materiałach reklamowych producentów komputerów.
SPECmark to miara wydajności jednostki centralnej komputera (CPU). Wyznacza się ją Jako średnią geometryczną wydajności w programach z różnych dziedzin zastosowań informatyki. Wyróżnia się kilka wariantów tych testów:
SPECint_92 — testy dla obliczeń stałoprzecinkowych;
SPECfp_92 — testy dla obliczeń zmiennoprzecinkowych;
SPECnfs — testy wydajności serwerów plikowych.
Większość testów ukierunkowana jest na mierzenie wydajności komputera z jednym procesorem. Istnieją jednak testy, które są dobrym wskaźnikiem efektywności systemu przy wielu procesorach:
• AIM (ang. AIM Performance Rating) firmy AIM Technology z Santa Clara;
• SPECrate — wersje testów SPECmarks dla systemów wieloprocesorowych:
• SPECrate_int92 — testy dla obliczeń staloprzecinkowych;
• SPECrate_fp92 — testy dla obliczeń zmiennoprzecinkowych.
Na szczególną uwagę w środowisku wielodostępnego systemu Unix zasługuje test AIM, szczególnie trafny do użytku komercyjnego, oceny obsługi baz danych i transakcji (zdefiniowanego zestawu operacji na bazie danych). Test ten pozwala określić następujące wskaźniki:
• AIM — wskaźnik największej wydajności komputera przy optymalnych warunkach pracy;
• maksymalne obciążenie — wyrażone liczbą jednocześnie pracujących użytkowników, przy których wydajność systemu komputerowego staje się nie do przyjęcia;
• maksymalną przepustowość — obliczaną przez sumowanie zadań od wielu użytkowników i zestawienie liczby zadań wykonywanych w ciągu minuty.
W tabeli 1.2 podano przykładowe wyniki testów AIM dla wybranej grupy komputerów (o cenach poniżej 200 tys. USD !), pracujących pod kontrolą właściwych dla nich odmian Unixa.
1.5. Użytkownicy w systemie Unix
1.5.1. Jedno i wieloużytkownikowy tryb pracy
System Unix może pracować w dwóch trybach:
• jednoużytkownikowym (ang. single-user modę), inaczej „jednodostępnym";
• wieloużytkownikowym (ang. multi-user modę), inaczej „wielodostępnym".
Jednoużytkownikowy tryb pracy jest przeznaczony głównie dla administratora systemu, w celu wykonywania prac związanych z konserwacją i konfigurowaniem systemu, robienia kopii zapasowych systemu plików itp. W trybie tym wykluczona jest praca innych użytkowników (nie mają możliwości otwarcia sesji pracy). Tryb ten może być również wykorzystywany do uruchamiania zadań wymagających pełnych zasobów komputera.
Wieloużytkownikowy tryb pracy jest przeznaczony do obsługi wielu użytkowników, jednocześnie korzystających z usług systemu.
System Unix od początku powstania był wielozadaniowy i wieloużytkownikowy. Istnieje jednakże możliwość zmiany trybu pracy z wieloużytkownikowego na jednoużytkownikowy i odwrotnie.
Tabela 1.2. Wyniki testów AIM wybranej grupy komputerów (PC World Komputer, 1994)
System komputerowy
|
AIM
|
Maksymalna przepustowość
|
Maksymalne obciążenie
|
Liczba i łyp procesorów
|
Zegar [MHZ]
|
Zalecana cena [USD]
|
DEC AXP 500x
|
110.4
|
1082.0
|
805
|
1*21064
|
200
|
69 955
|
Data Generał AViiON 5240
|
92.1
|
902.2
|
879
|
4*88100
|
25
|
83 105
|
HP 9000 model G50
|
69.2
|
677.8
|
620
|
1*PA-RISC
|
96
|
128 280
|
IBM RS/6000 POWERServer 580
|
62.1
|
609.0
|
518
|
l*Power 6264
|
62
|
83 449
|
ICL DRS/6000, Level752
|
59.6
|
584.1
|
558
|
4*SPARC2
|
40
|
96 500
|
NCR System 3000 model 3450
|
49.4
|
BD
|
400
|
2*i486
|
50
|
88740
|
Suń SPARCserver 1000, 256 MB RAM, 10 GB HDD
|
149.5
|
1465.0
|
1118
|
4*SuperSPAR C
|
50
|
98000
|
Wyse series 7000i model 760MP
|
111.0
|
1087.5
|
849
|
5*i486DX2
|
66
|
46 778
|
Niektóre systemy komputerowe z systemem Unix pracują non-stop: z wyjątkiem awarii nigdy nie są wyłączane. Jeżeli administrator zamierza przeprowadzić pewne prace w trybie pojedynczego użytkownika, zwraca się z prośbą do innych użytkowników o zamknięcie sesji pracy i po pewnym czasie wydaje polecenie zamknięcia trybu wieloużytkownikowego. Po zakończeniu swoich prac administrator znowu może przywrócić tryb wieloużytkownikowy.
Użytkownicy jednostanowiskowych systemów komputerowych zwykle sami są ich administratorami. Wydawać by się mogło, że w takim przypadku kończąc pracę mogliby wyłączyć komputer. Jednakże w odróżnieniu od innych systemów (na przykład MS DOS), pracy w Unixie nie powinno się kończyć przez wyłączenie zasilania komputera. Unix wymaga bowiem jawnego zakończenia swojej pracy, głównie ze względu na intensywne buforowanie transmisji dyskowych (stosuje tak zwaną pamięć podręczną: ang. cache memory) oraz czas niezbędny na uaktualnienie zawartości dysku informacjami przechowywanymi w buforach. Może to zrobić tylko użytkownik zarejestrowany jako root. Udając odpowiednie polecenie (zwykle: Shutdown, haltsys lub halt; ich nazwy i argumenty są zależne od odmiany Unixa). Jeżeli nastąpi nagłe wyłączenie zasilania, może dojść do utraty (zwykle nielicznych) informacji, a po ponownym włączeniu systemu — do czasochłonnego procesu weryfikacji systemu plików.
1.5.2. Interpretacja poleceń użytkownika
Większość użytkowników Unixa kontaktuje się z systemem za pośrednictwem shella (inaczej: powłoki), czyli jednego z kilku dostępnych interpreterów poleceń.
W wielce uproszczonym ujęciu problemu (tłumaczącym niewątpliwie rodowód terminu powłoka), powłoka „otacza" Unix i „izoluje" go od użytkownika, jak na rysunku 1.5.
Rysunek 1.5. Powłoka systemu Unix
Odpowiednikiem unixowego shella w systemie MS DOS jest program command.com.
Uwaga:
W kolejnych rozdziałach używany będzie wyłącznie termin shell, traktowany w roli
nazwy własnej i zgodnie z unixową tradycją (za wyjątkiem początków zdań) pisany z małej litery.
Shell to program czytający i interpretujący polecenia użytkownika, udostępniany użytkownikowi po otwarciu na terminalu sesji pracy. W Unixie istnieje kilka shelli do wyboru. Każdy użytkownik otrzymuje odpowiedniego shella, przydzielanego mu przez administratora systemu, w momencie wprowadzania go do rejestru użytkowników uprawnionych do korzystania z systemu. Może to być jeden ze standardowych shelli lub shell udostępniający graficzny interfejs okienkowy. Użytkownik ma jednakże możliwość zmiany shella w czasie pracy.
W niniejszym podręczniku będzie mowa jedynie o standardowych shellach (w Unixie jest ich klika: sh, csh, ksh) — pracujących w trybie tekstowym i dostępnych we wszystkich odmianach Unixa. Ich możliwości są szczególnie doceniane po bliższym poznaniu systemu.
Shell to program będący częścią systemu operacyjnego, uruchamiany jako odrębny proces, wykonujący polecenia wprowadzane z klawiatury lub ze wskazanego pliku. Ponieważ jest to element systemu, z którym bezpośrednio styka się użytkownik, często nie jest on świadom jego istnienia, ponieważ zakłada, że kontaktuje się z ogólnie pojmowanym
„systemem".
Podstawowym shellem w Unixie jest shell reprezentowany przez program o nazwie sh
(często nazywany shellem Bourne'a — od nazwiska jego autora), któremu poświęcono
odrębny rozdział.
1.5.3. Użytkownicy oraz ich nazwy i hasła
Użytkownicy systemu Unix są w nim widziani poprzez unikatowe „systemowe nazwy użytkowników". Nazwa taka w większości odmian systemu składa się zwykle z nie więcej
niż 8 liter i cyfr, przy czym generalną zasadą jest stosowanie wyłącznie małych liter. Nadaje je administrator systemu, wprowadzając nazwę użytkownika do rejestru osób uprawnionych do korzystania z systemu. Dobrą praktyką jest stosowanie nazw wywodzących się od nazwisk i imion użytkowników (pełne nazwiska lub imiona, ich mnemoniki, inicjały itp.), czyli takich, które po wydaniu odpowiedniego polecenia (na przykład who) pozwalają łatwo zorientować się w tym, kto w danej chwili korzysta z systemu (ma otwarte na terminalu sesje procy). Jak się okaże w kolejnych rozdziałach, wszystko w Unixie zostało zorientowane na szeroki i konsekwentnie stosowany mechanizm identyfikacji użytkownika (wewnętrznie stosowane są numery użytkowników). Podczas otwierania sesji pracy system nie ma oczywiście możliwości sprawdzenia, kim naprawdę jest użytkownik. Ktoś, komu użytkownik przekaże swoją nazwę i hasło, może rozpocząć pracę w jego imieniu.
Unix pozwala każdemu użytkownikowi na otwieranie sesji z dowolnego terminala, jak również na otwarcie kilku sesji na różnych terminalach.
Wykaz pracujących użytkowników może uzyskać każdy, wprowadzając polecenie who
Lista użytkowników wyprowadzana przez polecenie who ma zwykle następującą postać:
jurek tty0l May 20 14:10
leszek tty02 May 20 9:50
rnonika tty03 May 20 12:00
i w kolejnych kolumnach zawiera: systemową nazwę użytkownika, systemową nazwę terminala, miesiąc, dzień i godzinę otwarcia sesji pracy.
Informacje o tym, kto rozpoczął prace na danym terminalu, można uzyskać wprowadzając na nim jedno z poleceń:
who am i logname
Pierwsze z nich wyprowadza jeden wiersz o postaci takiej jak w poleceniu who, natomiast drugie podaje jedynie nazwę użytkownika. W wielu odmianach Unixa jest również dostępne polecenie whodo, pozwalające zorientować się, kto, gdzie i co w danej chwili robi oraz wyświetlające listę nazw użytkowników, terminali i uruchomionych przez nich procesów.
1.5.4. Rodzaje użytkowników i ich konta
W systemie Unix wyróżnia się dwa rodzaje użytkowników:
• użytkowników zwykłych (ang. users);
• użytkownika uprzywilejowanego (ang. superuser).
Każdy z użytkowników systemu musi być w systemie zarejestrowany, czyli mieć w nim otwarte swoje konto, uprawniające go do korzystania z systemu i określające zakres tego korzystania. Przez konto rozumieć należy pewien zestaw informacji opisujących użytkownika, głównie jego nazwę i hasło dostępu do systemu. Konto użytkownika uprzywilejowanego jest predefiniowane (zakładane w czasie instalacji systemu), natomiast konta pozostałych użytkowników są zakładane po zainstalowaniu systemu.
W systemie Unix specjalne uprawnienia przysługują użytkownikowi uprzywilejowanemu o nazwie root. Nazwa ta jest zastrzeżona dla osoby pełniącej rolę administratora systemu, opiekującej się systemem i czuwającej nad jego poprawną pracą i eksploatacją przez pozostałych użytkowników. Nazwa ta pozwala mu prawie na wszystko. Ma on dostęp do plików innych użytkowników, może zmieniać ich treść i kasować je, zmieniać uprawnienia użytkowników, wprowadzać do rejestru nowych i usuwać już zarejestrowanych. Co więcej, istnieją polecenia, których może używać tylko root. Z tego rodzaju przywilejów należy jednak korzystać bardzo ostrożnie, zwłaszcza że w przypadku Unixa łatwo spowodować niezamierzoną szkodę, na przykład jednym krótkim poleceniem wydanym z uprawnieniami roota można doprowadzić do skasowania wszystkich plików, a niestety Unix standardowo nie posiada środków do odzyskiwania skasowanych plików.
1.6. Pamięć i pliki w systemie Unix
Programy komputerowe oraz dane są przechowywane w plikach w dyskowej pamięci zewnętrznej. Aby program mógł być wykonany, musi być załadowany (wczytany) do wewnętrznej pamięci operacyjnej i uruchomiony.
Pojęcia pamięć wewnętrzna/zewnętrzna mają obecnie znaczenie w dużym stopniu historyczne i wywodzą się z odległych już czasów, kiedy to pamięć dyskowa ze względu na rozmiary urządzenia była najczęściej umieszczana w odrębnych obudowach zewnętrznych (w „szafkach" gabarytowo zbliżonych do dzisiejszych pralek automatycznych), pomimo że posiadały pojemność jedynie w granicach od 4 do 20 MB (megabajtów). Dzisiejsze dyski, pomimo osiągania olbrzymich pojemności (do kilku gigabajtów), są na tyle małe, że większość z obecnych komputerów mieści w swojej obudowie co najmniej jeden taki dysk. Z powyższego względu zamiast używać terminów — pamięć wewnętrzna/zewnętrzna semantycznie bliższe prawdy byłoby używanie terminów:
• dla pamięci wewnętrznej: pamięć operacyjna (RAM — ang. Random Access Memory);
• dla pamięci zewnętrznej: pamięć masowa.
Wśród pamięci masowych można wyróżnić:
• dyski magnetyczne (zwane niekiedy dyskami twardymi) i dyski termo-magneto-optyczne oraz dyskietki umożliwiające przechowywanie systemów plików o dostępie bezpośrednim;
• dyski optyczne (CD-ROM — ang. Compact Disk — Read Onty Memory), umożliwiające komputerowi jedynie odczyt zapisanych informacji, co powoduje, że mogą być używane jedynie do dystrybucji oprogramowania lub danych, zapisanych fabrycznie;
• dyski optyczne typu WORM (ang. Write Once — Read Many), umożliwiające użytkownikowi jednokrotny (niekasowalny) zapis danych i ich wielokrotny odczyt;
• dyski magneto-optyczne (MO — ang. Magneto Optical), umożliwiające wielokrotny zapis i odczyt;
• taśmy magnetyczne (typu cardridge i DAT), obsługiwane najczęściej przez urządzenia zwane streamerami — są używane jedynie do zapisu zapasowych kopii systemu plików i dystrybucji danych oraz oprogramowania.
Dyskietki, ze względu na zbyt małą pojemność jak na standardowe potrzeby Unixa, służą zwykle do podobnych celów co taśmy magnetyczne.
Pamięci masowe komputera (zwykle dyski magnetyczne) umożliwiają trwałe przechowywanie różnorodnych danych, takich jak dokumenty, programy, bazy danych itp. Każdy system operacyjny narzuca pewne metody ich zapamiętywania, uporządkowania i dostępu do nich. Odpowiednio zapamiętane i pogrupowane w pamięci dane tworzą tzw.' system plików. W systemie Unix ma on organizację hierarchiczną (drzewiastą), podobnie jak w systemie MS-DOS. Podstawowym, pojęciem systemu plików jest plik. Jest on uporządkowaną sekwencją danych, której przyporządkowano pewną nazwę. System plików to inaczej pewien zestaw plików i opisujących je struktur danych, pamiętanych na nośniku pamięci zewnętrznej lub jej wydzielonej części (partycji).
Nazwa pliku może się składać maksymalnie z 14 lub 256 znaków, zależnie od wersji i skonfigurowania systemu. Może zawierać dowolne znaki, jednakże zaleca się stosowanie tylko „znaków przenaszalnych", to znaczy dostępnych we wszystkich odmianach systemu i na wszystkich rodzajach urządzeń:
• litery: A - Z, a - z;
• cyfry: 0-9;
• znaki: . _ -
W systemie Unix pojęcie pliku jest znacznie szersze niż w innych systemach operacyjnych:
plikiem jest również dowolne źródło powstawania danych lub miejsce, gdzie mogą być one zapisane lub zobrazowane. Może być zarówno sekwencją danych przechowywanych w pamięci dyskowej jak i sekwencją znaków związaną z klawiaturą, ekranem terminala bądź dowolnym innym urządzeniem, które takie sekwencje danych może generować lub odbierać.
Takie uogólnione pojęcie pliku czyni Unix systemem bardzo elastycznym i — z punktu widzenia użytkownika — nadzwyczaj prostym w podejściu do obsługi danych i urządzeń.
Ze względu na różnorodne przeznaczenie wielu danych i potrzebę wprowadzenia pewnego porz;idku pojęciowego i organizacyjnego, w Unixie wyróżnia się trzy rodzaje plików:
• pliki zwykłe (tekstowe i binarne), przechowujące dane i programy;
• katalogi, grupujące informacje o pewnych zestawach plików;
• pliki specjalne, które umożliwiają widzenie urządzeń jako plików.
Wszystkie te rodzaje plików będą dokładniej omawiane w kolejnych rozdziałach. Poniżej przedstawiono jedynie ich krótkie opisy.
Pliki tekstowe zawierają informacje przechowywane w postaci sekwencji znaków, w taki sposób, że są one łatwo czytelne dla użytkownika: drukowane lub wyświetlane na ekranach terminali są ukazywane w postaci odrębnych wierszy tekstu. Przechowuje się w nich redagowane dokumenty, pewne rodzaje danych, tekstowe (źródłowe) postacie programów itp. Tworzące je znaki są zapamiętywane w postaci kodów ASCII, przy czym każdemu znakowi odpowiada inny kod, zapisany wewnętrznie w postaci bajtu, gdzie bajt to 8 bitów a bit to elementarna (zero-jedynkowa) jednostką informacji.
Pliki binarne wewnętrznie również są zapamiętywane w postaci bajtów, jednakże wizualnie są trudno czytelne dla człowieka. Służą do przechowywania instrukcji programowych, zapisanych w języku wewnętrznym komputera, lub do przechowywania danych w formacie wymaganym przez niektóre programy.
Katalogi z punktu widzenia Unixa to również pliki zawierające wykazy nazw innych plików. Zwykły użytkownik systemu widzi katalogi jako miejsce, w którym jest przechowywany zestaw plików.
Pliki specjalne identyfikują urządzenia zewnętrzne, a w przypadku pamięci zewnętrznych — również ich fragmenty (na przykład partycje dysków) oraz tryby obsługi (znakowy
i blokowy).
1.7. Procesy i programy
Po uruchomieniu programu staje się on procesem, na który obok jego kodu składa się dodatkowo przydzielone mu pewne systemowe środowisko pracy (pamięć, zmienne środowiskowe, identyfikatory wykorzystywanych plików itp). Każdemu uruchomionemu procesowi system nadaje unikatowy numer, nazywany identyfikatorem procesu (PID) i wiąże z nim numeryczny identyfikator użytkownika (UID), który go uruchomił. Identyfikator użytkownika wskazuje właściciela procesu.
Proces może się zakończyć samoistnie lub po otrzymaniu odpowiedniej informacji od innego procesu lub od użytkownika, na przykład po wyborze odpowiedniej pozycji menu lub po naciśnięciu odpowiedniego klawisza. Niekiedy może być potrzebne wydanie z klawiatury sygnału oznaczającego natychmiastowe przerwanie pracy procesu.
Uwaga:
Proces, nad którym użytkownik całkowicie utracił kontrolę, może być przerwany
poleceniem kill, wydanym z innego terminala (o ile terminal związany z procesem został zablokowany). Zawieszenie programu nie powoduje bowiem zawieszenia pracy całego systemu operacyjnego (cechy tej nie posiada DOS).
Wykaz procesów uruchomionych z danego terminala można wyświetlić poleceniem
ps
natomiast wykaz-wszystkich aktywnych w systemie procesów, poleceniem
ps -ef (w niektórych odmianach systemu poleceniem ps -ax)
Działanie wskazanego procesu może być przerwane odpowiednią sekwencją klawiszy lub poleceniem kill. Przedstawione tutaj informacje są dokładnie omówione w kolejnych rozdziałach.