GNU/Linux >> Znalost Linux >  >> Linux

Proč se telefonní čísla systému Linux v x86 a x86_64 liší?

Pokud jde o zdůvodnění specifického číslování, které se neshoduje s žádnou jinou architekturou [kromě "x32", která je ve skutečnosti jen součástí architektury x86_64]:Ve velmi raných dobách podpory x86_64 v linuxovém jádře, než existovaly nějaké vážná omezení zpětné kompatibility byla všechna systémová volání přečíslována, aby byla optimalizována na úrovni využití mezipaměti.

Nevím dost o vývoji jádra, abych znal konkrétní základ pro tyto volby, ale zjevně existují nějaké logika za volbou přečíslovat vše těmito konkrétními čísly, spíše než jednoduše zkopírovat seznam z existující architektury a odstranit nepoužité. Vypadá to, že pořadí může vycházet z toho, jak se běžně nazývají - např. čtení/zápis/otevření/zavření jsou vpředu. Exit a fork se mohou zdát „základní“, ale každý je volán pouze jednou za proces.

Může se také něco stát ohledně udržování systémových volání, která se běžně používají společně na stejném řádku mezipaměti (tyto hodnoty jsou pouze celá čísla, ale v jádře je tabulka s ukazateli funkcí pro každé z nich, takže každá skupina 8 systémových volání zabírá 64bajtový řádek mezipaměti pro tuto tabulku)


Podívejte se na odpověď na otázku "Proč jsou čísla systémových hovorů různá v amd64 linux?" na Stack Overflow.

Abych to shrnul:z důvodu kompatibility je seznam systémových hovorů stabilní a může se jen rozrůstat. Když se objevila architektura x86 64, ABI (předávání argumentů, vrácená hodnota) bylo jiné, takže vývojáři jádra využili příležitosti a přinesli změny, na které se dlouho čekalo.


Linux
  1. Linux – Proč v systému není přítomen žádný souborový systém Rootfs?

  2. Linux – Co je velká a nízká paměť v Linuxu?

  3. Linux – Proč Linux Utils nepoužívají systémové volání k získání aktuálního času?

  1. Linux – metody vyvolání systémového volání v novém jádru?

  2. Jaký je rozdíl mezi voláním knihovny a voláním systému v Linuxu?

  3. Proč je Linux podobný Unixu, když je jeho jádro monolitické?

  1. Proč se při běhu Via Sudo a Su liší proměnné cesty?

  2. Linux – Jsou různá jádra Linux/unix zaměnitelná?

  3. Jsou různá jádra Linux/Unix zaměnitelná?