System komputerowy. Oprogramowanie. Systemy operacyjne
Truizmem jest stwierdzenie, że zainteresowanie komputerami ma obecnie charakter autentycznie masowy.
Laicy wierzą w to, że są one wszechmocne
Komputer jednak sam z siebie nie potrafi niestety nic zrobić. Do tego, żeby komputer był użytecznym urządzeniem konieczne jest, by znajdował się w nim program sterujący jego pracą. Nader często właśnie program jest czynnikiem decydującym o innowacyjności jakiegoś rozwiązania technicznego. Dlatego możemy mówić o rozwiązaniach wspomaganych programami komputerowymi jako o nowej dziedzinie techniki a także jako o przedmiocie ochrony własności intelektualnej.
Komputery bez programów są nieprzydatne do niczego!
Komputery, a za ich pośrednictwem także programy, są obecnie kluczowym składnikiem większości systemów technicznych i ekonomicznych
Dzisiaj niepodobna już wyobrazić sobie nowoczesnej cywilizacji bez programów komputerowych, gdyż są one niezbędnym elementem wielu rozwiązań spotykanych dosłownie na każdym kroku
Wbrew temu, co sądzi wielu ludzi, sam komputer nie jest wcale najsilniejszą „figurą” na „szachownicy” współczesnej nauki i techniki Jego siła i zdolność oddziaływania wynikają z faktu, że komputer jako taki nic nie narzuca obszarom, w których jest stosowany - żadnych własnych, indywidualnych cech. Jest on jak gdyby przeźroczysty dla programów, które są umieszczane w jego wnętrzu i determinują jego zachowanie. Dzięki temu rozwiązania korzystające z komputerów mogą być tak bardzo elastyczne i wielozadaniowe.
Oprogramowanie Oprogramowanie (ang. software), program lub zbiór programów, umożliwiający korzystanie z komputera oraz ze sprzętu peryferyjnego (aparatury specjalistycznej, modemu, skanera, itp.) zgodnie z potrzebami użytkownika Z innego punktu widzenia oprogramowanie to program lub zbiór programów, pozwalający wygodnie rozwiązywać konkretne problemy użytkownika – bez konieczności każdorazowego pisania własnych programów dla każdego zadania.
Cechy oprogramowania Oprogramowanie jest niezbywalną częścią systemu komputerowego, dzięki swojej wymienności może zmieniać jego przeznaczenie. Ten sam komputer osobisty może być używany jako elektroniczny sekretariat, a w chwilę potem, dzięki użyciu innego oprogramowania przeistacza się w salon gier lub internetową pocztę, telefon i radio, przy czym dzięki wieloprogramowości i środowisku okienkowemu może pełnić wszystkie te funkcje jednocześnie. Źródło: Wielka Internetowa Encyklopedia Multimedialna (http://wiem.onet.pl)
Klasyfikacja oprogramowania oprogramowanie systemowe (system operacyjny) - zbiór programów zarządzających pracą komputera, oprogramowanie narzędziowe - programy diagnostyczne, testujące, archiwizujące, antywirusowe, komunikacyjne, umożliwiające korzystanie z zasobów sieciowych (np. sieci Internet) i inne programy pomocnicze, oprogramowanie służące do tworzenia innych programów (translatory, linkery, biblioteki), uniwersalne programy użytkowe (edytory, arkusze kalkulacyjne, systemy zarządzania bazami danych, programy graficzne, programy matematyczne i statystyczne), programy pisane na zamówienie konkretnego użytkownika (programy dedykowane) - np. wspomagające prace rachunkowo - księgowe w konkretnym przedsiębiorstwie, sterujące procesem technologicznym, symulujące zachowanie się badanego systemu, programy pisane przez użytkowników na ich własne potrzeby - programy służące do rozwiązywania zadań specyficznych dla danego użytkownika - np. problemy obliczeniowe, makropolecenia wspomagające pracę z zastosowaniem programów użytkowych.
Nowoczesne oprogramowanie w pewnym sensie izoluje użytkownika od bezpośredniego kontaktu ze sprzętem oraz w wielu przypadkach „maskuje” jego niedoskonałości Programy użytkowe Programy usługowe systemu operacyjnego Jądro systemu operacyjnego sprzęt
Oprogramowanie jest nie tylko droższe od sprzętu komputerowego, ale w dodatku częściej się psuje
System operacyjny System operacyjny – jest to program (lub układ wielu programów) zarządzający zasobami systemu komputerowego i pełniący rolę pośrednika pomiędzy człowiekiem a komputerem. System operacyjny jest niezbędnym składnikiem każdego systemu komputerowego.
Systemy operacyjne (oraz inne elementy oprogramowania) są obecnie rozwijane na dwa konkurencyjne sposoby: Jako oprogramowanie firmowe, wytwarzane przez profesjonalne firmy i sprzedawane (drogo!) użytkownikom nie mającym wpływu na jego kształt (proprietary domain) Jako oprogramowanie tworzone przez samych użytkowników, wymieniane bezpłatnie i stale doskonalone przez inicjatywy oddolne (open source)
Pomiędzy zwolennikami jednego i drugiego podejścia toczy się od lat zażarta „wojna” Dokonamy teraz krótkiego przeglądu niektórych związanych z nią zagadnień
Po stronie proprietary domain sytuacja jest prosta: Liderem jest Microsoft
Po stronie open source sytuacja jest bardziej złożona
Świadczą o tym liczne symbole i zawołania bojowe
Chwilowo oprogramowanie firmowe ma zdecydowaną przewagę
Główni ideolodzy open source:
Richard Stallman
Eric Raymond
Na czym polega idea Open Source?
Ten produkt jest firmowy a jego receptura jest tajna!
Ten produkt jest dziełem amatorów, a jego receptura jest jawna.
Mapa „pola walki:
Dozwolone jest: uruchamianie w dowolnym celu analizowanie dzialania programu rozpowszechnianie udoskonalanie i dostosowywanie do własnych potrzeb
Aby moc określić czy dany program może zostać uznany za Wolne Oprogramowanie, powstały tzw. Wytyczne Debiana dotyczące Wolnego Oprogramowania. Stanowią one formalną definicję Otwartego Źródła.
1. Swobodna redystrybucja: oprogramowanie może być swobodnie przekazywane lub sprzedawane. 2. Kod źródłowy: musi być dołączony lub dostępny do pobrania. 3.Programy pochodne: musi być dozwolona redystrybucja modyfikacji.
4. Integralność autorskiego kodu źródłowego: licencje mogą wymagać, aby modyfikacje były redystrybuowane jedynie jako patche. 5. Niedyskryminowanie osób i grup: nikt nie może zostać wykluczony. 6. Niedyskryminowanie obszarów zastosowań: nie wolno wykluczać żadnych, nawet komercyjnych zastosowań.
7. Dystrybucja licencji: prawa dołączone do oprogramowania muszą się odnosić do wszystkich odbiorców programu, bez konieczności wykonywania przez nich dodatkowej licencji. 8. Licencja nie może być specyficzna dla produktu: program nie może być licencjonowany tylko jako część szerszej dystrybucji.
9. Licencja nie może ograniczać innego oprogramowania: licencja nie może wymagać np. tego, aby inne dystrybuowane z pakietem oprogramowanie było typu Open Source. 10. Licencja musi być technicznie neutralna.
Kolejny podmiot na polu walki Celem jest techniczna doskonałość kodu Free Software jest jednocześnie oprogramowaniem typu Open Source, ale OpenSource nie musi być oprogramowaniem Free Software
Jeszcze jedna ideologia: copyleft
copyleft - all rights reversed
Jest to sposób licencjonowania oprogramowania zezwalający na swobodne modyfikacje i rozpowszechnianie. Pomysłodawcą jest Richard Stallman z Free Software Foundation.
Oprogramowanie copyleft to wolne programy, których warunki rozpowszechniania nie pozwalają redystrybutorom na dodawanie jakichkolwiek dodatkowych ograniczeń przy dalszym rozpowszechnianiu lub modyfikacji programu. Oznacza to, że każda kopia takiego oprogramowania, nawet jeśli została zmodyfikowana, musi być wolnym oprogramowaniem.
Oprogramowanie nie obiete copyleft Różnica miedzy wolnym oprogramowaniem na licencji copyleft a wolnym oprogramowaniem nie objętym copyleft sprowadza się do zezwolenia przez autora na modyfikowani i rozpowszechnianie oprogramowania z możliwością nałożenia dodatkowych ograniczeń
GPL czyli General Public License GNU GPL jest zestawem warunków rozpowszechniania i służy nakładaniu na oprogramowanie licencji copyleft. GPL krytykowane jest często i nazywane tzw licencja wirusowa, ze względu na swoja restrykcyjność, gdyż wszelkie prace bazujące na dziele objętym GPL muszą również być oparte o tą licencję. Tak więc GPL oddziaływuje na każdy program, który korzysta z kodu GPL.
Jeszcze czymś innym są Public domain software... ...czyli oprogramowanie będące dobrem publicznym. Są to programy nie objęte prawem autorskim, a zarazem będące dobrem publicznym, czyli zasobem dostępnym na użytek ogółu bezpłatnie (jak ławka w parku)
Jeśli jakiś program jest wolny, to potencjalnie może zostać włączony do wolnego systemu operacyjnego, takiego jak GNU lub jednej z wolnych wersji systemu GNU/Linux.
GNU, skrot pochodzacy od GNU's Not Unix, to projekt Free Software Foundation mający na celu stworzenie wolnodostepnego systemu operacyjnego kompatybilnego z systemem Unix
nowoczesny wolnodostępny stabilny system operacyjny klasy UNIX
Budowa Linuxa jądro – zarządza urządzeniami oraz uruchamia programy 2. powłoka, jest to interfejs służący do przekazywania poleceń do jądra w celu ich wykonania. Interfejs tekstowy lub graficzny (X-Window System) 3. system plików, pliki są umieszczone w katalogach ułożonych w strukturze hierarchicznej przypominają drzewo i rozpoczynają się od katalogu głównego (root directory) 4. programy użytkowe
LOGO
http://freshmeat.net www.freshrpms.net www.sourceforge.net http://pl.wikipedia.org/wiki/Lista_programów_Open_Source http://freshmeat.net www.freshrpms.net www.sourceforge.net www.linuxsoft.cz/pl/ www.linuxdlafirm.pl
Koniec dygresji. Powracamy do głównego wątku
W dużych systemach komputerowych ślady tej „wojny” są prawie niezauważalne: w sieciach komputerowych swobodnie współpracują ze sobą elementy należące do różnych technik i różnych „filozofii”
Funkcje systemu operacyjnego zapewnienie komunikacji pomiędzy człowiekiem użytkującym system komputerowy a komputerem, zarządzanie procesami (proces jest to zbiór czynności, jakie wykonuje program realizowany w systemie komputerowym), zarządzanie pamięcią operacyjną, zarządzanie pamięcią zewnętrzną, zarządzanie systemem wejścia – wyjścia, zapewnienie bezpieczeństwa systemu komputerowego, realizacja funkcji sieciowych, konfigurowanie systemu komputerowego.
Komunikacja człowiek – komputer Interfejs użytkownika – oprogramowanie pozwalające na komunikację pomiędzy użytkownikiem a systemem informatycznym. Typy interfejsów: tekstowy graficzny
Interfejs tekstowy tekstowy – użytkownik wpisuje polecenia. Przekazywane są one do realizacji w chwili zaakceptowania. Użytkownik musi znać składnię poleceń. Realizacja takiego sposobu komunikacji angażuje w niewielkim stopniu zasoby komputera.
Interfejs graficzny graficzny – interfejs typu WIMP (Windows, Icons, Menus, Pointer Devices – Okna, Ikony, Menu, Urządzenia wskazujące). Podstawowe czynności wykonywane są w prosty, intuicyjny sposób. Komunikacja w trybie graficznym ma duże wymagania w zakresie zasobów komputera (pamięci, czasu procesora, dysku).
Zarządzanie procesami W uproszczeniu możemy przyjąć następującą tożsamość: Proces = program realizowany przez system komputerowy. Rodzaje procesów: użytkownika – programy uruchomione przez użytkownika systemowe – programy uruchomione przez system operacyjny.
Procesy w systemie Windows
Zadania systemu operacyjnego w zakresie zarządzania procesami W chwili tworzenia procesu przedziela mu zasoby komputera niezbędne do jego realizacji (podstawowe zasoby komputera to: czas pracy procesora oraz obszary pamięci operacyjnej). Gdy proces kończy swoje działanie, to przydzielone mu wcześniej zasoby komputera są zwalniane i system operacyjny może je przydzielić innemu procesowi.
Procesy współbieżne We współczesnych systemach procesy zwykle realizowane są współbieżnie – co oznacza, że moc obliczeniowa procesora oraz pamięć operacyjna dzielona jest pomiędzy wiele procesów jednocześnie.
Zadania s. o. związane ze współbieżną realizacją procesów przydziela każdemu procesowi odpowiednie obszary pamięci operacyjnej, dzieli czas pracy procesora, tak aby realizował on cyklicznie fragmenty kolejnych procesów (przydziela każdemu procesowi kwant czasu pracy procesora). rozstrzyga konflikty pomiędzy procesami
Współbieżne systemy operacyjne Systemy, które umożliwiają współbieżną realizację procesów nazywane są: systemami wielozadaniowymi – gdyż w tym samym czasie realizuje się więcej niż jedno zadanie (przeciwieństwem systemów wielozadaniowych są systemy jednozadaniowe), systemami z podziałem czasu – gdyż czas pracy procesora dzielony jest pomiędzy poszczególne zadania. systemami wielodostępnymi – gdy poszczególne procesy realizowane są na użytek różnych użytkowników
Wielowątkowość Wielowątkowość polega na tym, że współbieżnie mogą być realizowane różne fragmenty tej samej aplikacji (np. w trakcie pracy z edytorem możliwa jest jednoczesna edycja jednego dokumentu i drukowanie innego).
Zarządzanie pamięcią operacyjną W zakresie zarządzania pamięcią operacyjną system operacyjny wykonuje następujące zadania: ewidencjonowanie zajętych obszarów pamięci, przydzielanie i zwalnianie pamięci (często dynamiczne, związane ze zbiorami danych o zmiennych rozmiarach), nadzorowanie ustalonych alokacji pamięci i zapobieganie naruszaniu przez jeden proces zasobów przydzielonych innemu procesowi pozorowanie dostępności większego zasobu pamięci operacyjnej niż ten, który jest fizycznie dostępny poprzez zrzucanie fragmentów nie używanych w danym momencie kodów i danych na dysk (tzw. stronicowanie)
Zarządzanie pamięcią zewnętrzną przydział obszarów na nośniku (dysku, dyskietce, taśmie) oraz ewidencja zajętych i wolnych obszarów nośnika, organizowanie dostępu do danych i programów przechowywanych w pamięci zewnętrznej: zasady nadawania nazw plikom, sposób uporządkowania plików (w większości przypadków stosowany jest hierarchiczny system plików), wykonywanie operacji na plikach – kopiowanie, przesuwanie, kasowanie itd.
Zarządzanie systemem wejścia – wyjścia System wejścia - wyjścia to zespół elementów sprzętowych i programowych pozwalających na komunikację pomiędzy komputerem a światem zewnętrznym (ludźmi, innymi komputerami, aparaturą specjalistyczną itp.). W skład systemu operacyjnego wchodzi między innymi oprogramowanie pozwalające na korzystanie z portów (np. COM, LPT, USB). System wejścia - wyjścia służy do realizacja operacji związanych z: wprowadzaniem danych przez użytkownika, wprowadzaniem danych pochodzących z różnych urządzeń – pamięci masowej, wskazujących, skanerów, urządzeń pomiarowych, wyprowadzanie informacji przeznaczonych dla użytkownika, przesyłanie informacji do różnych urządzeń.
Zapewnienie bezpieczeństwa systemu ochrona obszarów pamięci przydzielonych jednemu procesowi przed ingerencją innych procesów (np. aby uniemożliwić zawieszenie systemu przez błędnie działający program), ochrona systemu przed innymi użytkownikami identyfikatory i hasła prawa dostępu do plików i katalogów, ochrona przed błędami ze strony użytkownika: prośba o potwierdzenie operacji (kasowania pliku, usunięcia użytkownika), czasowe przechowywanie usuniętych elementów (Kosz w systemie Windows), ochrona przed skutkami awarii (np. archiwizacja danych), archiwizacja danych, tworzenie kopii obszarów systemowych dysków (np.: dane dotyczące struktury dysku, rejestry systemu Windows), organizacja jednoczesnego zapisu na wielu nośnikach. szyfrowanie danych, ochrona przed atakami za pośrednictwem sieci komputerowej (ściany ogniowe), ochrona antywirusowa.
Realizacja funkcji sieciowych Sieć komputerowa – zestaw połączonych ze sobą komputerów. Podstawowe funkcje systemu operacyjnego związane z funkcjonowaniem w środowisku sieciowym to: zapewnienie możliwości korzystania ze wspólnych zasobów (dysków, drukarek, nagrywarek), zapewnienie komunikacji pomiędzy użytkownikami komputerów przyłączonych do sieci (poczta elektroniczna, komunikacja bezpośrednia, transfer plików), zapewnienie bezpieczeństwa systemom komputerowym przyłączonym do sieci.
Konfigurowanie systemu komputerowego System operacyjny umożliwia: określenie podstawowych parametrów komputera oraz włączenie lub wyłączenie pewnych opcji, przystosowanie systemu do indywidualnych potrzeb i upodobań użytkownika (np. Linux - pliki tekstowe, Windows - rejestry), wiązanie konfiguracji sprzętowej i programowej z konkretnymi użytkownikami i z konkretnymi zadaniami.
Dawniej do każdego nowobudowanego komputera tworzony był „na miarę” jego unikatowy system operacyjny Obecnie w tym zakresie istnieje korzystna standaryzacja oraz unifikacja
Charakterystyka przykładowych systemów operacyjnych Unix Linux MS Dos MS Windows
Unix system wielozadaniowy, pozwalający na pracę w trybie wielodostępnym, zawierający mechanizmy pozwalające na pracę w środowisku sieciowym, korzystający z hierarchicznego systemu plików, posiadający mechanizmy gwarantujące ochronę systemu komputerowego, pozwalający na korzystanie z interfejsu tekstowego lub graficznego, stosowany na różnych platformach sprzętowych.
Niektóre dodatkowe fakty na temat systemu UNIX Pierwsza wersje powstała w 1969 roku w Bell Labs (UNIX System Laboratories, USL) Stworzyli go Denis Ritchie i Ken Thompson Korzystali oni z zasady KISS Stworzyli dla budowy UNIX język C Nazwa jest zastrzeżona dla Open Group - przemysłowego konsorcjum zajmującego się standaryzacją kompatybilnych systemów TCP/IP, FTP, DNS pierwotny pień stanowią systemyV i BSD (komercyjne i niekomercyjne) oraz klony ze standaryzowanymi normami
Linux stosunkowo nowy (pierwsza edycja 1991) darmowy, zgodny z systemem UNIX, system operacyjny stworzony przez Linusa Torvalda (zobacz: http://wizard.ae.krakow.pl/links/comp.html)
MS DOS - Microsoft Disk Operating System dosyć stary (1981) i dzisiaj już rzadko używany jednozadaniowy system operacyjny przeznaczony dla jednego użytkownika wykorzystujący tekstowy interfejs użytkownika zarządzający pamięcią operacyjną o wielkości do 640 kB (korzystanie z większych obszarów pamięci było bardzo utrudnione), wykorzystujący hierarchiczny system plików nazwy plików tworzone były zgodnie ze schematem 8 + 3, co utrudniało zarządzanie informacjami przeznaczony dla komputerów osobistych.
MS Windows rodzina systemów operacyjnych Microsoft Windows, rozwijana od 1985 (Windows 1.0) - do dnia dzisiejszego przez firmę Microsoft graficzny interfejs użytkownika wielozadaniowość, praca w środowisku sieciowym hierarchiczna struktura plików standaryzacja sposobu obsługi programów, multimedialność możliwość wymiany danych pomiędzy aplikacjami (schowek, DDE - Dynamical Data Exchange, OLE - Object Linking and Embedding)