Dlaczego Linux działa dobrze na wielu różnych typach komputerów - komputerach stacjonarnych, laptopach, serwerach, urządzeniach wbudowanych, telefonach komórkowych itp.? Czy to głównie dlatego, że system jest otwarty, więc dowolną jego część można zmodyfikować do pracy w różnych środowiskach? A może istnieją inne właściwości jądra i / lub systemu Linux, które ułatwiają temu systemowi operacyjnemu pracę na tak szerokiej gamie platform?
22
Odpowiedzi:
Chociaż otwartość jest z pewnością częścią tego, myślę, że kluczowym czynnikiem jest ciągłe naleganie Linusa Torvalda, że cała praca, od dużych do małych, ma miejsce w głównym jądrze Linuksa, o ile jest dobrze wykonana. Gdyby w pewnym momencie postanowił narysować linię i powiedzieć „okej, w przypadku tego fantazyjnego superkomputera potrzebujemy rozwidlenia”, to mogłyby powstać zupełnie osobne warianty high-end i małego systemu. Tymczasem ludzie wykonali cięższą pracę, aby wszystko grało się stosunkowo dobrze.
I kludges, które umożliwiają jedną stronę rzeczy ze szkodą dla drugiej, generalnie nie są dozwolone - znowu, zmuszając ludzi do rozwiązywania problemów w trudniejszy, ale bardziej poprawny sposób, co zwykle okazuje się łatwiejsze kiedy tylko będzie to konieczne, kludge staje się historycznym przypisem.
Z wywiadu sprzed kilku lat :
źródło
Linux skaluje się do wielu różnych typów sprzętu, ponieważ:
źródło
fork
jest możliwe ifork
nie da się tego zrobić w rozsądny sposób na nie-wirtualnym systemie pamięci. Chociaż wskazane porty prawdopodobnie używają części jądra systemu Linux i mogą uruchamiać niektóre oprogramowanie systemu Linux, w przeważającej części wydaje się, że interfejsy API udostępniane przez te porty są inne niż typowe jądra systemu Linux. (Przykład: mapowanie pamięci - co oczywiście wymaga pamięci wirtualnej)Jądro Linuksa skaluje się dobrze, ponieważ takie jest. Jądro rdzenia jest stosunkowo małe i robi to, co musi zrobić. Sterowniki urządzeń są opcjonalne i można je pominąć w jądrze w przypadku mniejszych systemów. Poza minimalnymi wymaganiami jądra większość funkcji jest implementowana jako funkcje opcjonalne.
Spójrz na plik konfiguracyjny zainstalowany obok większości jąder. Spowoduje to wyświetlenie wszystkich funkcji, które zostały włączone, a także obsługiwanych sterowników.
Sterowniki są obsługiwane albo wbudowane w jądro, albo jako moduły ładowalne. Pozwala to dynamicznie konfigurować jądro do sprzętu, na którym działa. Takie podejście stosuje wiele dystrybucji.
Poza narzędziami do kompilacji modyfikowanie jądra pod kątem nowego sprzętu jest stosunkowo proste. W przypadku nowego procesora tylko powiązany kod musi zostać zaimplementowany jako modyfikacja istniejącej funkcjonalności. Nowe urządzenia wymagają tylko nowego sterownika z odpowiednimi zaczepami. Nowe systemy plików są również stosunkowo trywialnymi modyfikacjami.
Baza kodu została dobrze utrzymana, aby zachować tę elastyczność bez zewnętrznego rozwidlenia. Kompilacja warunkowa napędza bardzo elastyczne jądro, które zostało ograniczone do minimum.
źródło
Brakuje mi szczegółowej wiedzy technicznej, aby poprzeć tę odpowiedź, ale moje doświadczenie sugeruje, że Linux dobrze się skaluje w porównaniu do innych systemów operacyjnych, których często używam (przede wszystkim Windows). Być może więc pytanie brzmi: dlaczego Windows nie skaluje się tak dobrze jak Linux.
Jeśli ponowne sformułowanie pytania w ten sposób jest nadal przydatne, sugerowałbym, aby siły rynkowe motywowały Microsoft do dodawania funkcji dostosowanych do najnowszego i najbardziej wydajnego sprzętu, ponieważ sprzedają więcej kopii systemu operacyjnego przede wszystkim wtedy, gdy użytkownicy końcowi kupują nowe systemy . Tak więc w dowolnym momencie stwierdzam, że najnowsza wersja systemu Windows słabo działa na starszych, mniej wydajnych urządzeniach.
Wybacz mi, jeśli to uprości twoje pytanie.
źródło