[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