Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 30.12.2010, 13:51   #1 (permalink)
Александр ФТК
Новичок
 
Регистрация: 30.12.2010
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Менеджер сегментированной/строчной памяти

Всем привет! Помогите пожалуйста люди добрые и умные! Нужна помощь в подробном переводе кода, заданный преподавателем.

менеджер сегментированной памяти:

short cMemoryManager::realloc()
{
short addr = MEMORY_SIZE - 8;
sBlockDescription *tmp = (sBlockDescription*)(&memory[addr]);
while(empBlockCnt() > 1)
{
while(tmp->nextAddr != -1)
{
addr = tmp->nextAddr;
tmp = (sBlockDescription*)(&memory[addr]);
moveEmptyBlockEx(addr);
}
glueEmpBlocks(0);
addr = MEMORY_SIZE - 8;
tmp = (sBlockDescription*)(&memory[addr]);
}
return 0;
}


менеджер строчной памяти:

void read(int id,int size,int offset,char* data)
{
sPage* tmp;
int start = offset / PSZ;
int start_offset = offset - start * PSZ;
int cur = 0;
int sp = start_offset;
int pp = start;
if(alc->data[id][pp] != -1)
tmp = getPageForReadOrWrite(alc->data[id][pp]);
else
return;
while(size--)
{
if(sp >= PSZ)
{
sp = 0;
pp ++;
if(alc->data[id][pp] != -1)
tmp = getPageForReadOrWrite(alc->data[id][pp]);
else
return;
}
if(pp >= PCNT)return;
//
data[cur] = tmp->data[sp];
cur++;
//
sp ++;
}
}
Александр ФТК вне форума   Ответить с цитированием

Старый 30.12.2010, 13:51
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Можно упростить решение проблемы путем просмотра аналогичных тем

Q-Dir 4.0: бесплатный файловый менеджер.
Nomad.NET 2.6.8.1195 RC: бесплатный файловый менеджер
Download Accelerator Plus 9.3: удобный менеджер закачки
Файловый менеджер загружаемый с диска

Старый 11.01.2011, 13:19   #2 (permalink)
Александр ФТК
Новичок
 
Регистрация: 30.12.2010
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

С сегментированной памятью вроде как справился. Помогите с аннотацией строк для строчной памяти.

void read(int id,int size,int offset,char* data)
{
sPage* tmp;
int start = offset / PSZ;
int start_offset = offset - start * PSZ;
int cur = 0;
int sp = start_offset;
int pp = start;
if(alc->data[id][pp] != -1)
tmp = getPageForReadOrWrite(alc->data[id][pp]);
else
return;
while(size--)
{
if(sp >= PSZ)
{
sp = 0;
pp ++;
if(alc->data[id][pp] != -1)
tmp = getPageForReadOrWrite(alc->data[id][pp]);
else
return;
}
if(pp >= PCNT)return;
//
data[cur] = tmp->data[sp];
cur++;
//
sp ++;
}
}
Александр ФТК вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Метки
менеджер, память, сегментированная пвамять, строчная память

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:44.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.