Subsections


1 Badane systemy operacyjne

Wszystkie omawiane w pracy systemy operacyjne są systemami podobnymi do Uniksa (ang. UNIX-like; stosowany jest też polski termin systemy uniksowe), dostępnymi za darmo wraz z pełnym kodem źródłowym. Licencje zezwalają na bezpłatne wykorzystywanie tych systemów do dowolnych celów, choć w niektórych przypadkach nakładają ograniczenia na redystrybucję kodu źródłowego, kodu wynikowego i programów opartych na produkcie objętym licencją.

Z punktu widzenia architektury systemów, można wyszczególnić wiele cech wspólnych (zob. np. [Beck 99], [Mock 98]):

1 System Linux

1 Rys historyczny

Początki Linuksa sięgają 1991 roku, gdy student informatyki Uniwersytetu Helsińskiego Linus Benedict Torvalds zbudował prototypową wersję jądra systemu (oznaczoną numerem 0.02) i udostępnił ją w Internecie. Celem było stworzenie odpowiednika Miniksa1 działającego na komputerach z procesorem Intel 80386, wykorzystującego niektóre z możliwości oferowanych przez ten procesor w trybie chronionym (np. szybkie przełączanie zadań). System został entuzjastycznie przyjęty przez pasjonatów z całego świata, którzy wraz z autorem zaczęli pracować nad jego rozwojem w celu implementacji standardów POSIX2. Przyjęto rozproszony model rozwoju, w którym poszczególne części systemu były tworzone i poprawiane przez niezależnych programistów, natomiast koordynacją całości zajmował się Linus Torvalds. Narzędzi systemowych nie budowano od podstaw, lecz zaadaptowano do tego celu oprogramowanie GNU stworzone przez Free Software Foundation. Od wersji 2.0, udostępnionej w roku 1996, można datować popularność Linuksa wśród zwykłych użytkowników, nie zainteresowanych szczegółami teoretycznymi ani technicznymi architektury systemów operacyjnych.

2 Właściwości systemu

Terminu Linux używa się na określenie jądra systemu. Cała reszta oprogramowania potrzebnego do pracy systemu pochodzi z zewnętrznych źródeł i składa się na tzw. dystrybucje, utrzymywane przez osoby lub organizacje niezależne od twórców jądra. Z tego powodu zwykle bezcelowe jest mówienie o właściwościach Linuksa, jeśli nie odnoszą się one do jądra systemu.

Linux może działać na platformach sprzętowych: Alpha, ARM, rodzina Intel 386, rodzina Motorola 68000, MIPS, PowerPC, S390, SPARC i SPARC 64. Dostępna jest obsługa systemów plików pochodzących z innych systemów operacyjnych (np. FAT, VFAT, FAT32 i NTFS z systemów MS DOS i MS Windows, UFS z systemów wywodzących się z Berkeley), systemu plików ISO9660 używanego na płytach CD-ROM, a także sieciowych systemów plików (np. NFS, SMB).

Oto inne cechy warte wymienienia.

Wersje Linuksa numeruje się przy użyciu trzech liczb oddzielonych kropkami. Liczby te określają kolejno: numer główny (ang. version), numer łaty (ang. patch level) i numer podrzędny (ang. sublevel). Wyróżniamy wersje rozwojowe -- takie, dla których numer łaty jest liczbą nieparzystą, oraz wersje stabilne, o parzystym numerze łaty. Przedmiotem analizy niniejszej pracy jest wersja stabilna oznaczona numerem 2.2.16.

2 Systemy oparte na 4.4BSD

1 Rozwój systemów klasy BSD

FreeBSD, NetBSD i OpenBSD to implementacje wywodzące się z systemu Berkeley. BSD jest skrótem angielskiej nazwy Berkeley Software Distribution -- Dystrybucja Oprogramowania z Berkeley. Kod źródłowy tego oprogramowania jest opracowywany i udostępniany przez Zespół Badań nad Systemami Komputerowymi (ang. Computer Systems Research Group, w skrócie CSRG), działający na Uniwersytecie Kalifornijskim w Berkeley. Stevens [Stevens 98b] podaje następującą chronologię udostępniania wersji 4.x systemu BSD3:

Dodatkowo były wypuszczane tzw. BSD Networking Releases -- wersje, które nie stanowiły kompletnych systemów operacyjnych, ale zawierały pełny kod sieciowy: protokoły, procedury jądra dla interfejsu sieciowego oraz wiele aplikacji i programów narzędziowych. Ukazały się następujące wersje: W roku 1992 William Jolitz przeniósł kod Net/2 na platformę Intel 386. Na tej bazie został utworzony 386BSD -- darmowy, ogólnodostępny system dla komputerów klasy PC, wyposażonych w procesory z rodziny Intel 386. Zastój w pracach nad rozwojem wersji 0.1 386BSD4spowodował rozpoczęcie prac nad dwoma nowymi projektami: FreeBSD, początkowo tworzonym wyłącznie dla platformy Intel 386, oraz NetBSD, pomyślanym jako system wieloplatformowy. Pierwsze ich wersje ukazały się w roku 1993. Po wypuszczeniu wersji 1.0 systemu 386BSD prace nad nim zakończyły się. Porozumienie między Uniwersytetem Kalifornijskim a firmą Novell, zawarte w roku 1994, zabraniało dalszego użytkowania kodu Net/2 grupie CSRG i wszystkim dostawcom nie związanym z firmą Novell. Efektem była konieczność oparcia kolejnych wersji systemów na niekompletnych źródłach 4.4BSD-Lite i związane z tym opóźnienie w rozwoju FreeBSD i NetBSD. Niedługo potem z NetBSD wydzielił się nowy system -- OpenBSD. W chwili obecnej FreeBSD, NetBSD i OpenBSD są nadal rozwijane przez niezależne grupy, natomiast rozwój kodu w CSRG został zakończony. W niniejszej pracy systemy FreeBSD, NetBSD i OpenBSD będą określane mianem systemów BSD. Aby nie powodować nieporozumień, na określenie dowolnych systemów opartych na źródłach z CSRG będzie używany termin implementacje wywodzące się z systemu Berkeley (za [Stevens 98b]).

2 Wspólne cechy systemów BSD

Jedną z najważniejszych cech zewnętrznych odróżniających systemy BSD od Linuksa jest traktowanie systemu operacyjnego jako całości. Oznacza to, że twórcy systemu pracują nie tylko na rozwojem jądra, ale również nad zestawem programów systemowych działających w trybie użytkownika (np. biblioteka C), nad narzędziami systemowymi i aplikacjami użytkowymi, niezbędnymi do efektywnego wykorzystywania systemu w rozmaitych zastosowaniach. Oznacza to także, iż dla każdego z systemów BSD istnieje tylko jedna dystrybucja -- ta, która jest rozprowadzana wraz z jądrem. Dzięki temu zazwyczaj występuje mniej problemów, niż w dystrybucjach Linuksa, ze wzajemnym dopasowaniem różnych komponentów systemu.

Oprogramowanie dostępne dla systemów BSD składa się nie tylko z programów rozprowadzanych z tymi systemami -- można korzystać również z dużej liczby programów pochodzących z zewnątrz i przeniesionych do systemów FreeBSD, OpenBSD i NetBSD. Kolekcja takich programów nosi angielską nazwę ports i składa się z różnorakich narzędzi rozszerzających funkcjonalność systemu (np. dla FreeBSD dostępnych jest ponad 1000 takich pakietów). Przygotowywana jest ona przez autorów systemu, aby zapobiec sytuacji niedopasowania danej wersji narzędzia do danej wersji systemu.

Dostęp do źródeł systemów BSD można uzyskać przy użyciu oprogramowania CVS (Concurrent Versions System). Pozwala to m. in. na otrzymanie w dowolnym punkcie czasu wersji kodu o wybranym numerze, jak i na wspólną pracę nad kodem wielu programistów przy zachowaniu pełnej kontroli wprowadzanych zmian.

W przeciwieństwie do rozproszonego modelu rozwoju Linuksa, z każdym z systemów BSD jest związany zespół odpowiedzialny (ang. core team), który koordynuje zmiany wprowadzane do systemu. Niektórzy z członków zespołu odpowiedzialnego mogą mieć przydzielone zakresy zagadnień, za które odpowiadają osobiście. Wszelkie poprawki nadsyłane przez użytkowników są najpierw analizowane przez zespół odpowiedzialny, zanim będą mogły zostać włączone do systemu. Efektem takiego podejścia jest mniejsza szansa pojawienia się w systemie kodu niskiej jakości, jednak można zauważyć opóźnienia we wprowadzaniu nowych technologii, a szczególnie programów obsługi nowych urządzeń sprzętowych. W rezultacie systemy BSD sprawdzają się dobrze jako oprogramowanie dla stabilnych serwerów sieciowych, natomiast gorzej wypadają jako systemy dla roboczych stacji multimedialnych.

3 System FreeBSD

FreeBSD jest systemem operacyjnym zbudowanym w oparciu o źródła 4.4BSD-Lite, a także -- pośrednio -- źródła 386BSD, stanowiące implementację kodu Net/2 dla platformy Intel 386. Wiele komponentów systemu zostało też stworzonych przez Free Software Foundation. Projekt FreeBSD zainicjowali w roku 1993 Jordan K. Hubbard, Nate Williams i Rod Grimes. Celem twórców FreeBSD jest dostarczanie systemu operacyjnego ogólnego przeznaczenia, który można używać do dowolnych celów bez żadnych ograniczeń ani opłat finansowych.

System może działać na architekturach z rodziny Intel 386 oraz Alpha, włączając w to maszyny wieloprocesorowe. Pod kontrolą FreeBSD można uruchamiać programy natywne oraz skompilowane dla systemów takich jak SCO, BSDI, NetBSD, Linux i 386BSD. Po skompilowaniu jądra systemu z odpowiednią opcją można korzystać z linuksowych systemów plików (typu ext2).

Najczęściej spotykanym zastosowaniem FreeBSD jest użycie go w roli serwera internetowego. Klasycznym przykładem jest tu popularny serwer ftp.cdrom.com, działający na komputerze klasy PC. Obok serwerów WWW i FTP często spotyka się serwery dostępu do Internetu po linii szeregowej pracujące na bazie protokołów PPP i SLIP oraz serwery poczty, używane przez dostawców Internetu (ang. ISP -- Internet Service Providers).

Można wyróżnić rozwojowe (ang. current) oraz stabilne (ang. stable) wersje systemu. W niniejszej pracy będzie analizowana wersja 4.0-STABLE.

4 System NetBSD

NetBSD to bezpłatny system uniksowy o ogólnie dostępnych źródłach, tworzony przez organizację non-profit NetBSD Foundation. Sięga on korzeniami systemu 4.3BSD, z którego źródła zaczerpnięto w sposób pośredni: poprzez dystrybucję Net/2 oraz system 386BSD. Pierwszą publicznie dostępną dystrybucją NetBSD, oznaczoną numerem 0.8, wypuszczono w kwietniu 1993 roku. W trakcie późniejszych prac nad systemem dołączono do niego kod pochodzący z wielu źródeł, w szczególności z dystrybucji 4.4BSD-Lite i 4.4BSD-Lite2.

Od samego początku system miał być w założeniach dostępny na jak największą liczbę platform sprzętowych. Wersja 1.4.1 NetBSD działa na następujących architekturach: Alpha, Amiga, ARM 32, Atari, HP 300, rodzina Intel 386, rodzina Motorola 68000, PowerPC, Next, PMax, SPARC, SUN 3 i VAX5. W przeciwieństwie do systemów, które wyrosły z jednej architektury, a potem rozwinęły się w kierunku następnych (Linux, FreeBSD), NetBSD wyróżnia się źródłami, w których wyraźnie oddzielono części zależne od architektury i części niezależne. Zasada ta rozciąga się także na sterowniki urządzeń sprzętowych.

W niniejszej pracy zostaną wykonane pomiary dla wersji 1.4.1 systemu NetBSD.

5 System OpenBSD

OpenBSD to darmowy system oparty na źródłach Net/2, 4.4BSD-Lite i 4.4BSDLite-2, dostępny na zasadach licencji BSD. Bezpośrednim prekursorem pierwszej wersji OpenBSD był system NetBSD 1.1. OpenBSD jest rozwijany przez międzynarodową grupę programistów, których prace koordynowane są w Kanadzie przez Theo de Raadta. Twórcy systemu kładą nacisk przede wszystkim na bezpieczeństwo, przenośność kodu, stabilność systemu i zgodność z otwartymi standardami.

Wszystkie ważne ze względów bezpieczeństwa części systemu zostały sprawdzone pod kątem potencjalnych błędów i innych problemów. Instalacje OpenBSD zawierają oprogramowanie pozwalające konstruować prywatne sieci wirtualne (ang. Virtual Private Networks) i zapory ogniowe (ang. firewalls), jak też szereg innych pakietów poprawiających bezpieczeństwo pojedynczych komputerów i systemów rozproszonych. Dzięki umieszczeniu centrum dystrybucji w Kanadzie, na system nie zostały nałożone amerykańskie przepisy ograniczające eksport technik kryptograficznych. OpenBSD jest uważany przez ekspertów od bezpieczeństwa -- pomimo kontrowersji -- za jeden z najbezpieczniejszych systemów uniksowych, wliczając w to również rozwiązania komercyjne. Najważniejszym obszarem zastosowań OpenBSD jest budowanie systemów komputerowych, w których czynnik bezpieczeństwa odgrywa główną rolę.

Pod kontrolą OpenBSD można uruchamiać programy natywne oraz skompilowane dla systemów takich jak FreeBSD, Linux, BSDI, SunOS, SVR4 (w tym Solaris) czy HPUX. Po skompilowaniu jądra systemu z odpowiednią opcją możliwe jest korzystanie z linuksowych systemów plików (typu ext2).

OpenBSD działa na wielu popularnych architekturach sprzętowych: rodzina Intel 386, SPARC, Alpha, HP 300, Amiga, rodzina Motorola 68000, PowerPC, PMax i MVME 88000. Z powodu małego zainteresowania nie są rozwijane instalacje systemu dla sprzętu ARM i MVME 68000 (były one dostępne we wcześniejszych wersjach). Przeniesienie OpenBSD na te platformy, dla których istnieją instalacje NetBSD, jest zadaniem względnie prostym dzięki wspólnym korzeniom obu systemów.

W niniejszej pracy zostaną wykonane pomiary dla wersji 2.6 systemu OpenBSD.



Footnotes

... Miniksa1
Minix był okrojonym systemem podobnym do Uniksa, stworzonym przez profesora Andrew Tanenbauma do celów badawczo-dydaktycznych.
... POSIX2
Jest to zbiór standardów definiujących wywołania systemowe i interfejsy systemów uniksowych, opracowany przez Institute of Electrical and Electronics Engineers dla American National Standards Institute. Skrót POSIX pochodzi od angielskiej nazwy Portable Operating System Interface for Computer Environments.
... BSD3
Dokładniejsze drzewo historii można znaleźć w pliku /usr/src/share/misc/bsd-family-tree, dostępnym w instalacjach systemów BSD.
... 386BSD4
A także niechęć Jolitza do włączania poprawek zgłaszanych przez użytkowników systemu -- zob. [Mock 98].
... i VAX5
Istnieją też niekompletne instalacje na kilka dalszych platform, zob. http://www.netbsd.org/.