Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Менеджер сегментированной/строчной памяти (http://www.tehnari.ru/f41/t44076/)

Александр ФТК 30.12.2010 13:51

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

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

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 ++;
}
}

Александр ФТК 11.01.2011 13:19

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

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 ++;
}
}


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.