Jeśli dwa deskryptory plików zostały przekopiowane do tego samego pliku (tj. 506
i STDOUT
), wywołanie close(506)
oczyści obiekt przypisany przez oba i zrenderuje STDOUT
bezużyteczną? Lub czy jądro implementuje liczenie odwołań dla swoich plików?Czy odniesienia jądra jądra liczą obiekty jądra?
Odpowiedz
Jądro implementuje liczenie odwołań, więc obiekt jądra nie jest zamykany, dopóki wszystkie wskazujące na niego uchwyty plików nie zostaną zamknięte.
Liczniki referencyjne są szeroko stosowane w jądrze, aby uniknąć warunków wyścigu ze względu na równoczesne przydzielanie i zwalnianie zasobu. Licznik referencyjny to po prostu licznik atomic_t powiązany z określonym zasobem, takim jak strona pamięci, moduł lub plik. Licznik jest zwiększany atomowo, gdy ścieżka kontrolna jądra rozpoczyna korzystanie z zasobu, a zmniejsza się, gdy ścieżka kontrolna jądra kończy korzystanie z zasobu. Gdy licznik odniesienia staje się zerowy, zasób nie jest używany i może zostać zwolniony, jeśli to konieczne.
Być może zechcesz to zobaczyć, jeśli chcesz przejrzeć this, aby uzyskać przegląd implementacji liczników odwołań do jądra systemu Linux.
Bardzo przydatny papier. Dzięki! –
- 1. Czy jądra jądra systemu Linux są zamienione na dysk?
- 2. Czy strony jądra są zamieniane?
- 3. Android: Jak zdobyć dzienniki jądra po awarii jądra?
- 4. Rozdzielczość jądra w python nltk przy użyciu jądra StanfordNLP
- 5. Instalacja jądra Java JRE?
- 6. Resetowanie jądra ipython
- 7. Zmień timer jądra Linuksa
- 8. Nazwa wersji jądra Androida
- 9. Relacyjna implementacja jądra Fisher
- 10. disable_local_irq i jądra czasomierze
- 11. Funkcjonalność jądra linuksa
- 12. Notatnik Jupytera martwego jądra
- 13. Programowanie jądra Linuksa: makefile
- 14. Kompilacja jądra z AOSP
- 15. Awaria jądra Jupytera R
- 16. Niepowodzenie kompilacji jądra Linuksa
- 17. stos jądra dla procesu linuxowego
- 18. Jak konstruować duże jądra OpenCL?
- 19. Moduły jądra Linux - zagrożenie bezpieczeństwa?
- 20. Jak uzyskać identyfikator wątku jądra?
- 21. Wyświetl opcje konfiguracji jądra Linux
- 22. Co to jest wątek jądra?
- 23. Jak wybrać właściwe funkcje jądra
- 24. Kodowanie jądra Linuksa w stylu
- 25. Przenoszenie jądra do innej architektury?
- 26. Czy stdio można używać podczas kodowania jądra ...?
- 27. Jak kodować moduł jądra Linux?
- 28. Przekazywanie obiektu klasy do jądra
- 29. Alokacja pamięci wewnątrz jądra CUDA
- 30. Moduł jądra do monitorowania syscalls?
Ufam ci, głosowałem na ciebie. Czy możesz podać źródło dokumentacji dla potomności? To wydaje się być typem pytania, które można ponownie odwiedzić. –
@San Jacinto: Odsyłacz do 'dup (2)' i 'close (2)' razem oznaczają liczenie odwołań; w szczególności * "Jeśli fd jest ostatnią kopią określonego deskryptora pliku, zasoby z nim związane są zwalniane" *: http://linux.die.net/man/2/dup http://linux.die.net/ man/2/close –
Awesome :) Dzięki. –