Vita:Lock

A HupWiki-ből...

Valahogy ugy kene csoportositani, hogy beleferjen a mutex/futex stb. -- Trey 2004 február 21, 19:30 (CET)

Arra magam is kíváncsi vagyok, hogy pontosan micsoda a "futex". Azt tudom, hogy "fast userspace mutex", vagyis hogy a Linux-kernel nyújtotta mutex, melynek nemversengő lefoglalása esetén (vagyis amikor csak egy processz akarja foglalni, és nem kell másokkal küzdenie érte) ez a belépés minimális overheaddel történik (egyes források szerint nem is kell kernelmódban lépni közben?). De hogy ezt hogy implementálják, és hogy miért nincsenek a Doug Schmidt-féle double-checked lockingnál tapasztalt problémái... ?
A futex = Fast Userspace Locking system call - Futex man oldal -- 81.182.117.148 2004 február 21, 20:52 (CET)
Köszi a linket, tanulságos volt. Ezek szerint a futex nem más, mint néhány előírás az userspace viselkedésére, meg egy syscall, hogy a kernel szükség esetén altasson/ébresszen. Elég alacsony szintű mechanizmus, Dijkstra-féle P() és V() szemaforprimitíveket és (ha jól sejtem) író-olvasó zárakat is lehet belőle építeni. És pontosan ezt teszi (tatamm) az NPTL.
Más: mi a "Giant"?
a Giant egy lockoló mechanizmus a FreeBSD kernelben. Giant sleep mutex névre hallgat. Ezért mondtam, hogy csoportosítani kéne, hogy mutex / futex, mutex alá mehetne a Giant, stb. Giant leírás Mivel nem tudom, hogy kéne csoportosítani, ezért volt behányva egyelőre csak hanyagul az egész. -- 81.182.117.148 2004 február 21, 20:52 (CET)
Nekem ebből úgy tűnik, hogy a "Giant sleep mutex" nem egy külön mechanizmus, hanem csak egy ugyanolyan mutex, mint a Linux BKL-je, mindössze implementációs részletekben különbözik tőle, szándékolt céljában nem (amelyik kódrészeket még nem állítottunk át finomabb hatókörű zárakra, azok mindegyike a Gianton/BKLen zúzza magát, hogy a kölcsönös kizárás tulajdonsága ne sérüljön). Ha így van, nem érdemel külön kategóriát, hanem csak olyan megjegyzéseket, hogy "mutexre valós életből vett példák: Linux Big Kernel Lock, FreeBSD Giant sleep mutex".