185 похожих чатов

Просто меня даже напугало в какой-то момент, что в одной

собранной мною небольшой тестовой библиотеке вообще есть сегмент с прописанным виртуальным адресом 0x3DF0 и размером в 552 байта. То есть, он задевает ещё немного следующую страницу памяти, из-за чего придётся ещё практически бесполезно занимать кучу последующих байтов вплоть до 0x4FFF включительно. Но может разве "mmap" так делать? Он же, вроде бы, под капотом работает так, что в реальности он просто выделяет нужное количество страниц памяти и выдаёт их. Или флажок "MAP_FIXED" как раз отдельные байты с любым выравниваем фиксирует и правит права доступа на заданные для них?

9 ответов

21 просмотр

Посмотрите Ман на mmap. Вам придется терять какую то часть Вирт памяти на остатки страниц. Но это Вирт память , на чтение с нее емнип приходят нули просто

по факту границы надо расширять, до выравнивания указанного в заголовках самого elf, а потом мапить этот диапазон, в результате некоторые куски файла на грание сегментов могут задублироваться

Viktoriia-Pashchenko Автор вопроса
disba1ancer
по факту границы надо расширять, до выравнивания у...

В program headers, вы хотели сказать? ELF-заголовок не хранит данные по выравниванию

Viktoriia Pashchenko
В program headers, вы хотели сказать? ELF-заголово...

я сказал где-то в заголовка самого elf, я не указывал на что-то конкретное

Viktoriia-Pashchenko Автор вопроса
disba1ancer
по факту границы надо расширять, до выравнивания у...

Кстати, задублироваться могут именно из-за того, что вот по страницам мы будем мапить 0x2000 на 0x3000, и там могут оказаться куски прошлого сегмента?

Viktoriia Pashchenko
Кстати, задублироваться могут именно из-за того, ч...

при это могут быть казусы, что виртуальные адреса конца одного и начало следующего будут различаться на p_align

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
18
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Карта сайта