Pisanie nowego kernela - kilka pytań

Pisanie nowego kernela - kilka pytań
0

Witam, mam takie pytanie dlaczego twórcy nowych kernelów nie podzielą ich sprzętowo. Na przykład taki Linux, tworząc nową wersję kernela nie podzieli go na nową serię 5.xx, gdzie w tym wydaniu będzie tylko wsparcie procesorów od AMD Ryzen r3, r5, r7, oraz intel i3, i5, i7 z serii 7xxx, 8xxx. To samo dotyczy to najnowszych kart graficznych od serii Nvidia Geforce 1xxx, AMD Radeon FX 5xx, oraz inne sterowniki czy to sieciowe, WiFi z tego roku. A wszystko co do tej pory było wspierane zostawić, te starocie w kernelu 4.13.x. Przecież te stare jądra systemu Linux pamiętają jeszcze standard języka programowania C 89. To jest trochę podobna metoda działania do polityki Apple, gdzie wybierają tylko dany sprzęt i piszą pod niego sterowniki w swoim systemie. Czy jak by Linus Torvalds zgodził się na taki plan wydawniczy, oddzielając kernele na te wspierające tylko nowy najnowszy sprzęt, to nie przyspieszyło by to znacznie jądra systemu? Zapewne bardzo by go odchudziło, można by było programować w jednym najnowszym standardzie, korzystając z najlepszych dostępnych technik i bibliotek. Może nawet mogli by zmienić język programowania na taki C++17 lub Rust. Pozbyli by się naleciałości zamierzchłych czasów, wadliwego dziurawego kodu, poprawiło by się bezpieczeństwo. Przecież 4 września zgodnie z harmonogramem, Linus Torvalds wydał wersję 4.13 kernela, wciąż pod nazwą kodową Fearless Coyote. Ponad 14 tys. commitów, ponad 600 tys. nowych wierszy kodu. Nie wierze że przy takim wsparciu jednostki ludzkiej, nie mogli by podzielić tych programistów na dwie grupy. Gdzie jedna z nich zajmowała by się tą nową wersją nowoczesnego kernela z serii 5.xx pod najnowszy sprzęt. Tu mam takie pytanie, do tych którzy orientują się w tych nowych systemach takich jak HaikuOS(C++), RedoxOS(Rust). Zapewne one wspierają jakieś w miarę nowe procesory, karty, dlatego że powstały dużo później niż systemy Linux, BSD?

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:dzień
0
  1. Linuks dalej działa na abstrakcyjnych dla Ciebie platformach. I robi to cały czas (Xeony na serwerach, ARM w smartfonach, 8080 na stacjach kosmicznych, inne ezoteryczne platformy w miliardach innych miejsc).
  2. W samym rdzeniu nie ma tak dużo różnic pomiędzy "nowymi" x86 a "starymi", SIMD nie istnieje, FPU i reszta też. Więc tak na prawdę różnic w samym działaniu rdzenia między Pentium 4 a AMD Ryzen r7 nie ma tak dużo.
  3. To samo tyczy się sterowników. Pamiętaj, że większość instancji Linuksa to nie są komputery domowe a serwery i telefony.
  4. To samo tyczy się standardu C. Chodzi o to, by każdy kompilator był w stanie to skompilować.

A tak BTW:

Jak przekonasz Linusa by użył C++ to masz u mnie piwo. Dobre piwo. Całą skrzynkę dobrego piwa.


0

Ale nadal by ten egzotyczny sprzęt działał, tylko by był rozwijany w innej numeracji jądra. Linus kiedyś powiedział, że widział jakie potrafią pisać programiści potworki z kodu C++. Ale być może tym starszym hakerom, po prostu nie chciało się uczyć nowego języka programowania. Ewentualnie nie pasowała im tak brzydko dodana obiektowość w C++.

0

Po co robić inną numerację jądra dla innego sprzętu, skoro wszystko może działać na tej samej. Ja w tym sensu nie widzę

0

A w tym widzisz sens?
https://openms.net/jak-ustawic-tcp-bbr-w-systemie-linux/
Może po to aby przyspieszyć działanie systemu. Ewentualnie aby był mniej podatny na błędy, bugi systemowe.

several
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 2 godziny
0

Autorze, nie utrzymywałeś nigdy produkcyjnego produktu i to widać.

Przy rozłamie "nowe i stare" biznes i inżynieriowie odpowiadający bezpośrednio przed biznesem nie pozwoliliby na wdrożenie nowej wersji przez najbliższe 10 lat. I to dość optymistyczne założenie. Przy rozłamie "nowe stare" złamałbyś też spójność społeczności, która z czasem coraz mniej chętnie zajmowałaby się "starym" branchem - część ludzi kontrybuuje hobbystycznie, często w pracy jesteśmy zmuszeni do pracy nad starociami to po pracy wolelibyśmy zająć się czymś co nie ma łatki "stare" lub "do ubicia za kilka lat". Czyli w efekcie masz coraz mniej ludzi do pracy nad branchem, który wymaga wciąż tyle samo uwagi bo wciąż jest głównym produkcyjnym branchem.

Nie sądzę, byś kogokolwiek przekonał do swojego zdania, linux ma bogatą historię deplojmentów na wielu platformach, od mainstreamowych do dość ezoterycznych, zawsze jest miejsce na usprawnienia, ale na tak radykalne kroki nikt nie pozwoli dopóki obecny schemat działa.


edytowany 3x, ostatnio: several
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)