Сборник задач по физике Электромагнитное поле Вещество в электростатическом поле Электромагнитное взаимодействие Элементы квантовой механики Молекулярные спектры Электропроводность Ядерная физика

Архитектура персонального компьютера

Накопитель информации на жестких магнитных дисках (НDD - Hard Disk Drive), условно состоит из герметичного блока и платы электроники. Герметичный блок заполнен обычным обеспыленным воздухом под атмосферным давлением и в нем размещены все механические части

Управление файлами

Для хранения и считывания информации из накопителей DOS создает на дисках элементы и структуры нескольких типов. Благодаря им DOS может успешно взаимодействовать с системной BIOS и прикладными программами, выполняя запросы на сохранение и считывание данных. Зная, что представляют из. себя эти структуры и как они взаимосвязаны, вы будете лучше разбираться в возникающих проблемах и даже сможете восстанавливать испорченные диски.

Размещение файлов в дисковом пространстве

DOS выделяет дисковое пространство для записи файла только при поступлении соответствующего запроса — предварительного распределения пространства не производится. Оно выделяется кластерами (cluster) или ячейками размещения данных (allocation unit). Кластер всегда состоит из одного или нескольких секторов.

Кластеры размещаются на диске таким образом, чтобы свести к минимуму перемещения головок в накопителях с несколькими дисками-носителями (с несколькими головками и рабочими поверхностями). В процессе записи данных DOS сначала заполняет доступное пространство на одном цилиндре и лишь затем перемещает головки к следующему. Это означает, что сначала используются секторы, расположенные под первой головкой, затем секторы под следующей головкой и т.д. — и так до тех пор, пока не будут использованы все секторы под всеми головками цилиндра. Следующим после этого будет использован сектор 1 головки 0 на следующем цилиндре.

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

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

При работе с накопителями на гибких дисках емкостью 360 К во всех версиях DOS используется только алгоритм первого свободного кластера, поскольку вышеупомянутый указатель может быть использован только для накопителей, в которых вырабатывается подаваемый на контроллер сигнал смены дискеты (DC — Diskette Changeline). В дисководах двойной плотности (DD — Double Density) емкостью 360 К такой сигнал не вырабатывается. Каждый раз, обращаясь к такому накопителю, DOS предполагает, что дискета в нем могла быть заменена, и очищает все буферы и сбрасывает указатель последнего записанного кластера.

При использовании алгоритма следующего свободного кластера (в DOS 3.0 и в более поздних версиях) запись данных на диск осуществляется быстрее, а файлы оказываются фрагментированными в гораздо меньшей степени. Иногда этот алгоритм называют "поиском с подъемом" (elevator seeking), поскольку очередная запись осуществляется в кластер, все дальше отстоящий от начала диска, чем предыдущий — и это продолжается до тех пор, пока не будет исчерпан весь объем накопителя. В этот момент указатель последнего записанного кластера сбрасывается, и запись снова будет осуществляться в начале диска.

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

Даже если вы записываете новый файл поверх старого, то это не означает, что он будет размещен в тех же самых кластерах (при работе под управлением DOS 3.0 и более поздних версий). Прерывание 21h. Функции DOS, вызываемые через прерывание INT 21h, относятся к наиболее высокому уровню, отличаются наибольшей степенью обобщенности и требуют минимального количества уточняющих параметров. В табл. 20.8 приведен список дисковых функций BIOS, вызываемых через прерывание INT 13h. В табл. 20.9 приведены коды ошибок, которые могут быть возвращены при выполнении функций BIOS, вызываемых через прерывание INT 13h. Программы низкоуровневого форматирования, предназначенные для накопителей ST-506/412, должны работать с ними на уровне прерывания INT 13h или еще более низком.

Какой блок кэш-памяти должен быть замещен при промахе?

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

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

Во втором случае, чтобы уменьшить вероятность выбрасывания информации, которая скоро может потребоваться, все обращения к блокам фиксируются. Заменяется тот блок, который не использовался дольше всех (LRU - Least-Recently Used).

Достоинство случайного способа заключается в том, что его проще реализовать в аппаратуре. Когда количество блоков для поддержания трассы увеличивается, алгоритм LRU становится все более дорогим и часто только приближенным. На рис. 7.2 показаны различия в долях промахов при использовании алгоритма замещения LRU и случайного алгоритма.

Что происходит во время записи?

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

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

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

Очень часто организация кэш-памяти в разных машинах отличается именно стратегией выполнения записи. Когда выполняется запись в кэш-память имеются две базовые возможности:

сквозная запись (write through, store through) - информация записывается в два места: в блок кэш-памяти и в блок более низкого уровня памяти.

запись с обратным копированием (write back, copy back, store in) - информация записывается только в блок кэш-памяти. Модифицированный блок кэш-памяти записывается в основную память только когда он замещается. Для сокращения частоты копирования блоков при замещении обычно с каждым блоком кэш-памяти связывается так называемый бит модификации (dirty bit). Этот бит состояния показывает был ли модифицирован блок, находящийся в кэш-памяти. Если он не модифицировался, то обратное копирование отменяется, поскольку более низкий уровень содержит ту же самую информацию, что и кэш-память.

Hyper-Threading - это название технологии, существовавшей и ранее вне x86 мира, технологии одновременной многопоточности (Simultaneous Multi-Threading, SMT). Идея этой технологии проста. Один физический процессор представляется операционной системе как два логических процессора, и операционная система не видит разницы между одним SMT процессором или двумя обычными процессорами. В обоих случаях операционная система направляет потоки как на двухпроцессорную систему. Далее все вопросы решаются на аппаратном уровне.

На главную