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).