Memory Manager
En memory manager er en del af et computerprogram (både applikation og operativsystem ), der behandler anmodninger om at allokere og frigøre RAM eller (for nogle computerarkitekturer ) anmodninger om at inkludere et givet hukommelsesområde i processorens adresserum .
Hovedformålet med memory manager i den første forstand er implementeringen af dynamisk hukommelse . For eksempel i C -sproget udføres dynamisk hukommelsesallokering gennem .
malloc
Hierarki af hukommelsesadministratorer
Hukommelsesadministratorer danner ofte et hierarki: lavere ledere bruger en form for hukommelsesallokerings-frigivelsesmønstre og reducerer dermed belastningen på højere. For eksempel:
- System . Øverst er hukommelseshåndteringen indbygget i OS. Den bidrager med denne eller hin side til processens adresserum - hvilket betyder, at den arbejder med en diskrethed på 4 kilobyte, hvilket gør den meget langsom.
- ejet af processen. Hukommelseshåndteringen, der er indbygget i programmeringssprogets standardbibliotek , tager hukommelsesblokke "i bulk" fra operativsystemet og distribuerer dem i henhold til programmørens behov. Samtidig ved han, at der kun gives hukommelse til én proces - hvilket betyder, at trådsynkronisering ikke udføres af mutexes , men af futexes . Og skift til kernetilstand sker i to tilfælde: enten når der ikke er nok "operativ reserve" af hukommelse, og du skal have adgang til OS, eller når en af trådene "snubler" over en travl futex.
- Specialiseret . Nogle dynamiske datastrukturer, såsom std::vector , overtager også hukommelsen fra standardbiblioteket (normalt i blokke med eksponentielt større størrelser). Elementer tilføjes således ét ad gangen, men opkaldet til upstream-manageren sker én gang for et stort antal elementer. Objektpuljen allokerer hukommelse til objekter af en bestemt type og er nyttig, hvis de er allokeret/deallokeret i store mængder osv.
Et sådant hierarki fører til, at der på hvert af niveauerne er "gammel" ledig hukommelse. Men dette er berettiget: hukommelsesfragmentering reduceres, og hastigheden øges.
Se også