Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм NRU, подскажите что оно такое, с чем едят? 
:(
    Опции темы
NFL
  Дата 24.11.2010, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Собственно, курсовой проект по теме: Алгоритм вытеснения страниц NRU.
Теорию по этому алгоритму я более-менее понимаю, а вот практически его применить.. Пока не представляю как...

Задача звучит так:
Разработать программу моделирования указанного алгоритмавытеснения страниц из оперативной памяти.
Предполагается, что в память, поделенную на определенное количество страничных кадров, последовательно нужно загрузить опеределенное количество страниц.

Количество страничных кадров: 2-20, количество страниц: 2-40

В ходе работы программы необходимо графически отображать:
- Содержимое памяти (какая страница в какой кадр загружена)
- Моменты страничных отказов
- Предусмотреть использование кластеризации
Обращение к страницам - в произвольном порядке, предусмотреть возможность чтения списка обращений из файла.

PS: за меня решать не прошу, прошу подкинуть ссылки на литературу, или показать пример, если  у кого вдруг такое уже было и авалялось, и не жаль поделиться smile 

Заранее спасибо всем отозвавшимся smile  smile  smile 
PM MAIL   Вверх
xvr
Дата 24.11.2010, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(NFL @  24.11.2010,  16:08 Найти цитируемый пост)
Теорию по этому алгоритму я более-менее понимаю, 
Тогда в чем проблема 
Цитата(NFL @  24.11.2010,  16:08 Найти цитируемый пост)
практически его применить..
?
Цитата(NFL @  24.11.2010,  16:08 Найти цитируемый пост)
подкинуть ссылки на литературу
От Гугла отключили? 
виртуальная память NRU - 268 результатов
Прямо из первой же ссылки:
Цитата

NRU (Not Recently Used) — Не использовавшаяcя в последнее время страница

С каждой страницей связаны два бита — R (Referenced — обращения), устанавливается всякий раз при обращении и бит M (Modified — изменение), устанавливается, когда страница изменяется. Эти биты могут использоваться для реализации простого алгоритма. Когда процесс запускается, оба страничных бита для всех его страниц установлены в 0.

Когда происходит страничное прерывание, ОС проверяет все страницы и делит их на четыре класса:

    * Класс 0: не было обращений и изменений.
    * Класс 1: не было обращений, страница изменена.
    * Класс 2: было обращение, страница изменена.
    * Класс 3: было обращение и изменение. 

Алгоритм NRU удаляет случайную страницу из непустой группы с наименьшим номером. 


PS. При чем тут Системное програмирование и WinAPI?

PM MAIL   Вверх
NFL
Дата 24.11.2010, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Цитата(xvr @  24.11.2010,  18:26 Найти цитируемый пост)
При чем тут Системное програмирование и WinAPI?


При том что дисциплина - системное программное обеспечение smile 


PM MAIL   Вверх
NFL
  Дата 6.12.2010, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Вот почитал теорию...

Можно ли представить страницу как 
Код

struct Page
{
bool M;
bool R;
int size;
};


потом в основной программе создавать массив типа Page p[x], выделять под каждый элемент при помощи GlobalAlloc память (4096 байт), где х - число в диапазоне 2-40, случайным способом генерировать список обращений, прерываний и вытеснение? будет ли это все достаточной демонстрацией алгоритма?
PM MAIL   Вверх
GremlinProg
Дата 6.12.2010, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Код

union Page
{
  struct{
    BYTE M : 1;
    BYTE R : 1;
  };
  BYTE Class : 2;
};

случайно тут будет только 3 параметра
1. диапазон, по которому производится обращение
2. тип операции: чтение, запись 
3. начальные классы этих страниц

для полноценного моделирования, нужно задать еще число физических страниц в наличии,
чтобы знать, когда записывать на диск страницу (сбрасывать флаг M),
т.е. должно быть еще сопоставление вирт к физ страницам,
это можно делать дополнительным флагом в вирт. странице и глобальным счетчиком занятых страниц,
физически ведь не стоит задача моделировать чтение/запись

все остальное вполне закономерно:
1. списки формируются исходя из количества и текущих классов страниц
2. удаление производится в момент обращения к неотображенной странице
3. выгрузка (на диск) - либо в момент когда заканчиваются физические страницы, либо когда их количество достигает какого-то порога


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
dffc
Дата 1.12.2011, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 1.12.2011

Репутация: нет
Всего: нет



ОЧЕНЬ нужен код для этого алгоритма. Никто не поделится?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.