Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 209. brněnský sraz, který proběhne tento pátek 16. května od 18:00 ve studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Jelikož se Brno stalo jedním z hlavních míst, kde se vyvíjí open source knihovna OpenSSL, tentokrát se OpenAlt komunita potká s komunitou OpenSSL. V rámci srazu Anton Arapov z OpenSSL
… více »GNOME Foundation má nového výkonného ředitele. Po deseti měsících skončil dočasný výkonný ředitel Richard Littauer. Vedení nadace převzal Steven Deobald.
Byl publikován přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) za uplynulé dva měsíce. Servo zvládne už i Gmail. Zakázány jsou příspěvky generované pomocí AI.
Raspberry Pi Connect, tj. oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče, byla vydána v nové verzi 2.5. Nejedná se už o beta verzi.
Google zveřejnil seznam 1272 projektů (vývojářů) od 185 organizací přijatých do letošního, již jednadvacátého, Google Summer of Code. Plánovaným vylepšením v grafických a multimediálních aplikacích se věnuje článek na Libre Arts.
Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.
OpenSearch (Wikipedie) byl vydán ve verzi 3.0. Podrobnosti v poznámkách k vydání. Jedná se o fork projektů Elasticsearch a Kibana.
PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.
Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.
Dobrý den,
zajímalo by mě, jestli v 32bitovém jádře linuxu (bez podpory PAE) sdílí virtuální adresní prostor společně s RAM i swap. Tedy pokud bych měl konkrétně na takovém systému 2GB fyzické RAM a chtěl mít 4GB ve swapu, tak by
A pokud platí 1. varianta bych poprosil o krátké vysvětlení, jak je to možné, příp. odkaz na nějaký zdroj (hledal jsem, nenašel).
Díky za odpověď
Co znamena pamet je pristupna? jako se ji muze naalokovat jeden proces, nebo ze je pristupna systemu(kernelu)?
Ono záleží co tím vlastně myslíte - například CPU 386 dokáže fyzicky adresovat max 4G ram, adresa o šířce 32b ovšem vnitřně umí pracovat s adresou o 46b takže může adresovat 64TB virtuálního prostoru.
Virtuální prostor 64TB je rozdělen na globální a lokální prostor který může mít max 32TB. A každý segement může být max 4GB.
Takže s toho vypline že CPU může pracovat s 64TB virtuálního prostoru takže 4G ram + 4G swap = 8G virtuálního prostoru, ovšem program bude moci využít pouze max 4G a je jedno zda 2G budou v RAM a další 2G v swapu.
To je po fyzické stránce, jak je to v kernelu zda dokáže využít 64TB virtuálního prostředí nevím.
36 bitů, 64 GB.
Všechno to máte přímo v tom odkazovaném článku.
Existuje převodní tabulka pro mapování virtuálních adres na fyzické (Page tables) a převod provádí MMU automaticky (Dynamic address translation). A každý proces má tuto tabulku svoji a je jich ve hře víc, ale to už je jen technický detail. A nakonec je to samotné swapování (Paging), které v případě potřeby uvolňuje fyzickou paměť tím, že ji odkládá na disk a natahuje zpátky ty stránky, které jsou zrovna potřeba. To už dělá kernel sám. Takže jen čarujeme s obsahem a mapováním paměti (a obecně to platí vždycky bez ohledu na to kolik fyzické paměti a v kolika bitech spravujeme).
Jde mi o trochu něco jiného, těch článku jsem četl víc (a nejen na wikipedii), ale zjevně mi něco pořád uniká.
Chápu základní princip, že kernel dostane od procesu virtuální adresu (VA), zjistí přes MMU, jestli je v RAM, a pokud ne, tak se jí snaží nalézt ve swapu.
A teď o co mi není jasný. Pokud má každý proces vlastní 32 bitový adresní rozsah, nemůže přece kernel nezměněnou VA z tohoto adres. prostoru jen tak předat dál, protože stejná VA může být použita i jinými procesy, které se odkazují pod stejnou VA na jinou část fyz. paměti.
Nebo ještě jinak - pokud má kernel přístup k více jak 4GB virtuální paměti, musí přeci zákonitě použít větší než 32b adresní prostor, ale potom si musí kernel sám držet informaci o tom, které stránky jsou v RAM (MMU zvládne jen 32b) a které jsou ve swapu (to je jen moje ničím nepodložená spekulace - nikde jsem na to při hledání nenarazil).
Proč si neprohlédnete strukturu toho CPU 386 jak pracuje ? (Princip je stejný u všech CPU pouze u novějších jsou přidaná další rozšíření pro větší adresovaní více RAM optimalizace atd.....)
O adresování RAM rozhoduje CPU který převádí virtuální adresu 46b na 32b fyzickou adresu a pokud se nenajde příslušná virtuální adresa v ram vyvolá se přerušení a potom řízení převezme kernel a musí něco z fyzické ram smazat a odněkud jinud (ze swapu) tam nahrát požadovanou část.
Máte pravdu, princip je stejný, původně mě zmátlo to výše zmíněné rozdělení na wikipedii.
Co mi nebylo jasné a nemohl jsem najít, že se při každém přepnutí procesu v kernelu (task switch) nastaví registr CR3 (en.wikipedia.org/wiki/Control_register#CR3), který obsahuje ukazatel na Page Directory (to jsou přesně ty bity, které mi tam pořád chyběly), takže se už pak jednodušše dohledá fyz. adresa.
Nakonec jsem objevil skvělý článek (byť asi staršího data), který mi v tom udělal konečně jasno - www.embedded.com/98/9806fe2.htm a také www.ibm.com/developerworks/linux/library/l-memmod/
Je pravda, že když jsem pokládal původní otázku, tak jsem o tom nic nevěděl, a trochu naivně očekával srozumitelnou odpověď jednou větou ;)
Virtuální pamět nepůjde přes 4GB, ale každý proces má vlastní adresní prostor (tedy každý své 4G virtuální paměti), takže swapák může kompenzovat paměť i přes 4G.
Virtuální pamět kernelu je omezena na 1G (případně 2G) a není pro každý proces zvlášť, takže ani fyzicky nepůjde přes ten 1G. Ani není swapovatelná (AFAIK), ale odswapováni jiné části paměti by mělo kernelu v rámci toho 1G v případě nutnosti prospívat (nevím jak a jestli vůbec to Linux řeší).
Možná se někde mýlím, ale shrnul bych to tak, že každopádně můžete jít přes celkovou hodnotu 4G. Ale pochopitelně raději tu RAMku než swap
Tiskni
Sdílej: