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)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.
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.
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 (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 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.
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.
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 (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 rename
— DOS, Windows;
mv
— UNIX),
przenosić kartoteki wraz z zawartością w inne miejsce (operacja move
— DOS, Windows;
mv
— UNIX),
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.
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.
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.
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.
copy
(DOS/Windows),
cp
(UNIX),
manipulacje obiektami graficznymi plików i kartotek (GUI).
Przed | Po | |||
---|---|---|---|---|
|
|
ln
(UNIX),
fsutil
(Windows — tylko administrator),
funkcje menu lokalnego związanego z obiektami plików (GUI w systemach UNIX).
Przed | Po | ||
---|---|---|---|
|
|
ln -s
(UNIX),
funkcje menu lokalnego związanego z obiektami graficznymi reprezentującymi pliki (GUI
w systemach Windows i UNIX).
Przed | Po | |||
---|---|---|---|---|
|
|
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ść.
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.
del
,
erase
(DOS/Windows),
rm
(UNIX),
manipulacje obiektami graficznymi reprezentującymi pliki, menu lokalne związane z obiektami plików (GUI).
Przed | Po | |
---|---|---|
|
(plik nie istnieje; zwolniony obszar nośnika) |
Koszlub
Ś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.
move
(DOS/Windows),
mv
(UNIX),
manipulacje obiektami graficznymi reprezentującymi pliki i kartoteki (GUI).
Przed | W trakcie | Po | ||||
---|---|---|---|---|---|---|
|
|
|
Przed | W trakcie | Po | |||
---|---|---|---|---|---|
|
|
|
rename
(DOS/Windows),
rename
, mv
(UNIX),
menu lokalne związane z obiektami graficznymi reprezentującymi pliki (GUI).type
(DOS/Windows),
cat
(UNIX).
Przed | Po | |||||
---|---|---|---|---|---|---|
|
|
fc
(DOS/Windows),
cmp
, diff
(UNIX).
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).
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.
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ń (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.
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ń.
Sens polecenia | System operacyjny | |
---|---|---|
DOS, Windows | UNIX, Linux | |
Kopiowanie pliku | copy | cp |
Dowiązanie pliku | fsutil (tylko administrator systemu) | ln |
Usunięcie pliku | del | rm |
Zmiana nazwy pliku lub kartoteki | move rename | mv |
Utworzenie kartoteki | mkdir | mkdir |
Usunięcie kartoteki | rmdir | rmdir |
Zmiana bieżącej kartoteki roboczej | cd | cd |
Pytanie o nazwę bieżącej kartoteki | cd (bez argumentu) | pwd |
Podłączenie woluminu do systemu plików/odłączenie woluminu od systemu plików | (brak) | mount /umount |
Zmiana bieżącego woluminu | nazwa woluminu z dwukropkiem, np. a: | (brak) |
Wygenerowanie spisu treści kartoteki | dir | ls |
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.
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).
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ą”.
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ę.
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
.
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:
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.
Ś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ą.
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:
Urządzenie | System operacyjny | |
---|---|---|
DOS, Windows | UNIX | |
drukarka | lpt1 ,lpt2 | /dev/lp0 ,/dev/lp1 ,itd. |
konsola | con | /dev/tty1 ,/dev/tty2 ,itd. |
urządzenie testowe | nul | /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. link — ogniwo, 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.
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.
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.
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.
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.
Ś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ęć.
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.
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).
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 nazwytxt
. Dalsza część polecenia każe umieścić wynik w pliku o nazwiespis
.)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ówgif
z bieżącej kartoteki należy zapisać w formacie PNG w plikach o nazwie zgodnej z oryginałem, lecz z rozszerzeniempng
.)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 nazwyrtf
, znajdujące się w kartoteceprace
.)
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.
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
polecenie > plik-wynikowy
polecenie >> plik-wynikowy
polecenie1 | polecenie2
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.
Ś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.
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ą.
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.txtmd5sum lorem_ipsum.txtc4af54233b971073c23319f43e5bc0f5 lorem_ipsum.txtsha1sum lorem_ipsum.txt9acda9807b50deee1fac1c7eafe9c36368307311 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ć.
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.