GNU/Linux >> Znalost Linux >  >> Linux

Je funkce page-to-disk, o které Linus mluví ve své autobiografii, v podstatě konceptem swapování, který dnes používáme?

Ano, toto je efektivní swapování. Citace poznámek k vydání pro 0.12:

Virtuální paměť.

Kromě programu "mkfs" je nyní na kořenovém disku program "mkswap". Syntaxe je identická:"mkswap -c /dev/hdX nnn", a znovu:toto zapisuje přes oddíl, takže buďte opatrní. Přepínání pak může být povoleno změnou slova na offsetu 506 v bootimage na požadované zařízení. Použijte stejný program jako pro nastavení kořenového souborového systému (ale změňte offset 508 samozřejmě na 506).

POZNÁMKA! To bylo testováno Robertem Blumem, který má 2M stroj, a umožňuje vám spouštět gcc bez velké paměti. NICMÉNĚ jsem to musel přestat používat, protože mi místo na disku zahltila beta-gcc-2.0, takže bych rád slyšel, že to stále funguje:Od té doby jsem absolutně nebyl schopen vytvořit aswapový oddíl pro základní testování. Vánoce. Nové změny se tedy mohly na virtuálním počítači jen selhat, ale pochybuji.

Ve verzi 0.12 se stránkování používá pro řadu funkcí, nejen pro výměnu na zařízení:načítání na vyžádání (pouze načítání stránek z binárních souborů tak, jak jsou používány), sdílení (sdílení společných stránek mezi procesy).


Ano, to je přesně ten koncept známý jako stránkování nebo swapování. (Před dlouhou dobou měly tyto výrazy trochu jiný význam, ale v 21. století jsou synonyma, snad s výjimkou některých operačních systémů jiných než Unix.)

Aby bylo jasno, swapování nebylo inovativní funkcí:většina „seriozních“ unixových systémů ji měla a tato funkce je starší než Unix. To, co swapování pro Linux udělalo, bylo přeměnit jej na „seriózní“ Unix, zatímco MINIX byl určen pro vzdělávací účely.

Výměna je dnes stále stejný koncept. Heuristika pro rozhodování, které stránky uložit a kdy je uložit, se stala mnohem složitější, ale základní princip zůstává.


Swapping je koncept starší než virtuální paměť a dokonce i ochrana paměti:znamená to pouze umístění procesu na disk, aby se uvolnilo místo pro jiný. Původní Unix měl v tomto ohledu dvě zvláštnosti:programy se „sdíleným textem“, které uchovávaly programový kód pouze jednou v paměti a vyměňovaly pouze datovou část. A měl systémové volání "fork", které vyměnilo proces na disk, aniž by nahradilo obraz paměti a místo toho nechalo spuštěnou kopii (dítě).

Page-to-disk, na rozdíl od swapování, umožňuje běh procesů, které se nevejdou do fyzické paměti. Vyžaduje veškerou chráněnou paměť, mapování paměti virtuálních adres na fyzické adresy a restartovatelný mechanismus chybné stránky, který umožní změnit mapování z nenamapované virtuální adresy na rozumně volitelnou fyzickou adresu a obnovit příkaz, který musel být přerušen, protože chybějícího mapování.

UNIX byl schopen běžet na 68 000 procesorech (včetně swapování) bez MMU a dobře využíval MMU, pokud byla k dispozici pro ochranu paměti, ale potřebovalo 68010, aby skutečně měl mechanismy umožňující obnovení programu po chybě stránky.

80386 byl v mnoha ohledech mizerný a zastaralý design. Ale díky vestavěnému MMU a schopnosti správně chybovat stránky byl okamžitě životaschopnější pro systémy podobné UNIXu, které nebyly schopny pouze swapovat, ale také přepínat mezi stránkami na disk.

Je jakousi historickou ironií, že této velké oběti křemíku (plnohodnotné MMU a virtuální CPU design zabraly poměrně dost místa) bohům moderních systémů se ujal hlavně fanoušek a velké ryby“ jako Xenix a OS/2 nakonec padly na cestu.

I když můžete „nic odstránkovaného a nenaplánovaného ke spuštění“ nazvat stejně jako „vyměněno“, ve skutečnosti to není návrh typu „všechno nebo nic“, jako byl původní význam „vyměněno“.

Rozdíl se v desetiletích od té doby ztratil, protože poptávkové stránkování bylo o tolik užitečnější a škálovatelné lépe než běžné swapování, že jej nahradilo, jakmile se nezbytné funkce CPU a MMU staly běžnými, ale zpomalení a výboje spojené s obojím způsobily podobné vzhled a pocit.


Linux
  1. Jaký je koncept vruntime v CFS

  2. Proč používat shm_open?

  3. Jak zjistit informace o RAM?

  1. Jak používat Linuxový příkaz grep

  2. Kolik RAM používá jádro?

  3. Otázky týkající se uloženého ID uživatele

  1. Jak používat příkaz historie v Linuxu

  2. Linuxové jádro:5 nejlepších inovací

  3. Zkontrolujte používanou verzi Wordpressu