Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОССио.docx
Скачиваний:
14
Добавлен:
22.11.2019
Размер:
3 Мб
Скачать
☆

Жесткий диск

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

Исторически сложилось так, что информация на диске хранилась в секторах. Сектора располагались на дорожках (цилиндрах), дорожки в свою очередь на сторонах диска, так что адрес блока на диске составлялся из трёх чисел. Такой способ адресации диска был широко распространён и получил впоследствии обозначение аббревиатурой CHS (cylinder, head, sector). Именно этот способ был первоначально реализован в BIOS, поэтому впоследствии возникли ограничения, связанные с ним. Дело в том, что BIOS определил разрядную сетку адресов на 63 сектора, 1024 цилиндра и 244 головок. Однако развитие жестких дисков ограничивалось лишь 16 головок. Отсюда появилось первое ограничение на максимально допустимую для адресации ёмкость жесткого диска:

1024 * 16 * 63 * 512 = 504 Mb

Разумеется, настали времена, когда такой ёмкости диска стало не хватать. Диски стали становиться больше, число цилиндров превысило 1024, максимально допустимое число цилиндров. Однако, адресуемая часть диска продолжала равняться 504 Мб, при условии что обращение к диску велось средствами BIOS. Это ограничение со временем было снято введением так называемого механизма трансляции адресов.

Проблемы, возникшие с ограниченностью BIOS по части физической геометрии дисков, привели в конце концов к появлению нового способа адресации блоков на диске. Этот способ довольно прост. Блоки на диске описываются одним примером – линейным адресом блока. Адресация диска получила аббревиатуру LBA (logical block addressing). Линейный адрес блока однозначно связан с его CHS адресом:

lba = (cyl * HEADS + head) * SECTORS + (sector – 1);

Введение поддержки линейной адресации в контролёры жёстких дисков дало возможность заняться трансляцией адресов. Суть этого метода заключается в том, что если в приведённой выше формуле увеличить параметр HEADS, то потребуется меньше цилиндров, чтобы адресовать то же самое количество блоков диска. Но зато потребуется больше головок. Однако головок, как раз использовалось всего 16 из 255. Поэтому BIOS’ы стали переводить избыточные цилиндры в головки, уменьшая число одних и увеличивая число других. Это отодвинуло границу адресуемого BIOS’ом дискового пространства до 8 Gb.

Дальнейшее увеличение адресуемых объёмов диска с использованием прежних сервисов BIOS стало принципиально невозможным. Тогда был разработан новый расширенный интерфейс BIOS, учитывающий возможность очень больших адресов блоков. Однако этот интерфейс уже не совместим с прежним, в следствии чего старые ОС, такие как DOS, которые пользуются старыми интерфейсами BIOS, не смогли и не смогут перетупить границы в 8 Gb. Современные системы уже не пользуются BIOS’ом, а используют собственные драйвера для работы с дисками. Поэтому данное ограничение на них не распространяется. Но следует помнить, что прежде чем система сможет использовать собственный драйвер, она должна как минимум его загрузить. Поэтому на этапе начальной загрузки любая система вынуждена пользоваться BIOS’ом. Это и вызывает ограничения на размещение многих систем за пределами 8 Gb, они не могут оттуда загружаться, но могут читать т писать информацию.

Обратимся теперь к размещению операционных систем на жестких дисках. Для организации систем дисковое адресное пространство блоков разделяется на части, называемые разделами (partitions). Разделы полностью подобны целому диску в том, что они состоят из смежных блоков. Благодаря такой организации для описания раздела достаточно указания начала раздела и его длины в блоках.

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

Разделы являются контейнерами всего своего содержимого. Этим содержимым является, как правило, файловая система. Под файловой системой с точки зрения диска понимается система разметки блоков для хранения файлов. После того, как на разделе создана файловая система и в ней размещены файлы операционной системы, раздел может стать загружаемым. Загружаемый раздел имеет в своём первом блоке небольшую программу, которая производит загрузку ОС. Однако для загрузки определённой системы,нужно явно запустить её загрузочную программу из первого блока.

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

Поэтому, следует внимательно относится к разделению диска на разделы. Само по себе пересечение разделов не опасно, но опасно именно размещение нескольких файловых систем на пересекающихся разделах. Разметка диска на разделы ещё не означает создания файловых систем.

Однако уже сама попытка создания пустой файловой системы (то есть форматирование), на одном из пересекающихся разделов может привести к возникновению ошибок в файловой системе другого раздела. Всё сказанное относится в одинаковой степени ко всем ОС, а не только к самым популярным.

Диск разбивается на разделы программным путём. То есть вы можете создать произвольную конфигурацию разделов. Информация о разбиении диска хранится в самом первом блоке жесткого диска, называемым главной загрузочной записью (Master Boot Record (MBR)).

MBR является основным средством загрузки с жесткого диска, поддерживаемым BIOS. В MBR входят три важных элемента:

  1. Программа начальной загрузки. Именно она запускается BIOS’ом после успешной загрузки в память первого блока (MBR). Она, очевидно, не превышает 512 байт и её хватает только на то, чтобы загрузить стартовый сектор операционной системы и передать туда управление;

  2. Таблица описания разделов диска. Располагается по смещению 0х1ВЕ в MBR. Таблица описывает 4 раздела только один из четырёх разделов имеет право быть помеченным как активный, что будет означать, что программа загрузки должна загрузить в память первый сектор именно этого раздела и передать туда управление;

  3. Сигнатура MBR. Последние 2 байта MBR должны содержать число 0хАА55. По наличию этой сигнатуры биос проверяет, что первый блок был загружен успешно. Сигнатура эта выбрана не случайно. Её успешная проверка позволяет установить, что все линии данных могут передавать и нули и единицы.

С точки зрения разделов диска, наиболее популярной до недавнего времени была и остаётся MS-DOS. Она забирает в своё пользование 2 из 4-ех разделов: Primary DOS partition, Extended DOS partition. Первый из них, (primary) это обычный досовый диск С:. Второй – это контейнер логических дисков. Они все болтаются там в виде цепочки подразделов, которые так и именуются: D:, E:, и т.д.. Логические диски могут иметь и инородные файловые системы, отличные от файловой системы DOS. Однако, как правило инородность файловой системы связана присутствием ещё одной операционной системы, которую, следовало бы поместить в свой собственный раздел (не extended DOS), но для таких выходок часто оказывается слишком маленькой таблица разделов.

Схема устройства жёсткого диска:

Вопросы:

0 7 12 15 14

Аппаратная реализация взаимоисключения.

Команда test and set.(проверить и установить)

Команда запускается и выполняется до конца без прерывания поэтому ее называют неделимое(аппаратная) команда.

Читает логическое переменной В копирует его в А и устанавливает для В значение истинно.

Семафоры.

Это защищенная переменная значение которой можно опрашивает и менять с помощью специальный операций P и V операций инициализаций. Семафоры могут быть двоичными( 0 и 1) и считающие( положительные , целые). Операция Р входа взаимоисключения, V выхода взаимоисключения(двоичные). Считающие распределяют ресурсы. Операция Р над семафором пишется Р(S) – если S больше нуля то но S=s-1 иначе (ожидать на s). Операция V над семафором пишется V(S) выполняется следующим образом, если один или более процессов ожидает на s то разрешить одному из этих процессов продолжить работу иначе s=s+1.Операции P и V являются не делимые. Если одновременно несколько процессов пытаются выполнить операцию Р(S) то это будет разрешено только одному из них, а остальным придется ждать. Семафоры и операции над ними могут быть реализованы как программно, так и аппратно.

Парапроизводитель, потребитель.

Взять у Игоря