Metody licencjonowania oprogramowania. Budowa i

Transkrypt

Metody licencjonowania oprogramowania. Budowa i
Metody licencjonowania oprogramowania. Budowa i funkcje
systemu operacyjnego.
Licencjonowanie.
Licencja - w odniesieniu do oprogramowania regulacja prawna określająca warunki jego użytkowania i
zasady odpłatności. Praktykuje się kilka rodzajów licencji określających zakres użytkowania
oprogramowania i warunki uiszczania za nie opłaty.
Do najważniejszych rodzajów licencji należą:
● licencja jednostanowiskowa,
● grupowa,
● firmware,
● shareware,
● freeware,
● GPL,
● licencja typu Public Domain.
Wolne oprogramowanie (ang. Free Software, pokrewne pojęcie Otwarte oprogramowanie Open Source –
dosłownie Otwarte Źródła) – jest to ruch programistów i użytkowników komputerów zaangażowanych w
działania na rzecz swobodnego dostępu do oprogramowania przez ogół użytkowników.
Wolne oprogramowanie definiuje 4 rodzaje wolności:
• wolność uruchamiania programu, w dowolnym celu (wolność 0),
• wolność analizowania, jak program działa, i dostosowywania go do swoich potrzeb (wolność 1).
Warunkiem koniecznym jest tu dostęp do kodu źródłowego.
• wolność rozpowszechniania kopii, byście mogli pomóc sąsiadom (wolność 2)
• wolność udoskonalania programu i publicznego rozpowszechniania własnych ulepszeń, dzięki
czemu może z nich skorzystać cała społeczność (wolność 3).
Warunkiem koniecznym jest tu dostęp do kodu źródłowego.
Katedra i Bazar:
Katedra - oprogramowanie tworzone w tradycyjny sposób w grupach zhierarchizowanych o jasno
określonych celach i zadaniach. Tworzenie programu przypomina budowę katedry jeden wielki system do
wszystkiego powstający i ulepszany bardzo powoli.
Bazar - Oprogramowanie tworzone w sposób rozproszony przez rzesze programistów komunikujących się
niejednokrotnie jedynie przez Internet. Wiele różnych celi i pomysłów weryfikowanych dopiero przez
użytkowników. Tworzenie systemu przypomina rozwój bazaru każdy robi co chce ale przetrwają tylko
pomysły(„stoiska”) najlepsze. Każdy pomysł jest testowany prze użytkowników już w fazie projektowania.
Podstawowe Informacje o Systemie Operacyjnym.
Architektura wg von Neumann’a:
Procesor
Pamięć operacyjna (RAM, ROM, HDD, CD, DVD, PenDrive itd.)
Urządzenia wejścia/wyjścia (monitor klawiatura mysz skaner drukarka głośniki itd.)
System operacyjny (skrót OS Operating System) – oprogramowanie, które zarządza sprzętem oraz
aplikacjami komputera. Pełni ono nadzór nad pracą wszystkich uruchomionych programów, oraz
wszystkich urządzeń komputera. Mimo że swoją pracę wykonuje głównie w tle, i sam nie wystarcza
jeszcze do tego, by komputer był w pełni funkcjonalnym narzędziem, to bez jego pomocy
właściwie nic nie będzie działać.
Interfejs – Udostępniony przez dany program zespół komend zapewniających jednoznaczną
komunikacje pomiędzy tym programem a resztą systemu.
Protokół – zestaw komend pozwalających na komunikację pomiędzy dwoma Interfejsami.
Przerwanie - Mechanizm przerwania polega na tym, że urządz. przesyłają do układu żądanie
obsługi. Procesor kończy wykonywanie bieżącej instrukcji, a następnie przenosi sterowanie do
programu obsługi przerwania. Wyróżniamy przerwania:
1. niemaskowalne – musi takie przerwanie zawsze być obsłużone przez procesor.
Wykorzystywane np. do kontrolowania błędów w pamięci.
2. maskowalne – można wyłączać i włączać obsługę przerwań (procesor może wyłączyć
obsługę przerwań jeżeli nie chcemy przerywać jakiejś aplikacji).
Funkcje systemu operacyjnego:
● zarządzanie zasobami komputera, m.in.: procesorem (a dokładniej czasem procesora),
pamięcią, urządzeniami peryferyjnymi oraz przydzielanie zasobów procesom,
● nadzorowanie pracy użytkownika,
● koordynacja pracy ww. urządzeń poprzez obsługę przerwań oraz odpowiednie na nie
reagowanie,
● ochrona danych i pamięci - tak aby jeden proces, w wyniku błędu lub zamierzonego
działania nie mógł zniszczyć lub pozyskać danych innego procesu,
● automatyzacja najczęściej wykonywanych funkcji,
● ukrywanie przed aplikacjami skomplikowania sprzętu komputerowego przez tworzenie
abstrakcji, np.
● zbiory zapisanych klastrów na dysku widziane są jako pliki o symbolicznych
nazwach,
● abstrakcja równoległości wykonywania programów,
● jednolity sposób dostępu do urządzeń,
Typy systemów operacyjnych:
1.Pod względem sposobu komunikacji z użytkownikiem rozróżniamy:
Systemy tekstowe - komunikujące się za pomocą wydawanych z linii poleceń komend. DOS, Linux
/Unix (zależnie od dystrybucji)
Systemy graficzne - komunikujące się za pomocą graficznych okienek i symboli (ikon) Windows,
Linux, MacOS .
GUI (ang. Graphical User Interface - graficzny interfejs użytkownika) - ogólne określenie sposobu
prezentacji informacji przez komputer polegającego na rysowaniu elementów takich jak okna,
przyciski, rozwijane menu itp. z dokładnością do piksela, w odróżnieniu od interfejsu tekstowego,
gdzie najmniejszą jednostką rysowaną jest znak.
2. Z kolei pod względem architektury, systemy operacyjne dzielimy na:
Jednolite - o najprostszej strukturze „wszystkie funkcje są dostępne dla wszystkich”.
Warstwowe - o hierarchicznej strukturze poleceń systemowych, system może już wykonywać w
tym samym czasie kilka poleceń (np. nadzorować proces drukowania w czasie edycji tekstu w
programie).
Struktura warstwowego systemu operacyjnego:
Użytkownik
Programy użytkowe
Programy systemowe
Powłoka (shell)
API
Jądro (kernel)
Programy obsługi sprzętu (drivers)
Sprzęt
Klient serwer - o bardzo rozbudowanej strukturze, gdzie pełnią nadzór nad podrzędnymi systemami
zainstalowanymi w poszczególnych komputerach sieci. Aplikacje postrzegane są przez system
operacyjny jako "klienci" dostarczających im swoich usług serwerów.
Mikrojądro (ang. microkernel) to rodzaj jądra systemu operacyjnego, które zawiera tylko
najbardziej niezbędne elementy, takie jak funkcje zarządzania wątkami, komunikacją
międzyprocesową, oraz obsługą przerwań i wyjątków. Wszelkie inne zadania, takie jak np. obsługa
systemów plików, sieci, sprzętu realizowane są w przestrzeni użytkownika przez osobne serwery.
Programy obsługi sprzętu (drivers) – umożliwiają komunikację z urządzeniami, dostarczane są
przez producenta sprzętu lub wykorzystują specyfikacje przez niego udostępnione.
Jądro (kernel) – zapewnia wszystkie kluczowe funkcje OS zarządzanie pamięcią,
wielozadaniowość, wielodostępność, posługę systemu plików itd.
API (Application Programming Interface) - programistyczny interfejs aplikacyjny (aplikacji) specyfikacja procedur, funkcji lub interfejsów umożliwiających komunikację systemem
operacyjnym
Programy systemowe - programy zapewniające funkcje systemowe użytkownikowi, operacje
dyskowe, polecenia systemowe.
Programy użytkowe – programu zainstalowane przez użytkownika.
Powłoka (shell) – udostępnia funkcje komunikacji z systemem dla użytkownika.
3. Systemy operacyjne ze względu na sposób przetwarzania można podzielić na:
Systemy przetwarzania bezpośredniego – systemy interakcyjne gdzie występuje bezpośrednia
interakcja pomiędzy użytkownikiem a systemem i wykonywanie zadania użytkownika rozpoczyna
się zaraz po przedłożeniu,
Systemy przetwarzania pośredniego – systemy wsadowe gdzie występuje znacząca zwłoka
czasowa między przedłożeniem a rozpoczęciem wykonywania zadania i niemożliwa jest ingerencja
użytkownika w wykonywanie zadania.
4. Ze względu na dopuszczalną liczbę zadań systemy dzielimy na:
Proces - jest to po prostu egzemplarz wykonywanego programu. Należy odróżnić jednak proces od
wątku - każdy proces posiada własną przestrzeń adresową, natomiast wątki posiadają wspólną
sekcję danych. Każdy proces posiada tzw. "rodzica". W ten sposób tworzy się swego rodzaju
drzewo procesów. Proces może (ale nie musi) mieć swoje procesy potomne.
Systemy jednozadaniowe gdzie niedopuszczalne jest rozpoczęcie wykonywania następnego zadania
użytkownika przed zakończeniem poprzedniego,
Systemy wielozadaniowe gdzie dopuszczalne jest istnienie jednocześnie wielu zadań (procesów),
którym zgodnie z pewną strategią przydzielany jest procesor. Można je podzielić na oferujące i nie
oferujące wywłaszczania. W systemach z wywłaszczaniem może nastąpić przerwanie
wykonywania procesu, odebranie mu procesora i przekazanie sterowania do planisty. Pełne
wywłaszczanie zapewniają mechanizmy sprzętowe działające niezależnie od oprogramowania (na
przykład przerwanie zegarowe). W systemach bez wywłaszczania procesy powinny same dbać o
sprawiedliwy podział czasu, co często uzyskuje się pośrednio - proces dokonując wywołania
systemowego, oddaje sterowanie procesowi jądra, lub jednemu z procesów systemowych i w ten
sposób zrzeka się procesora.
Systemy wielodostępne - jest to cecha systemu operacyjnego mówiąca czy może "jednocześnie"
korzystać z niego kilku użytkowników (na ogół poprzez sieć Lokalną lub Internet).