Im Linux-Kernel verwendet Linux zum Speichern der Speicherbereiche eines Prozesses sowohl eine verknüpfte Liste als auch einen rot-schwarzen Baum. find_vma ist eine Funktion, die den ersten Speicherbereich findet, dessen vm_end-Feld größer als die übergebene Adresse durch Rot-Schwarz-Struktur ist. Allerdings finde ich es dort keinen Schutz (wie eine Sperre) für den rotschwarzen Baum innerhalb von find_vma(). Was passiert, wenn ein anderer Thread die Funktion rb_erase aufruft, um ein Element im Baum gleichzeitig zu löschen?ist rot schwarz Baum im Kernel nicht geschützt?
5
A
Antwort
2
Ja, find_vma Funktionsaufruf ist vor gleichzeitigem Zugriff über Semaphor geschützt. Im Scheduler wird auch die Funktion mit Semaphoraufrufen verwendet.
2209 down_read(&mm->mmap_sem);
2210 vma = find_vma(mm, start);
....
up_read(&mm->mmap_sem);
mmap_sem is used to protect this function call which is a read-write semaphore.
struct rw_semaphore mmap_sem; defined inside struct mm_struct.
Verwandte Themen
- 1. Wie Baumkarte Rot-Schwarz-Baum-Algorithmus verwendet
- 2. Implementierung von Rot-Schwarz-Baum in C#
- 3. Rot Schwarz Baum <Schwarz Höhe> (Neuentwurf)
- 4. Was sind Splay-Baum, Rot-Schwarz-Baum, AVL-Baum, B-Baum und T-Baum?
- 5. Warum Rot-Schwarz-Baum-basierte Implementierung für Java TreeMap?
- 6. Eigenschaften eines rot-schwarzen Baum
- 7. bst rot schwarz das funktioniert nicht
- 8. Ist ein rot-schwarzer Baum meine ideale Datenstruktur?
- 9. Rot-schwarzer Baum Zugang nach Ordinal Index
- 10. Änderung hearbeat führte auf Beaglebone schwarz mit Gerät Baum Overlay
- 11. Xcode: libpods.a ist rot
- 12. Warum ist CollectionView.CollectionChanged geschützt?
- 13. Nicht im Kernel-Speicher schreiben über Linux Kernel-Modul (Ubuntu)
- 14. C++ Fehler: Basisfunktion ist geschützt
- 15. Wie speichere ich den Speicher beim Speichern von Farbinformationen in Rot-Schwarz-Bäumen?
- 16. Geschützt Untername.ValueChanged nicht aktualisiert
- 17. Text wird "Rot"; Kann den Code nicht finden, der es "Rot" macht
- 18. Knoten im Domino-Baum
- 19. build.gradle ist vor Dekompilierung geschützt?
- 20. cublasSgetrsBatched Fehler im Kernel
- 21. Was ist in TypeScript geschützt?
- 22. Ist Qooxdoo gegen XSS geschützt?
- 23. Was virtuelle neuen geschützt ist
- 24. malloc im Kernel
- 25. Ioremaped Adresse im Kernel
- 26. Warum ist die Hintergrundfarbe meiner Zeichenansicht schwarz?
- 27. UIViewController in UITabBarController ist schwarz
- 28. Recreated PNG-Bild ist schwarz
- 29. RedBlack und AVL-Baum C++
- 30. Ist pac-man noch urheberrechtlich geschützt?
Wird es nicht über RCU verwaltet? – Joe
Es scheint, dass 'find_vma' selbst mit etwas Schutz vor gleichzeitigem Zugriff (Modifikation) aufgerufen werden sollte. @Joe: Im Gegensatz zu Listen kann rb-tree nicht von RCU geschützt werden. – Tsyvarev
@Tsyvarev Danke für Ihre Antwort. Ich stimme dir zu. Zum Beispiel wird in [sys_msync] (http://lxr.free-electron.com/source/mm/filemap.c?v=2.4.37#L2381) (der Systemaufruf von msync) "down_read" aufgerufen (& current-> mm-> mmap_sem) 'zuerst und dann' find_vma'. Schützt das den rot-schwarzen Baum? – HuangJie