Czy ktoś może wskazać mi jakąś dokumentację na mapach pamięci wirtualnej używanych dla Linuksa i Windowsa. Rozumiem przez to, jakie wirtualne adresy, kod, zapisywalne dane statyczne, stos i sterty (wraz z innymi bitami jądra) będą zwykle umieszczane w typowym procesie?Procesowa mapa pamięci (Linux Windows)
Odpowiedz
Prawdopodobnie najlepszym sposobem uzyskania mapy pamięci procesowej w systemie Linux jest przejrzenie pliku/proc // maps. Widać wyraźnie, że dla każdego pliku wykonywalnego lub współdzielonego istnieją osobne sekcje dla wykonywalnego, stałego statycznego i zapisywalnego statycznego. Każda z tych sekcji istnieje na swojej własnej stronie pamięci, która pozwala Linuxowi na dzielenie sekcji między plikami wykonywalnymi, a nawet zaimplementowanie funkcji takich jak kopiowanie przy zapisie.
Oprócz tego istnieje sekcja poświęcona stosowi i jedna poświęcona sterty. Mogą również istnieć sekcje anonimowe.
Od czasu pojawienia się ASLR, jest to głównie losowy adres wirtualny.
Wpis w Wikipedii pod numerem Address Space Layout Randomisation (ALSR) opisuje, w jaki sposób losowa alokacja przestrzeni adresowej chroni przed różnymi atakami oraz jak ważna jest różnica między danymi i kodem.
Opisuje on zarówno domyślny słaby poziom randomizacji Linuksa, jak i łatę, której można użyć, aby ją wzmocnić.
Opisuje także, które wersje systemu Windows go oferują, i jak to ma zastosowanie tylko do niektórych plików wykonywalnych kodu &.
Jest dość mało szczegółów. W miarę możliwości lubię schematy z adresami. – doron
Jeśli szukasz mapy pamięci podobnej do dawnych czasów, na przykład Commodore 64 (takiego jak ten http://sta.c64.org/cbm64mem.html), myślę, że wyjdziesz na zewnątrz szczęścia. Nie sądzę, że to już działa. – Oddthinking
- 1. Mapa pamięci obiektów klasy C++
- 2. Windows vs. alokacja pamięci Linux/wydajność konstruktora std :: list
- 3. wykorzystanie pamięci struktur danych STL, Windows vs. linux
- 4. Mapa drogowa Debuggera systemu Windows
- 5. Mapa pamięci pokazuje więcej pamięci RAM niż fizycznie dostępna
- 6. Pytania o Linux typów pamięci
- 7. Wykrywanie systemu Windows lub Linux?
- 8. monitorować wykorzystanie pamięci programu w systemie Linux
- 9. Jak rejestrować zużycie pamięci w systemie Linux?
- 10. Alokacja pamięci podczas uruchamiania systemu Linux?
- 11. Pliki z mapą pamięci Windows
- 12. Konwersja Java Mapa Scala Mapa
- 13. Windows C# implementacja polecenia linux dd
- 14. Python Multiprocess diff między Windows i Linux
- 15. Wątki/Porównanie procesów w systemie Linux/Windows
- 16. alternatywa malloc_size w systemach Linux i Windows
- 17. Emulator Windows Mobile dla systemu Linux
- 18. Odpowiednik getch Windows() na awarie Mac/Linux
- 19. Podsystem Windows 10 Linux. Jak zainstalować MongoDB
- 20. git svn windows linux whitespace problems
- 21. Windows GUI + Console Output, Linux-style
- 22. Rozwój Androida w systemie Windows lub Linux?
- 23. DLL systemu Windows na Linux System
- 24. Odpowiednik Linux Mono usługi .NET Windows
- 25. Wymienione potoki w systemie Windows i Linux
- 26. Wyjątek braku pamięci w java z linux-redhat
- 27. Znajdowanie adresu pamięci portu równoległego w systemie Linux
- 28. HeapCreate, HeapAlloc w systemie Linux, prywatny przydział dla systemu Linux
- 29. Pozwolenie na plik w linux vs w Windows
- 30. Monitorowanie plików mapowanych w pamięci Windows
Czy są to faktyczne sekcje bloków, czy też w jaki sposób funkcje relokowalne są zorganizowane w samym bloku kodu? – doron
To mapowania pamięci, które w przybliżeniu odpowiadają segmentom kodu, danych i stosu. – ninjalj