Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Моделирование простых способов организации памяти (C# Windows Form)  (Прочитано 6660 раз)
0 Пользователей и 1 Гость смотрят эту тему.
203
Интересующийся

by
Offline Offline

« : 06-06-2013 17:15 » 

Здравствуйте. Задача стоит такая: Моделирование простых способов организации памяти. Вроде всё есть но вот в чём проблема. Когда загружаешь в ОП какие то 3 любых процесса (любого размера) процесс который находится по середине извлекаешь из ОП, остаётся дырка от этой дырки нужно избавится (уплотнить процессы). (т.е когда я нажимаешь на кнопку уплотнить то процессы передвигаются в верх, а дырка в низ что бы не уменьшился размер ОП). Собственно в уплотнении и возникли проблемы. Вот проект. Помогите пожалуйста заранее спасибо.


Добавлено через 2 часа, 3 минуты и 51 секунду:
Пытаюсь что то написать но не как
Код: (C#)
bool uspeh = false;
            for (int i = 0; i < listView1.Items.Count && !uspeh; i++)
            {
                int j = i;
                if (listView1.Items[i].SubItems[1].Text != "0" && i != listView1.Items.Count + 1 && i != 0 && (listView1.Items[i - 1].SubItems[1].Text == "0"))
                {
                    while (listView1.Items[j].SubItems[1].Text == "0" && j != 0 && j != listView1.Items.Count)
                    {
                        listView1.Items[j - 1].SubItems[1].Text = listView1.Items[j].SubItems[1].Text;
                        listView1.Items[j - 1].SubItems[3].Text = listView1.Items[j].SubItems[3].Text;
                        if (j != listView1.Items.Count - 1 && listView1.Items[j + 1].SubItems[1].Text == listView1.Items[j].SubItems[1].Text)
                        {
                            j++;
                            continue;
                        }
                        else
                        {
                            listView1.Items[j].SubItems[1].Text = "0";
                            listView1.Items[j].SubItems[3].Text = String.Empty;
                            break;
                        }
                    }
                    uspeh = true;
                }
            }

* Pamjat.rar (81.63 Кб - загружено 952 раз.)
« Последнее редактирование: 07-06-2013 04:31 от Алексей++ » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 06-06-2013 19:37 » new

Ничего не понял. Какое отношение к модели памяти имеют всякие listView?

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

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
203
Интересующийся

by
Offline Offline

« Ответ #2 : 06-06-2013 19:54 » 

Теория такая. Написать программу которая будет моделировать простой способ организации памяти. В программе задаётся размер ОП 16 32 64... Размер одного сегмента памяти в моём случае равен 4. Далее в ОП загружается процессы, в программе нужно указывать имя процесса и его размер. Реализовано функция выгрузки процесса из ОП. Должно ещё быть уплотнение но в нем и заключается моя проблема.
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 06-06-2013 20:06 » 

Круто...
Нужно написать свой менеджер памяти.
Особенно мне нравится уплотнение.

Вот есть у меня некая многопотоковая  задача, например обработчики прерываний. В ОП хранятся различные настройки (как они туда попадают - не суть важно).
Есть некий менеджер памяти, и прерывания выделяют благодаря ему под свои задачи память.
Вдруг, кому-то захотелось дефрагментировать память, что ж похвальное решение.
Что должен сделать менеджер?
Он должен сообщить задачам, что память-то дефрагментирована, и новые блоки находятся по другому адресу.

Но и задачи должны быть написаны так, чтоб они этот сигнал принимали. А задача - асинхронная...

ТЗ какое-то или сильно простое, или сильно упрощенное, или я чего-то не понял.

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
203
Интересующийся

by
Offline Offline

« Ответ #4 : 06-06-2013 20:14 » 

Наверное это сильно упрощенное задание, но большего и не требуют (хотя ещё надо Управление памятью с помощью связных списков т.е вывести ещё один список но уже с P и H) но это уже потом, сначала нужно сделать уплотнение.

Добавлено через 11 часов, 50 минут и 18 секунд:
Вроде с уплотнением разобрался теперь стоит проблема как реализовать Управление памятью с помощью связных списков вот план действий:
1. Каждая запись в списке содержит=
2. информацию о том является ли область памяти =
       свободной (Н, от hole — дыра)
       или занятой процессом (Р, process)
3. адрес, с которого начинается эта область;
4. ее длину;
5. содержит указатель на следующую запись.
Как вот это реализовать в моём случае, подскажите пожалуйста.
« Последнее редактирование: 07-06-2013 08:04 от 203 » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines