• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Виртуальная Память И Его Реализация.

  • Автор темы Vunderkind
  • Дата начала
Статус
Закрыто для дальнейших ответов.
V

Vunderkind

Дано задание реализации механизма виртуальной памяти на С, но у меня не получается даже начать. Дело в том что до реализации виртуалной памяти надо выделить память для основной памяти используя malloc, и основная память должно состоять из 100 блоков, а каждый блок из 128 байта. Как это реализовать понятии не имею. Не судите строго если я что-то не прав. написал, читайте задание(на англ.) прикрепленао к этой теме. Если можно, поэтапно объясните что надо делать в этом задании!
 

Вложения

  • Vitual_mem.pdf
    214,3 КБ · Просмотры: 167
G

Guest

Дело в том что до реализации виртуалной памяти надо выделить память для основной памяти используя malloc, и основная память должно состоять из 100 блоков, а каждый блок из 128 байта. Как это реализовать понятии не имею.

Здесь можно прочитать про функции выделения и освобождения памяти , и .

В твоем случае это будет выглядеть примерно так:
C++:
#include<cstdlib>

void main()
{
const size_t sizeBlock = 128;
const size_t countBlock = 100;

char* masBlock[countBlock];

// Выделение памяти.
for(size_t i = 0; i < countBlock; i++)
{
masBlock[i] = (char *)malloc(sizeBlock);
}

// Освобождение памяти.
for (size_t i = 0; i < countBlock; i++)
{
free(masBlock[i]);
}
}

Нужно только проверить как подключается заголовочный файл stdlib.h в твоем компиляторе.
 
V

Vunderkind

Огромное вам спасибо! У меня возник еще один вопрос, а как достучатся к определенной памяти определенного блока? Например: по задании надо взять адрес 45-го байта 13-го блока, умею взять адрес блока, а как взять адрес байта(наверное это невозм.) ?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!