Vlákno názorů k článku Využití komprimovaných ukazatelů na objekty v JVM od Logik - >> Kvůli použití 32bitových ukazatelů (včetně 32bitového PC...

  • Článek je starý, nové názory již nelze přidávat.
  • 16. 12. 2010 23:49

    Logik

    >> Kvůli použití 32bitových ukazatelů (včetně 32bitového PC a ESP) je možné adresovat a tím pádem i využít
    >> „pouze“ adresní prostor o velikosti 4 GB (232 bajtů), do něhož jsou však kromě vlastní operační paměti
    >> adresovány například i oblasti paměti dostupné přes PCI sběrnici či port AGP (typicky se jedná o
    >> framebuffer grafické karty) a část z tohoto rozsahu si nárokuje i samotné jádro operačního systému
    >> (v případě Linuxu až 1 GB adresního rozsahu).

    TO IMHO není pravda. V 32bit logickém prostoru, kam ukazují ukazatele přeci není žádný framebuffer ani paměť mapúovaná přímo harwarem. Ta je přeci mapovaná do fyzického adresního prostoru.
    IMHO právě směšujete logický paměťový prostor, kde si ukousne kus samotný OS, (např. Windows celé 2GB), ale jinak nikdo nic, a fyzický, kde si taktéž kousek ukousne OS, ale hlavně velký kus hardware.Fyzický adresový prostor ale není v 32 bitovém systému omezen na 4GB, i v 32 bit systému je přístupno více fyzické paměti.
    Akorát většina verzí 32bit windows zároveň zavedla umělé omezení na 4GB fyzického paměťového prostoru (prý z důvodu, že některé drivery s víc pamětí neuměly pracovat, ale asi marketing) a tak přesvědčili lidi, že je to nutné kvůli 32bitovosti...

  • 17. 12. 2010 10:38

    ondra.novacisko.cz (neregistrovaný)

    32-bitový proces v 64bitovém prostředí Windows s podporou /3G umí alokovat až 4GB, přičemž OS zabírá jen nutné minimum v podobě knihoven wrapperů z 32 na 64 (KERNEL32.DLL, atd...) OS si nevyhrazuje žádné gigabajty, protože sám je 64bitový a může běžet naprosto mimo adresový prostor aplikace.

  • 17. 12. 2010 11:20

    kvr kvr

    Je a není. Aby se dalo s HW pracovat, je třeba jej namapovat do logického adresního prostoru (neplatí vždy - třeba na klávesnici stačí IO porty, aspoň ty staré, časy se možná změnily :) ). U grafické karty bude nejspíš stačit do user space pro X, u jiného HW do kernel space (a tam to bude viset pořád).

    S tím umělým omezením - některý ISA HW snad potřeboval dokonce paměť pod fyzických 16MB, je dost možné, že novější měl limit pod 4GB. Ale je samozřejmě možné, že primární problém u Windos byl s oblíbeným DWORD kódem :)

  • 17. 12. 2010 12:26

    Pavel Tišnovský
    Zlatý podporovatel

    >> S tím umělým omezením - některý ISA HW snad potřeboval dokonce paměť pod fyzických 16MB...

    To je pravda, vsak jeste dnes lze u nekterych BIOSu najit prepinac "Memory hole at 15MB", tj. vytvoreni "diry" v pameti mezi 15MB a 16MB.

  • 17. 12. 2010 11:22

    atarist (neregistrovaný)

    imho pokud je z userspacu pristup do framebufferu, tak prece je mapovan do logickeho adresoveho prostoru ne? hmm musim se do toho programu, ktery prisupoval do framebufferu podivat, co se vlastne volalo za funkce jadra, mozna to je reseny jak na starych VESAch 1.x pomoci vypadku stranek.

  • 17. 12. 2010 11:54

    kvr kvr

    Jo. Otevře se /dev/fbX, a poté se buď zapisuje přes write, nebo se namapuje přes mmap do logického paměťového prostoru programu.

    Taková by byla základní funkcionalita. Používá-li se framebuffer i na konsoli, tak to znamená, že přístup musí mít i kernel, takže je přinejmenším část mapováná i do kernel address space. Rovněž novější grafické karty už mají drivery částečně v kernelu, takže i z toho důvodu okupují i část kernel space (pokud nepřepnou kontext vždy na X-server a nepracují nad user address space - zas tak dobře se v tom neorientuju). Ale to už je trochu OT.