Czy 25 lat rozwoju jądra Linuksa można zakwalifikować lub streścić w kategoriach laika? [Zamknięte]

12

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:

  1. 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?
  2. 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.


źródło
„wsparcie dla maksymalnie 229 identyfikatorów procesów” wyskoczyło na mnie, więc przejrzałem to, a jedynym odniesieniem jest, jak się wydaje, oryginalne źródło tego akapitu . Myślałem, że identyfikatory procesów mają (podpisany) 16-bitowy zakres, tj. ~ 16 000, ale w rzeczywistości może to być znacznie więcej . Z pewnością nie jest to kilkaset.
goldilocks,
3
To pytanie jest zbyt ogólne, ponieważ szuka artykułu w Wikipedii na ten temat.
Gilles 'SO - przestań być zły'
Czy zamierzasz tutaj napisać artykuł? W porządku, ale pomogłoby, mądre porady, jeśli jesteś konkretny w tym, co próbujesz zrobić. Przypuszczam, że nie jest to tylko dobre podsumowanie na następny wieczór w lokalnej wodopoju;)
złotowłosa
1
Przypominam sobie, że przynajmniej kilka osób planuje pisać rozprawy na ten lub podobny temat. Podejrzewam, że znajdziesz literaturę akademicką na ten temat ... Poza wskazaniem na istniejące publikacje, wydaje się, że twoje pytania wymagałyby miesięcy badań, aby odpowiedzieć.
derobert
Na twoje pytanie, może musisz powiedzieć nam o warunkach dla laika, aby uzyskać dobrą odpowiedź tutaj. Poza tym, opublikuj to na lkml i uzyskaj informację zwrotną na temat twojej chronologii. Jeśli przegapiłeś coś ważnego, dadzą Ci znać.
Bananguin,

Odpowiedzi:

11

Ty pytasz:

Czy tę ewolucję ćwierć wieku można podsumować poza liniowe dodanie wszystkich wymienionych funkcji, które składają się na to jądro z czasem? Czy to daje wgląd w to, o co chodzi w jądrze Linuksa i dokąd zmierza?

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ć.

Faheem Mitha
źródło
1
+1 Za podniesienie kwestii sił społeczno-politycznych, które sprawiły, że Linux w połączeniu z GNU jest oszałamiający w głównym nurcie. Myślę, że jest to bardzo istotny aspekt początków, który choć może wydawać się „kwestią nietechniczną”, jest w rzeczywistości cechą decydującą o rozwoju systemu operacyjnego - patrz w szczególności pisma Erica S. Raymonda - i znaczna część dynamiki jego przyjmowania przez wielu producentów sprzętu i jako historycznie dominująca platforma internetowa.
goldilocks,
^ Uwaga Wiele osób ma jądra Linux w swoim domu i nawet nie wiem, to z tego powodu (routera, twoja skrzynka DVR, itd.)
Złotowłosa
Pochwalam twoją odpowiedź za umiejscowienie jądra na czas i odwołanie się do dominującej dynamiki - ewolucji komputerów; odwołanie biznesowe; siły rynkowe; internet; wolność przetwarzania; koncesjonowanie; i jak wszystkie powyższe mają wpływ na implementację w jądrze, z perspektywą na Linuksa jako całość. Muszę przeczytać w pańskim oświadczeniu o „nienaturalnym stanie rzeczy”, że możemy nie mieć historycznej perspektywy, aby właściwie to ocenić - i to jest ważne. Mimo że naprawdę skupiłem się na jądrze per se, pomyślę więcej o twoich uwagach i komentarzach powyżej. Dzięki!
1
@goldilocks: Nie wspominając o telefonach z Androidem.
slebetman