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(hybrydowe) - 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). Systemy te łączą cechy systemów jednolitych(monolitycznych) oraz systemów pracujących w modelu klient-serwer. 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). 5. Systemy wieloprocesorowe możemy podzielić na: SMP (ang. Symmetric Multiprocessing, przetwarzanie symetryczne) - systemy pozwalające na znaczne zwiększenie mocy obliczeniowej systemu komputerowego poprzez wykorzystanie 2 lub więcej procesorów do jednoczesnego wykonywania zadań. W architekturze SMP każdy procesor może zostać przypisany do wykonywania każdego zadania, tak aby wyrównać obciążenie ("obowiązki" są dzielone "po równo"). W architekturze SMP procesory te współdzielą zasoby pamięci oraz wejścia/wyjścia przy pomocy magistrali. Ważną rzeczą jest wykorzystanie wielowątkowości przez programy komputerowe (oraz obsługa wielowątkowości przez system operacyjny) - upraszcza to możliwość "podzielenia" procesu dla kilku procesorów. Szczególną korzyść z przetwarzania równoległego czerpią aplikacje do renderingu i edycji wideo oraz nowoczesne gry, małą natomiast pakiety biurowe. ASMP (ang. Asymmetric Multiprocessing) - architektura komputerowa, mająca na celu zwiększenie mocy obliczeniowej i funkcjonalności komputera poprzez wykorzystanie kilku procesorów. W architekturze asymetrycznej poszczególne procesory nie są traktowane jednakowo, jak w architekturze symetrycznej, lecz niektórym z nich przydzielane są zadania specjalne. Jeden z procesorów może np. obsługiwać wyłącznie operacje wejścia/wyjścia, podczas gdy pozostałe zajmują się obsługą normalnych aplikacji. Procesory w układzie ASMP mogą mieć dostęp do rozłącznych zestawów urządzeń peryferyjnych. Takie rozwiązanie upraszcza projektowanie systemów, ale ogranicza maksymalną wydajność w porównaniu do architektury symetrycznej. Przykładem zastosowania ASMP w komputerach osobistych, był procesor Intel 80286 współpracujący z koprocesorem numerycznym 80287, który był wykorzystywany tylko do przeprowadzania obliczeń zmiennoprzecinkowych.