Прогон программы, иллюстрирующей функционирование кэша — КиберПедия 

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Прогон программы, иллюстрирующей функционирование кэша

2017-06-19 292
Прогон программы, иллюстрирующей функционирование кэша 0.00 из 5.00 0 оценок
Заказать работу

#include <windows.h>

#include <stdio.h>

void main(void) {

HANDLE hFile, hHeap;

int iRet = 0;

void *pMem;

long FileSize = 0, FilePos = 0;

DWORD iRead = 0, iWrite = 0;

char * String;

hFile = CreateFile("MYFILE.TXT", GENERIC_READ| GENERIC_WRITE,0,

NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL |0, NULL);

if (hFile == INVALID_HANDLE_VALUE) printf("Could not open file \n");

FileSize = GetFileSize(hFile, NULL);

printf("FileSize = %d\n",FileSize);

hHeap = GetProcessHeap();

pMem = HeapAlloc(hHeap, HEAP_ZERO_MEMORY, FileSize + 2);

String = (char *)pMem;

ReadFile(hFile, pMem, FileSize, &iRead, NULL);

printf("Read %d bytes \n", iRead);

for(FilePos = 0; FilePos < FileSize; FilePos++)

String[FilePos] = '1';

SetFilePointer(hFile, 0, NULL, FILE_BEGIN);

getchar();

WriteFile(hFile, pMem, FileSize, &iWrite, NULL);

printf("Write %d bytes \n", iWrite);

iRet = FlushFileBuffers(hFile);

if(iRet == 0) printf("FlushFileBuffer Error\n");

HeapFree(hHeap, 0, pMem);

CloseHandle(hFile);

}

Приведенная программа считывает большой файл (рекомендуемый размер - несколько мегабайт) в буфер памяти. Затем она меняет содержимое буфера и записывает его на диск. При этом программа пытается сбросить содержимое кэша с помощью функции FlushFileBuffers.

За результатами работы программы можно наблюдать с помощью счетчика "сбросов данных" кэша. Счетчик ведет себя в соответствии с рисунком, где максимальный пик появляется вслед за нажатием клавиши "Enter".

 

Рис. 12.10. Поведение счетчика "сбросов данных" кэша

Рекомендуется модифицировать данную программу и проанализировать поведение системы отложенного сброса кэша при помощи соответствующих счетчиков производительности.

Оптимальное размещение информации на диске

Кэширование - не единственный способ увеличения производительности системы. Другая важная техника - сокращение количества движений считывающей головки диска за счет разумной стратегии размещения информации. Для этого целесообразно периодически осуществлять дефрагментацию диска (сборку мусора). Дефрагментацию можно выполнить с помощью соответствующей вкладки на административной консоли панели управления.

Hадежность файловой системы

Поскольку разрушение файловой системы зачастую более опасно, чем разрушение компьютера, файловые системы должны разрабатываться с учетом подобной возможности. Сохранность информации может быть обеспечена за счет:

- избыточности (резервное копирование,

-зеркалирования, образования RAID массивов.

Восстанавливаемая файловая система NTFS

Как правило, файловая операция затрагивает сразу несколько объектов файловой системы. Например, запись в файл предполагает выделение ему блоков диска, модификацию MFT-записей о занятом пространстве, файле и каталоге, содержащем файл и т.д. В течение короткого периода времени между этими шагами информация в файловой системе оказывается несогласованной. И, если вследствие непредсказуемого останова системы на диске будут сохранены изменения только для части этих объектов (нарушена атомарность файловой операции), файловая система на диске может быть оставлена в противоречивом состоянии. В современных ОС предусмотрены меры, которые позволяют свести к минимуму ущерб от порчи файловой системы и затем полностью или частично восстановить ее целостность.

Для обозначения совокупности действий, выполняемых файловой операцией, используется термин транзакция. Очевидно, что для сохранения целостности файловой системы транзакция должна выполняться целиком или не выполняться вообще.

Одним из средств поддержки целостности FS является журналирование. Последовательность действий с объектами во время транзакции протоколируется, и, если произошел останов системы, то, имея в наличии протокол, можно осуществить откат системы назад в исходное целостное состояние, в котором она пребывала до начала транзакции.


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

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

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.