Информатика, опубликовано 2018-08-22 23:45:38 by Гость
Ребят, плиз срочно выручайте))) Написать программу, моделирующую динамическое распределение памяти в операционной системе. В качестве модели оперативной памяти программа должна использовать байтовый массив размера не менее 1024 байт. Использование других глобальных переменных в программе запрещено (то есть вся информация о свободных/занятых участках должна храниться внутри массива). В программе в обязательном порядке должны присутствовать следующие функции: а) выделить участок заданного размера. В случае успеха вывести начальный адрес выделенного участка. Если участка подходящего для выделения не найдено, необходимо вывести диагностическое сообщение о нехватке памяти. б) освободить ранее выделенный участок. В качестве параметра функция должна принимать начальный адрес освобождаемого участка. Ранее выделенный участок может быть освобожден только целиком (освобождение части участка не допускается). в) получить информацию о свободных/занятых участках в «оперативной памяти» (количество участков каждого типа, начальные адреса, размеры, общее количество занятой и свободной памяти). ВАРИАНТЫ ЗАДАНИЙ. Варианты заданий комбинируются из возможных способов хранения информации о свободных занятых блоках и различных алгоритмов, применяемых при выделении участка. Примерное соответствие варианта задания и указанных параметров представлено в следующей таблице: Вариант задания Алгоритм выделения Способ хранения информации 1 Первый подходящий Битовая карта 2 Наиболее подходящий Битовая карта 3 Наименее подходящий Битовая карта 4 Двоичного разбиения Битовая карта 5 Первый подходящий Список блоков 6 Наиболее подходящий Список блоков 7 Наименее подходящий Список блоков 8 Двоичного разбиения Список блоков Я 5 вариант)) заранее благодарю
Ответ оставил Гость
Вот http://pastebin.com/x5kVbW2D
Подредактируй ввод вывод.
или вот
#include
using namespace std;
const int N = 1024+3; //size of "RAM"vector
int get_area(int n){ for (int i = 0; i }
string del_area(int n){ int j = n; for(int i = n ; ram[j].second == ram[i].second && i int get_status(){ cout int main(){ ///code by Dmitry Kulazhenko (DmitryCpp) ///ram index begins at 0 ///give area of RAM, size n get_area enter n ///delete area, with start index n del_area enter n ///give status of using RAM get_status ///to quit exit string s; while( s != "exit" ) { cin >> s; if (s == "get_area") { int n; cin >> n; cout > n; cout
Не нашли ответа?
Если вы не нашли ответа на свой вопрос, или сомневаетесь в его правильности, то можете воспользоваться формой ниже и уточнить решение. Или воспользуйтесь формой поиска и найдите похожие ответы по предмету Информатика.
