Управление виртуальной памятью

Разработка программы менеджера памяти для замещения и размещения файлов свыше установленного порога. Определение количества удовлетворенных запросов. Алгоритм записи блоков по логическим адресам. Вывод информации о свободной и занятой памяти, процессах.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 13.11.2019
Размер файла 75,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://allbest.ru

Учреждение образования Республики Беларусь

«Гомельский государственный технический университет

им. П.О.Сухого»

Кафедра «Автоматизированных и информационных систем»

Лабораторная работа

Управление виртуальной памятью

Выполнил: студент Акулич А.П.

Принял: преподаватель Соболев Д.В.

Гомель 2019

Цель работы: изучение алгоритмов управления памятью, разработка программы менеджера памяти.

Индивидуальные задания

Разработать программу, реализующую заданный алгоритм выделения памяти. алгоритм программа память файл

Менеджер памяти должен:

1. По запросу процесса выделять память, согласно заданного алгоритма (таблица 1).

Таблица 1.

Задание

Локальное размещение с динамическим увеличением количества выделенных страниц при количестве запросов к страницам больше установленного порога. Алгоритм замещения - Random. Замещается случайная страница.

На экран должна выводиться следующая информация о состоянии памяти: объем памяти, объем свободной памяти, размер наибольшего свободного блока, количество запросов на выделение памяти, количество удовлетворённых запросов (%).

2. Для выделения памяти указывается имя процесса и размер блока. После нажатия на кнопку «ДОБАВИТЬ» память выделяется или выдается сообщение о невозможности выделения.

3. Удалять из памяти заданный блок или все блоки заданного процесса (по нажатию кнопки «УДАЛИТЬ»). Указывается номер удаляемого блока и имя процесса.

4. Реализовать возможность последовательной записи/чтения информации в/из выделенную память по логическому адресу. Вывести физического адреса ячейки памяти, в которую была осуществлена запись.

5. Организовывать циклическое выделение и освобождение памяти. При этом случайным образом задается количество выделяемых блоков и их размер.

Листинг программы

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct Page{

int memory;

int free_memory;

char proc_name[20];

int appeal;

bool active;

};

void FirstFilling(Page *pg,int col,int size){

for(int i = 0; i < col; i++){

(pg+i)->memory = size;

(pg+i)->free_memory = size;

(pg+i)->proc_name[0] = '-';

(pg+i)->proc_name[1] = ' ';

(pg+i)->proc_name[2] = '\0';

(pg+i)->appeal = 0;

(pg+i)->active = false;

}

}

bool CheckForNamb(char *string)

{

for(int i = 0; i < strlen(string); i++)

{

if(string[i] < 48 || string[i] > 57) return false;

}

return true;

}

int ReadValueInt()

{

bool right = true;

char string[255];

while(right)

{

scanf("%s",string);

if(strlen(string)<10 && CheckForNamb(string))

right = false;

else

printf("Enter number < 147483647 !\n");

}

return atoi(string);

}

int SuchFree(Page *p,int col){

int i = -1;

bool such = true;

while(i < col && such){

i++;

if(!((p+i)->active)) such = false;

}

return(i);

}

bool In(int * m,int col,int z){

bool r = true;

for(int i = 0 ; i < col; i++){

if(m[i] == z) r = false;

}

return(r);

}

int Reb(Page *p,int col,int size){

int c=0;

for(int i = 0; i < col; i++){

if((p+i)->free_memory == size){

(p+i)->active = false;

c++;

}

}

return(c);

}

int main(){

Page pag[100];

int max_appeal,r,p,menu =

1,memory,free_memory,max_page,amt_page,free_page,appeal =

0,successful_appeal =

0,pr_size,page[100],amt_mas_page,shud_page,max_appel,pr_appeal;

char pr_name[20];

bool add_page,tmp;

printf("Enter amount for memory : ");

memory = ReadValueInt();

free_memory = memory;

printf("Enter amount for page : ");

amt_page = ReadValueInt();

free_page = amt_page;

FirstFilling(pag,amt_page,memory/amt_page);

printf("Enter max amount of pages for process : ");

max_page = ReadValueInt();

printf("Enter max appeal of pages for process : ");

max_appeal = ReadValueInt();

while(menu != 5){

printf("<========================================>\n");

printf("<==================MENU==================>\n");

printf("<========================================>\n");

printf("<-1-Add process-------------------------->\n");

printf("<-2-Delete process----------------------->\n");

printf("<-3-Info--------------------------------->\n");

printf("<-4-Periodic appeal---------------------->\n");

printf("<-5-Exit--------------------------------->\n");

printf("Enter point menu : ");

menu = ReadValueInt();

switch(menu){

case 1:{

printf("Enter name of process : \n");

scanf("%s",&pr_name);

printf("Enter size of process : \n");

pr_size = ReadValueInt();

if(pr_size > 0){

amt_mas_page = max_page;

free_page = Reb(pag,amt_page,memory/amt_page);

for(int i = 0; i < amt_mas_page; i++){

if(SuchFree(pag,amt_page) < amt_page){

page[i] = SuchFree(pag,amt_page);

pag[SuchFree(pag,amt_page)].active = true ;

}else{

p = rand() % amt_page;

if(In(page,amt_mas_page,p)){page[i] = p;}else{i--;}

}

printf("Form local pages : page[%d] = %d\n",i,page[i]);

}

r = 0;

pr_appeal = 0;

while(pr_size != 0){

appeal++;

printf("Wark with page : page[%d] = %d\n",r,page[r]);

if(pr_size > (memory / amt_page)){

pag[page[r]].memory = (memory / amt_page);

pag[page[r]].free_memory = 0;

pr_size -= (memory / amt_page);

}else{

pag[page[r]].memory = pr_size;

pag[page[r]].free_memory = (memory / amt_page) - pr_size;

pr_size = 0;

}

strcpy(pag[page[r]].proc_name,pr_name);

pag[page[r]].appeal++;

pr_appeal++;

if(pr_appeal >= max_appeal){

printf("Add page\n");

add_page = true;

pr_appeal = 0;

amt_mas_page++;

while(add_page && amt_mas_page <= amt_page){

if(SuchFree(pag,amt_page) < amt_page){p

= SuchFree(pag,amt_page);pag[SuchFree(pag,amt_page)].active

= true;}else{p = rand() % amt_page;};

printf("Form new page = %d, amt page = %d",p,amt_mas_page);

if(In(page,amt_mas_page,p)){page[amt_mas_page-1]

= p; add_page = false;}

printf("\n");

}

}

r++;

if(r >= amt_mas_page) r = 0;

}

}else{

printf("Size > 0\n");

}

break;

}

case 2:{

printf("Enter delete name of process : \n");

scanf("%s",&pr_name);

tmp = false;

for(int i = 0 ; i < amt_page ; i++)

{

if(!strcmp(pag[i].proc_name,pr_name)){

pag[i].memory = memory / amt_page;

pag[i].free_memory = memory / amt_page;

pag[i].proc_name[0] = '-';

pag[i].proc_name[1] = ' ';

pag[i].proc_name[2] = '\0';

pag[i].appeal = 0;

pag[i].active = false;

tmp = true;

}

}

if(tmp){

printf("Process %s delete!\n",pr_name);

}else{

printf("This process not found!\n");

}

break;

}

case 3:{

printf("Memory : %d\n",memory);

printf("Amount page : %d\n",amt_page);

printf("Free page : %d\n",free_page);

printf("Appeal : %d\n",appeal);

printf("|-----|--------------------|----------|----------|\n");

printf("| N | Name of process | Memory/%% | Appeal |\n");

printf("|_____|____________________|__________|__________|\n");

printf("|-----|--------------------|----------|----------|\n");

for(int i = 0; i < amt_page; i++){

printf("| %3d |%20s|%4d/%3.0f%% | %6d |\n",i+1,pag[i].proc_name,pag[i].memory,(pag[i].free_memory/(float)(memory / amt_page))*100,pag[i].appeal);

}

printf("|_____|____________________|__________|__________|\n");

break;

}

case 4:{

printf("Enter amount appeal : ");

p = ReadValueInt();

for(int i = 0; i < p;i++){

r = rand() % amt_page;

pag[r].appeal++;

appeal++;

printf("Appeal to page N = %d\n",r);

}

break;

}

case 5:{

printf("Exit...\n");

break;

}

default:{

printf("Error : Not right argument of menu!\n");

break;

}

}

}

return 0;

}

Порядок выполнения

В ходе выполнения данной лабораторной работы была создана программа, реализующая алгоритм замещения в виртуальной памяти.

На рисунке 1 показано начальное окно программы, в котором необходимо ввести один из вышеперечисленных пунктов.

Рисунок 1 - Запускное окно программы

Рисунок 2 - Вывод информации о свободной и занятой памяти, а также информации о процессах

Вывод

В ходе лабораторной работы были изучены алгоритмы замещения и размещения файлов на страницах виртуальной памяти.

Размещено на Allbest.ru

...

Подобные документы

  • Архитектура компьютеров и возможности операционной системы по управлению памятью. Суть концепции виртуальной памяти. Аппаратно-независимые и аппаратно-зависимые средства управления виртуальной памятью. Сегментно-страничная организации виртуальной памяти.

    презентация [355,2 K], добавлен 27.12.2010

  • Стратегии размещения информации в памяти. Алгоритмы распределения адресного пространства оперативной памяти. Описание характеристик модели и ее поведения, классов и элементов. Выгрузка и загрузка блоков из вторичной памяти. Страничная организация памяти.

    курсовая работа [708,6 K], добавлен 31.05.2013

  • Сравнительный анализ статической и динамической памяти. Быстродействие и потребление энергии статической памятью. Объем памяти микросхем. Временные диаграммы чтения и записи памяти. Микросхемы синхронной и асинхронной памяти. Режимы модулей памяти.

    презентация [114,2 K], добавлен 27.08.2013

  • Виртуальные файловые системы. Интерфейс системных вызовов для различных типов файловых систем. Реализация директорий. Индексируемое размещение. Управление свободной памятью. Список свободной дисковой памяти. Различные методы размещения кэша для диска.

    презентация [1,9 M], добавлен 24.01.2014

  • Улучшение параметров модулей памяти. Функционирование и взаимодействие операционной системы с оперативной памятью. Анализ основных типов, параметров оперативной памяти. Программная часть с обработкой выполнения команд и размещением в оперативной памяти.

    курсовая работа [99,5 K], добавлен 02.12.2009

  • Распределение виртуальной памяти. Страничная и сегментная организации виртуальной памяти. Сегментно-страничная организация виртуальной памяти. Преобразование виртуального адреса в физический. Упрощение адресации памяти клиентским программным обеспечением.

    курсовая работа [440,7 K], добавлен 04.03.2014

  • Распределение оперативной памяти фиксированными, динамическими и перемещаемыми разделами. Распределение с использованием внешней памяти. Принципы рaботы матричного принтера. Проектирование символов и разработка программы, реализующей их вывод на печать.

    курсовая работа [241,3 K], добавлен 01.07.2011

  • Методы расчета, схемотехнического проектирования и конструирования элементов и блоков ЦВМ. Разработка регистра, схемы записи и считывания из оперативной памяти. Применение макроопределений при моделировании устройств и построении принципиальных схем.

    курсовая работа [1,1 M], добавлен 12.02.2013

  • Твердотельный накопитель SSD, его виды: на основе микросхем памяти и флеш-памяти. Сравнение производительности HDD и SDD в рабочих условиях. Способы записи информации на винчестер. Технология структурированного носителя. Суперпарамагнитный предел.

    курсовая работа [53,3 K], добавлен 15.05.2012

  • Разработка способа экономного размещения в памяти заданной разреженной таблицы. Разработка процедуры/функции, обеспечивающей доступ к элементам таблицы по номерам строки и имени столбца. Хронометраж выполнения операций чтения и записи элементов в массивы.

    лабораторная работа [678,8 K], добавлен 22.12.2011

  • Структура микропроцессорной системы. Длина объектного кода команды. Входные и выходные данные. Представление чисел в эмуляторе. Команды, работающие со стеком и памятью. Запись данных в адрес памяти. Состояние ячеек памяти. Алгоритм загрузки программы.

    курсовая работа [319,1 K], добавлен 07.08.2013

  • Динамическое распределение памяти. Анализ виртуальной памяти, алгоритм ее обращения, общие принципы защиты. Страничная организация. Особенности переключения в мультизадачный режим. Режим системного управления. Расширение размера адресного пространства.

    презентация [1,3 M], добавлен 14.12.2013

  • История появления "флешек". Устройство и технические характеристики USB-флеш-памяти, принцип ее действия, дополнительные опции и программное обеспечение, типы разъемов. Карты памяти, их виды и форматы. Способы организации записи информации в ячейку.

    реферат [439,2 K], добавлен 21.12.2010

  • Компьютерная память, ее виды и классификации. Составляющие внутренней памяти процессорной системы (постоянное и оперативное запоминающие устройства). Построение пространства памяти заданного объема. Принцип записи и чтения информации, структура памяти.

    контрольная работа [609,8 K], добавлен 12.01.2015

  • Анализ работы параллельных вычислений на видеокарте GeForce GT 540M с использованием текстурной памяти. Рассмотрение специфических особенностей по адресации текстурной памяти. Изучение основ чтения и записи данных. Описание примеров данных программ.

    лабораторная работа [3,1 M], добавлен 04.12.2014

  • Объем двухпортовой памяти, расположенной на кристалле, для хранения программ и данных в процессорах ADSP-2106x. Метод двойного доступа к памяти. Кэш-команды и конфликты при обращении к данным по шине памяти. Пространство памяти многопроцессорной системы.

    реферат [28,1 K], добавлен 13.11.2009

  • Как осуществляется трансляция адресов при страничной организации. Что такое компактировка и как с ее помощью избавиться от внешней фрагментации. Что такое регистр таблицы страниц, сегментация. Методы распределения памяти в виде отдельных сегментов.

    контрольная работа [236,2 K], добавлен 23.12.2016

  • Изучение понятия архивации, сжатия файлов с целью экономии памяти и размещения сжатых данных в одном архивном файле. Описания программ, выполняющих сжатие и восстановление сжатых файлов в первоначальном виде. Основные преимущества программ-упаковщиков.

    контрольная работа [534,7 K], добавлен 11.01.2015

  • Разработка драйвера под Linux, отслеживающего выделение и освобождение процессами виртуальной памяти и выделение физических страниц при страничных отказах. Компиляция драйвера и работа с ним. Экспериментальная проверка работоспособности драйвера.

    курсовая работа [43,5 K], добавлен 18.06.2009

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

    лабораторная работа [51,2 K], добавлен 14.05.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.