Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Чем отличаются понятия "фрагментация диска" и "фрагментация памяти" с точки зрения FreeBSD?

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
нешарящий
Гость





СообщениеДобавлено: Пн Апр 29 2002 09:27    Заголовок сообщения: Чем отличаются понятия "фрагментация диска" и "фрагментация памяти" с точки зрения FreeBSD? Ответить с цитатой

По-моему память в FreeBSD не фрагментируется.
Вернуться к началу
Dmitry.Karpov http://www.
Гость





СообщениеДобавлено: Пн Апр 29 2002 14:03    Заголовок сообщения: Это общее явление, оно не зависит от операционки. И именно это я буду спрашивать у своих студентов во вторник! :-) Ответить с цитатой

Точнее, в разных архитектурах и в разных операционках есть свои особенности - например, сегментная модель памяти имеет проблемы, которых нет в страничной модели (в обоих случаях говорится о процессоре i*86). Но тем не менее, у всех случаев наблюдаются общие закономерности.

Фрагментация и диска, и памяти имеют два аспекта: "фрагментация данных" и "фрагментация свободного пространства", причем четыре (= два * два) сочетания дают самые разнообразные эффекты.

Пока дам одну подсказку: у диска время позиционирования головок весьма велико по сравнению со временем чтения/записи (часто на позиционирование головок уходит больше времени, чем на собственно чтение и запись), а у памяти что-то в этом духе есть ("3-1-1-1" в CMOS Setup), но оно гораздо слабее выражено из-за кэширования и из-за малого объема блока памяти (восемь байт для Pentium) по сравнению с блоком диска (полкилобайта).

Сегментация памяти в Unix обусловлена разницей между malloc() и brk(), причем эту моду из него взяли многие другие операционки. А еще очень различается подход к работе с памятью у языка C и одной стороны и языков Fortran, Pascal и особенно Java с другой стороны.
Вернуться к началу
ilyasov
Гость





СообщениеДобавлено: Вт Апр 30 2002 13:00    Заголовок сообщения: Re: Не должно отличаться в любой системе Ответить с цитатой

Если изъять глупости в ОС, то фрагментация памяти связана с попыткой выделить блок данных размером большим, чем уже имеющийся в наличии. С точки зрения программы, быстродействие выше если данные лежат непрерывным блоком (но это подразумевает правильную организацию кода, что не всегда имеет место). Фрагментация диска -сродни этому процессу, но вовлекает слишком много дополнительных элементов, связанных с свойствами файловой системы. Механизмы доступа к диску часто более сложные и в промежуточной фазе обязательно связаны с тем или иным видом кэширования.
Вернуться к началу
Dmitry.Karpov http://www.
Гость





СообщениеДобавлено: Вт Апр 30 2002 22:26    Заголовок сообщения: Не совсем так Ответить с цитатой

Вторник прошел, студентов я помучил - теперь можно и тут ответить. Smile

Существуют фрагментация данных и фрагментация свободного пространства. В памяти фрагментация данных отстутсвует, т.к. там нет операции append, а realloc при невлзможности расширить кусок памяти перемещает его в новое место (это - одно из главных отличий). А вот фрагментация свободного пространства приводит к утечке памяти, т.к. объем занятой памяти превышает объем используемой памяти (утечка памяти - возвратная, т.к. при осовобождении занятой памяти неиспользуемые куски все-таки вернутся); это связано с тем, что malloc распределяет память меньшими кусками, чем sbrk. При свопинге это приведет к замедлению работы, но только если не хватит оперативной памяти.
А фрагментация диска приводит только к замедлению доступа, причем сразу, и никогда - к потере дискового пространства.
Вернуться к началу
ilyasov
Гость





СообщениеДобавлено: Вт Май 07 2002 10:19    Заголовок сообщения: Re: Не совсем так Ответить с цитатой

Как потребителя меня не особо интересуют внутренние механизмы работы системы в части доступа к диску и памяти. Моя основная задача -получить максимальный выигрыш в быстродействии программы. Поэтому, если я динамически выделяю память под данные может возникнуть ситуация, когда они (данные) будут расположены в памяти не рядом, а с каким-либо промежутком (разрывом), который снизит быстродействие при обращении к данным (если, конечно, я к ним буду обращаться последовательно). Такая ситуация может возникнуть и в тех случаях, когда никакой фрагментации с точки зрения системы нет -все данные принадлежат моей программе, но при этом я сам плохо распределил выделенное мне просранство. Это первый момент. Второй момент -я выделяю последовательно блоки данных с все увеличивающимся размером, а старые -возвращаю. В конце данной процедуры я приду к состоянию, когда у меня не будет возможности выделить свободную память при ее кажущемся наличии. Это второй момент. Другие ситуации измыслить сложнее (да и интерес к ним, наверное, ниже).
Вернуться к началу
Dmitry.Karpov http://www.
Гость





СообщениеДобавлено: Ср Май 08 2002 13:21    Заголовок сообщения: Время доступа и все такое прочее Ответить с цитатой

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

Утечки же памяти, связанные с фрагментацией свободного пространства, имеют место быть только в оперативной памяти, но не на диске (впрочем, когда появится библиотека процедур типа molloc()/free() для файлов, там это тоже станет актуально).

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





СообщениеДобавлено: Ср Май 08 2002 16:24    Заголовок сообщения: Re: У памяти разброс тоже есть Ответить с цитатой

При обращении к последовательно расположенным данным в памяти и к произвольно разбросанным можно получить различие в временах доступа до десяти и более, что существенным образом скажется на работе программы. Для диска та же ситуация дает разброс в почти тысячу.
Вернуться к началу
Dmitry.Karpov http://www.
Гость





СообщениеДобавлено: Ср Май 08 2002 17:31    Заголовок сообщения: ... но разница в разбросах памяти и диска очень разная Ответить с цитатой

Честно говоря, я слабо представляю себе, откуда может взяться различие в десять раз при обращении к памяти - разве что читать отдельные байты. Для диска задержка зависит от расстояния между точками перехода, причем это расстояние меряется не по кратчайшему пути, а только по ходу вращения диска; для памяти же различаются только последовательное обращение и произвольное, причем при произвольном доступе скорость не зависит от расположения ячеек, к которым мы обращаемся, есть зависимость только при от наличия данной ячейки в кэшах 1-го и 2-го уровней, а там могут находиься произвольные ячейки памяти.
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...