NoneBrk () и sbrk() изменяют местоположение прерывания программы, которое определяет конец сегмента данных процесса (т. е. прерывание программы - это первое место после конца неинициализированного сегмента данных).
5 ответов

Что такое разрыв программы? Откуда это начинается,0x00?

int brk(void *end_data_segment); void *sbrk(intptr_t increment); Вызов sbrk() с шагом 0 может быть использован для определения текущего местоположения остановки программы. Что такое разрыв программы? Откуда это начинается,0x00?
14 июн '11 в 01:27
1 ответ

Почему возвращаемое значение первого sbrk отличается от последующих вызовов?

Я пытаюсь понять, как работает память в C, поэтому экспериментирую с sbrk функционировать сейчас. я знаю это sbrk(0) должен вернуть текущий разрыв программы, то есть конец сегмента данных. Я попытался позвонить sbrk(0) несколько раз, и по какой-то п…
27 янв '19 в 22:42
1 ответ

Не могу изменить размер кучи AMD64

Я пытаюсь увеличить размер кучи на 100 путем изменения brk, и я не знаю, почему мой код не работает. Вот часть кода, которая пытается это сделать: movq $0, %rdi movq $12, %rax syscall movq %rax, InicialHeap movq InicialHeap, %rsi mov $str, %rdi call…
19 июн '16 в 05:35
1 ответ

Источник ядра - в каком файле определен brk()

Я хотел бы знать в исходной версии ядра>= 2.6 где brk определено. То есть какой файл c содержит его определение? grep не раскрывая много. Также sbrk реализован в glibc правильно?
25 апр '12 в 09:42
2 ответа

Как найти текущее место разрыва программы

Я попытался добавить это внутри функции системного вызова brk: void *addr = sbrk(0); printk("current-add-is-%p-\n", addr); Но он вернул ошибку во время компиляции ядра, что неявное объявление функции sbrk. И я не смог найти где определяется sbrk!! В…
07 мар '16 в 16:38
1 ответ

brk(0) занимает слишком много времени?

Это вывод strace -T -ttt -ff -x -y -o pid.trace -p 2145, Трассировка приведена ниже. 1503431273.934716 semop (1204093022, {{0, 1, SEM_UNDO}}, 1) = 0 <0,000004> 1503431273.934737 clock_gettime(CLOCK_REALTIME, {1503431273, 934741536}) = 0 <0,000004> 1…
23 авг '17 в 18:25
4 ответа

Как sbrk/brk реализован в Linux?

Я думал о том, как ядро ​​Linux реализует системные вызовы, и мне было интересно, может ли кто-нибудь дать мне общее представление о том, как работает sbrk / brk? Я просмотрел код ядра, но его так много, и я его не понимаю. Я надеялся на резюме от к…
15 июн '09 в 17:50
2 ответа

Несколько вызовов malloc для внутреннего вызова mmap только один раз

Когда я пытаюсь выполнить приведенный ниже код, я не могу четко проанализировать внутренние вызовы malloc api. Что мне непонятно, так это системный вызов, mmap вызывается только один раз для 2 или более вызовов malloc. Если я также назначаю более 40…
15 июн '16 в 08:37
1 ответ

Расщепление sbrk на 2

Чтобы перекодировать функцию malloc, я делаю sbrk(stack) где: void *malloc(size_t size) { stack = 0; while (stack &lt; size) stack += 4096; } Я всегда использую malloc больше, чем мне нужно, поэтому я хочу взять часть этой выделенной области размера…
01 фев '17 в 13:16
1 ответ

Что обозначают brk и sbrk?

Пока я знаю, что называют системной Unix brk и функция sbrk делаю, я понятия не имею, что они стоят. Кто-нибудь может просветить меня?
28 июл '11 в 22:43
1 ответ

Мнения и предложения, касающиеся моего подхода к первичной подгонке функции malloc

Я пишу функцию malloc для назначения в колледже. Вот основная схема моей идеи: 1) Определить структуру узла с указателями на предыдущий узел, следующий узел, а также символ для размера и вакансии. Каждый регион в куче будет содержать скрытый узел с …
06 июл '12 в 04:22
0 ответов

Strace обнаруживает вызовы brk, но GDB не останавливается на точке останова

Я пытался отладить утечки памяти в течение довольно долгого времени. Моя главная проблема не в том, что я не могу использовать подходящие инструменты, такие как Valgrind и тому подобное, поэтому я остановился на простой GDB + strace. Моя программа -…
31 окт '16 в 14:41
2 ответа

Очищается ли память ядром Linux, когда brk уменьшается, а затем снова увеличивается?

Мне просто интересно, что происходит с памятью, которую пользовательская программа освобождает через системный вызов brk, а затем возвращается обратно. Ядро очищает его или его содержимое не определено? Я полагаю, что ядро ​​очищает страницы, когда …
1 ответ

Где на самом деле начинается выделенная память, когда я использую системный вызов brk

Я пытаюсь выделить немного памяти, используя sys_brk в сборке NASM/x86. sys_break возвращает новый адрес разрыва, который является концом сегмента данных, верно? Так где же находится моя вновь выделенная память? Я предположил, что он находится между…
01 окт '15 в 10:22
1 ответ

Используя brk, чтобы получить brk_start

Руководство для int brk(void *end_data_segment); говорит: "brk() устанавливает конец сегмента данных на значение, указанное в end_data_segment" В случае успеха возвращается 0 или -1. Но как мне получить значение инициализации моего перерыва (наприме…
13 янв '13 в 19:39
1 ответ

Длительный процесс отладки. Страс, брк

У меня есть интернет-магазин Magento, он запускает задания cron для выполнения запланированных процессов. Одним из них является импорт продукции. Он отвечает за импорт товаров и их распределение по категориям. В соответствии с состоянием sql я вижу,…
21 ноя '14 в 10:59
2 ответа

Сегменты ошибок Bash на brk()

Может кто-нибудь объяснить, почему этот "бесконечный" цикл segfaults быстро? Например, допустим, у нас есть эта функция: #!/bin/bash foo() { foo }; foo Это происходит через 8-10 секунд. Изучая через strace, мы видим много вызовов brk(): brk(0x2e1100…
28 дек '17 в 16:27
1 ответ

Как работает sbrk()?

Я пытаюсь понять как sbrk работает. Вот мой маленький код: int main() { printf("end of the break : %p\n", sbrk(0)); printf("end of the break : %p\n", sbrk(10)); printf("new end of the break : %p\n\n", sbrk(0)); } Это выводит: end of break : 0xaa6000…
28 янв '17 в 18:53
1 ответ

Поднятие BRK в сборке на i386 Linux

Я нашел и изучил ошибку сегментации доступа к памяти x86, и она не будет работать в моем коде. Возможно, разница в том, что я не использую отдельные сегменты.text и.data, но держу все в одном сегменте, создавая собственный заголовок ELF. Это объясня…
03 апр '16 в 14:15
9 ответов

Что делает системный вызов brk()?

Согласно руководству для программистов Linux: brk () и sbrk() изменяют место остановки программы, которое определяет конец сегмента данных процесса. Что здесь означает сегмент данных? Это просто сегмент данных или данные, BSS и куча вместе взятые? С…
08 авг '11 в 20:57