LINUX.ORG.RU

Что почитать по основам mmap() и malloc()?


0

1

Мне надо понять - как они работают под Линукс, суть их работы, специфика (отличие от виндовых аналогичных функций).

Что почитать на русском/английском (знание английского - на уровне чтения манов)?

★★★★★

Линуксовые man-ы по этим функциям наизусть выучил уже?

Всё, что ты почерпнешь из изсходников glibc и ядра - это детали реализации. Лучше на них не полагаться.

Вот еще немножко инфы:
http://pubs.opengroup.org/onlinepubs/009695399/functions/mmap.html
http://pubs.opengroup.org/onlinepubs/009695399/functions/malloc.html

Manhunt ★★★★★
()

R. Love «Linux System Programming»

anonymous
()
Ответ на: комментарий от Waterlaz

Основная идея алгоритма malloc описана тут:
http://gee.cs.oswego.edu/dl/html/malloc.html

Ага. Спасибо. Посмотрю.

Мне просто принцип надо понять - так как в одной программе надо
использовать mmap(), и я впервые столкнулся с этой функцией на практике.

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

Если только принцип - хватило бы и манов.

С mmap'ом еще интересно то, что размещение нужных данных в оперативке организует ядро, т.е. нам не нужно заморачиваться с тем, как обеспечить наилучшую производительность при работе с большими файлами, если оперативки для помещения файла в нее целиком не хватает.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

если оперативки для помещения файла в нее целиком не хватает.

Замечательный принцип.

P.S. Всё-таки, опыт - важная вещь. Его не заменить 8-часовой работой в офисе по узкой задаче.

pacify ★★★★★
() автор топика
Ответ на: комментарий от Eddy_Em

на 32-битных платформах нельзя мапить большие файлы.

anonymous
()
Ответ на: комментарий от Waterlaz
#include <stdlib.h>

int main()
{
	int i;
	for(i = 1; i < 1000000; i += 1000)
	{
		void *p = malloc(i);
		free(p);
	}
	return 0;
}
[del@del-arch ~]$ gcc -o test_malloc test.c
[del@del-arch ~]$ strace -f -s 1024 ./test_malloc 2>&1|grep brk|wc -l
10
[del@del-arch ~]$ strace -f -s 1024 ./test_malloc 2>&1|grep mmap|wc -l
15
DELIRIUM ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.