Я написал программу образца C:Нулевой основные ошибки при ММАП большой файл в с
Программа:
#include<stdio.h>
#include<stdlib.h>
#include <unistd.h>
#include<time.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/mman.h>
#include<inttypes.h>
int main()
{
int fd;
char *data;
fd = open("file.txt", O_RDWR);
int pagesize = getpagesize();
data = mmap((caddr_t)0, pagesize, PROT_READ, MAP_SHARED, fd, pagesize);
srand(time(NULL));
while(1)
{
int r = (rand() % 9999) + 1;
char x = data[r];
}
return 0;
}
Я делаю «ММАП» для большого файла в C (который имеет размер из 11GiB). Когда я скомпилирую эту программу и пытаюсь проверить основные ошибки страницы, используя perf, я получаю нуль.
Perf команда:
perf stat -e major-faults ./test
я запустить эту программу в течение приблизительно 30 секунд и пыталась убить, количество основных ошибок страниц сообщенной перфорации равно нуль. Размер моей физической памяти - 8 ГБ.
Также, если я использую очень большое случайное число вместо 9999, я получаю ошибку сегментации.
Может кто-нибудь, пожалуйста, предложите мне, что я делаю неправильно здесь.