osdev.labedz.org

GNU Linux

Narodziny systemu GNU Linux można datować na rok 1991, w tym czasie bowiem fiński student zainteresowany wczesnymi wersjami systemu operacyjnego Minix postanowił na jego podstawie opracować jądro swojego własnego systemu, wykorzystujące nowo wprowadzoną architekturę procesora Intel386. Pierwsza wersja systemu, obsługująca prosty system plików, oraz posiadająca kompilator i prosty interpreter poleceń pojawiła się wraz z kodem źródłowym na internetowej liście dyskusyjnej dotyczącej programowania i praktycznie od razu wzbudziła duże zainteresowanie. Spontaniczny charakter prac oraz pełen dostęp do kodu źródłowego systemu wpłynęły na tempo rozwoju systemu, które stało się bardzo dynamiczne. Ogromna rzesza programistów z całego świata, pracujących głównie dla satysfakcji i przyjemności, chętnie dokłada swoje trzy wartościowe grosze do tego, by system był coraz lepszy i wydajniejszy.

W roku 1999 następuje wielkie zauroczenie tym systemem i gazety o tematyce komputerowej zaczęły coraz mocniej rozpisywać się na temat Linux'a. Wiele komercyjnych firm odkrywa przy tym nowe źródło dochodu, a entuzjastyczne wypowiedzi na temat systemu Linux sprawiają, że staje się on coraz bardziej popularny i zostaje wykorzystywany w coraz to większej ilości dziedzin.

System swą olbrzymią popularność zyskał przede wszystkim dzięki udostępnieniu całego kodu źródłowego za darmo w Internecie, oraz wysokiej zgodności ze standardem POSIX, co sprawia, że może on być wykorzystywany w zastępstwie komercyjnych systemów operacyjnych z rodziny UNIX'a. Przełomem jednak w rozpowszechnieniu tego systemu było wprowadzenie tzw. dystrybucji - czyli gotowych skompilowanych już pakietów Linux'a wraz z wieloma dodatkowymi programami użytkowymi. Wprowadzenie dystrybucji spowodowało, że system ten przestał być systemem 'elitarnym', dostępnym jedynie ludziom znającym jego budowę i zasadę działania, przez co potrafiących poprawnie go skompilować i skonfigurować. Obecnie większość dystrybucji można zainstalować na komputerze osobistym bez głębszego wnikania w szczegóły - program instalatora sam zajmuje się najważniejszymi problemami konfiguracyjnymi i po starcie systemu komputer jest zazwyczaj od razu gotowy do działania.

Obecnie system GNU Linux to przede wszystkim:

  • wysokowydajny system 32/64-bitowy w pełni wykorzystujący architekturę procesora (łącznie z najnowszymi instrukcjami SIMD czy technologiami HyperThread
  • jądro oparte na modelu jądra monolitycznego
  • system wieloprocesowy, wieloużytkownikowy, wielowątkowy
  • system obsługujący praktycznie każdy stosowany obecnie system plików
  • system obsługujących większość dostępnych urządzeń zewnętrznych
  • system obsługujący w wydajny sposób większość obecnie stosowanych protokołów sieciowych
  • system na który istnieje i ciągle jest rozwijane oprogramowanie z każdej dziedziny
  • system, którego jakikolwiek wykryty błąd poprawiany jest najczęściej w ciągu kilku dni

O jakości systemu GNU Linux najlepiej świadczy to, że w ostatnich latach stał się praktycznie standardem, i zaczął być traktowany jako profesjonalna platforma stosowana praktycznie w każdej dziedzinie rynku komputerowego (od obsługi serwerów internetowych, poprzez stacje robocze i komputery osobiste, aż do roli systemu w systemach wbudowanych).

Pomimo jednak swoich niewątpliwych zalet, system Linux nie jest idealnym systemem operacyjnym na podstawie którego można by prowadzić edukację na temat implementacji systemów operacyjnych. Przede wszystkim, twórcom Linux'a, zależy na jak największej efektywności i uniwersalności systemu. Poprzez zastosowanie wielu metod optymalizacji, kod Linux'a nie jest łatwy do interpretacji, a istnienie wielu warunkowych wykonań i kompilacji procedur powoduje, że w kodach źródłowych tego systemu łatwo jest się zagubić (przykładem może być kilka rodzai procedur takich jak memcpy(), które w zależności od zastosowanego procesora komputera wykorzystują różne mechanizmy - MMX, 3DNow! itp.).

Kolejnym problemem jest obszerność kodu jądra tego systemu. Ponieważ jądro jest modelu monolitycznego, wszystkie niezbędne moduły systemowe zostają wbudowane w jeden plik obiektowy. Model 'wszystko w jednym' nie ułatwia zrozumienia zasady działania, oraz funkcji poszczególnych procedur. Kod źródłowy jądra Linux'a w wersji 2.6.7 ma wielkość 219Mb.

Jeżeli chcemy wykorzystać Linux'a jako system edukacyjny, bądź jako pomoc w implementowanym samodzielnie systemie, warto jest się zapoznać z jego wcześniejszymi wersjami (szczególnie < 2.0).