Je to jak Ludvig popsal, ale ten kernel má 900MB (ty jsou lineárně pomocí velkých stránek namapovány na prvních 900MB paměti), nikoli 512MB. Zbytek se používá v kernelu na virtuální alokaci (alokace více nesouvislých stránek mapována do souvislého adresního prostoru) a cache mapování, když jádro potřebuje přistupovat k vyšším adresám.
Stránku s timestampem Linux nemá, při zjištění času se vždy volá kernel. Novější jádra namapují procesu stránku, na které se nachází vstup a výstup ze syscallu (tzn. to o int 0x80 z článku taky moc neplatí) --- tam se podle typu procesoru zapíše intrukce sysenter (Intel) nebo int 0x80, pokud je procesor starý, že to neumí (AMD syscall to asi neumí, ale nevim --- každopádně by tam šel jednoduše dopsat).
Thready jsou implementovány tak, že pro každý thread je jeden deskriptor v LDT a na něj ukazuje GS. Pomocí čtení paměti přes GS je možno zjistit, který thread se právě vykonává nebo přistupovat na thread-specific datové položky (dělají se tak, že se před deklaraci globální proměnné napíše __thread).
Názor k článku
Programujeme v jazyce Assembler v Linuxu: Úvod
Mikuláš Patočka (neregistrovaný)
1. 7. 2004 18:42

