Jądro Linux ma prawie 25 lat . Gdybym miał wymyślić krótką wersję dotyczącą historii rozwoju jądra Linuksa od 1991 roku (data jego powstania), aw szczególności od 1994 roku (1.0.0) do dziś, cóż, nie mogłem. Najlepsze, co mogłem zrobić poza przeczytaniem każdej informacji o wydaniu jądra, to dostarczenie następujących, które są ogólnymi funkcjami wydania dodanymi do jądra do wersji 3.11 (uwagi i łącza pominięto):
- Wersja 1.0 jądra systemu Linux została wydana 14 marca 1994 r. To wydanie jądra systemu Linux obsługiwało tylko jednoprocesorowe systemy komputerowe oparte na i386. Przenośność stała się problemem, dlatego wersja 1.2 (wydana 7 marca 1995 r.) Uzyskała wsparcie dla systemów komputerowych wykorzystujących procesory oparte na architekturze Alpha, SPARC i MIPS.
- Wersja 2.0 została wydana 9 czerwca 1996 r. W serii było 41 wydań. Główną cechą 2.0 była obsługa SMP (czyli obsługa wielu procesorów w jednym systemie) i obsługa większej liczby typów procesorów.
- Wersja 2.2 (wydana 26 stycznia 1999 r.) Usunęła globalną blokadę i zapewniła ulepszoną obsługę SMP oraz dodała obsługę architektur m68k i PowerPC, a także nowych systemów plików (w tym wsparcie tylko do odczytu dla NTFS Microsoftu).
- Wersja 2.4.0 , wydana 4 stycznia 2001 r., Zawierała obsługę kart ISA Plug and Play, USB i kart PC. Obejmował także obsługę procesora PA-RISC firmy Hewlett-Packard. Rozwój wersji 2.4.x zmienił się nieco, ponieważ w trakcie trwania serii udostępniono więcej funkcji, w tym: obsługę Bluetooth, Logical Volume Manager (LVM) wersja 1, obsługę RAID, systemy plików InterMezzo i ext3.
- Wersja 2.6.0 została wydana 18 grudnia 2003 r. Rozwój wersji 2.6.x zmienił się dalej w kierunku włączenia nowych funkcji przez cały czas trwania serii. Wśród zmian, które zostały wprowadzone w serii 2.6 są: integracja µClinux ze źródłami jądra głównego, obsługa PAE, obsługa kilku nowych linii procesorów, integracja ALSA ze źródłami jądra głównego, obsługa do 2 32 użytkowników ( od 2 16 ), obsługa do 2 29 identyfikatorów procesów (tylko 64-bitowe, 32-bitowe łuki wciąż ograniczone do 2 15), znacznie zwiększono liczbę typów urządzeń i liczbę urządzeń każdego typu, ulepszono obsługę 64-bitową, obsługę systemów plików obsługujących pliki o wielkości do 16 terabajtów, zapobieganie wbudowaniu w jądro, obsługę rodzimej biblioteki wątków POSIX (NPTL), integracja Linuksa w trybie użytkownika ze źródłami jądra głównego, integracja SELinux ze źródłami jądra głównego, obsługa InfiniBand i wiele więcej. Godne uwagi jest także dodanie kilku systemów plików w wydaniach 2.6.x: FUSE, JFS, XFS, ext4 i więcej. Szczegółowe informacje na temat historii serii jądra 2.6 można znaleźć w plikach ChangeLog w obszarze wydawania kodu źródłowego serii jądra 2.6 na stronie kernel.org.
- Wersja 3.0 została wydana 22 lipca 2011 r. Torvalds ogłosił, że dużą zmianą było „NIC. Absolutnie nic”. 30 maja 2011 roku Torvalds ogłosił: „... upewnijmy się, że naprawdę wydamy następne wydanie nie tylko całkowicie nowej, błyszczącej liczby, ale także dobrego jądra”. Po spodziewanym 6-7 tygodniowym procesie rozwoju, zostanie wydany blisko 20. rocznicy Linuksa.
- W grudniu 2012 r. Torvalds postanowił zmniejszyć złożoność jądra, usuwając obsługę procesorów i386, czyniąc serię jądra 3.7 ostatnią wciąż obsługującą oryginalny procesor. Ta sama seria ujednoliconej obsługi procesora ARM.
- Wersja 3.11 , wydana 2 września 2013 r., Dodaje wiele nowych funkcji, takich jak nowa flaga O_TMPFILE dla open (2) w celu zmniejszenia tymczasowych luk w zabezpieczeniach plików, eksperymentalne dynamiczne zarządzanie energią AMD Radeon, odpytywanie sieci o niskim opóźnieniu i zswap (pamięć podręczna skompresowanej wymiany).
Mogę również dodać, że przez wiele lat teraz Linux Foundation została raportowania na temat rozwoju jądra. Oto najważniejsze informacje o rozwoju jądra na lata 2012–2013:
- Prawie 92 000 zestawów zmian zostało połączonych z 3738 indywidualnych programistów reprezentujących 536 korporacji (o których wiemy).
- Szeroka gama ważnych nowych funkcji została włączona do głównej linii. Obejmują one pełną operację tykania, przestrzenie nazw użytkowników, wirtualizację KVM i Xen dla ARM, śledzenie obciążenia poszczególnych jednostek w harmonogramie, punkt kontrolny / restart przestrzeni użytkownika, 64-bitowa architektura ARM, system plików zorientowany na flash F2FS, wiele usprawnień sieciowych w przypadku problemów z opóźnieniami i buforowaniem bufora dwa niezależne podsystemy zapewniające szybkie buforowanie blokowych urządzeń pamięci masowej i wiele więcej.
- Długotrwała sprzeczka o specyficzne dla Androida funkcje jądra całkowicie zniknęła w tle. Często omawiana funkcja „wakelocków” została cicho zastąpiona innym głównym rozwiązaniem, które jest używane w najnowszych urządzeniach z Androidem.
- W tym okresie znacznie wzrosło użycie zautomatyzowanych narzędzi do znajdowania błędów w jądrach programistycznych. Narzędzia takie jak tester fuzz „trinity” i system kompilacji i rozruchu zero-day znajdują dużą liczbę błędów w jądrach przedpremierowych, skracając cykl programowania i umożliwiając społeczności dostarczanie wydań wyższej jakości.
- Wkład przemysłu mobilnego i osadzonego stale rośnie. Na przykład Linaro, Samsung i TI łącznie przyczyniły się do 4,4% zmian w poprzedniej wersji tego dokumentu; w okresie do 3,10 wniosły one prawie 11% wszystkich zmian.
- Projekt jądra po raz pierwszy uczestniczył w programie Outreach dla kobiet, prowadząc do 41 wniosków na 7 dostępnych stanowisk. Podczas procesu aplikacji do jądra przesłano 374 łaty, a ponad 1/3 z nich została zaakceptowana w wersji jądra 3.10. Proces internowania jest teraz w toku, ale jego wyniki nie zaczną się pojawiać, dopóki nie zostaną wydane przyszłe jądra.
Co więcej, kwantyfikacja tego , co dzieje się z jądrem, nie jest bardzo trudna, ponieważ mamy wskaźniki poza poszczególnymi zatwierdzeniami . Na przykład wiemy, że jądro 1.0.0 w 1994 roku miało 176 250 linii kodu; i wiemy, że współczesne jądro, takie jak 3.10, ma 15 803 499 linii kodu. Znacznie więcej. Częstotliwość wydawania jądra wzrosła (63 dni dla 3.10), a także tempo zmian (9 zatwierdzeń na godzinę lub więcej, kiedy mówimy). Cytując Linux Foundation:
Zdolność do utrzymania tego tempa zmian przez lata nie ma precedensu w żadnym poprzednim publicznym projekcie oprogramowania.
Ale to wszystko nie wydaje mi się wglądem. Dlatego zapytałbym:
- Może to ćwierć wieku ewolucji być doraźnym kwalifikacje poza liniowej oprócz wszystkich wymienionych cech, które tworzą tego jądra w czasie?
- Czy to daje wgląd w to, o co chodzi w jądrze Linuksa i dokąd zmierza? Po 25 latach rozwoju można z pewnością wyciągnąć pewne wnioski?
Poszukuję abstrakcyjnej odpowiedzi w kategoriach laika, która mówi wszystko bez uciekania się do powiedzenia wszystkiego.
Odpowiedzi:
Ty pytasz:
Wątpię, aby takie pytania miały dobrze zdefiniowane odpowiedzi. Myślę jednak, że nie jest trudno zrozumieć siły, które napędzają rozwój jądra Linuksa.
Po pierwsze, komputery są coraz ważniejszymi rzeczami. Chomsky zauważa gdzieś, że są kluczowe dla każdej uprzemysłowionej gospodarki. Komputer jest niczym bez systemu operacyjnego, co sprawia, że systemy operacyjne są ważne.
Przez pewien czas w latach 80. i 90. opatentowane systemy operacyjne stały się coraz bardziej popularne. W pewnym sensie był to nienaturalny stan rzeczy. Windows Microsoftu był przez pewien czas dominujący i w pewnym sensie nadal taki jest, ale utrzymał swoją pozycję jedynie dzięki wykorzystaniu efektów sieciowych.
Wraz z rozwojem Internetu stało się możliwe stworzenie systemu operacyjnego dla społeczności. Taki system operacyjny byłby jednak użyteczny tylko wtedy, gdyby nie mógł być z kolei zastrzeżony. Rodzina systemów operacyjnych BSD nie należała do tej kategorii. Stąd powstanie jądra Linuksa jako serca systemu operacyjnego społeczności, którego nie można opatentować.
Zauważ, że wielu dużych dostawców komputerów ma jądro Linuksa. Dlaczego? Ludzie dbają o wolność. Społeczności dbają o wolność. Korporacje dbają tylko o zysk i powiązane strategie. Wierzę, że wiele korporacji komputerowych pogodziło się z pojęciem „utowarowionego” systemu operacyjnego, „równych szans”, jeśli wolisz. Przyjrzeli się przykładowi Microsoft zarabiającego dużo pieniędzy na własności systemu operacyjnego, ale nie każdy może być Microsoftem, a posiadanie jednego dostawcy w takiej pozycji władzy jest, mówiąc delikatnie, najmniej problematyczne, choćby dlatego, że daje stanowią nieuczciwą przewagę z punktu widzenia innych korporacji.
Myślę więc, że skoro większość korporacji nie jest w stanie zostać Microsoftem, a być może nie chce, zdecydowała się na wsparcie systemu operacyjnego „towarowego”. Ponownie, równe szanse. W ten sposób każdy może korzystać z tego systemu operacyjnego do dowolnych celów, a nikt w grupie nie ma przewagi nad kimkolwiek innym. Innym sposobem patrzenia na to, że posiadanie czegoś tak podstawowego, jak system operacyjny jest zastrzeżony, jest poważna ingerencja w zasady wolnego rynku. Ogólnie rzecz biorąc, korporacje nie są specjalnie zwolennikami wolnego rynku, jeśli mogą być po stronie wygrywającej, ale jeśli nie mogą, to są.
Większość cech jądra Linuksa można naprawdę wywnioskować z tej dynamiki. Na przykład modułowa i plastyczna natura systemu operacyjnego typu Unix jest dobrze dostosowana do systemu operacyjnego, który został zaprojektowany jako „towar”. Częściowo szybko zmieniający się charakter projektu jądra wynika z tego, że stara się on zaspokoić wszystkie te korporacyjne wymagania, aby być tym, czym powinien być. Podczas gdy duża aktywność koncentruje się wokół wsparcia / sterowników sprzętowych, istnieje również duża aktywność poza tym obszarem; ciągły rozwój nowych funkcji oraz utrzymanie i doskonalenie już istniejących.
Oczywiście nie powinniśmy lekceważyć pragnień społeczności, zwanej potocznie społecznością wolnego oprogramowania, a czasem FOSS (wolnego i otwartego oprogramowania), aby mieć darmowy system operacyjny dla zwykłych ludzi, który nie jest kontrolowany przez korporacje. W końcu projekty takie jak Debian i Fedora są prowadzone przez wolontariuszy, którzy wierzą w te wartości. Uważam jednak, że roli, jaką odgrywają korporacje, również nie należy lekceważyć.
źródło