Spis treści Skorowidz Poziom główny Poziom nadrzędny Wstecz Dalej Zadania ©

Środowisko operacyjne

Sprzęt

Komputer jest automatem działającym według dokładnie określonych reguł. Zazwyczaj jest on w stanie „rozumieć” i wykonywać instrukcje tylko z określonego repertuaru. Wykonuje je jednak niezwykle szybko i niezawodnie. O jego przydatności i wszechstronności decyduje zdolność wykonywania bardzo długich ciągów instrukcji, mogących zawierać nieskończenie wiele kombinacji instrukcji podstawowych. […]

Przed nastaniem ery komputera nie było niewolników chętnych bądź zdolnych do niezawodnego wykonywania z bezmyślnym posłuszeństwem tylu instrukcji.

Niklaus Wirth, Wstęp do programowania systematycznego (1984)

W wielkim skrócie

Przetwarzaniem danych ludzkość zajmuje się od tysiącleci. Na przestrzeni wieków jednostki wybitne, powodowane dociekliwością, inteligencją i wzmacniającą motywację szczyptą lenistwa, opracowywały schematy przetwarzania przeznaczone do realizacji przez ludzi (np. rachmistrzów, inżynierów) i zespoły ludzkie (np. armie). Na pewnym etapie zdano sobie sprawę, że sensowne jest opracowywanie i przechowywanie schematów postępowania nawet w oderwaniu od przedmiotu ich działania, zaś wykonawcy takich schematów nie muszą ogarniać umysłem całości zagadnienia; wystarczy, że potrafią krok po kroku wykonać kolejne polecenia. Tak narodziła się koncepcja algorytmu (samo słowo algorytm jest znacznie młodsze; pochodzi od nazwiska Mohammeda ibn Musa al Chwarizmi, perskiego uczonego żyjącego na przełomie VIII i IX wieku).

Wspomaganie rachunków arytmetycznych za pomocą różnego liczydeł jest niemal równie stare, jak umiejętność rachowania. W czasach nowożytnych podejmowano próby budowy analogowych i cyfrowych urządzeń mechanicznych wykonujących rachunki. Konstruowaniem takich urządzeń zajmowali się m.in. twórcy analizy matematycznej, tacy jak Anglik John Neper (1550–1617), Francuz Blaise Pascal (1626–1662) czy Niemiec Gottfried Wilhelm von Leibniz (1646–1716).

Jednak urządzenia te (podobnie jak dzisiejsze proste ręczne kalkulatorki) były obsługiwane bezpośrednio przez ludzi. Sterowanie nimi za pomocą z góry przygotowanych ciągów instrukcji pozostawało w sferze marzeń. Do roku 1833: wtedy bowiem narodził się projekt „maszyny analitycznej” ogólnego przeznaczenia — opartej na układach mechanicznych, lecz korzystającej z cyfrowego zapisu informacji i sterowanej w pełni automatycznie. Była ona dziełem Brytyjczyka Charlesa Babbage’a (1792–1871). Maszyna ta, zaprojektowana pod względem logicznym całkowicie poprawnie, nie została uruchomiona ze względu na trudności jej mechanicznej realizacji — ku wielkiemu rozgoryczeniu twórcy, zresztą zasłużonego matematyka, pioniera automatyzacji obliczeń numerycznych i konstruktora innych — prostszych, za to całkowicie udanych urządzeń liczących.

Koncepcja współczesnego komputera narodziła się w latach 40. XX wieku w Wielkiej Brytanii i w USA. Autorem pomysłu hipotetycznego automatu do przetwarzania danych zgodnie z określonym schematem (programem) był matematyk brytyjski Alan Mathison Turing (1912–1954). Opracowana przez niego w 1936 roku abstrakcyjna maszyna składała się z obustronnie nieograniczonej taśmy mieszczącej ciąg komórek, z których każda może przechować pojedynczy znak ustalonego alfabetu, głowicy czytająco-piszącej operującej na komórkach taśmy oraz jednej komórki „stanu” mieszczącej jeden symbol należący do ustalonego skończonego zbioru. Maszyna potrafi wykonywać instrukcje pierwotne polegające na nadaniu wartości bieżącej komórce taśmy i komórce stanu oraz wyznaczeniu kierunku następnego ruchu głowicy wyłącznie na podstawie bieżącej wartości komórki taśmy i komórki stanu. Maszyną steruje program będący skończonym ciągiem instrukcji pierwotnych: wykonywana jest instrukcja odpowiadająca bieżącej kombinacji stan/głowica. Maszyna kończy pracę w chwili, kiedy bieżącej kombinacji nie odpowiada żadna instrukcja programu.

Dowiedziono, że przetwarzanie realizowane za pomocą maszyny Turinga da się przeprowadzić za pomocą komputera i na odwrót: wszystko, co da się zrobić za pomocą komputera, da się zrobić za pomocą pewnej maszyny Turinga. Wynik ten stworzył podwaliny koncepcji komputera.

Autorem pomysłu maszyny cyfrowej w naszym rozumieniu był amerykański matematyk John von Neumann (1903–1957). Zgodnie z jego koncepcją, komputer jest wyposażony w centralną jednostkę przeznaczoną do wykonywania rachunków (arytmometr, procesor) oraz w układ pamięci. Pamięć służy zarówno do przechowywania danych podlegających przetwarzaniu, jak i rozkazów opisujących samo przetwarzanie. Dodatkowe układy mają zapewnić możliwość komunikacji operatora z maszyną oraz trwałe przechowywanie informacji.

[ schemat maszyny von Neumanna ]
Schemat współczesnego komputera wg koncepcji von Neumanna

Pierwsze urządzenie będące komputerem w sensie von Neumanna ujrzało światło dzienne w roku 1946. Od tego czasu przeszliśmy rewolucję informatyczną: sprzęt obliczeniowy jest mniejszy, szybszy, tańszy, łatwiej dostępny i bez porównania bardziej zaawansowany technologicznie. Coraz częściej służy też do zadań, które pozornie nie mają nic wspólnego z obliczeniami. Są to jednak głównie różnice ilościowe: w sferze koncepcji każdy współczesny komputer jest rozwinięciem idei Turinga oraz von Neumanna, zaś niezależnie od sposobu wykorzystywania wyników głównym zajęciem procesorów komputerowych jest wykonywanie obliczeń arytmetycznych.

Opowiedzianej w błyskawicznym skrócie historii informatyki towarzyszy galeria ilustracji.

Pamięć

Termin pamięć oznacza ogół urządzeń przeznaczonych do przechowywania informacji. Pamięć roboczą stosowaną w sprzęcie komputerowym można wykorzystywać wielokrotnie, zapisując nowe informacje w miejscu poprzednio zajmowanym przez inne informacje (które zostaną na trwałe usunięte).

W zapisie cyfrowym każda informacja musi być przedstawiona za pomocą ciągu cyfr. Najdogodniejszy w praktyce okazuje się dwójkowy (czyli binarny) układ liczbowy, w którym jedynymi cyframi są: zero i jeden. Do określania ilości informacji używa się jednostek zwanych bitami (BInary digiT, cyfra dwójkowa) pogrupowanych w bajty (bytes). Jednostki te służą zarówno do wyrażania ilości informacji zawartej w danym komunikacie, jak i pojemności urządzeń przechowujących informację. Dana informacja ma objętość n bitów, jeżeli jej zapis cyfrowy obejmuje n cyfr dwójkowych. Urządzenie ma pojemność n bitów, jeżeli da się w nim zapisać każdą informację o objętości nie przekraczającej n bitów.

Bit jest najmniejszą ilością informacji możliwą do wyrażenia w samodzielnej postaci. Jednak w większości urządzeń zapisanie lub odczytanie pojedynczego bitu nie jest możliwe. Odczytuje się i zapisuje pełne bajty informacji. Można sobie wyobrazić, że urządzenia pamięci mają gotowe „miejsca” na przechowywanie informacji w bajtowych porcjach. W większości współczesnych maszyn bajt jest jednostką grupującą 8 bitów. W takim miejscu można umieścić i przechowywać pojedynczą daną całkowitą z zakresu od 0 do 255 (jeden z 28 = 256 różnych możliwych stanów tego obszaru pamięci), która często bywa rozumiana jako numer pojedynczego znaku np. maszynopisu — wskazujący na określony znak z zestawu 256 możliwych znaków.

Pamięć operacyjna (Random Access Memory, RAM) pozwala na bardzo szybki zapis i odczyt informacji. Każda komórka pamięci operacyjnej posiada adres, którym można się posłużyć podczas odczytywania lub zapisywania jej stanu. Zawartość pamięci operacyjnej ulega zniszczeniu praktycznie natychmiast po wyłączeniu zasilania. W pamięci operacyjnej umieszczane są uruchamiane programy oraz dane, z których programy te korzystają.

Pamięć trwała jest zdolna przechowywać informację przez dłuższy czas bez potrzeby dostarczania energii. Dane w trwałej pamięci zewnętrznej (np. dyskowej) są zorganizowane w postaci systemu plików.

Procesor

Procesor (Central Processor Unit, CPU) to centralny element maszyny cyfrowej, realizujący przetwarzanie danych. Dane pobierane z pamięci operacyjnej są umieszczane w rejestrach procesora. Po wykonaniu na nich elementarnej operacji wyniki — dalej znajdujące się w rejestrach — mogą być przesłane do pamięci operacyjnej. Słowo to ciąg danych (bitów) o długości równej pojemności rejestru procesora. Typowe rozmiary rejestru to 8, 16, 24, 32, 64 lub 128 bitów.

Kolejne polecenia (rozkazy) pobierane są również z pamięci. Rozkazy dla procesora muszą być zapisane w postaci języka wewnętrznego, który jest inny dla każdego typu procesora. Język wewnętrzny składa się z ograniczonej liczby elementarnych poleceń przetwarzania, wśród których z reguły znajdują się rozkazy: prześlij z pamięci do rejestru, powiększ zawartość rejestru o 1, pomnóż przez siebie zawartość dwóch rejestrów, oblicz logarytm liczby umieszczonej w rejestrze, prześlij z rejestru do pamięci, następny rozkaz pobierz spod adresu … itp., ale polecenia takie jak odczytaj pozycję kursora myszy, wyznacz maksymalne bezpieczne obciążenie konstrukcji czy też wydrukuj pierwsze dwie strony bieżącego dokumentu wymagają przetłumaczenia na bardzo długie ciągi poleceń prostszych. Wiele poleceń, na przykład nalej sobie więcej herbaty albo usuń wszystkie pliki, których już nie potrzebuję w ogóle nie nadaje się do wyrażenia ani w języku wewnętrznym, ani w innych systemach formalnych, gdyż są za mało precyzyjne.

Urządzenia peryferyjne

Urządzenia peryferyjne nie biorą udziału bezpośrednio w przetwarzaniu informacji, lecz są niezbędne do jej pozyskiwania, przesyłania, magazynowania i prezentacji. Do grupy tej należą: konsola operatora, monitor, drukarki, skanery, czytniki kodów, ekrany dotykowe, a w szerszym sensie także połączenia sieciowe i zewnętrzne systemy przechowywania informacji.

System operacyjny

Zespół programów koordynujących pracę sprzętu nosi nazwę systemu operacyjnego.

Najważniejszą funkcją systemów operacyjnych jest nadzorowanie wykonywania procesów przez jednostkę centralną i zarządzanie pamięcią operacyjną. Wymaga to m.in. przydzielania procesom pamięci operacyjnej i czasu procesora, zapobiegania wzajemnemu blokowaniu procesów oraz przyjmowania poleceń od operatora.

W dawnych systemach komputerowych oprogramowanie użytkowe odwoływało się bezpośrednio do urządzeń peryferyjnych. We współczesnych rozwiązaniach dostępem do nich zarządza system operacyjny, zaś programy użytkowe korzystają z obsługiwanych przez system sterowników urządzeń.

Kolejną ważną funkcją systemu operacyjnego jest pośredniczenie między użytkownikiem a sprzętem i korzystającymi z niego programami (np. użytkowymi). Do realizacji tej funkcji służą interface’y użytkownika, czyli programy i sterowniki umożliwiające wydawanie poleceń, przekazywanie danych procesom i odbieranie od nich wyników ich działania.

Systemy operacyjne UNIX pochodzą od pierwowzoru skonstruowanego w latach 70. w firmie AT&T. Współczesne wersje UNIX-a mogą nadzorować pracę maszyn wielu różnych typów, od telefonów komórkowych, przez komputery osobiste PC, do superkomputerów.

Wzorowany na UNIX-ie otwarty system GNU/Linux zyskuje obecnie coraz większą popularność. Pochodnymi UNIX-a są także: system BSD (Berkeley System Distribution), system AIX firmy IBM, system HPUX firmy Hewlett-Packard oraz systemy SunOS i Solaris firmy Sun.

System DOS powstał na początku lat 80. jako system operacyjny pierwszych komputerów osobistych IBM. Rozwinięte na jego bazie graficzne systemy Windows firmy Microsoft zdominowały rynek systemów operacyjnych dla komputerów PC.

Spośród systemów operacyjnych przeznaczonych do nadzorowania komputerów klasy PC wymienić należy także: OS/2 opracowany przez IBM oraz BeOS i uniksowy QNX.

W komputerach MacIntosh firmy Apple instalowane są systemy MacOS lub uniksowy MacOS X.

Z innymi systemami operacyjnymi możemy mieć do czynienia w komputerach innych klas. Na przykład na serwerach sieciowych Novell pracuje system NetWare. Na komputerach VAX i ich następcach serii DEC Alpha pracował system VMS opracowany przez firmę DEC.

W systemy operacyjne są wyposażone także mniejsze urządzenia, takie jak komputery kieszonkowe (palmtopy), samochodowe komputery pokładowe, a nawet telefony przenośne. Na przykład palmtopy firmy Psion i niektóre telefony komórkowe pracują pod nadzorem systemu Symbian. Podobny obszar zastosowań mają systemy PalmOS, Windows CE, Google Android i kilka innych.

Zdolność systemu operacyjnego do obsługi sprzętu różniącego się wydajnością i możliwościami technicznymi nosi nazwę skalowalności.

Wiele rodzajów współczesnego sprzętu komputerowego może być obsługiwanych za pomocą różnych systemów operacyjnych. Nie jest np. niczym dziwnym stacja robocza PC z zainstalowanymi systemami Linux, Windows i Solaris, albo stacja MacIntosh z zainstalowanymi systemami Mac OS, Mac OS X i Linux. Decyzja o uruchomieniu jednego z zainstalowanych systemów jest wtedy podejmowana na etapie rozruchu sprzętu.

Istnieje też możliwość jednoczesnego uruchomienia kilku systemów operacyjnych na jednej stacji. Technologia służąca temu celowi nosi nazwę wirtualizacji i realizowana jest za pomocą specjalistycznego oprogramowania. Pracuje ono pod nadzorem jednego z zainstalowanych systemów i nadzoruje pracę innego systemu lub systemów, jednocześnie udostępniając im zasoby sprzętowe. W efekcie użytkownik korzystający z platformy wirtualizacyjnej może w tym samym czasie uruchamiać oprogramowanie przeznaczone dla kilku różnych systemów operacyjnych.

System plików

Wszystkie współczesne systemy operacyjne umożliwiają zarządzanie informacją przechowywaną na nośnikach trwałych. Podobnie jak pamięć operacyjna, tak samo pamięć trwała zawiera wyłącznie zerojedynkowe zapisy cyfrowe. Użytkownik nigdy nie komunikuje się bezpośrednio z pamięcią dyskową czy też typu flash. Korzysta z systemu plików, który jest zarządzanym przez system operacyjny sposobem organizowania zapisu danych w pamięci masowej.

Można powiedzieć, że system plików jest sposobem patrzenia na zapis cyfrowy na nośniku (magnetycznym, optycznym lub innym), umożliwiającym efektywne i integralne zarządzanie przechowywaną tam informacją.

Przed rozpoczęciem użytkowania nośnika należy stworzyć na nim odpowiedni system plików. Czynność ta nosi nazwę formatowania. Do jej przeprowadzenia służy odpowiednie oprogramowanie narzędziowe. Zazwyczaj — za wyjątkiem nośników przenośnych — jest ono przeznaczone do użycia przez administratora sprzętu. Obecnie większość nośników jest sprzedawana już w postaci sformatowanej.

Istnieje wiele standardów systemu plików. Systemy uniksowe korzystają z różnych systemów plików, m.in. ext, XFS i ReiserFS. Systemy DOS i wczesne wersje systemu Windows korzystały z różnych wersji systemu plików FAT. Podstawowy standard systemu plików wykorzystywany we współczesnych systemach Windows nosi nazwę NTFS.

Na dyskach optycznych stosuje się kilka innych standardów systemu plików, z których najważniejszy jest ISO-9660 i jego rozszerzenia: Joliet oraz RockRidge. Użytkownicy mają do czynienia z tymi nazwami przy okazji nagrywania płyt CD.

Pliki i kartoteki. Drzewo kartotek

Pliki (files) są podstawową formą magazynowania informacji na nośniku trwałym. Plik stanowi zamkniętą porcję informacji, identyfikowaną poprzez unikalną nazwę. Unikalność oznacza, że dwa pliki przechowywane w jednym „miejscu” nie mogą nosić tej samej nazwy.

Kartoteki (directories) służą do grupowania plików. Każdy system plików ma kartotekę główną (root directory). Każda kartoteka może zawierać pliki i inne kartoteki (podkartoteki), dla których pozostaje ona kartoteką nadrzędną.

Z technicznego punktu widzenia kartoteki są specjalnego typu plikami. Wpisy do pliku kartoteki wiążą nazwy porcji danych (zwykłych plików i podkartotek) ze wskazaniem obszarów nośnika informacji, które mieszczą odpowiedni zapis.

Oprócz nazwy i zawartości, w systemie plików przechowywane są dodatkowe informacje o plikach. Noszą one nazwę systemowych atrybutów plików. Rozmiar pliku świadczy o liczbie bajtów zajmowanych przez jego zawartość. Do atrybutów należą także: data utworzenia pliku, data ostatniej modyfikacji i data ostatniego dostępu. O możliwościach korzystania z plików przez użytkownika decydują jego atrybuty efektywne. Są one różne w poszczególnych systemach plików i zostaną omówione w dalszej części bieżącego rozdziału.

Użytkownik może — w miarę przydzielonych mu praw — tworzyć nowe kartoteki (operacja mkdir), zmieniać ich nazwy (operacja renameDOS, Windows; mvUNIX), przenosić kartoteki wraz z zawartością w inne miejsce (operacja moveDOS, Windows; mvUNIX), wreszcie kasować istniejące kartoteki (operacja rmdir, windowsowe polecenie del i uniksowe rm wywołane z odpowiednimi opcjami).

Kartoteki istniejące w danym systemie plików (np. na dysku) tworzą drzewo kartotek (directory tree). Pełny opis położenia pliku w drzewie kartotek, począwszy od kartoteki głównej poprzez wszystkie kolejne podkartoteki, nosi nazwę ścieżki dostępu (file path) tego pliku.

W systemach operacyjnych DOS i Windows każdy wolumin (dysk logiczny) posiada odrębne drzewo kartotek. Każdy wolumin posiada nazwę, składającą się się z jednej litery i dwukropka. Nazwa woluminu wymiennego jest związana z nazwą stacji pamięci; np. kieszeni dyskietki lub czytnika płyt optycznych. Woluminom przyłączanym do portów zewnętrznych, np. USB, nazwa jest zazwyczaj przydzielana automatycznie przez system. Jednostki pamięci masowej udostępniane przez sieć mogą być traktowane jako woluminy; decyduje o tym administrator lub użytkownik, przydzielając nazwę woluminu adresowi udostępnianego obiektu. Czynność ta zwana jest mapowaniem dysku.

W systemach DOS i Windows nazwa woluminu stanowi początkowy element pełnej ścieżki dostępu. Nazwa kartoteki głównej składa się z jednego znaku odwrotnego ukośnika „\”. Ten sam znak służy jako łącznik nazw kartotek w ścieżce dostępu.

W systemach UNIX istnieje tylko jedno drzewo kartotek. Nazwa kartoteki głównej składa się z jednego znaku ukośnika „/”. Ten sam znak służy jako łącznik nazw kartotek w ścieżce. Drzewo obejmuje systemy plików ze wszystkich dostępnych woluminów, z których każdy ma osobny system plików. Jednak z punktu widzenia użytkownika zazwyczaj wolumin jest postrzegany jako zwykła kartoteka. Czasem trzeba podłączyć do systemu plików dyskietkę, dysk CD lub pamięć Flash; czynność ta nosi nazwę montowania i wykonuje się ją za pomocą programu systemowego mount lub innego programu, który go wywołuje. Zawartość woluminu będzie wtedy udostępniona jako zawartość pewnej kartoteki w systemie plików. Podobnie przebiega montowanie kartotek udostępnianych przez sieć.

System plików nie musi być bezpośrednio związany z urządzeniem fizycznym. Na przykład binarną kopię zapisu cyfrowego na danym urządzeniu można przechowywać w pojedynczym pliku, tzw. pliku obrazu. Jest to wygodne zwłaszcza przy rozpowszechnianiu danych drogą elektroniczną. Wiele współczesnych systemów operacyjnych pozwala na podmontowanie systemu plików zapisanego w takim pliku obrazu.

Omówione wyżej właściwości systemu plików przedstawiono również w formie graficznej.

System operacyjny przydziela każdemu uruchamianemu procesowi jedną z kartotek jako tzw. kartotekę bieżącą (lub aktywną, current working directory). Przy operacjach plikowych wykonywanych przez ten proces (np. otwarcie lub zapis pliku z danymi), położenie pliku może być określane albo względem kartoteki głównej systemu plików (tzw. pełna ścieżka dostępu), albo względem kartoteki bieżącej (tzw. ścieżka względna).

W pełnej (bezwzględnej, absolutnej) nazwie pliku ścieżka wskazuje położenie pliku w systemie plików względem kartoteki głównej, np.: c:\inz_srod\rok_1\adam_kowalski\dane\krzywa1.txt (DOS, Windows) lub /mnt/diskc/inz_srod/rok_1/adam_kowalski/dane/krzywa1.txt (UNIX).

W nazwie względnej (lokalnej) ścieżka opisuje położenie pliku względem kartoteki bieżącej, np.: ..\krzywa1.txt (DOS, Windows) lub ../krzywa1.txt (UNIX). Nazwa „.” (kropka) oznacza kartotekę bieżącą. Nazwa „..” (dwie kropki) oznacza kartotekę nadrzędną kartoteki bieżącej.

Ścieżki: absolutna i względna, podane jako przykłady w poprzednich akapitach, odnoszą się do tego samego pliku wtedy i tylko wtedy, gdy kartoteką bieżącą jest pewna bezpośrednia podkartoteka kartoteki \inz_srod\rok_1\adam_kowalski\dane znajdującej się na woluminie noszącym nazwę c: w systemie Windows lub innym o podobnej strukturze woluminów. W systemie UNIX, którego system plików posiada pojedynczą kartotekę główną, ten sam wolumin może być dostępny np. jako kartoteka /mnt/diskc.

W środowisku tekstowego procesora poleceń do zmiany kartoteki bieżącej służy polecenie systemowe cd. Nazwę aktualnej kartoteki bieżącej podaje polecenie cd systemów DOS/Windows wywołane bez argumentów oraz polecenie pwd systemów UNIX.

Nazwy plików i kartotek

Ostatni kilkuznakowy składnik nazwy pliku, umieszczony po kropce, nosi miano rozszerzenia nazwy; w intencji ma on wskazywać na sposób zapisu informacji w pliku, czyli tzw. format. Oczywiście rozszerzenie jest częścią nazwy pliku; nic nie stoi na przeszkodzie, by dwa pliki przechowywane w tej samej kartotece miały nazwy różniące się jedynie rozszerzeniem.

Dobrym zwyczajem jest wiązanie nazwy pliku z treścią jego zawartości, a rozszerzenia nazwy — ze sposobem (formatem) jego zapisu.

Nazwy plików i kartotek podlegają ograniczeniom specyficznym dla poszczególnych systemów plików. Użytkownicy, którzy zamierzają przemieszczać swoje pliki między systemami o różnych wymaganiach, powinni brać te wymagania pod uwagę. (Pamiętajmy, że udostępnienie pliku w Internecie lub przesłanie jego kopii pocztą elektroniczną jest „przemieszczeniem do innego systemu”).

Systemy DOS i Windows utożsamiają wielkie i małe litery w nazwach plików, podczas gdy systemy UNIX rozróżniają je. Nazwy kartotek: AdamKowalski i adamkowalski oznaczają więc tę samą kartotekę w systemie Windows, lecz dwie różne kartoteki w systemie UNIX. Nazwa Adam Kowalski oznacza w obu systemach kartotekę inną, niż AdamKowalski, ale zawiera spację — odradzamy stosowania spacji w nazwach, nawet jeżeli jest to legalne; lepiej nadać kartotece nazwę Adam_Kowalski.

Jak okaże się wkrótce, nie istnieje wspólny dla całego świata sposób kodowania liter alfabetów narodowych. Mimo, że wiele środowisk użytkownika pozwala np. na uzyskanie znaku „ą” bezpośrednio z klawiatury jako Alt+a, to znak mający postać „ą” na jednej maszynie, może być rozumiany inaczej po przesłaniu na inną. Spośród dwóch nazw kartotek: Adam_Mączny i Adam_Maczny tylko ta druga nie stwarza sytuacji niejednoznacznej (owszem: możliwa jest niejednoznaczność spowodowana utożsamieniem różnych nazwisk, ale to zupełnie inna sprawa).

Rozsądnym obyczajem, mającym na celu uniknięcie nieporozumień, jest nadawanie plikom i kartotekom nazw składających się jedynie z liter alfabetu łacińskiego i cyfr oraz znaku podkreślenia (z wyłączeniem spacji i liter innych alfabetów).

W systemach UNIX pliki i kartoteki, których nazwa rozpoczyna się od kropki, są traktowane w szczególny sposób: nie podaje się ich w domyślnych listingach i widokach kartotek. Nazwami takimi opatrywane są na ogół pliki konfiguracyjne, decydujące o sposobie działania oprogramowania lub przechowujące ustawienia użytkownika.

Operacje zarządzania plikami

Zarządzanie plikami z poziomu systemu operacyjnego obejmuje szereg typowych działań. System operacyjny wykonuje je bez naruszania (i — co ważne — bez analizy) wewnętrznej zawartości plików.

kopiowanie
tworzy nowy plik o zawartości identycznej, jak plik kopiowany. Jeżeli plik wynikowy o wskazanej nazwie już istnieje, to jego dotychczasowa zawartość jest tracona. Kopia informacji jest zapisywana w innym miejscu nośnika niż oryginał. Kopia pliku może być umieszczona w tej samej lub innej kartotece, co oryginał. Jeżeli kartoteka jest ta sama, to kopia musi nosić inną nazwę. Kopia zazwyczaj otrzymuje atrybuty oryginału (dotyczy to zwłaszcza atrybutu czasu modyfikacji), chyba że sposób przeprowadzenia kopiowania wymusi inne zachowanie. Właścicielem kopii zostaje użytkownik, który dokonał kopiowania. Operacje systemowe: copy (DOS/Windows), cp (UNIX), manipulacje obiektami graficznymi plików i kartotek (GUI).
PrzedPo
plik-1
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
plik-1
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
plik-2
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
dowiązywanie
tworzy plik udostępniający istniejącą wcześniej informację zapisaną na nośniku (może to być np. zawartość istniejącego pliku). Dowiązaniu, w przeciwieństwie do kopiowania, nie towarzyszy powtórne zapisywanie informacji na nośniku; tworzy ono raczej alternatywny sposób dostępu do jednej i tej samej kopii danych. Dowiązywanie nie jest realizowane w niektórych systemach plików; nie jest ono możliwe np. w systemach obsługiwanych przez systemy operacyjne DOS i przez starsze wersje systemów Windows. Operacje systemowe: brak (DOS), ln (UNIX), fsutil (Windows — tylko administrator), funkcje menu lokalnego związanego z obiektami plików (GUI w systemach UNIX).
PrzedPo
plik-1
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
plik-1,
plik-2
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
dowiązywanie symboliczne
tworzy plik pomocniczy, w którym zapisana jest nazwa wskazanego pliku, pełniąca rolę odsyłacza. Wykonanie operacji na pliku dowiązania symbolicznego w pewnych sytuacjach (zależnie od systemu operacyjnego) powoduje wykonanie odpowiedniej operacji na pliku wskazywanym przez dowiązanie. W systemach UNIX dowiązania symboliczne są obsługiwane przez system plików. Ich rola jest zbliżona do roli zwykłych dowiązań, lecz w przeciwieństwie do tych ostatnich mogą odnosić się do plików umieszczonych na innych woluminach. Operacje systemowe: brak (DOS), ln -s (UNIX), funkcje menu lokalnego związanego z obiektami graficznymi reprezentującymi pliki (GUI w systemach Windows i UNIX).
PrzedPo
plik-1
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
plik-2
plik-1
plik-1
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220

Usunięcie, przeniesienie lub zmiana nazwy pliku wskazywanego spowoduje zerwanie dowiązania: co prawda plik dowiązania (skrótu) nadal będzie istniał, ale nie będzie już wskazywał na żadną sensowną zawartość.

skróty i aktywatory

Użytkownik środowisk graficznych, np. w systemach Windows, może tworzyć tzw. pliki skrótów. Służą one do umieszczania w folderach kartotek i w niektórych menu systemowych obiektów graficznych reprezentujących pliki znajdujące się gdzie indziej. Użycie obiektu „skrótu” w wielu typowych sytuacjach jest z punktu widzenia użytkownika równoważne użyciu wskazywanego przezeń pliku.

Za obsługę skrótów nie odpowiada system plików, tylko GUI. Nie są one więc dowiązaniami symbolicznymi, choć w pewnym zakresie pełnią zbliżoną funkcję.

W systemach Windows skróty są plikami noszącymi rozszerzenie .lnk.

Inne środowiska graficzne korzystają z innych formatów „skrótów”, zwanych też czasem „aktywatorami”. Należy do nich np. format tekstowy .desktop opisany w specyfikacji FreeDesktop, stosowany w najpopularniejszych środowiskach graficznych współczesnych systemów uniksowych.

usuwanie
polega na usunięciu informacji z systemu plików. Skutkuje to pozwoleniem na powtórne wykorzystanie obszaru nośnika zajętego dotychczas przez plik. W niektórych systemach użytkowych usuwanie bywa przeprowadzane dwuetapowo: etap pierwszy wiąże się wtedy z przeniesieniem pliku do systemowej kartoteki plików „usuniętych” (ten etap operacji jest odwracalny i nie zwalnia przestrzeni nośnika); etap drugi polega na usunięciu plików z tej kartoteki i wiąże się ze zwolnieniem nośnika. Operacje systemowe: del, erase (DOS/Windows), rm (UNIX), manipulacje obiektami graficznymi reprezentującymi pliki, menu lokalne związane z obiektami plików (GUI).
PrzedPo
plik-1
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
(plik nie istnieje; zwolniony obszar nośnika)
odzyskiwanie
polega na odtworzeniu zawartości skasowanych plików. Możliwość odzyskania informacji i sposób przeprowadzenia tej czynności zależą od tego, czy skasowano fizyczny zapis na dysku. Jeżeli nie, to sytuacja jest prosta. Wystarczy przenieść plik z powrotem do macierzystej kartoteki i nadać mu nazwę, jaką miał przed usunięciem. Obiekt środowiska graficznego reprezentujący kartotekę do przechowywania plików usuniętych powinien być wyposażony w funkcję odzyskiwania plików. Obiekt taki nosi często nazwę Kosz lub Śmietnik (sama kartoteka może nazywać się inaczej). Pamiętajmy, że kasowanie odwracalne nie może gromadzić usuwanych plików w nieskończoność. Na ogół ustalany jest limit przestrzeni, jaka może być zajęta przez pliki skasowane. W razie przekroczenia tego limitu niektóre spośród plików skasowanych odwracalnie zostaną skasowane naprawdę; miejmy nadzieję, że te najstarsze…. W sytuacji, kiedy obszar nośnika zajmowany przez plik został zwolniony, odzyskanie informacji staje się poważnym zadaniem. Praktycznie żaden ze współczesnych systemów operacyjnych nie gwarantuje powodzenia takiej operacji ani nie udostępnia odpowiednich poleceń; lukę tę wypełniają specjalistyczne pakiety narzędziowe operujące bezpośrednio na pamięci nośnika, z pominięciem systemu plików.
przenoszenie
jest operacją podobną do kopiowania, lecz nie powiela informacji, tylko zmienia miejsce udostępnienia pliku. Jeżeli kartoteka docelowa jest położona w obrębie innego woluminu, to przesunięcie jest równoważne kopiowaniu połączonemu z usunięciem oryginału. Operacje systemowe: move (DOS/Windows), mv (UNIX), manipulacje obiektami graficznymi reprezentującymi pliki i kartoteki (GUI).
PrzedW trakciePo
plik-1
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
plik-1
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
plik-2
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
plik-2
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
Jeżeli operacja odbywa się w obrębie tego samego woluminu, to kopiowanie nie jest konieczne; wystarczy tylko zmienić miejsce (lub nazwę, albo też jedno i drugie) udostępniania pliku w systemie plików. Operacja przypomina wtedy dowiązanie, któremu towarzyszy jednocześnie rodzaj „odwiązania”.
PrzedW trakciePo
plik-1
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
plik-1,
plik-2
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
plik-2
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
zmiana nazwy
przypomina swoim skutkiem operację przenoszenia: Plik zachowuje swoje położenie w systemie kartotek, lecz otrzymuje inną nazwę. Operacja zmiany nazwy polega jedynie na modyfikacji wpisu do kartoteki, a nie na kopiowaniu danych. Przenoszenie i zmianę nazwy często realizują te same narzędzia systemowe. Operacje systemowe: rename (DOS/Windows), rename, mv (UNIX), menu lokalne związane z obiektami graficznymi reprezentującymi pliki (GUI).
łączenie
polega na utworzeniu pliku, którego zawartość jest wynikiem szeregowego (jeden za drugim) połączenia zawartości kilku istniejących plików. W odróżnieniu od pozostałych omawianych tu operacji, łączenie ma wpływ na zawartość pliku wynikowego. Operacje systemowe: type (DOS/Windows), cat (UNIX).
PrzedPo
plik-1
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
plik-2
3e0a3c21454e54495459204175746f7220224a4a
22203e0a0a3c21454c454d454e5420687964726f
67726166696120286f706973207c20727a656b61
20292b3e0d0a0a3c2145
plik-1
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a612220
plik-2
3e0a3c21454e54495459204175746f7220224a4a
22203e0a0a3c21454c454d454e5420687964726f
67726166696120286f706973207c20727a656b61
20292b3e0d0a0a3c2145
plik-3
3c21454e5449545920546869735370656320224d
6f64656c206f706973752064616e796368206879
64726f6772616669637a6e796368202d2d207072
6f706f7a79636a6122203e0a3c21454e54495459
204175746f7220224a4a22203e0a0a3c21454c45
4d454e5420687964726f67726166696120286f70
6973207c20727a656b6120292b3e0d0a0a3c2145
porównywanie
polega na przeprowadzeniu analizy różnic zawartości dwóch danych plików i przekazaniu użytkownikowi raportu z jej przebiegu. Brak raportu oznacza zwykle, że pliki mają identyczną zawartość. Operacje systemowe: fc (DOS/Windows), cmp, diff (UNIX).

Zasady odwoływania się do grup plików

Użycie znaków blankietowych „*” i „?” umożliwia wykonywanie tej samej operacji jednocześnie na grupie plików mających wspólne elementy nazw. Znak „*” jest przewidziany do zastąpienia (prawie) dowolnym ciągiem znaków. Znak „?” jest przewidziany do zastąpienia (prawie) dowolnym pojedynczym znakiem. Znaki te można stosować zarówno w wierszach poleceń, jak i w oknach zarządzania plikami.

W systemach DOS/Windows znaków blankietowych można używać jedynie w obrębie samej nazwy pliku.

Na przykład wzorzec nazwy c:\Documents and Settings\Adam\My documents\*.pdf oznacza wszystkie pliki z rozszerzeniem nazwy pdf, jakie znajdują się w kartotece c:\Documents and Settings\Adam\My documents (która w typowej sytuacji jest podkartoteką kartoteki użytkownika Adam przeznaczoną na przechowywanie jego dokumentów prywatnych).

W systemach UNIX dopuszczalne jest użycie znaków blankietowych także w nazwach kartotek występujących w ścieżce dostępu.

Na przykład wzorzec nazwy /home/*/doc/*.pdf oznacza wszystkie pliki z rozszerzeniem nazwy pdf, jakie znajdują się w podkartotekach doc wszystkich podkartotek kartoteki /home (tzn. w typowej sytuacji w kartotekach wszystkich użytkowników).

Atrybuty plików

W systemach UNIX pliki mają indywidualne i grupowe atrybuty własności (ownership). Prawa do odczytywania (read, r), zapisywania (write, w) i wykonywania (execute, x) zawartości pliku są nadawane oddzielnie: właścicielowi pliku, wszystkim członkom grupy użytkowników posiadającej grupowe prawo własności, wreszcie wszystkim pozostałym użytkownikom. Takie same prawa własności i dostępu odnoszą się także do kartotek. Do zmiany atrybutów służą polecenia systemowe chown (atrybuty własności) i chmod (atrybuty efektywne). Pliki nowo tworzone są własnością ich autorów, zaś domyślnie przyznawane im atrybuty są zgodne z aktualnym wzorcem ustalonym przez użytkownika za pomocą polecenia umask.

W systemach DOS i wywodzących się z nich wczesnych systemach Windows atrybuty systemowe plików występowały w formie szczątkowej: plik tylko do odczytu (read-only, r), systemowy (system, s), ukryty (hidden, h), archiwalny (archive, a). Do zmiany atrybutów służy polecenie systemowe attrib.

Nowoczesne metody zarządzania atrybutami w różnych systemach operacyjnych noszą wspólną nazwę list kontroli dostępu (access control lists, ACL). Polegają one na udzielaniu poszczególnych praw do plików i katalogów poszczególnym użytkownikom i grupom. Udzielone prawa są przechowywane w bazie danych, obsługiwanej przez system operacyjny, zwanej listą dostępu. Przy próbie dostępu do systemu plików wymagane jest posiadanie odpowiedniego uprawnienia w tej bazie.

We współczesnych systemach uniksowych uprawnienia bazujące na listach dostępu rozszerzają możliwości tradycyjnego udzielania uprawnień typu rwx.

W systemie sieciowym Novell NetWare obowiązuje rozbudowany system atrybutów, obejmujący np. prawo skanowania, tj. „zauważania” nazwy pliku (file scan, f) oraz prawo do udzielania praw. Atrybuty pojedynczego pliku opisują warunki jego udostępniania właścicielowi, innym użytkownikom i grupom użytkowników. Atrybuty te są przechowywane przez system operacyjny w tzw. listach zarządzania dostępem, poza wąsko rozumianym systemem plików. Do zmiany atrybutów służy polecenie rights.

W systemach Windows NT, 2000, XP, Vista i 7 prawami dostępu zarządza się przez listy dostępu. Zestaw atrybutów pliku obejmuje m.in.: prawo własności, prawa do odczytu, zapisu, modyfikacji, wykonywania zawartości, prawo do usuwania pliku oraz prawa dotyczące odczytywania i modyfikacji uprawnień. Prawa te są obsługiwane w systemie plików NTFS. Prawa są przyznawane poszczególnym użytkownikom lub grupom użytkowników. Do modyfikacji atrybutów służy polecenie systemowe cacls (z ang. Change Access Control ListS). Nowo tworzone pliki domyślnie dziedziczą atrybuty kartoteki, w której są umieszczane.

Interface użytkownika

W czasach „przedtelewizyjnych” komunikacja z systemami komputerowymi odbywała się w jedną stronę za pośrednictwem czytników optycznych i systemów dalekopisowych, a w drugą — za pomocą systemów wydruku. Od wynalezienia monitora kineskopowego aż do końca lat sześćdziesiątych w pracy interaktywnej korzystano z końcówek dalekopisowych (terminali) pracujących w trybie znakowym. Na terminalu takim podstawową jednostką wyświetlania jest znak.

Początkowo wszystkie urządzenia do wprowadzania danych i do prezentacji wyników działały sekwencyjnie, podobnie jak dalekopis i taśma papierowa w drukarce. Znaki były wpisywane w wierszu na spodzie ekranu, po czym „wędrowały w górę” w miarę pojawiania się kolejnych wierszy, aż do bezpowrotnej „ucieczki poza monitor”. Do dzisiaj z trybu sekwencyjnego korzystają systemowe procesory poleceń i niektóre inne systemy konsolowe.

Wprowadzenie trybu pełnoekranowego, w którym zarówno system, jak użytkownik mogą „poruszać się” po dwuwymiarowym obszarze ekranu — o ustalonej liczbie znaków w kolumnie i w wierszu — umożliwiło konwersację z systemami komputerowymi za pomocą elementów sterujących takich jak okna, menu, listy wyboru i przyciski ekranowe.

Następnym etapem było opracowanie urządzeń graficznych. Środowiska znakowe mają mniejsze wymagania sprzętowe i komunikacyjne, dzięki czemu są szybsze niż środowiska graficzne. Mają za to mniejsze możliwości prezentacyjne, przez co są znacznie mniej atrakcyjne wizualnie.

Przeciętny współczesny użytkownik jest lepiej obznajomiony ze środowiskami graficznymi, lecz mimo to wśród współcześnie powstających programów są wciąż takie, które korzystają ze środowisk znakowych. Istnieją całe obszary zastosowań, w których wprowadzanie interfejsu graficznego wyraźnie zmniejsza możliwości, a nawet bywa całkowicie niecelowe.

Systemowy procesor poleceń

Systemowy procesor poleceń (shell, powłoka) jest programem, który przejmuje od użytkownika polecenia i wykonuje je. Każde polecenie składa się z komendy i jej argumentów.

Polecenie będące w stanie wykonywania przez system nazywamy procesem

Systemowe polecenie dir generuje tekstowy spis wskazanej kartoteki lub części jej zawartości. Jeżeli nie podano argumentu, drukowany jest spis kartoteki bieżącej. W poleceniu dir /tmp argumentem jest /tmp; polecenie to wydrukuje zawartość kartoteki tmp znajdującej się w kartotece głównej. W poleceniu dir *.txt argumentem jest *.txt; zgodnie z zasadami odwoływania się do grup plików jest to oznaczenie wszystkich plików z bieżącej kartoteki o dowolnej nazwie z rozszerzeniem txt; w spisie pojawią się nazwy wszystkich takich — i tylko takich — plików.

Procesor poleceń rozpoznaje pewien ograniczony zbiór komend (są to tzw. komendy wewnętrzne). Inne polecenia, zwane zewnętrznymi, są traktowane jak nazwy programów, które należy uruchomić. Według ogólnie obowiązującej zasady polecenie zewnętrzne stanowi nazwę pliku wykonywalnego tego programu. Plik wykonywalny jest wyszukiwany w systemie plików. W prawidłowo skonfigurowanym systemie operacyjnym obszar poszukiwania powinien obejmować wszystkie kartoteki, z których programy mają być uruchamiane przez podanie krótkiej nazwy pliku wykonywalnego, a nie jego pełnej ścieżki. Nazwy tych kartotek określa się terminem ścieżek poszukiwań. Zwykle są one umieszczane w zmiennej środowiskowej PATH, której definicja znajduje się w plikach konfiguracyjnych systemu.

Jeżeli istnieje wiele plików wykonywalnych o tej samej nazwie, to uruchomiony zostanie program z pierwszego pliku o wskazanej nazwie, znalezionego w kartotekach z listy ścieżek dostępu. Kolejność kartotek na liście jest w tym przypadku istotna. W systemach DOS i Windows przed przeszukiwaniem ścieżki poszukiwań przeglądana jest kartoteka bieżąca. Jeżeli więc jeden z plików wykonywalnych o podanej nazwie znajduje się w kartotece bieżącej, to program przechowywany w tym właśnie pliku zostanie uruchomiony. W systemach UNIX programy z kartoteki bieżącej uruchamia się zazwyczaj podając ścieżkę względną, np. ./moj-program — chyba że kartoteka bieżąca (czyli .) jest umieszczona na liście ścieżek poszukiwań.

Zawartość zmiennej systemowej PATH można w systemach DOS lub Windows sprawdzić wydając polecenie

path

(lub echo %PATH%). Elementy listy są oddzielone średnikami:

PATH=C:\Windows;C:\Windows\System32;C:\Program Files\Local;C:\Program Files\TeXLive\bin\Win32;C:\Program Files\Scintilla Text Editor;C:\Documents and Settings\jasj\bin

Odpowiednie polecenie UNIXa ma postać

echo $PATH

Elementy listy są oddzielone dwukropkami:

/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/jasj/bin:.

Procesor sekwencyjny jest gotów do wykonania następnego polecenia dopiero po zakończeniu wykonywania polecenia bieżącego. Procesory wielozadaniowe są w stanie jednocześnie zarządzać wykonaniem wielu procesów, z tym że tylko jeden z nich (zwany poleceniem pierwszoplanowym — ang. foreground) jest w stanie bezpośrednio porozumiewać się z użytkownikiem. Pozostałe procesy są wykonywane „w tle” (background), skąd można je przełączyć na pierwszy plan.

Wszystkie współczesne systemy operacyjne są wyposażone w procesory poleceń przyjmujące polecenia w postaci tekstu, i wykonujące je sekwencyjnie, czyli jedno po drugim. Obsługa wszystkich tych programów jest podobna i polega na pisaniu poleceń, lecz różni się szczegółami.

W systemach UNIX użytkownik ma do wyboru kilka różnych tekstowych procesorów wielozadaniowych: sh, bash, csh, ksh i inne.

W systemach operacyjnych DOS i we wczesnych wersjach systemów Windows plik wykonywalny procesora poleceń nosił nazwę command.com. We współczesnych wersjach systemów Windows standardowy procesor poleceń nazywa się cmd.exe. W porównaniu z wspomnianymi wyżej narzędziami uniksowymi ma on znacznie uboższe możliwości.

Dla współczesnych wersji systemów Windows opracowany został procesor poleceń o nazwie powershell.exe. Jest on przeznaczony zwłaszcza dla systemów serwerowych, lecz nadaje się także do instalacji na stacjach roboczych i komputerach osobistych. Program ten bardziej przypomina uniksowy bash niż tradycyjny windowsowy cmd, lecz zawiera również liczne charakterystyczne wyłącznie dla siebie elementy.

Załączona ilustracja przedstawia zrzuty ekranowe systemowych procesorów poleceń w różnych systemach.

Dobrze dopracowany procesor poleceń zapamiętuje kilka (być może kilkadziesiąt lub nawet kilkaset) ostatnio wydanych poleceń, umożliwia ich przepisanie do bieżącego wiersza poleceń (zazwyczaj za pomocą klawiszy ze strzałkami pionowymi), przeredagowanie i przekazanie do wykonania (zwykle klawiszem Enter). Jest to przydatne w sytuacjach, kiedy wielokrotnie trzeba posłużyć się bardzo podobnymi poleceniami.

W poniższym zestawieniu umieściliśmy nazwy najważniejszych poleceń (przede wszystkim wewnętrznych, choć nie tylko) wspomagających zarządzanie systemem plików, rozpoznawanych przez systemowe procesory poleceń.

Najważniejsze polecenia zarządzania systemem plików
Sens poleceniaSystem operacyjny
DOS, WindowsUNIX, Linux
Kopiowanie plikucopycp
Dowiązanie plikufsutil (tylko administrator systemu)ln
Usunięcie plikudelrm
Zmiana nazwy pliku lub kartotekimove
rename
mv
Utworzenie kartotekimkdirmkdir
Usunięcie kartotekirmdirrmdir
Zmiana bieżącej kartoteki roboczejcdcd
Pytanie o nazwę bieżącej kartotekicd
(bez argumentu)
pwd
Podłączenie woluminu do systemu plików/odłączenie woluminu od systemu plików(brak)mount/umount
Zmiana bieżącego woluminunazwa woluminu z dwukropkiem, np. a:(brak)
Wygenerowanie spisu treści kartotekidirls

Opis składni (czyli z grubsza mówiąc zasad użycia) wymienionych poleceń jest dostępny w systemach DOS/Windows za pośrednictwem polecenia systemowego help (np. help dir), a w systemach UNIX za pośrednictwem poleceń systemowych man i info (np. man ls lub info ls).

Jeżeli masz dostęp do systemu GNU, przejrzyj dokumentację wywoływaną poleceniami man man, info man. Jeżeli masz zainstalowany edytor Emacs wraz z dokumentacją, przeczytaj dodatkowo info woman.

Oto spis treści pewnej kartoteki, wygenerowany poleceniem ls -la procesora systemu UNIX. Pliki były przechowywane na woluminie systemu ext.

Domyślny spis generowany poleceniem ls zawiera tylko nazwy plików. Opcja -l (laws, prawa) nakazuje drukować w zestawieniu atrybuty plików. Opcja -a (all, wszystkie) nakazuje drukować informacje o plikach, których nazwy rozpoczynają się od znaku kropki. Pełny opis składni otrzymasz za pomocą polecenia man ls.

Elementy spisu rozpoczynające się kodem d oznaczają katalogi; wpisy rozpoczynające się od - oznaczają zwykłe pliki. Możliwych jest jeszcze kilka innych rodzajów obiektów, z których najistotniejsze są dowiązania symboliczne (l). Dalej ukazane są wartości atrybutów danego pliku, a na końcu jego nazwa.

drwxr-xr-x  2 jasj users      0 Oct 05 13:50 .
drwxr-xr-x  2 jasj users      0 Oct 02 22:26 ..
-rw-r--r--  1 jasj users     33 Oct 05 14:40 ascii0.txt
-rw-r--r--  1 jasj users     98 Oct 05 14:37 ascii1.txt
-rw-r--r--  1 jasj users    128 Oct 05 14:38 ascii2.txt
-rw-r--r--  1 jasj users    772 Oct 05 14:54 cp1250.txt
-rw-r--r--  1 jasj users    771 Oct 05 14:54 cp852.txt
-rw-r--r--  1 jasj users    367 Mar 31  2000 cplatin1.txt
-rw-r--r--  1 jasj users   1079 Oct 05 14:54 cplatin2.txt
-rw-r--r--  1 jasj users    666 Oct 05 15:10 cpmaz.txt
-rw-r--r--  1 jasj users    148 Oct 05 15:25 eol-dos.txt
-rw-r--r--  1 jasj users    126 Oct 05 15:24 eol-ux.txt
-rw-r--r--  1 jasj users   4665 Feb 29  2000 plchars.htm
-rw-r--r--  1 jasj users   1285 Aug 15 18:32 prz-sred.txt
-rw-r--r--  1 jasj users   1283 Aug 15 18:33 przecin.txt
-rw-r--r--  1 jasj users   1351 Aug 15 18:32 spacje1.txt
-rw-r--r--  1 jasj users   1314 Aug 15 18:32 spacje2.txt
-rw-r--r--  1 jasj users   1869 Aug 15 18:32 spacje3.txt
-rw-r--r--  1 jasj users   1318 Aug 15 18:32 spacje4.txt
-rw-r--r--  1 jasj users   1282 Aug 15 18:32 tabulat1.txt
-rw-r--r--  1 jasj users   1335 Aug 15 18:32 tabulat2.txt

Z analizy przedstawionego spisu wynika, że wszystkie wymienione w nim pliki są własnością użytkownika jasj, i że grupowe prawo własności mają członkowie grupy users. Właściciel plików ma prawo do ich odczytu i zapisu. Członkowie grupy users i pozostali użytkownicy mają tylko prawo do odczytu.

Poniżej umieszczony jest analogiczny spis utworzony poleceniem dir procesora systemu Windows. Przedstawia on zawartość katalogu przechowywanego na woluminie z systemem plików NTFS:

26-10-2006  11:16    <DIR>          .
26-10-2006  11:16    <DIR>          ..
31-12-2003  15:06               777 cp852.txt
31-12-2003  15:06             1˙282 tabulat1.txt
31-12-2003  15:06             1˙351 spacje1.txt
31-12-2003  15:06             1˙285 prz-sred.txt
31-12-2003  15:06             1˙283 przecin.txt
31-12-2003  15:06             1˙314 spacje2.txt
31-12-2003  15:06               396 cplatin1.txt
31-12-2003  15:06               128 ascii2.txt
31-12-2003  15:06             1˙318 spacje4.txt
31-12-2003  15:06               126 eol-ux.txt
31-12-2003  15:06             1˙335 tabulat2.txt
04-02-2006  21:19             1˙111 cplatin2.txt
31-12-2003  15:06               127 eol-mac.txt
31-12-2003  15:06             1˙875 spacje3.txt
06-01-2006  19:02               778 cp1250.txt
31-12-2003  15:06               148 eol-dos.txt
31-12-2003  15:06                32 ascii0.txt
31-12-2003  15:06               672 mazovia.txt
31-12-2003  15:06                96 ascii1.txt

Podobnie jak uniksowe ls, także polecenie dir systemu Windows umożliwia otrzymywanie różnych form wydruku. Pełny opis składni otrzymasz za pomocą polecenia help dir.

W systemach operacyjnych DOS i wczesnych wersjach systemów Windows woluminy formatowano za pomocą różnych wersji systemu plików FAT. Oto spis zawartości katalogu takiego woluminu, utworzony poleceniem dir systemu DOS:

.            <DIR>     00-10-05  13:50
..           <DIR>     00-10-05  13:50
EOL-UX   TXT      126  00-10-05  15:24
EOL-DOS  TXT      148  00-10-05  15:25
PRZ-SRED TXT     1285  00-08-15  18:32
PLCHARS  HTM     4665  00-02-29  11:59
CPMAZ    TXT      666  00-10-05  15:10
CP852    TXT      771  00-10-05  14:54
CPLATIN1 TXT      367  00-03-31  10:15
PRZECIN  TXT     1283  00-08-15  18:33
SPACJE1  TXT     1351  00-08-15  18:32
ASCII0   TXT       33  00-10-05  14:40
ASCII1   TXT       98  00-10-05  14:37
ASCII2   TXT      128  00-10-05  14:38
SPACJE2  TXT     1314  00-08-15  18:32
CPLATIN2 TXT     1079  00-10-05  14:54
CP1250   TXT      772  00-10-05  14:54
SPACJE3  TXT     1869  00-08-15  18:32
SPACJE4  TXT     1318  00-08-15  18:32
TABULAT1 TXT     1282  00-08-15  18:32
TABULAT2 TXT     1335  00-08-15  18:32

Współczesne procesory poleceń, oprócz realizacji poleceń wpisywanych przez użytkownika w trybie interaktywnym, mają także możliwość wykonywania ciągów poleceń uprzednio przygotowanych w odpowiednim pliku. Plik taki nosi nazwę pliku wsadowego lub skryptu. O wykorzystaniu skryptów napiszemy w podrozdziale poświęconym uruchamianiu programów.

W niektórych systemach operacyjnych procesor poleceń oferuje rozszerzoną składnię, zgodnie z którą poleceniem może być nie tylko polecenie wewnętrzne powłoki albo nazwa uruchamianego programu, ale także nazwa dowolnego pliku lub kartoteki. W tym ostatnim przypadku uruchamiany jest pewien program z nazwą podanego pliku jako parametrem. Mechanizm ten jest analogiczny do domyślnej akcji „otwierania” pliku danych lub kartoteki w środowisku graficznym, o czym będzie mowa w podrozdziale poświęconym uruchamianiu programów.

Graficzne środowisko pracy użytkownika

Pionierskie prace nad środowiskami, w których polecenia dla systemów komputerowych byłyby wydawane przez manipulację obiektami graficznymi, prowadzono m.in. w laboratoriach firmy Xerox w latach lat 70–tych XX wieku. Pełne graficzne środowisko pracy użytkownika (Graphical User’s Interface, GUI) zintegrowane z systemem operacyjnym zostało na szeroką skalę wprowadzone po raz pierwszy w komputerach MacIntosh firmy Apple. Tryb znakowy został wyparty z dominującej pozycji dopiero na początku lat 90-tych. Obecnie środowiska graficzne stanowią istotny składnik większości systemów operacyjnych.

W systemach Windows GUI nosi nazwę Windows. Podstawowe środowisko graficzne używane w systemach UNIX nosi nazwę X-Window System (przynajmniej tak to widzi zwykły użytkownik pojedynczego komputera; w rzeczywistości X-Window jest niezależnym od systemu operacyjnego interface’em graficznym pośredniczącym w interakcji użytkownika i programów przez sieć). Na jego bazie budowane są środowiska użytkowe (np. Motif, OpenLook, AfterStep, CDE, KDE, GNOME).

Załączony zestaw ilustracji przedstawia zrzuty ekranowe graficznych środowisk pracy użytkownika w różnych systemach.

Program korzystający z GUI komunikuje się z użytkownikiem za pomocą okien. Oknem nazywamy obszar — zazwyczaj o prostokątnym kształcie — na którym program może wyświetlać dane i od którego może otrzymywać sygnały dotyczące zaistniałych zdarzeń. Zdarzenie może być spowodowane działaniem użytkownika (zazwyczaj użyciem klawiatury lub wskaźnika myszy) wewnątrz okna lub działaniem systemu: każda akcja podjęta w obszarze GUI powoduje jej zarejestrowanie przez program zarządzający środowiskiem graficznym, a następnie podjęcie decyzji co do adresata tej akcji (tj. programu, w którego oknie akcja nastąpiła) i przekazania mu informacji o tym zdarzeniu — z podaniem istotnych parametrów: kiedy (czas systemowy), gdzie (współrzędne w układzie okna) i jakiego typu zdarzenie miało miejsce. Zdarzenia mające miejsce na obszarze ramki okna — takie jak ustalanie położenia i rozmiaru okna, minimalizacja okna chwilowo uniemożliwiająca komunikację z programem, zamknięcie okna wymuszające zakończenie pracy programu — obsługuje system zarządzania oknami. W razie potrzeby system powiadamia program, by uzupełnił zawartość okna.

Programy użytkowe korzystające z graficznego środowiska określa się mianem aplikacji.

Użytkownik korzystający z GUI ma do dyspozycji wiele możliwości wydawania poleceń i sterowania. Może korzystać z menu okien programów, menu lokalnych oraz obiektów graficznych reprezentujących pliki i kartoteki. Obiekty te zazwyczaj są przedstawiane przy użyciu niewielkich obrazków, zwanych ikonami. Ikony można naciskać (klikać) jedno-, dwu, a nawet trzykrotnie domyślnym (czyli zazwyczaj lewym) przyciskiem myszy; mają one także własne menu lokalne zazwyczaj dostępne za pośrednictwem prawego przycisku myszy. Inną operacją wykonywaną na ikonach jest ich przeciąganie z okna do okna lub na obszar zajęty przez inny obiekt (może być nim np. inna ikona). Sens tych operacji zależy od decyzji programistów projektujących system i aplikacje, jednak zazwyczaj starają się oni zachować zgodność efektu akcji z szeroko pojętą „intuicją”.

Załączona ilustracja interaktywna przedstawia typowe elementy sterowania aplikacją dostępne w graficznych i znakowych środowiskach użytkownika. Można też obejrzeć kolekcję okien dialogowych z różnych graficznych systemów użytkownika.

Istotnym składnikiem interfejsu użytkownika są programy systemowe umożliwiające zarządzanie systemem pliku oraz uruchamianie innych programów. W środowiskach graficznych programy takie noszą angielską nazwę file managers; często są one zintegrowane ze środowiskiem graficznym, choć mogą być także samodzielnymi aplikacjami. Interfejsy takich programów często reprezentują system plików za pomocą schematu drzewa, którego gałęziami są kartoteki; kartoteki — za pomocą okien graficznych (folderów), a pliki i podkartoteki — za pomocą obiektów graficznych (ikon) ułożonych w listę.

Załączona ilustracja przedstawia zrzuty ekranowe programów do obsługi systemu plików w różnych systemach.

Najprostszy sposób podjęcia akcji przez użytkownika polega na wskazaniu ikony urządzeniem wskazującym (kursor graficzny, zwykle sprzęgnięty z myszą). Akcje użytkownika związane z przeciąganiem między oknami, wycinaniem, kopiowaniem i wklejaniem obiektów graficznych, powodują efekt przenoszenia, dowiązywania, usuwania i kopiowania odpowiednich plików lub podkartotek. Jeszcze inne skutki przyniosą akcje wykorzystujące obiekty sterowania (np. menu) skojarzone z poszczególnymi obiektami graficznymi.

Domyślną reakcją systemu na wskazanie ikony kartoteki jest otwarcie jej folderu, dla pliku wykonywalnego — uruchomienie go. Przypadek ikon innych plików będzie omówiony w dalszej części tego rozdziału, zatytułowanej Uruchamianie programów za pośrednictwem GUI.

Pulpit roboczy

Koncepcja środowiska roboczego, które umożliwiałoby korzystanie z nawyków i pojęć znanych ze środowisk tradycyjnych (tj. nie komputerowych), towarzyszy systemom GUI od ich najwcześniejszych początków. Minimum, jakie zapewnia każde współczesne GUI, jest reprezentacja pracujących programów użytkowych przez okna robocze wyposażone w systemy ofert (menu, listwy narzędziowe) służące do wydawania poleceń.

Bogatsze środowiska graficzne są wyposażone w pulpit wirtualny. Jest to okno obejmujące całą dostępną przestrzeń wizualną, umieszczone pod wszystkimi innymi oknami. Jest ono zazwyczaj wyposażone w zestaw obiektów graficznych umożliwiających uruchamianie programów, konfigurację systemu i zarządzanie plikami. Niekiedy okien takich jest więcej; użytkownik jest wtedy w stanie uruchamiać swoje programy użytkowe na oddzielnych pulpitach, środowisko zaś umożliwia mu przełączanie się z pulpitu na pulpit.

W swojej pierwotnej postaci pulpit stanowił tło dla okien programów użytkowych oraz udostępniał funkcje systemowe, np. w postaci ikon reprezentujących zminimalizowane okna uruchomionych programów lub rozwijalnych menu systemowych.

W wielu nowszych środowiskach graficznych na pulpicie prezentowana jest zawartość wyróżnionej kartoteki lub zbiorcza zawartość kilku kartotek: ogólnosystemowych i prywatnych.

Oprócz pulpitu środowiska graficzne mogą zawierać i często zawierają dodatkowe elementy pomocnicze: systemowe panele sterowania, systemowe listwy narzędziowe itp. Każde z tych narzędzi jest związane z działaniem pewnego programu systemowego, wchodzącego w skład GUI, zaś sam pulpit i panele nie są niczym innym, jak oknami roboczymi tych programów.

W laboratoriach firm i organizacji zajmujących się interfejsami graficznymi bez przerwy trwają intensywne prace nad środowiskami użytkownika. Nie da się w jednym zdaniu streścić kierunku ich rozwoju. Wskażemy tylko najważniejsze tendencje:

W galeriach ilustracji znajduje się zestaw odsyłaczy do materiałów pozwalających zdobyć szerszy pogląd na tendencje rozwojowe graficznych środowisk użytkownika.

Schowek systemowy

Schowek (clipboard) to obszar pamięci, przeznaczony do przechowywania informacji przesyłanej między programami. Każdemu programowi wolno zapisać informację w schowku lub odczytać informację ze schowka.

Programy interaktywne umożliwiają korzystanie ze schowka przy operacjach „kopiowania”, „wycinania” lub „wklejania” obiektów w środowisku pracy użytkownika związanym z aplikacją (i przydzieloną jej pamięcią).

Każdy program zapisujący informacje w schowku stosuje pewien format zapisu danych; podobnie podczas odczytywania danych ze schowka trzeba uwzględnić format zapisanej w nim informacji. Jednym z najprostszych formatów przekazywania informacji jest zapis znakowy.

Dostęp do funkcji systemowych przy tworzeniu nowych programów

Środowisko pracy programisty (Application Programmer’s Interface, API) daje możliwości wykorzystania funkcji systemu przez programistę w tworzonych przez niego programach. API zawierają biblioteki kodu podprogramów oraz dokumentację, określającą sposób ich wykorzystania. Nie mają one znaczenia dla „zwykłych użytkowników”, o ile są poprawnie zainstalowane w systemie. Jednak ich brak uniemożliwia użytkowanie programów, które z nich korzystają.

Klasyfikacja użytkowa plików

Informację w ogólności, w tym także informację przechowywaną w plikach, można interpretować dwojako: jako przedmiot przetwarzania, czyli dane, lub jako zapis instrukcji sterujących przetwarzaniem, czyli kod. Chociaż w szczególnych przypadkach obszary danych i kodu mogą być ze sobą przemieszane, należy tego unikać. W typowych sytuacjach dane i kod są przechowywane w osobnych plikach.

Z punktu widzenia użytkownika najogólniejszy podział plików to podział na pliki danych tworzone przez użytkownika i pliki wchodzące w skład pakietów programowych, czy to systemu operacyjnego, czy programów narzędziowych i użytkowych.

Pliki wykonywalne zawierają rozkazy przeznaczone do wykonania przez system operacyjny. Rozpoczęcie wykonywania nosi nazwę uruchomienia programu. Bezpośrednią przyczyną uruchomienia jest polecenie wydane przez użytkownika lub przez inny program. System operacyjny umieszcza ciąg rozkazów programu w pamięci operacyjnej, przydziela mu pamięć na dane oraz czas procesora poświęcony na jego wykonywanie. Pliki wykonywalne zawierające kod przeznaczony do wykonania przez procesor mają strukturę binarną. W systemach DOS i Windows muszą one nosić nazwy z rozszerzeniami exe lub com. W systemach UNIX nazwa może być dowolna, lecz plik musi mieć atrybut wykonywalności (x).

Sterowniki to programy obsługujące urządzenia peryferyjne, na ogół w sposób niewidoczny przez zwykłego użytkownika (dopóki działają poprawnie).

Biblioteki to magazyny kodu podprogramów używanych wspólnie przez wiele programów. Są niezbędne do ich prawidłowego funkcjonowania.

Skrypty i programy wsadowe to proste programy, pisane przez użytkownika lub administratora dla usprawnienia pracy. Mają one postać plików znakowych, a polecenia w nich umieszczone są interpretowane wiersz po wierszu przez procesor poleceń. W systemach DOS i Windows pliki wsadowe muszą mieć nazwy z rozszerzeniem bat lub cmd. W systemach UNIX nazwa może być dowolna, lecz plik musi być wykonywalny (atrybut x),

Formę skryptów mają też startowe pliki konfiguracyjne, wykonywane podczas rozruchu systemu operacyjnego.

Urządzenia wejścia i wyjścia: porty drukarek, konsole, mają przypisane pliki systemowe urządzeń o odpowiednich nazwach. Niektóre pliki urządzeń są wyszczególnione w poniższej tabeli:

Nazwy plików niektórych urządzeń systemowych
UrządzenieSystem operacyjny
DOS, WindowsUNIX
drukarkalpt1,
lpt2
/dev/lp0,
/dev/lp1,
itd.
konsolacon/dev/tty1,
/dev/tty2,
itd.
urządzenie testowenul/dev/null

Na przykład wysłanie (skopiowanie) danych do pliku drukarki spowoduje ich wydrukowanie. Wysłanie danych do pliku konsoli spowoduje ich wyświetlenie na ekranie (w oknie terminala tekstowego). Próba odczytu z pliku konsoli spowoduje oczekiwanie na naciśnięcie klawiszy klawiatury i odczytanie wprowadzonych znaków jako danych. Urządzenie testowe służy do testowania programów. Przy próbie odczytu danych wysyła ono komunikat o końcu danych, a przy zapisie ignoruje przesyłane do siebie znaki. Pliki urządzeń są nieusuwalne.

Potoki (pipes) to mechanizmy przesyłania danych bezpośrednio między działającymi programami.

Pliki konfiguracyjne zawierają informacje o sposobie pracy programów. Konfiguracja systemowa dotyczy całego systemu operacyjnego. Globalne pliki konfiguracyjne określają zachowanie programów wobec wszystkich użytkowników. Prywatne pliki konfiguracyjne określają preferencje i wymagania poszczególnych użytkowników.

Osobny rodzaj plików, tzw. dowiązania (ang. linkogniwo, połączenie), nie przechowują same z siebie informacji przeznaczonej dla użytkownika, a tylko informację o pliku, na który wskazują. W systemie Windows dowiązania, zwane skrótami, mają postać plików o rozszerzeniu nazwy lnk i służą do umieszczania ikon programów i innych obiektów na pulpicie i w folderach środowiska graficznego. W systemach UNIX znaczenie dowiązań jest znacznie ogólniejsze i nie ogranicza się do środowiska graficznego; za ich pomocą ten sam plik (lub kartoteka) może być udostępniany w różnych kartotekach i pod różnymi nazwami.

Zasady uruchamiania programów

Każdy program jest przechowywany w pamięci trwałej (np. dyskowej) w postaci jednego pliku wykonywalnego lub pakietu złożonego z wielu plików. Po uruchomieniu ciąg rozkazów programu jest umieszczany przez system operacyjny w pamięci operacyjnej. W innym obszarze pamięci lokuje się dane, na których program wykonuje operacje.

W systemach DOS i Windows programy muszą być przechowywane w plikach noszących rozszerzenia exe lub com. W systemach UNIX użytkownik musi mieć prawo wykonywania (x) pliku; jeżeli plik jest jego własnością, to może zezwalać (lub nie) na jego wykonywanie innym użytkownikom.

Program a proces

Wykonywanie kodu pojedynczego programu, umieszczonego w pamięci operacyjnej, nosi nazwę procesu. Każdy fakt uruchomienia danego pliku wykonywalnego prowadzi do zainicjowania nowego procesu. W typowej sytuacji w danej chwili działa wiele procesów, z których każdy jest związany z wykonywaniem pewnego programu. Każdy proces ma osobno przydzieloną pamięć operacyjną do przechowywania kodu i danych.

Nic nie stoi na przeszkodzie, by kilka procesów wykonywało niezależnie od siebie ten sam program (np. uruchamiamy kilka sesji pewnego edytora, z których każda obsługuje edycję innego pliku danych).

W systemach UNIX każdy proces ma przydzielony identyfikator liczbowy i odpowiadającą mu kartotekę w systemie plików /proc. Listę aktywnych procesów uzyskamy wydając polecenie ps; inne programy i polecenia służą do zarządzania procesami.

W systemach Windows listę aktywnych procesów możemy przeglądać za pomocą polecenia tasklist, zaś zarządzanie nimi umożliwia program systemowy taskmgr.

Właściwość systemu operacyjnego, umożliwiająca jednoczesną obsługę wielu procesów, nosi nazwę wielozadaniowości (multitasking).

W systemach posiadających cechę współbieżności każdemu z uruchomionych procesów zostaje przydzielony pewien ułamek czasu pracy procesora, tak więc użytkownik ma wrażenie, że działają one równolegle. Przydziałem czasu steruje system operacyjny. Jeżeli sprzęt ma tylko jedną jednostkę CPU, to współbieżność jest złudzeniem wynikającym z przydzielania po kolei każdemu procesowi krótkich przedziałów czasu. Prawdziwa współbieżność jest możliwa jedynie na sprzęcie wyposażonym w kilka procesorów. W systemach bez współbieżności nawet jeżeli uruchomienie kilku procesów jest możliwe, to aktywnie wykonywany jest tylko jeden z nich (taką właściwość miał np. system DOS).

Praktycznie wszystkie współcześnie dostępne środowiska operacyjne są wielozadaniowe i pozwalają na współbieżne korzystanie z wielu programów.

Uruchamianie programów za pośrednictwem wiersza poleceń

Wiersz poleceń jest sposobem przekazywania poleceń systemowemu procesorowi poleceń. Polecenie składa się z nazwy polecenia (tożsamej z nazwą pliku wykonywalnego programu) i argumentów. Nazwa polecenia i argumenty muszą być rozdzielone znakami spacji. Każdy program interpretuje argumenty wywołania na swój sposób. Ogólnie można powiedzieć jedynie, że mogą one wpływać na sposób pracy programu. W praktyce wiele programów przetwarzających pliki (np. edytory) traktuje argumenty jako nazwy plików przeznaczonych do przetworzenia (np. odczytania i udostępnienia do edycji). Szczególnym rodzajem argumentów są tzw. opcje, które z założenia odnoszą się do technicznych aspektów uruchomienia danego programu. Argumenty odpowiadające opcjom często rozpoczynają się znakiem - lub /. Na przykład polecenie edit może uruchamiać pewien program interaktywnego edytora (rzeczywiście, jest to jeden z systemowych edytorów systemu Windows). Polecenie edit dane uruchomi ten sam program, lecz przekaże mu parametr dane. Napis ten zostanie „zrozumiany” jako nazwa pliku, który należy wczytać do pamięci i udostępnić do edycji. Wywołanie tego samego programu z opcją /?, tzn. edit /? najprawdopodobniej spowoduje udostępnienie użytkownikowi skróconych zasad użycia programu (w tym spisu jego opcji).

Zadaniem znaku spacji w wierszu poleceń jest oddzielanie (separowanie) nazwy polecenia od pierwszego argumentu, pierwszego argumentu od drugiego argumentu itd. W szczególnych sytuacjach może się zdarzyć, że argument polecenia musi zawierać znak spacji. Jest tak np. przy kopiowaniu pliku, którego nazwa zawiera znak spacji, lub przy wyszukiwaniu w pliku wzorca tekstowego ze spacją. Przykładowe polecenie kopiowania pliku o nazwie dane 1.txt (ze spacją), napisane w formie:

copy dane 1.txt dane-wrzesien2000.txt

nie ma sensu, gdyż każda ze spacji będzie zrozumiana jako separator. Zatem zdaniem procesora poleceń wydane polecenie ma trzy argumenty (tzn. dane, 1.txt i dane-wrzesien2000.txt), podczas gdy składnia polecenia copy wymaga tylko dwóch (nazwa pliku kopiowanego oraz nazwa tworzonej kopii). Dla uniknięcia nieporozumień nazwę dane 1.txt należy ująć w podwójne cudzysłowy techniczne:

copy "dane 1.txt" dane-wrzesien2000.txt

Teraz już nie ma niejednoznaczności. Tak samo postępujemy za każdym razem, kiedy argument wydawanego polecenia, lub nawet samo polecenie, zawiera znak spacji.

Skrypty systemowe

Współczesne procesory poleceń, oprócz realizacji poleceń wpisywanych przez użytkownika w trybie interaktywnym, mają także możliwość wykonywania ciągów poleceń uprzednio przygotowanych w odpowiednim pliku. Plik taki nosi nazwę pliku wsadowego lub skryptu. W systemach Windows plik skryptu powinien mieć nazwę z rozszerzeniem cmd (w systemach DOS i w dawnych wersjach systemów Windows obowiązywało rozszerzenie bat). W systemach UNIX nie ma wymagań co do rozszerzeń, ale plik musi mieć ustawiony atrybut wykonywalności (x).

Najprostsze skrypty są po prostu ciągami poleceń zapisanymi wiersz po wierszu w pliku znakowym. Każde środowisko systemowe posiada własną składnię, która dopuszcza w skryptach sprawdzanie warunków, wielokrotne powtarzanie czynności, a nawet generowanie dialogu z użytkownikiem. Skrypty mogą też pobierać argumenty z polecenia, za pomocą którego je wywołano: w systemach UNIX wartość pierwszego, drugiego itd., aż do dziewiątego argumentu pobierzemy za pomocą symboli $1, $2, aż do $9; w systemach Windows jest analogicznie, tyle że zamiast znaku dolara trzeba użyć znaku procenta: %1, %2, …, %9.

Dla przykładu pokażemy, jak zbudować prosty skrypt systemowy, który usunie ze wskazanej kartoteki pliki o rozszerzeniach nazwy wskazujących na ich tymczasowy charakter. a potem dopisze datę wykonania tej czynności do pliku czystka.log w tej samej kartotece. W systemie Windows skrypt ten nazwiemy czysc.cmd. Będzie on miał następującą zawartość:

rem usuwamy pliki tymczasowe ze wskazanej kartoteki
rem datę operacji dopisujemy do pliku czystka.log
cd %1
del *.tmp
del *.bak
del *.*#
del *.~
echo. | date >> czystka.log

Analogiczny skrypt systemu UNIX może nosić nazwę czysc i będzie miał zawartość

#!/bin/bash
# usuwamy pliki tymczasowe ze wskazanej kartoteki
# datę operacji dopisujemy do pliku czystka.log
cd $1
rm  *.bak  *.tmp  *.*\#  *.~
date >> czystka.log

(znak \ nakazuje traktować następujący po nim znak # jak zwykły znak; w przeciwnym razie # jako oznaczenie początku komentarza nie miałby wpływu na treść polecenia, a to mogłoby spowodować usunięcie plików *.*).

Użycie tak przygotowanego skryptu może wyglądać następująco:

czysc "\Documents And Settings\janj"

zadziała na katalogu użytkownika janj w systemie Windows. Analogicznie użyjemy skryptu w systemie UNIX, pisząc polecenie

czysc /home/janj

Systemowy procesor poleceń przechowuje ścieżkę dostępu do kartoteki prywatnej bieżącego użytkownika w zmiennej środowiskowej. Zamiast wpisywać ścieżkę, wystarczy podać nazwę tej zmiennej. W systemie Windows nosi ona nazwę userprofile:

czysc %userprofile%

Analogiczna zmienna ma w systemach UNIX nazwę HOME:

czysc $HOME

Wywołanie tego samego skryptu z innym argumentem, np.

czysc \
czysc %temp%
czysc "\Program Files\Common Files"

spowoduje jego zadziałanie we wskazanej kartotece.

Przedstawiony skrypt ma ograniczone zastosowanie: nie porządkuje podkartotek, a w systemach Windows działa tylko w obrębie bieżącego woluminu.

Uruchamianie programów za pośrednictwem GUI

Środowiska graficzne dają wiele różnych możliwości uruchomienia wybranego programu, np. przez wybór obiektu z panelu sterowania lub menu systemowego. Na zawartość takich paneli i menu mają wpływ zarówno administratorzy systemu, jak użytkownicy; bezpośrednio odpowiada za nią zawartość plików i kartotek konfiguracyjnych. W graficznych środowiskach obsługi systemu plików domyślną reakcją systemu na wskazanie (i naciśnięcie, zazwyczaj dwukrotne) ikony pliku wykonywalnego jest uruchomienie programu przechowywanego w tym pliku.

W przypadku plików innych niż wykonywalne sprawa jest bardziej złożona. Jak wiadomo, pliki danych przechowują dane, a nie programy. Danych zaś nie da się „uruchomić”. Można co najwyżej uruchomić pewien program i kazać mu odczytać, a następnie przetworzyć lub udostępnić dane ze wskazanego pliku.

Stosowane są następujące techniki wspomagające użytkownika w uruchamianiu programów:

Większość współczesnych GUI dysponuje specjalną bazą danych zawierającą rejestr przyporządkowujący plikom użytkownika polecenie, którym środowisko ma reagować na naciśnięcie ikony. Polecenie takie, podobnie jak każde polecenie, składa się z nazwy pewnego programu i przekazywanych mu pewnych argumentów. W tym przypadku jednym z argumentów będzie nazwa wskazanego pliku. Szczegółowa postać samego polecenia, a w szczególności nazwa uruchamianego programu, jest związana z „typem” wskazanego pliku, rozpoznawanym poprzez rozszerzenie jego nazwy. Tak więc puknięcie w ikonę pliku z rozszerzeniem nazwy .txt spowoduje zawsze uruchomienie tego samego programu (jakiego? to już zależy od zawartości omawianej bazy danych); podobnie puknięcie w ikonę pliku z rozszerzeniem nazwy .rtf (co to będzie za program? to zależy od konfiguracji. Może to być ten sam program, co dla rozszerzenia .txt, ale może też być inny) lub jakimkolwiek innym. Na pewno istnieją także rozszerzenia nazw nie ujęte w tym rejestrze. Wskazanie i wybór ikony pliku o takim rozszerzeniu spowoduje… no właśnie: co?

W systemach obiektowych typowe akcje przewidziane do wykonania na plikach danego typu znajdują odzwierciedlenie w postaci poleceń stowarzyszonych z reprezentacją graficzną tego pliku. Skojarzenia te znajdują wyraz np. w zawartości menu podręcznego ikony reprezentującej plik oraz z treści poleceń uruchamianych za pomocą tego menu. W środowiskach konsekwentnie obiektowych użytkownik ma znaczny wpływ na konfigurację tych skojarzeń. Może więc np. skojarzyć pliki typu znakowego z użytkowaniem swoich dwóch ulubionych edytorów, zaś pliki z grafiką JPEG — z dwoma edytorami grafiki i przeglądarką zdjęć.

Kolejne galerie ilustracji zawierają: przegląd technik uruchamiania programów oraz przykłady obiektowego traktowania plików przez GUI.

Uwaga. Istnieje kilka mechanizmów, które pozwalają rozpoznać „typ” pliku. Najprostszym z nich jest analiza rozszerzenia jego nazwy. W takim przypadku zmiana rozszerzenia może spowodować zmianę domyślnej akcji związanej z obiektem graficznym reprezentującym ten plik. Nie ma to żadnego związku ani z treścią informacji zapisanej wewnątrz pliku, ani ze sposobem jej przechowywania, ani wreszcie z możliwością odczytania tej informacji przez uruchamiane programy.

Bardziej zaawansowany mechanizm wiąże się z analizą początkowego fragmentu pliku. W takim przypadku rozpoznany przez środowisko „typ” zawartości — a co za tym idzie, także i reakcja systemu na zdarzenia związane z obiektem graficznym — zależą naprawdę od formatu zapisu informacji. Ta metoda zakłada, że użytkownik przechowuje jedynie pliki typowych formatów; w przeciwnym razie może dojść do mylnego rozpoznania zawartości. Ewentualna zmiana rozszerzenia nazwy pliku nie zmienia przypisanego plikowi „typu”, nie zmienia również faktycznego formatu zapisu.

Co lepsze?

Jeżeli mamy możliwość uruchamiania programów obiema wyżej omówionymi technikami (za pośrednictwem wiersza poleceń i za pośrednictwem interface’u graficznego), to warto opanować obydwie, gdyż każda z nich ma swoje plusy i minusy związane z wygodą i efektywnością pracy użytkownika. Należy przy tym pamiętać, że różnice polegają tylko na innym sposobie wywoływania akcji; przebieg samej sesji programu nie zależy już od techniki jej rozpoczęcia (chociaż zależy od parametrów i opcji). W końcu puknięcie w ikonę jest tylko jednym ze sposobów wydania pewnego polecenia; natomiast pojęcie polecenia jest ogólniejsze i nie wymaga istnienia ani ikon, ani urządzeń do „pukania”.

Pukając w ikonę danego pliku, za każdym razem uruchamiamy ten sam program. Jeżeli pliki o tym samym rozszerzeniu nazwy mają być przetwarzane (obrabiane, edytowane, odczytywane itp.) przez kilka różnych programów, to pisanie poleceń może usprawnić pracę. Podobnie jest przy powtarzaniu jednej lub kolejno kilku czynności z różnymi argumentami.

Z kolei samo pisanie poleceń stanie się mniej uciążliwe, jeżeli skorzystamy z narzędzi wspomagających wydawanie poleceń. Dobrze dopracowane środowiska obsługi sekwencyjnej są wyposażone w stos poleceń: użytkownik może przepisać do wiersza poleceń każde z poleceń poprzednio wydanych (zwykle posługując się klawiszami strzałek pionowych), zmodyfikować je i przekazać do wykonania (zwykle klawiszem Enter). Inne sposoby wspomagania wydawania poleceń obejmują: współpracę wiersza poleceń ze schowkiem systemowym (do budowy polecenia można wykorzystywać fragmenty tekstów, np. nazwy poleceń i plików, zapamiętane w schowku lub oznaczone w oknie terminala), automatyczne uzupełnianie nazw programów i plików (na terminalach znakowych w systemach UNIX zazwyczaj służy do tego klawisz Tab, a w systemach Windows XP znaki Ctrl+D i Ctrl+F), wreszcie współpracę okna terminala ze środowiskiem graficznym (np. przeciągnięcie ikony pliku na okno terminala spowoduje wpisanie do wiersza poleceń pełnej ścieżki dostępu do pliku).

Układ ikon w środowisku graficznym, ich wygląd, jak również przypisanie domyślnych programów obsługi plikom noszącym konkretne rozszerzenia nazw nie są niezmienne. Ingerować w nie mogą: użytkownik, administrator i oprogramowanie instalacyjne. Nazwy programów w obrębie jednego systemu są zmienne w o wiele mniejszym stopniu. Z tego powodu nie sposób opracować pisemnej dokumentacji sposobu postępowania dla użytkownika, która zachowałaby ogólność bez odwoływania się do nazw programów i treści poleceń. Użytkownik, który chce z takiej dokumentacji korzystać, siłą rzeczy musi opanować pojęcia „program”, „plik wykonywalny”, „polecenie” i „parametr polecenia”.

Z drugiej strony, środowisko graficzne pozwala zapomnieć o technicznej otoczce związanej z uruchamianiem programów o takich, a nie innych nazwach i składni wywołania; wielu użytkownikom jest wszystko jedno, jakiego edytora używają, i nie chcą pamiętać, jak nazywa się jego plik wykonywalny. Dlatego chętnie korzystają z udogodnień oferowanych przez środowisko graficzne.

Nawet jeżeli przy typowym korzystaniu z GUI naciskanie ikon jest najczęściej stosowanym sposobem wydawania poleceń, warto rozumieć wykorzystywany w nim mechanizm. Wiedza ta przyda się choćby do skonfigurowania środowiska w sposób inny, niż proponowany domyślnie. Także w sytuacjach awaryjnych znajomość innych technik uruchamiania programów może okazać się niezastąpiona.

Ważną zaletą środowisk przyjmujących polecenia w postaci pisemnej, o której warto pamiętać, jest bardzo łatwa automatyzacja pracy. W najprostszym przypadku wystarczy umieścić odpowiednie polecenia w pliku skryptowym, z którego będą po kolei odczytywane i uruchamiane. Ideę tę omówiono wyżej, w podrozdziale poświęconym systemowym procesorom poleceń. W środowiskach czysto graficznych, w których podstawowym sposobem wydawania poleceń jest manipulacja obiektami graficznymi, automatyzacja albo nie jest możliwa, albo wymaga opanowania innego sposobu obsługi (np. języka programowania).

Przetwarzanie interaktywne i nieinteraktywne

Program interaktywny przez większość swojego czasu pracy czeka na przejawy aktywności użytkownika, od których zależy efekt jego działania. Sterowanie odbywa się przez system ofert (menu główne, menu rozwijalne, menu podręczne, przyciski narzędziowe) lub system wydawania poleceń. W ogólnym zarysie praca z aplikacją (programem interaktywnym) składa się z etapów: uruchomienia aplikacji, otwarcia roboczego pliku danych, przeprowadzenia modyfikacji, zapisania pliku roboczego, zamknięcia sesji aplikacji.

Istnieje wiele metod, jakimi program interaktywny może przyjmować polecenia od użytkownika. Do najprostszych należą systemy menu tekstowych. W następnej kolejności wymienimy języki poleceń, za pomocą których użytkownik formułuje żądania. Alternatywą tekstowych sposobów porozumiewania się z systemami użytkowymi są systemy ofertowe, sterowane za pomocą tekstowego lub graficznego interfejsu ofertowego (systemy menu, dialogi, przyciski i palety narzędziowe). Najbardziej zaawansowane technologicznie są interfejsy obiektowe, w których poleceniom działania odpowiadają manipulacje obiektami graficznymi. Na przykład edytor zintegrowany ze środowiskiem graficznym może reagować otwarciem pliku, którego ikonę użytkownik przeciągnie na obszar okna edycyjnego. Szczegóły zależą od właściwości poszczególnych GUI i rozwiązań przyjętych w poszczególnych systemach użytkowych. Systemy obiektowe, ofertowe i tekstowe stanowią uzupełniające się sposoby sterowania dużymi systemami.

Praca z programem nieinteraktywnym przebiega według zupełnie innego scenariusza. Wydawane polecenie, oprócz nazwy programu, musi zawierać argumenty i opcje przekazywane programowi. Po wydaniu polecenia nie ma możliwości ingerencji w pracę programu — oprócz czasowego zawieszenia lub awaryjnego przerwania jego wykonywania.

Oto kilka przykładów użycia poleceń nieinteraktywnych:

dir /s /b /os *.txt > spis

(Polecenie dir generuje spis kartoteki. Opcje /s, /b i /os określają sposób przedstawienia spisu: ma on obejmować wszystkie podkartoteki i zawierać same nazwy plików, uporządkowane według ich rozmiarów. Argument *.txt określa, które kartoteki i pliki mają znaleźć się w spisie: są to wszystkie pliki z bieżącej kartoteki, posiadające rozszerzenie nazwy txt. Dalsza część polecenia każe umieścić wynik w pliku o nazwie spis.)

convert -transparent 0 *.gif *.png

(Polecenie convert dokonuje zmiany formatu zapisu m.in. obrazów graficznych. Opcja -transparent 0 każe nadać kolorowi numer 0 atrybut przezroczystości. Argumenty *.gif i *.png określają zakres przetwarzania: obrazy z wszystkich plików gif z bieżącej kartoteki należy zapisać w formacie PNG w plikach o nazwie zgodnej z oryginałem, lecz z rozszerzeniem png.)

zip -r archiwum.zip prace/*.rtf

(Polecenie zip służy do tworzenia i obsługi archiwów plików. Opcja -r każe pakować do archiwum kartoteki wraz z zawartością ich podkartotek. Argument archiwum.zip określa nazwę tworzonego archiwum. Argument prace/*.rtf każe umieścić w archiwum wszystkie pliki z rozszerzeniem nazwy rtf, znajdujące się w kartotece prace.)

Chociaż znaczenie argumentów i opcji jest specyficzne dla każdego polecenia, wielu autorów oprogramowania stara się przestrzegać pewnych konwencji. I tak z reguły argumenty wywołania programu edytora będą rozumiane jako nazwy plików przeznaczonych do edycji. Wiele programów posiada, oprócz dołączonej dokumentacji, również opcję wywołania, powodującą drukowanie składni i znaczenia własnych argumentów. Warto sprawdzić, czy składni nie podpowiada opcja -h, /h, -help, --help, -?, /?,-?? lub podobna.

Standardowe źródło danych wejściowych i standardowy strumień wyników

Podczas pracy program może pobierać i wysyłać dane. Dla umożliwienia współpracy programu zarówno z użytkownikiem–osobą, jak klientem–programem zlecającym wykonanie pewnych czynności, wiele programów pobiera dane z pliku określanego jako standardowy plik wejściowy (standard input). Dane ze standardowego wejścia mogą być tylko odczytywane po kolei, bez możliwości powrotu. Jego odpowiednikiem jest standardowy plik wynikowy (standard output = wyjście standardowe), do którego program może jedynie wpisywać dane wynikowe, bez możliwości ich odczytania ani zmiany. Program realizujący polecenie „nie wie” nic więcej o plikach standardowych. Standardowe wejście i wyjście w domyślnej postaci wywołania programu są identyfikowane z konsolą (zespołem klawiatura–monitor) urządzenia, z którego wywołano program. Każde z nich może jednak zostać skojarzone z dowolnym plikiem. W szczególności standardowy plik wynikowy danego programu może zostać utożsamiony z plikiem wejściowym innego programu. Taki mechanizm umożliwia podjęcie decyzji o źródle, z którego pobiera się dane (i o miejscu umieszczania wyników) nie na etapie projektowania programu, ale dopiero podczas jego uruchomienia. Sposób ten ułatwia używanie gotowych programów jako części składowych większych projektów przetwarzania danych. Do zmiany znaczenia plików standardowych służą w wierszu poleceń poniższe znaki sterujące:

polecenie < plik-danych
powoduje pobieranie przez proces danych wejściowych nie z terminala, tylko ze wskazanego pliku.
polecenie > plik-wynikowy
powoduje przesłanie danych wynikowych do wskazanego pliku, zamiast na ekran terminala. Plik wynikowy będzie zapisany od nowa (ewentualna stara zawartość zostanie utracona).
polecenie >> plik-wynikowy
powoduje przesłanie danych wynikowych do wskazanego pliku, zamiast na ekran terminala. Dane będą dopisane na końcu pliku wynikowego (bez utraty jego poprzedniej zawartości).
polecenie1 | polecenie2
powoduje przesłanie danych wynikowych procesu uruchomionego poleceniem polecenie1 bezpośrednio na wejście procesu uruchomionego poleceniem polecenie2. Jest to tzw. potok przetwarzania. W potoku może uczestniczyć większa liczba procesów, uruchamianych odpowiednimi poleceniami.

Oprócz standardowych plików wejścia i wyjścia systemy operacyjne przyznają procesom również inne pliki systemowe, np. standardowe wyjście diagnostyczne (standard output for errors). Nie mają one bezpośredniego znaczenia dla zwykłych użytkowników.

Słowo o administrowaniu systemem operacyjnym

Środki techniczne, zwłaszcza tak zaawansowane jak systemy komputerowe, wymagają kontroli i opieki technicznej. Czynności mające na celu zapewnienie użyteczności sprzętu i oprogramowania oraz bezpieczeństwa danych określa się terminem administrowanie.

Pełna dyskusja zagadnień zarządzania systemem operacyjnym nie mieści się w ramach tego opracowania. Jednak z uwagi na fakt, że każdy właściciel komputera osobistego już przez fakt jego posiadania zmuszony jest do administrowania jego zasobami, krótkie omówienie podstawowych zadań administracyjnych wydaje się wskazane. Z zasadami tymi powinni zapoznać się także użytkownicy systemów komputerowych, chociażby po to, by umieć zadbać o bezpieczeństwo swoich danych.

Jeżeli system jest wyposażony w konto administratora, należy z niego korzystać wyłącznie w celu zarządzania systemem. Konto takie zazwyczaj nosi nazwę root, admin, administrator lub podobną. Konto takie powinno być bezwarunkowo chronione hasłem; dobrze też, by miało ograniczoną możliwość logowania zdalnego.

Do regularnej pracy służą konta zwykłych użytkowników. Kontom tym nie powinno się udzielać zaawansowanych uprawnień administracyjnych.

Procesy uruchamiane przez administratora nie mają ograniczeń dostępu do plików. Dlatego ważne jest, by administrator uruchamiał jedynie naprawdę niezbędne programy, pochodzące z zaufanego źródła.

Czynności podejmowane przez administratora winny być przemyślane i ostrożne; administratora winna cechować nieufność w stosunku do danych i oprogramowania oraz do potencjalnych posunięć użytkowników. Pochopnie uruchomiony przez administratora program niewiadomego pochodzenia może narobić dużo szkód (np. tzw. konie trojańskie). Z uwagi na ryzyko mimowolnego uruchomienia takiego oprogramowania, konto z prawami administratora nie powinno być używane do codziennej pracy.

Instalacja i aktualizacja oprogramowania

Jednym z podstawowych zadań administratora jest instalacja oprogramowania. Producenci dostarczają oprogramowanie w wielu możliwych postaciach.

Gotowy pakiet instalacyjny ma najczęściej postać pliku wykonywalnego. Jego uruchomienie rozpoczyna proces instalacji. Plikowi wykonywalnemu mogą towarzyszyć dodatkowe pliki zawierające dane do instalacji.

Czasami zdarza się, że pakiet instalacyjny jest rozprowadzany w postaci bez pliku wykonywalnego. Wtedy do jego zainstalowania posłuży oprogramowanie systemowe. Typowe formaty pakietów instalacyjnych tego typu są zależne od systemu operacyjnego, np. dmg (Mac OS), cab, msi (Windows), cpio (UNIX), rpm, deb (Linux).

W rzadszych przypadkach wersja instalacyjna oprogramowania jest rozprowadzana w postaci zwykłego spakowanego archiwum danych. Zainstalowanie polega wtedy na rozpakowaniu pliku, umieszczeniu powstałej kartoteki w odpowiednim miejscu i na umożliwieniu uruchamiania programu w sposób dogodny dla użytkowników (np. przez modyfikację ścieżki dostępu i/lub utworzenie dowiązań, skrótów lub aktywatorów). Typowe pakiety instalacyjne tego typu mają format zip, tar.gz lub tar.bz2.

Wreszcie niektóre pakiety programowe, zwłaszcza w świecie oprogramowania otwartego, są rozprowadzane w postaci kodu źródłowego. W tym przypadku instalacja musi być poprzedzona wygenerowaniem plików wykonywalnych — proces ten nosi nazwę kompilacji, a do jego przeprowadzenia niezbędne jest oprogramowanie systemowe zwane kompilatorem. Ten sposób instalacji oprogramowania jest pracochłonny, lecz stosunkowo bezpieczny, gdyż nie korzysta się w nim w ogóle z plików wykonywalnych pochodzenia zewnętrznego.

Należy pamiętać, że o warunkach instalacji i użytkowania oprogramowania decyduje jego producent lub dystrybutor, wyrażając je w postaci licencji użytkowania. Licencja taka ma moc prawną.

Ochrona danych i oprogramowania

Przed przystąpieniem do instalacji oprogramowania, zwłaszcza w przypadku plików pobranych drogą sieciową, należy sprawdzić pochodzenie archiwum. Jednym z podstawowych sposobów jest sprawdzenie tzw. sumy kontrolnej pliku i porównanie jej z wartością podaną przez producenta.

Suma kontrolna jest liczbą całkowitą, którą otrzymuje się w drodze skomplikowanych obliczeń zależnych od zawartości pliku. Jej najistotniejszą cechą jest to, że mimo powszechnej dostępności opisu postępowania przy obliczaniu sum kontrolnych, rzeczą praktycznie niemożliwą jest skonstruowanie pliku, który posiadałby z góry założoną sumę kontrolną. Dlatego zgodność sumy obliczonej dla danego pliku z wartością deklarowaną przez jego dystrybutora traktowana jest jako gwarancja autentyczności pliku. Przy obliczaniu sum kontrolnych korzysta się z algorytmów szyfrowania opartych na zaawansowanej matematyce, realizowanych przez wyspecjalizowane programy systemowe. Do najczęściej używanych należą: Message Digest Algorithm w wersji 5 (MD5) oraz kilka wariantów Secure Hash Algorithm (SHA).

Oto przykład wygenerowania sum kontrolnych pewnego pliku. Wyniki podano w pozycyjnym systemie szesnastkowym.

ls -l lorem_ipsum.txt
-rw-r--r--    1 jasj     jasj         1182 lis 30 16:02 lorem_ipsum.txt
md5sum lorem_ipsum.txt
c4af54233b971073c23319f43e5bc0f5  lorem_ipsum.txt
sha1sum lorem_ipsum.txt
9acda9807b50deee1fac1c7eafe9c36368307311  lorem_ipsum.txt

Pliki należące do zainstalowanych pakietów oprogramowania winny być chronione przed możliwością modyfikacji lub usunięcia przez zwykłych użytkowników. Pamiętajmy, że plik wykonywalny niechroniony przed modyfikacją może zostać uszkodzony lub zainfekowany wirusem przez każdego użytkownika.

Ważną czynnością administracyjną związaną z zapewnieniem bezpieczeństwa jest ochrona przed szkodliwym oprogramowaniem. Na większości stacji roboczych i osobistych ochrona taka odbywać się powinna non-stop przy użyciu oprogramowania wykrywającego i usuwającego wirusy, robaki, konie trojańskie, oprogramowanie szpiegujące i inne typy szkodliwego oprogramowania. Niezależnie od tego, administrator winien regularnie sprawdzać system pod kątem obecności, czy raczej nieobecności, tego typu niepożądanych dodatków. Jest on też odpowiedzialny za aktualizację systemów diagnostyki i ochrony antywirusowej, z których korzystają użytkownicy.

Osobnym i ważnym zagadnieniem jest uniemożliwienie nieuprawnionego dostępu do systemu poprzez sieć. Nie będziemy go tutaj szerzej omawiać.

Archiwizacja

Sprzęt komputerowy może mieć niską awaryjność, ale na pewno nie jest niezawodny. Awarie będą się zdarzały i nie sposób ich uniknąć. Administrator winien zdawać sobie z tego sprawę i podejmować działania mające na celu łagodzenie skutków awarii. Jednym z najprostszych działań tego typu jest regularna archiwizacja danych. Polega ona na robieniu zapasowych kopii ważnych plików w regularnych odstępach czasu.

Jest rzeczą godną polecenia, by użytkownik sam przejął odpowiedzialność za archiwizację ważnych dla niego plików, niezależnie od działań administratora.

Archiwa zapasowe należy przechowywać na innym nośniku, niż oryginał. Najlepiej wykorzystać w tym celu tani nośnik przenośny o dużej pojemności (np. dysk optyczny); profesjonaliści korzystają z taśm magnetycznych.

W przypadku komputerów domowych częstotliwość archiwizacji zależy od nas samych; w dużych systemach procedura archiwizacji przeprowadzana jest codziennie lub nawet w sposób ciągły, co umożliwia odtworzenie dowolnego pliku w wersji sprzed co najwyżej kilku dni.

Pytania kontrolne

  1. W jaki sposób wyraża się ilość informacji i pojemność urządzeń pamięci?
  2. Co to jest plik? Jak określa się lokalizację plików w zasobach systemowych? Jakie atrybuty (właściwości) charakteryzują plik?
  3. Opisz różne techniki zakładania, przenoszenia i usuwania katalogów oraz kopiowania, przenoszenia i usuwania plików przez użytkownika.
  4. Objaśnij składnię polecenia systemowego: nazwa polecenia, argumenty, opcje.
  5. Co dzieje się w systemie operacyjnym po wydaniu polecenia przez użytkownika?
  6. Opisz jak najwięcej różnych sposobów uruchomienia wybranego programu użytkowego i otwarcia za jego pomocą wybranego pliku danych.
  7. Kiedy skorzystanie z wiersza poleceń jest wygodniejsze niż uruchamianie programów za pomocą środowiska graficznego (i odwrotnie)?
  8. Podaj przykłady na to, że różnice w interpretacji danych przekazywanych przez schowek czasem prowadzą do pożądanych efektów, czasem powodują zniekształcenie informacji, a czasem uniemożliwiają jej użycie.
  9. Dlaczego każda stacja robocza winna posiadać co najmniej dwa konta użytkownika?
© Copyright 2000–2016 by Jan Jełowicki, Katedra Matematyki Uniwersytetu Przyrodniczego we Wrocławiu
janj@aqua.up.wroc.pl
http://karnet.up.wroc.pl/~jasj