|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
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
Регистрация: 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
|
Метки |
менеджер, память, сегментированная пвамять, строчная память |
Опции темы | |
Опции просмотра | |
|
|