С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
35 / 1 / 1
Регистрация: 07.09.2014
Сообщений: 34
1

Битовая карта.Наиболее подходящий

09.11.2014, 12:33. Показов 3142. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу, моделирующую динамическое распределение памяти в операционной системе. В качестве модели оперативной памяти программа должна использовать байтовый массив размера не менее 1024 байт. Использование других глобальных переменных в программе запрещено (то есть вся информация о свободных/занятых участках должна храниться внутри массива). В программе в обязательном порядке должны присутствовать следующие функции:
а) Выделить участок заданного размера. В случае успеха вывести начальный адрес выделенного участка. Если участка подходящего для выделения не найдено, необходимо вывести диагностическое сообщение о нехватке памяти.
б) Освободить ранее выделенный участок. В качестве параметра функция должна принимать начальный адрес освобождаемого участка. Ранее выделенный участок может быть освобожден только целиком (освобождение части участка не допускается).
в) Получить информацию о свободных/занятых участках в «оперативной памяти» (количество участков каждого типа, начальные адреса, размеры, общее количество занятой и свободной памяти).
Алгоритм выделения памяти - Наиболее подходящий
Способ хранения информации - Битовая карта.

С картой более менее разобрался..
С алгоритмом выделения памяти проблема.

При добавлении памяти он пишет даже если размер 1 ввожу пишет - Блок необходимого размера не найден.Добавление невозможно.

Фрагмент кода программы.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void add(int razmer_bloka)
{
    int tmp=0;
    int n=0;
    while (n!=MAX_L-1)
    {
        if ((Memory[n]==1) ||  (Memory[n]<=1)) //Наиболее подходящий(правильно или нет??)
        { 
            n++; 
            tmp=0; 
            continue;
        }
        if (Memory[n]==0)
        {
            tmp++;
            n++;
        }
        if (tmp==razmer_bloka) 
        {
            cout<<"Блок найден"<<endl;
            zap(n-razmer_bloka,razmer_bloka,&size);
            return;
        }
    }
    if (n==MAX_L-1) cout<<"Блок необходимого размера не найден"<<endl<<"Добавление невозможно"<<endl;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2014, 12:33
Ответы с готовыми решениями:

Определить наиболее богатые и наиболее бедные месторождения
помогите написать программу на С++ по задаче Известны запасы нефти, в каждом из шести...

битовая маска
надо разработать функцию проверки правильности битовой маски. 32-х битная “маска” считается...

Битовая сортировка!
Всем привет. Нужно написать реферат по теме &quot;Битовая сортировка&quot;. Такого в инете, а также...

Битовая арифметика
Почему при: int myVar = 15, mask = 0x00 00 00 01; //выделил разряды printf(&quot;%d&quot;, myVar &amp; mask);...

0
09.11.2014, 12:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2014, 12:33
Помогаю со студенческими работами здесь

Битовая операция ->
Что делает операция -&gt; К примеру, есть структура: struct BIT{ unsigned int cod1:3; ...

битовая маска
как использовать битовую маску? за пример можно взять выделение k-того разряда из n-разрядного...

Битовая инверсия
Доброго времени суток! Я что-то запутался с побитовой инверсией. В коде прописываю int a=5;...

64-битовая строка
Необходимо реализовать структуру 64-битовой строки состоящей из двух unsigned long полей, с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru