OSDev

для всех
Текущее время: 13 дек 2017, 08:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Освобождение памяти
СообщениеДобавлено: 04 авг 2013, 10:16 

Зарегистрирован: 12 сен 2010, 11:00
Сообщения: 29
Откуда: Волгоградская обл.
Было время, когда в ходу были исключительно дискеты.

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

Существует ли сейчас подобная проблема с оперативной памятью?

Могут ли приложения использовать память "в шахматном порядке"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Освобождение памяти
СообщениеДобавлено: 04 авг 2013, 11:25 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1315
Откуда: Зеленоград
С дискетами такой проблемы никогда не существовало, поскольку файлы в общем случае не обязаны занимать непрерывное место на диске. Лишь некоторые файлы в некоторых системах должны были быть непрерывными -- и только для их записи необходимо было иметь достаточно большой непрерывный участок свободных блоков.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Освобождение памяти
СообщениеДобавлено: 04 авг 2013, 11:58 

Зарегистрирован: 12 сен 2010, 11:00
Сообщения: 29
Откуда: Волгоградская обл.
Цитата:
Вот с ОЗУ такая проблема есть во всех системах, не поддерживающих виртуальную память,


А на windows это распространяется?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Освобождение памяти
СообщениеДобавлено: 04 авг 2013, 12:00 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1315
Откуда: Зеленоград
У Винды виртуальная память была всю жизнь, поэтому фрагментация ОЗУ ей не мешает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Освобождение памяти
СообщениеДобавлено: 04 авг 2013, 13:10 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 208
Фрагментация физической памяти - нет (практически не мешает), а вот фрагментация следующего слоя (кучи, т.е. heap) - обычное дело и таки довольно часто может мешать (в 32-битном ВАП, например; в 64-битном сложно на это нарваться, не спорю, правда, таблицы страниц уж больно дофига занимать могут). Тут можно радостно вспомнить про position-independent code (чтобы можно было библиотеки куда угодно грузить и переотображать и соотв. избегать фрагментации кучи) и managed-языки (в которых нет указателей, а есть только ссылки, соотв. можно халявно (в смысле что без переписывания приложений) дефрагментировать кучу и даже свопиться).
Ессно, всё вышесказанное относится не только к Windows, но и вообще к чему ни попадя.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Освобождение памяти
СообщениеДобавлено: 05 авг 2013, 21:34 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 319
Откуда: Псковская обл.
Windows и её манипуляции с памятью - весьма интересная штука. Можно написать книгу. Только нет на свете такого человека, который бы смог понять эту ос достаточно хорошо для того что бы эту книгу можно было читать.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB