Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вычислить размер кластера при котором потери дискового пространства минимальны  (Прочитано 18722 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sortudo
Гость
« : 20-05-2009 15:38 » 

Как рассчитать размер кластера при котором потери дискового пространства будут минимальны?
Мои мысли:
     Размер кластера зависит от размера файлов, хранящихся на диске.
     То есть, если на диске в основном большие файлы, то кластеры, также должны иметь большой размер т.к. обращений к диску в этом случае будет меньше.
     Если на диске маленькие файлы, то размер кластера нужно выбирать средний, иначе если кластер большой(допустим 64Кб) а на диске файлы маленькие(3 или 5 Кб), то получится что файл размерам 3 Кб будет занимать на диске 64 Кб, а если таких файлов много то потери дискового пространства будут очень велики.
     Можно вычислить оптимальный размер так:
остаток(ср.размер файла/размер класт)=0, выражаем отсюда размер кластера и все.
     Но этот способ не подходит, так как размер файлов может варьироваться в самых разных пределах. И величина "средний размер файла" не будет отражать реальной картины.
Вообще по идее, нужно задать функцию которая бы описывала "хвосты"(незаполненные участки кластера) и найти min[сумма(ф-ции описывающая хвосты)]. Но как эту функцию задать? Подскажите пожалуйста!
Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 20-05-2009 16:26 » 

Чем меньше размер кластера для хранения данных на диске, тем меньше будут дисковые потери.

При размере кластера в 1 байт, дисковых потерь вообще не будет. Но в этом случае, размер служебной информации будет сопоставим, если не больше, самой хранимой (извините за тавтологию) информации.
Записан
Sortudo
Гость
« Ответ #2 : 20-05-2009 17:06 » 

Спасибо за быстрый ответ. Дело в том, что мне нужно именно задать функцию, о которой я написала выше "нужно задать функцию которая бы описывала "хвосты"(незаполненные участки кластера) и найти min[сумма(ф-ции описывающая хвосты)]". Это задание, которое мне дал преподаватель  и мне нужно выполнить его соответствующим образом. Просто я пока не понимаю, как задать эту функцию описывающую незаполненные остатки кластера.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 20-05-2009 17:21 » 

понять не могу
что такое
min[сумма(ф-ции описывающая хвосты)]

как может быть мин сумма, от чего-то независящего от этой суммы?

[..........][..........][........XX]
[..........][..........][.......XXX]
[..........][..........][......XXXX]

Где здесь может/должна быть сумма?

вот покажи на пальцах
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sortudo
Гость
« Ответ #4 : 20-05-2009 17:28 » 

Если честно затрудняюсь ответить, потому что это сказал преподаватель, мол вот так надо делать и отправил меня... Может быть это не совсем так...но в моей программе нужна функция, которая бы вычисляла этот оптимальный размер кластера с минимальными потерями.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 20-05-2009 17:37 » 

построить функцию, зависящую от [размера файла]/[свободного места] и размера кластера
найти минимум этой функции.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 20-05-2009 17:41 » 

Sortudo, в простейшем случае нужно размер файла в байтах поделить на размер кластера в байтах - размер кластера минус остаток от деления будет размером свободной части последнего кластера. А в чём тут проблема?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Sortudo
Гость
« Ответ #7 : 20-05-2009 18:13 » 

Sla, а почему от [размера файла/свободного места]? "свободного места" в смысле вообще на диске? ...не понимэ...((
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 21-05-2009 09:59 » 

Sortudo, вы математическую статистику изучали? Знаете, что такое математическое ожидание?

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

Нужно ли объяснять, как посчитать такое математическое ожидание?
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 21-05-2009 10:31 » 

npak, если можно поясни, я вот уже забыл мат. статистику и теорию вероятности.
Правильно ли я понимаю, что если ставить задачу так, что на диске будут храниться файлы размером [1,50 ] (от 1 до 50 МБайт включительно), то распределение случайной величины является непрерывной равномерно распределенной. И тогда мат. ожидание рассчитывается по формуле (50+1)/2. Это простейший случай.
Если же нас интересуют такие моменты, как максимаьлное кол-во файлов определенного размера, то нам надо уже выводить функцию распределения случайной величины и тогда мтематическое ожидание будеи рассчитываться по формуле

M[ x ]= (интеграл от минус бесконечности до плюс бесконечности) x*F(x) dx.

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

M[ x ]=(интеграл от 1 до 50) x*F(x) dx.

И тогда остается описать функцию распределения.
Правильно ли я понимаю?
« Последнее редактирование: 21-05-2009 10:37 от nikedeforest » Записан

ещё один вопрос ...
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 21-05-2009 10:41 » 

Что-то я перечитал сейчас и мне кажется, что я как раз описал Мат ожидание распрделения файлов на диске,  а ты как раз говорил о другом.
Т.е. к размеру фалф надо еще добавить остаток неиспользуемого дискового пространства.
Записан

ещё один вопрос ...
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 21-05-2009 10:59 » 

Какие ещё интегралы на дискретных величинах? Размер файлов в байтах - это ж целые числа. Какие непрерывности?

P.S. Хотя полезно - интегралами всех студентов распугать можно Улыбаюсь

Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 21-05-2009 11:02 » 

Поставь вместо интеграла дискретную сумму.
Записан

ещё один вопрос ...
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 21-05-2009 11:09 » 

Да, в идеале нужна гладкая функция распределения F(x), которая для каждого размера x от 0 до +бесконечности указывает какую часть от общего числа файлов составляют файлы с данным размером. Тогда математическое ожидание есть интеграл  x*F(x)*dx от 0 до плюс бесконечности. (вообще говоря, от минус бесконечности, но файлов с отрицательными размерами нет, то есть F(х) для отрицательных x тождественно равна нулю.

Причем надо иметь в виду, что функция распределения F(x) существенно зависит от того, как диск использовался. Если для компиляции и сборки программ, то на диске будут преимущественно небольшие файлы. Если для хранения аудио, то будет локальный максимум для файлов по 3-5 мегабайт. В качестве функции распределения можно взять гладкую интерполяцию гистограммы распределения файлов на реальном диске. Для получения разумного сглаживания желательно, чтобы шаг гистограммы был не больше размера блока.

Кроме того, нужна еще одна функция D(n), которая задает объем служебной информации на диске в зависимости от размера блока n. Тогда рамер балласта будет
B(n) = D(n) + сумма(0, +беск)[(x%n)*F(x) dx]

Ответ на вопрос преподавателя - найти такое n, при котором B(n) минимально.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 21-05-2009 17:11 » new

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

По той же причине будет меньшим объём директорий (если директории рассматривать как служебную информацию).

P.S. "Меньше файлов" - в штуках, а не в байтах.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines