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.