Czy mmap lub malloc przydzielają pamięć RAM?

Wiem, że to prawdopodobnie głupie pytanie, ale szukałem go przez chwilę i nie mogę znaleźć ostatecznej odpowiedzi. Jeśli używammmap lubmalloc (w C, na komputerze z linuxem) czy któryś z nich przydziela miejsce w pamięci RAM? Na przykład, jeśli mam 2 GB pamięci RAM i chciałem wykorzystać całą dostępną pamięć RAM, mogę po prostu użyćmalloc/memset combo,mmap, czy jest inna opcja, o której nie wiem?

Chcę napisać serię prostych programów, które mogą działać jednocześnie i utrzymywać całą pamięć RAM wykorzystywaną w procesie do wymuszenia wymiany, a strony często wymieniane / wymieniane. Próbowałem tego już z poniższym programem, ale nie jest to dokładnie to, czego chcę. Przydziela pamięć (RAM?) I wymusza użycie wymiany (jeśli uruchomionych jest wystarczająca liczba instancji), ale kiedy dzwonięsleep czy to nie blokuje pamięci przed użyciem (więc nic nie jest wymieniane z innych procesów?), czy też coś nie rozumiem.

Na przykład, jeśli uruchomiłem to 3 razy, czy użyłbym 2 GB (wszystkich) pamięci RAM z pierwszych dwóch instancji, a trzecia instancja zamieniłaby jedną z dwóch poprzednich instancji (pamięci RAM) i bieżącą instancję na RAM? A może instancja # 3 po prostu uruchomi się za pomocą dysku lub pamięci wirtualnej?

Pojawia się kolejny punkt, czy muszę przydzielić wystarczającą ilość pamięci, aby wykorzystać całą dostępną pamięć wirtualną, aby użyć partycji wymiany?

Wreszciemmap (lub jakakolwiek inna funkcja w C. Piekło, nawet inny język, jeśli dotyczy) lepiej?

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 

#define MB(size) ( (size) * 1024 * 1024)
#define GB(size) ( (size) * 1024 * 1024 * 1024)


int main(){
    char *p;
    p = (char *)malloc(MB(512));
    memset(p, 'T', MB(512));
    printf(".5 GB allocated...\n");

    char *q;
    q = (char *)malloc(MB(512));
    memset(q, 'T', MB(512));
    printf("1 GB allocated...\n");
    printf("Sleeping...\n");

    sleep(300);
}

** Edytuj: Używam CentOS 6.4 (z jądrem 3.6.0) dla mojego systemu operacyjnego, jeśli to pomaga.

questionAnswers(2)

yourAnswerToTheQuestion