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.