Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_LenOk_
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 6
#1

С Паскаля на С++. Реализация модели распределения памяти. - C++

28.03.2012, 22:37. Просмотров 975. Ответов 4
Метки нет (Все метки)

Задание. Программа реализация модели распределения памяти перемещаемыми разделами.

Pascal
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Program Model_raspredelenia_pameati;
 uses crt;
 const n=10;
 type massiv=array[1..n] of integer;
 Label L1,L2,L3;
 Var A:massiv;   y:string;   i,j,k,g,sum,w,x :integer;
 begin
 clrscr; randomize; {включение генератора случайных чисел }   
 writeln('pameat polnosteu svobodna'); {вывод на экран сообщения'pameat polnosteu svobodna'} 
 for i:=1 to n do
 begin
 A[i]:=256; {присваивание каждому элементу массива А 256 Мб свободной памяти} 
writeln(A[i]); {вывод на экран массива А} 
end;   readln(y);
L1:   sum:=0; {присваивание сумме свободной памяти значение  о}
         for i:= 1 to n do
         sum:=sum+A[i];
         j:=round(random*512); {загрузка  процесса со случайным размером от 0 до 512Мб  в память, j присваиваются значения памяти, занимаемой процессом  }  
         if j>sum then goto L2; {если j>sum то выводится сообщение: 'Mesta dlea zagruzki ne dostatochno  process postavlen v ochered'}
    x:=1;
   for i:= 1 to n do
   begin
   if A[i]=0 then x:=x+1;    end;
  k:=round(random(n-1-x))+x; {k присваивается произвольный номер массива, куда записывается процесс при условии ,что процесс не может записаться в ячейку, следующую сразу после полностью заполненной}
         writeln('process obemom ', j , 'Mb'); {вывод сообщения- 'process obemom ', j , 'Mb' }
         if k=0 then k:=1;
        if (j>256) and (k=n) {если размер пришедшего в ячейку памяти процесса больше, чем ее максимальный объем (т.е 256Мб), то выполняются идущие ниже действия}
    then k:=n-1;
        A[k]:=A[k]-j; {присваиваем ячейке, куда пришел процесс значение оставшейся свободной памяти в ячейки после вычета из нее занимаемой процессом памяти}
        while A[k]<0 do {пока свободная память в занимаемой ячейки массива будет иметь отрицательное значение выполняются идущие ниже действия}
begin
 g:=A[k]; {g присваивается значение свободной памяти в ячейке , куда загрузился процесс}
 A[k]:=0; {ячейке, в которую пришел процесс присваивается значение равное о }
 k:=k+1; 
A[k]:=A[k]+g; {к памяти соседней ячейки с ячейкой, в которую загрузился процесс, прибавляется оставшееся  отрицательное значение памяти процесса}
end;
writeln('zagruzka novogo processa'); {вывод текстового сообщения 'zagruzka novogo processa'}
for i:=1 to n do
begin
writeln(A[i]); {вывод массива А  с загруженным процессом }
end;
for w:=1 to 2 do
begin
 i:=1;
while i <> n do {пока текущий номер элемента массива не равен последнему выполняются идущие ниже действия }
begin
 if (A[i] <> 256) then  {если текущий элемент массива является тем , в который уже загрузился процесс (частично или полностью), то выполняются идущие ниже действия}
 begin
 g:=i;
 while g <> 1 do  {пока текущий номер элемента в массиве не будет равен первому выполняются идущие ниже действия}
 begin
 if A[g-1] <> 256 then do  {если  значение соседнего элемента, с элементом куда загружался процесс не равно 256 , то  выполняются идущие ниже действия}
 begin
 if A[g-1] > 256 - A[g] then {если памяти соседней ячейки хватает, чтобы записать процесс, то  выполняются идущие ниже действия}
 begin
 k:=A[g-1] {k - присваиваем значение свободной памяти соседней ячейки}
A[g-1]:=k - 256 + A[g]; {сдвигаем ячейки , куда загрузился процесс,сжимая при этом процессы , с оставшейся от вычитания свободной памятью}
 A[g]:=A[g+1];
 end
 else    begin
 k:=A[g]; {k - присваиваем значение свободной памяти ячейки, куда загрузился процесс}
A[g]:=k + A[g-1]; {сдвигаем ячейки , куда загрузился процесс,сжимая при этом процессы , с оставшейся от вычитания свободной памятью}
 A[g-1]:=0;
  end;
  end
  else
  begin
 A[g-1]:=A[g]; ]; {сдвигаем ячейки , куда загрузился процесс,сжимая при этом        процессы , с оставшейся от вычитания свободной памятью}
 A[g]:=A[g+1];
 A[g+1]:=A[g+2];
  end;
  g:=g-1;
  end;
  end; 
  i:=i+1;
  end;
   end;
  Writeln('posle sdviga i sgatiea'); ); {вывод текстового сообщения 'posle sdviga i sgatiea'}
  for i:=1 to n do
   begin
  writeln(A[i]); {вывод массива А  после сдвига и сжатия его элементов}
   end;
  Writeln('zagruzit eshe proces y/n'); ); {вывод текстового с предложением загрузить новый процесс}
   readln(y); {ввод строки символов}
  if y='y' then {если вводимый символ является 'y', то выполняется метка1( т.е   ввод нового процесса , сдвиг и сжатие), иначе осуществляется выход из программы}
  begin
  goto L1
  end
  else
  begin
  goto L3;
  end;
L2: writeln('process obemom ', j , 'Mb') ;
 writeln('Mesta dlea zagruzki ne dostatochno  process postavlen v ochered');
L3: readln;
end.
Добавлено через 2 минуты
P.S. еще я не знаю как сделать, чтобы поступаемые на выполнение задачи содержались в файлах, которые пользователь мог бы загружать в моделируемую память и выгружать из нее.

Добавлено через 1 час 3 минуты
плиззз...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2012, 22:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С Паскаля на С++. Реализация модели распределения памяти. (C++):

Сложности распределения памяти - C++
Ребят, никогда не писал под студию, всё время на Dev C++, там проблем с изначальным кодом не было, программа работала прекрасно, а вот в...

Разработать собственные функции динамического распределения памяти - C++
Разработать собственные функции динамического распределения памяти, используя в качестве “кучи” динамический массив, создаваемый обычной...

Как работает strcpy с точки зрения распределения памяти? - C++
Уважаемые знатоки С++, объясните, пожалуйста, как работает strcpy с точки зрения распределения памяти? Ламерский вопрос, но все-таки...

Реализация стека на массиве и динамическом распределении памяти - C++
всем привет, дано такое задание: Используя стек, решить следующую задачу. Напечатать каждое слово текстового файла Т в обратном...

Модель распределения памяти разделами переменного размера с общей очередью, стратегия "наименее подходящий" - C++
Здравствуйте. Получил следующее задание: Для каждой поступающей программы выделяется один из свободных участков памяти. Таким образом,...

Мат ожидание и дисперсия распределения Паскаля - Теория вероятностей
Известно, что для распределения Паскаля с параметрами p и m мат ожидание равно m/p и дисперсия m*(1-p)/p^2. А как они получаются....

4
Kuzia domovenok
2041 / 1886 / 172
Регистрация: 25.03.2012
Сообщений: 6,499
Записей в блоге: 1
28.03.2012, 22:44 #2
Pascal
1
goto L1
гоуту это страшное зло в высокоуровневых языках.
отбивает всякое желание смотреть код
легче в ассемблере разбираться
0
_LenOk_
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 6
29.03.2012, 09:08  [ТС] #3
понимаю, но нужно срочно... сама с++ не знаю почти
0
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
29.03.2012, 10:03 #4
Цитата Сообщение от _LenOk_ Посмотреть сообщение
понимаю, но нужно срочно... сама с++ не знаю почти
срочно это во фриланс
было бы замечательно если бы еще автор написал задачу и алгоритм
0
_LenOk_
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 6
30.03.2012, 01:58  [ТС] #5
Задание. Разработать программу, моделирующую алгоритм управления памятью. Распределение памяти перемещаемыми разделами. При моделировании считать, что поступаемые на выполнение задачи содержаться в файлах, которые пользователь может загружать в моделируемую "память" и выгружать из нее. Программа должна иметь возможность просмотра состояния моделируемой "памяти"
0
30.03.2012, 01:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2012, 01:58
Привет! Вот еще темы с ответами:

Оптимизация распределения с использованием математической модели - MS Excel
Доброго времени суток,уважаемые форумчане! Прошу помочь решить задачу! Немного встал в ступор,решается она впринципе стандартными...

Расчёт распределения весов в гибридной модели прогнозирования - Теория вероятностей
Всем доброго времени года! Есть 10 моделей прогнозирования которые считают прогноз. Далее исходя из обратной доли их ошибок (т.е чем...

Составление математической модели для задачи нахождения оптимального распределения капиталовложений - Методы оптимизации
Вечер добрый, уважаемые Мэтры. Мне тут на досуге пришлось сдавать работу по линейному программированию. И была там вот такая вот...

Реализация компонентной модели - SFML
Здравствуйте! Меня заинтересовала компонентная модель игрового объекта. А именно: игровой объект (игрок, дерево, машина...)...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.