Wykonywanie programów Adam Gudynowski
Transkrypt
Wykonywanie programów Adam Gudynowski
Wstęp Podział pamięci wirtualnej Pamięć użytkownika Wykonywanie programów Adam Gudynowski Wstęp Podział pamięci wirtualnej Pamięć użytkownika 1 Wstęp 2 Podział pamięci wirtualnej 3 Pamięć użytkownika Segment jądra Stos Segment odwzorowań Sterta BSS Segment danych Segment kodu Wstęp Podział pamięci wirtualnej Pamięć użytkownika Pamięć systemu i pamięć użytkownika W systemach 32-biotwych możemy zaadresować maksymalnie 4GB pamięci: Wstęp Podział pamięci wirtualnej Pamięć użytkownika Segment Stos Segment Sterta BSS Segment Segment jądra odwzorowań danych kodu Schemat podziału pamięci wirtualnej segment pamięci to tylko przedział adresów Wstęp Podział pamięci wirtualnej Pamięć użytkownika Segment Stos Segment Sterta BSS Segment Segment jądra odwzorowań danych kodu Segment jądra - Kernel space dostęp do segmentu jądra programy użytkownika nie mają tu żadnych praw dostępu (segmentation fault) Wstęp Podział pamięci wirtualnej Pamięć użytkownika Segment Stos Segment Sterta BSS Segment Segment jądra odwzorowań danych kodu Stos - Stack LIFO (prosta struktura - tylko wskaźnik na początek) każdy proces ma swój stos ramki wywołań, argumenty funkcji, zmienne lokalne stack overflow Wstęp Podział pamięci wirtualnej Pamięć użytkownika Segment Stos Segment Sterta BSS Segment Segment jądra odwzorowań danych kodu Segment odwzorowan - Memory Mapping Segment mapowanie plików (odwzorowane pliki są uaktualniane na dysku) anonimowe mapowanie pamięci (mmap(), malloc()) biblioteki dynamiczne Wstęp Podział pamięci wirtualnej Pamięć użytkownika Sterta - Heap dynamiczna pamięć programu C: malloc itp C#: new, grabage collector fragmentacja pamięci Segment Stos Segment Sterta BSS Segment Segment jądra odwzorowań danych kodu Wstęp Podział pamięci wirtualnej Pamięć użytkownika Segment Stos Segment Sterta BSS Segment Segment jądra odwzorowań danych kodu BSS - Block Started by Symbol pamięć zerowana niezainicjalizowane zmienne statyczne Wstęp Podział pamięci wirtualnej Pamięć użytkownika Segment Stos Segment Sterta BSS Segment Segment jądra odwzorowań danych kodu Segment danych - Data Segment statyczne zmienne zainicjalizowane odwzorowane pliki nie są uaktualniane Wstęp Podział pamięci wirtualnej Pamięć użytkownika Segment Stos Segment Sterta BSS Segment Segment jądra odwzorowań danych kodu Segment kodu - Text Segment Binarna reprezentacja wykonywanego procesu