
Расчетное задание / КМ2 / Ответы КМ2
.pdfобращении процессора в ОП сначала анализируется кэш память на наличие в ней этих данных. Если идентификатор совпадает (попадание в кэш), то процессор использует данные из кэш памяти, что значительно ускоряет их получение. Если же они отсутствуют (промах кэш), то происходит их выборка из ОП с записью в кэш память. Процент обращений к кэш памяти, когда в ней найден результат, называется уровнем попаданий или коэффициентом попаданий в кэш.
Т.к. кэш память ограничена в объёме, то при промахе может быть принято решение отбросить некоторую запись для ее освобождения. Для выбора отбрасываемой записи используются разные алгоритмы вытеснения старой информации. При модификации элементов данных в кэш памяти также производится их обновление в ОП. Задержка во времени между модификацией данных и обновлением ОП управляется политикой записи. При использовании принципа с немедленной записью каждое изменение вызывает синхронное обновление данных в ОП. Если же применяется политика отложенной записи, то обновление происходит в случае вытеснения элемента данных из кэш памяти, периодически или по запросу. Для отслеживания модифицированных элементов данных записи кэш память хранит признак модификации. Промах в кэш памяти с отложенной записью может потребовать два обращения к основной памяти: первое для записи заменяемых данных из кэш памяти, второе для чтения необходимого элемента данных.
В случае если данные в ОП могут быть изменены независимо от кэш памяти, то ее соответствующая запись может стать неактуальной. Протоколы взаимодействия между кэш памятями различных уровней, которые сохраняют согласованность данных, называют протоколами когерентности.
Одной из фундаментальных характеристик кэш памяти является уровень ее ассоциативности, который отображает её логическую сегментацию. Дело в том, что последовательный перебор всех строк кэш памяти в поисках необходимых данных потребовал бы десятков тактов и свёл бы на нет весь выигрыш от ее использования. Поэтому ячейки ОП жёстко привязываются к строкам кэш памяти (в каждой строке могут быть данные из фиксированного набора адресов), что значительно сокращает время поиска. Принципом логического сегментирования является тот факт, что в пределах любого отдельно взятого сегмента только одна строка может кэшировать информацию, находящуюся по некоторому адресу в оперативной памяти. Отсюда следует, что если адрес известен, то контроллеру во всём сегменте следует обработать только одну строку. Таким образом, при получении запроса на чтение или запись контроллер опросит нужные
31
строки во всех имеющихся сегментах на предмет наличия или отсутствия информации, соответствующей полученному адресу. С каждой ячейкой ОП может быть связано более одной строки кэш-памяти: например, n-канальная ассоциативность обозначает, что информация по некоторому адресу ОП может храниться в n местах кэш памяти. При одинаковом объеме кэш памяти схема с большей ассоциативностью будет наименее быстрой, но наиболее эффективной.
Если список свободных записей пуст, то выполняется алгоритм вытеснения буфера (кэш памяти). Алгоритм вытеснения существенно влияет на производительность кэш памяти. Существуют следующие алгоритмы:
•вытесняется буфер, неиспользованный дольше всех;
•вытесняется последний использованный буфер;
•вытесняется буфер, использованный реже всех;
•запись идёт в произвольно выбираемую строку.
Применение того или иного алгоритма зависит от стратегии кэширования данных.
Изложенный алгоритм работы кэш памяти с ОП работает похожим образом при организации кэш памяти для жесткого диска, сетевых операций и т.д.
Кэш центрального процессора разделён на несколько уровней. В настоящее время число уровней может достигать 3. Кэш-память уровня N+1 как правило больше по размеру и медленнее по скорости доступа и передаче данных, чем кэш-память уровня N. Самой быстрой памятью является кэш первого уровня — L1-cache.
Часто при записи данных в кэш память считывается не один элемент, например, из ОП, а несколько, что увеличивает эффективность кэш памяти. При этом учитывается пространственная локальность – если произошло обращение по некоторому адресу, то с большой вероятностью произойдет в ближайшее время обращение по соседним адресам. Другой используемый принцип называется временной локальностью и он гласит, что если произошло обращение по некоторому адресу, то следующее обращение по тому же адресу с высокой вероятностью произойдет в ближайшее время.
Принципы кэширования, описанные выше, могут также широко использоваться в научно-технических программах ЯЭ для существенного ускорения расчетов. Например, наша расчетная программа может периодически в определенные моменты времени сохранять данные на диск и в другие промежутки времени считывать их с диска. Анализ
32

потока данных для записи и считывания с диска позволит выделить информацию для кэширования в ОП, что позволит существенно ускорить расчеты данного типа.
Кэширование данных и, в частности, объем кэш памяти процессора сильно влияет на производительность научно технических расчетов в ЯЭ. Легко показать, что с увеличением объема кэш памяти среднее время доступа линейно уменьшается. Пусть р означает вероятность попадания данных в кэш память и t1 и t2 соответственно времена выборки данных из кэш памяти и ОП. Тогда среднее время доступа к данным можно определить как: t=pt1+(1-p)t2. Т.е. увеличение объема кэш памяти и соответственно р приводит к уменьшению времени выборки данных. В качестве примера можно привести опыт расчета аварийных процессов на АЭС с использованием кода RELAP5 [1]. Увеличение объема кэш памяти 2-го уровня процессора с 512 кБ до 2 Мб с одновременным уменьшением тактовой частоты процессора в 2 раза тем не менее дало 50% ускорение расчетов.
3.3.Файловая система
Файловая система (ФС) обеспечивает для пользователя удобство и эффективность операций при хранении данных на жестком диске, CD/DVD и т.п. Она включает в себя:
1.файлы на диске,
2.информационные структуры для управления файлами: каталоги, таблицы свободного и занятого пространства, атрибуты файлов и т.д.,
3.программы управлением файловой системы: копирования, удаления, создания и т.д..
Файлы обычно идентифицируются символьными именами. В различных ФС количество допустимых символов рознится. В ранних ФС, как например FAT, число допустимых символов было 8 и плюс 3 символа как расширение файла. В современных версиях ФС данное ограничение поднято до 255 символов (NTFS) или 3976 байт (Reiser4). В большинстве современных ФС для файла можно назначать несколько символьных имен. В этом случае существует дополнительное уникальное имя для установления взаимно-однозначного соответствия между файлом и его именем.
Сами файлы можно разделить на следующие основные типы: обычные, специальные и файлы-каталоги.
33
Хотя такое разделение и условно, но из обычных файлов можно выделить так же текстовые и двоичные. Текстовыми файлами являются те, что содержат простейшие символы, и они могут быть легко просмотрены на мониторе компьютера на основе простейших управляющих программ ФС. Двоичные файлы или бинарные содержат больший набор символов и имеют сложную структуру. В принципе они также по типу могут быть текстовыми документами, однако для их просмотра необходимы специальные программы, например MS Office. В дополнение каждая ОС должна различать собственные выполняемые файлы.
Специальные файлы соответствуют логической связи с определенными системными устройствами, например принтером, монитором и т.д. и служат для выполнения некоторых операций, как правило, ввода - вывода с этими устройствами на основе использования команд управления ФС. Например команда DOS: copy file1 prn позволит распечатать файл file1 на принтере. В момент выполнения таких команд ОС автоматически выполняет соответствующие команды управления выбранным устройствам. Данная система управления устройствами компьютерной системы особенно широко используется в ОС UNIX подобных.
Каталоги играют двоякую роль. С одной стороны они позволяют пользователю объединять файлы по некоторым общим признакам: файлы результатов расчетов, экспериментов и т.п. С другой стороны это те же файлы, содержащие информацию ФС о файлах, объединенных в единую группу. Данная информация может отличаться для различных ФС. Это может быть:
•разрешения на выполнения операций ФС и ОС,
•информация о владельце файла и группах пользователей, имеющих/не имеющих доступ,
•времена создания, модификации, последнего доступа файла,
•текущий и максимальный размер файла,
•и т.д.
Эта информация может содержаться непосредственно в каталоге или используется ссылка на внешние информационные структуры. Т.к. в каталоги могут в свою очередь входить подкаталоги, то общая иерархическая структура может быть представлена в виде дерева, если файл может входить только в один каталог, или сети, если есть возможность присутствия файла в нескольких каталогах одновременно.
34

В непосредственной организации выделяют два уровня – логический и физический. При работе с файлом программист или просто пользователь обычно оперирует с логическими записями, которые образуют файл. Исходя из этого мы можем определить логическую запись как наименьший элемент данных, который может быть доступен при работе пользователя с файлом. Обычно логическая запись составляет 1 байт, и файл представим в виде логической структуры на основе последовательности однобайтовых записей.
При описании физической организации файла используется понятие физических записей или блоков. Блок это наименьшая единица данных, которой может оперировать ФС при обмене данными с устройством. Т.е. даже если нам необходимо считать одну логическую запись ФС, все равно считается блок данных, который обычно больше логической записи.
Есть разные методы организации физических записей файла на диске. Простейший состоит в непрерывном размещении блоков файлов. Для адресации файла в этом случае необходимо задать только адрес его первого блока. Достоинство этого метода заключается в его простоте, но при этом невозможно задать начальный размер файла при его создании и неизбежно возникает фрагментация дискового пространства.
Другой метод состоит в организации размещения файлов в виде связанных блоков. В конце каждого блока помещается указатель на следующий блок. По сравнению с предыдущим методом мы получаем гибкость размещения блоков файла на диске. Однако, для того, чтобы найти n-й блок файла мы должны считать n-1 его блоков, что сильно уменьшает время доступа.
Один из методов решения данной проблемы состоит в использовании индексации дискового пространства. Т.е. для всех существующих физических блоков на диске создается соответствующая таблица индексов. В этой таблице отмечаются блоки:
•занятые файлами,
•свободные,
•дефектные.
На этой основе ФС может размещать блоки файла практически в произвольном порядке и также существенно ускорять доступ к произвольной физической записи файла. По данному принципу организованна ФС семейства FAT.
35

ФС систем UNIX/Linux организована на основе перечисления блоков, занятых файлом. Для этого выделяется 13 полей. Если размер файла меньше или равен 10 блокам, то в 10 полях непосредственно указываются адреса этих блоков. Если же файл больше, то используется 11 поле, которое ссылается на блок, содержащий 128 полей указывающих на адреса блоков файла. Если 11-го поля не хватает, то используется 12-е поле указывающее, как и ранее, на блок с 128 полями. Но в этот раз каждое поле ссылается на свой блок еще с 128 полями, которые уже указывают на блоки файла. Использование 13-го поля действует по тому же принципу, однако, в виде тройной косвенной адресации. Данное описание является общим, и различные версии ФС для UNIX подобных ОС позволяют использовать более сложные и эффективные схемы.
Функционирование ФС в рамках работы ОС можно представить в виде схемы, представленной на рис.2. Для ускорения работы ФС часто ОС кэширует в ОП ее основную информацию.
3.3.1.Тенденции развития ФС.
Вработе ФС в настоящее время можно выделить следующие основные проблемы. Первая касается внутренней фрагментации дискового пространства. Дело в том, что если мы разбиваем диск на блоки размером x и размер файла меньше x, то мы будем терять некоторое дисковое пространство. Та же проблема может возникнуть, если конец файла не умещается в один блок. В зависимости от среднего размера файла и распределения файлов по размерам данные потери могут быть существенны. Если заранее известны размеры файлов, то данную проблему можно уменьшить, подобрав соответствующий размер блока при форматировании диска. Однако, как правило, эти данные заранее не известны.
Другая проблема называется внешней фрагментацией. Она возникает в том случае, если блоки принадлежащие файлу достаточно широко разбросаны. В этом случае механическая дисковая система использует многократные механические перемещения, которые серьезно уменьшают быстродействие ФС. При сильной фрагментации скорость может уменьшиться на 30 – 50 %. Одним из методов решения данной проблемы является использование процедур дефрагментации.
36

Запрос действий с файлом
Определение по символьному имени уникального имени
Получение атрибутов файла, проверка прав доступа
Определение местоположения логической записи в файле
Определение номера и адреса требуемого физического блока
Рис.2. Схема функционирование ФС
Самой основной проблемой ФС является их надежность. Дело в том, что для увеличения быстродействия файлы, которые находятся в настоящее время в работе, а также некоторая другая информация ФС кэшируются в ОП. Если при этом произойдет сбой ОС, приводящий к неконтролируемому перезапуску компьютера или просто сбой питания компьютера, то данные находящиеся в ОП не будут записаны в ФС и возникнет нарушение целостности ФС. Это может привести как к потере отдельных файлов, так и к потере ФС целиком. В настоящее время основным методом решения данной проблемы является развитие и использование журнальных ФС. Такими, например, являются NTFS
для MS Windows , EXT3, EXT4, Reiser, XFS и т.д. для семейства Linux и других UNIX-
подобных ОС.
Принцип работы журнальных ФС взят из функционирования компьютерных баз данных и финансовых систем. В его основе лежит принцип транзакции. Под транзакцией
37

подразумевается множество единичных операций, объединенных для выполнения некой цели. У этого множества есть специальные свойства. Основным является то, что транзакция может быть или выполнена или, в случае ошибок, полностью отменена с возвратом системы в состояние до транзакции. Частичного выполнения транзакции невозможно. Для реализации этого важного свойства любая операция в рамках транзакции записывается в журнал. В дополнение после каждой транзакции вся измененная информация, все буфера записываются на диск в виде контрольной точки. Таким образом, если у нас происходит сбой системы в процессе выполнения транзакции, то мы на основе журнала можем полностью проследить изменение системы до последней контрольной точки и на ее основании восстановить ФС.
Ясно, что чем более подробно мы сохраняем информацию в контрольных точках и более подробно ведем журнал, тем надежнее мы можем восстановить состояние системы до сбоя. В финансовых системах и базах данных по понятным причинам проводиться очень подробное накопление информации о транзакциях. При использовании данного метода ФС мы должны учитывать, что чем более подробно мы записываем информацию о транзакциях, то тем больше нагрузка на ОС, процессор и тем медленнее работает ФС. Поэтому существует тенденция применения данной технологии на основе записи только метаданных по ФС. В результате мы можем восстановить после сбоя ФС, но отдельные файлы могут быть потеряны. По данному принципу работает NTFS. В других ФС, например, EXT3, EXT4 есть возможность выбирать степень подробности ведения журнала по транзакциям, что позволяет гарантировать даже сохранение файлов после сбоя системы.
Другой проблемой является возможность эффективного работы ФС при существенном увеличении дискового пространства, объема файлов и их количества в каталогах. Дело в том, что стандартные методы последовательного поиска, которые работают при поиске файлов, поиске свободного места на диске, поиске блоков файла оказываются крайне не эффективны в случае больших размеров дисков, большого количества файлов в каталогах и самих размеров файлов. В индустриальном использовании компьютерных систем в настоящее время типовой размер дискового пространства может составлять 30 – 50 ТБ.
Для решения данных проблем в современных ФС используются технологии поиска на основе В+ деревьев или других бинарных деревьев поиска. Данные деревья базируются на использовании бинарных (В) деревьев поиска, которые на основе создания
38

древообразной структуры с использованием бинарного отношения между данными типа «больше – меньше» позволяют существенно ускорить процесс нахождения нужной информации по сравнению с методами последовательного поиска. Образец такого дерева показан на рис.3.
10
9 |
|
17 |
|
|
|
1 |
|
5 |
|
9 |
|
10 |
|
13 |
|
16 |
|
18 |
|
19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 3. Пример бинарного дерева поиска
Начиная с корня дерева, последовательно проверяя отношение «больше - меньше» между искомым элементом и значениями во внутренних узлах, мы спускаемся к самым нижним узлам В дерева. Все нижние узлы связаны взаимными ссылками и если текущий узел не является искомым, то на основе последовательного поиска, но в гораздо меньшем масштабе мы легко находим требуемое значение. В+ деревья в дополнение являются сбалансированными, что позволяет сохранить эффективность поиска, несмотря на рост дерева при накоплении дополнительной информации. В первую очередь В+ деревья используются для поиска файлов в каталогах, например NTFS, EXT3, но также данная технология внедряется и для решения других проблем.
Кратко можно упомянуть также следующие направления, по которым работают разработчики ФС. Одно касается эффективного хранения разреженных файлов. Под этим типом файлов подразумевают такие, у которых существенная информация присутствует относительно в малом количестве, а сам файл может иметь достаточно большой объем. Т.е. многие блоки файла практически не содержат информации и зря занимают дисковое пространство. Один из методов решения лежит в группировке блоков файла, находящихся непрерывно в дисковом пространстве в так называемые экстенты. В этом случае кроме решения проблем разреженных файлов также уменьшается проблема внешней фрагментации. Другое направление касается в увеличении эффективности хранения и выборки информации файлов. При описании экстента указывается адрес его начала,
39

размер в блоках и его адрес непосредственно в файле. Использование экстентов совместно с В+ деревьями позволяет существенно оптимизировать ФС операции по адресации файлов, хранения информации о свободном дисковом пространстве и т.п.
3.3.2.Файлы, отображаемые в память
Сточки зрения программиста работа с файлами выглядит менее прозрачно, чем работа с памятью. Для решения данной проблемы в современных ОС предусмотрен механизм отображения файла в память. В этом случае системная информация корректируется таким образом, чтобы та часть виртуальной памяти, что содержится на жестком диске, содержала бы в себе файл, с которым мы собираемся работать. В этом случае в дальнейшем мы сможем использовать стандартные средства языка программирования по работе с памятью. В свою очередь ОП будет использовать стандартные процедуры работы виртуальной памяти, описанные выше.
3.3.3.Архитектура использования ФС в современных ОС
Современные ОС стремятся предоставить пользователю возможность работы одновременно с ФС различного типа. Это могут быть ФС более ранних версий, что позволяет сохранить преемственность. Так же это могут быть ФС других ОС, что увеличивает гибкость использования программ и мобильность пользователя.
Для того, чтобы реализовать данные принципы в ОС используется принцип многоуровневости. На самом верхнем уровне находится переключатель или диспетчер ФС. В системах семейства MS Windows он называется IFS. Его задача обеспечить интерфейс между запросами приложений и командами соответствующей ФС. Архитектура использования разных ФС в рамках ОС представлена на рис.4
40