[OSy] správa tlb cache na SMP

Martin Decky decky at d3s.mff.cuni.cz
Tue Dec 21 15:46:45 CET 2010


Hezky den,

> Když chci smazat položky v tlb jiného procesoru než toho, na kterém běží
> vlákno, které je odmapovává ve VAS, tak se používá obyčejný
> interprocesor interrupt nebo se používá nějaký jiný mechanismus jako je
> tlb exception?

IPI je urcite spravna volba (sice ne uplne jedina mozna, ale typicka). 
Ten napad s TLB Exception moc realisticky nevidim. Nejsem si treba vubec 
jisty, jak vygenerovat TLB Exception programove (pokud to vubec jde).

> S interprocesorovým interruptem mám totiž problémy,
> protože jsou interrupty často zakázány a proto se záznamy v tlb smažou
> pravděpodobně příliš pozdě.

Muzete nejak podrobneji popsat scenar, kdy by to mohlo delat skutecne 
problemy?

Preruseni se prece zakazuji jen v tech usecich kodu (v implementaci 
synchronizacnich primitiv, v assemblerovskych rutinach obsluh vyjimek 
apod.), kde naopak nesmi dojit k race condition s jinymi vlakny. Na SMP 
je samozrejme pro uplnou korektnost potreba pouzit take spinlock nebo 
jinou metodu vzajemneho vylouceni mezi vsemi procesory.

Mozna byste si mel podrobneji rozmyslet, jakou semantiku ma semantika 
operace TLB Shootdown mit, jake high-level operace kernelu ji mohou 
vyvolat, jakou tyto high-level operace maji semantiku a implementaci a 
kdy se mohou pouzit.


M.D.




More information about the NSWI004 mailing list