Cтраница 2
Подобная организация требует дополнительных операций ввода-вывода для чтения ненужных звуковых дорожек и текста и дополнительного буферного пространства в памяти для их хранения. Однако такой подход устраняет все лишние операции по перемещению блока головок ( в однопользовательской системе), а также накладные расходы по учету расположения кадров на диске, так как все кадры располагаются в непрерывном файле друг за другом. Правда, при таком размещении файла становится невозможным произвольный доступ к файлу, но если он не требуется, то такая потеря не страшна. [16]
Кэширование и опережающее чтение являются не единственными способами увеличения производительности системы. Другой важный метод состоит в уменьшении затрат времени на перемещение блока головок. Достигается это помещением блоков, к которым высока вероятность доступа в течение короткого интервала времени, близко друг к другу, желательно на одном цилиндре. Когда записывается выходной файл, файловая система должна зарезервировать место для чтения таких блоков за одну операцию. Если свободные блоки учитываются в битовом массиве, а весь битовый массив помещается в оперативной памяти, то довольно легко выбрать свободный блок как можно ближе к предыдущему блоку. В случае когда свободные блоки хранятся в списке, часть которого в оперативной памяти, а часть на диске, сделать это значительно труднее. [17]
Если в сети много рабочих станций и все они используют файлы, расположенные на дисках единственного файл-сервера, производительность сети может оказаться невысокой. Это связано с тем, что на сервере стоят один-два диска и для удовлетворения большого количества запросов требуются многочисленные перемещения блока головок. Увеличение размера расширенной памяти, установленной на файл-сервере, например, до 32 Мбайт может в некоторой степени улучшить ситуацию, так как NetWare увеличивает размер дискового буфера. Однако такое решение стоит дорого и не всегда может привести к желаемому результату. [18]
![]() |
Почти полный блок указателей свободных блоков в памяти и три блока указателей на диске ( а. результат удаления трехблочного файла ( б. альтернативная стратегия ( в. [19] |
При использовании битового массива также возможно хранение в памяти всего одного блока с обращением к диску за другим блоком, когда текущий блок переполняется или, наоборот, становится пустым. Дополнительное преимущество такого подхода состоит в том, что выделяемые файлу блоки будут располагаться близко друг к другу, в результате чего для доступа к файлу будет затрачено меньше времени на перемещение блока головок. Поскольку битовый массив представляет собой структуру данных фиксированного размера, то при ( частичной) постраничной организации ядра битовый массив может быть помещен в виртуальную память, откуда можно получать страницы по мере надобности. [20]
![]() |
Почти полный блок указателей свободных блоков в памяти и три блока указателей на диске ( а. результат удаления трехблочного файла ( б. альтернативная стратегия ( в. [21] |
При использовании битового массива также возможно хранение в памяти всего одного блока с обращением к диску за другим блоком, когда текущий блок переполняется или, наоборот, становится пустым. Дополнительное преимущество такого подхода состоит в том, что выделяемые файлу блоки будут располагаться близко друг к другу, в результате чего для доступа к файлу будет затрачено меньше времени на перемещение блока головок. Поскольку битовый массив представляет собой структуру данных фиксированного размера, то при ( частичной) постраничной организации ядра битовый массив может быть помещен в виртуальную память, откуда можно получать страницы по мере надобности. [22]
Самое важное требование заключается в том, чтобы данные могли передаваться в сеть или выходное устройство с требуемой скоростью и без джиттера. По этой причине выполнение нескольких операций поиска цилиндра во время считывания кадра крайне нежелательно. Одним из способов устранения излишних перемещений блока головок на сервере является использование непрерывных файлов. Поскольку файлы с фильмами не изменяются после записи их на сервер, такая схема является реализуемой и работоспособной. [23]
Конечно, на видеосервере должно храниться одновременно несколько фильмов. При случайном расположении файлов на диске для перемещения блока головок с одного фильма на другой потребуется много времени. [24]
![]() |
Каталог BSD с тремя файлами ( а. тот же каталог после удаления файла. [25] |
Вторым существенным изменением, введенным в Berkeley, было разбиение диска на группы цилиндров, у каждой из которых был собственный суперблок, i-узлы и блоки данных. Идея такой организации диска заключается в том, чтобы хранить i-узел и блоки данных файла ближе друг к другу. Тогда при обращении к файлам снижается время, затрачиваемое жестким диском на перемещение блоков головок. По мере возможности блоки для файла выделяются в группе цилиндров, в которой содержится i-узел. [26]
У системного вызова 1 seek три параметра: первый - это дескриптор файла, второй - новая позиция в файле, а третий сообщает, указывается ли эта позиция относительно начала файла, конца файла или относительно текущей позиции. Значение, возвращаемое системным вызовом Iseek, представляет собой абсолютную позицию в файле после того, как указатель был перемещен. Забавно, что системный вызов Iseek ( seek означает поиск, термин, также используемый для перемещения блока головок диска) никогда не вызывает перемещения блока головок диска, так как все, что он делает, - это обновление текущей позиции в файле, представляющей собой просто число в памяти. [27]
У системного вызова 1 seek три параметра: первый - это дескриптор файла, второй - новая позиция в файле, а третий сообщает, указывается ли эта позиция относительно начала файла, конца файла или относительно текущей позиции. Значение, возвращаемое системным вызовом 1 seek, представляет собой абсолютную позицию в файле после того, как указатель был перемещен. Забавно, что системный вызов 1 seek ( seek означает поиск, термин, также используемый для перемещения блока головок диска) никогда не вызывает перемещения блока головок диска, так как все, что он делает, - это обновление текущей позиции в файле, представляющей собой просто число в памяти. [28]
У системного вызова 1 seek три параметра: первый - это дескриптор файла, второй - новая позиция в файле, а третий сообщает, указывается ли эта позиция относительно начала файла, конца файла или относительно текущей позиции. Значение, возвращаемое системным вызовом Iseek, представляет собой абсолютную позицию в файле после того, как указатель был перемещен. Забавно, что системный вызов Iseek ( seek означает поиск, термин, также используемый для перемещения блока головок диска) никогда не вызывает перемещения блока головок диска, так как все, что он делает, - это обновление текущей позиции в файле, представляющей собой просто число в памяти. [29]
У системного вызова 1 seek три параметра: первый - это дескриптор файла, второй - новая позиция в файле, а третий сообщает, указывается ли эта позиция относительно начала файла, конца файла или относительно текущей позиции. Значение, возвращаемое системным вызовом 1 seek, представляет собой абсолютную позицию в файле после того, как указатель был перемещен. Забавно, что системный вызов 1 seek ( seek означает поиск, термин, также используемый для перемещения блока головок диска) никогда не вызывает перемещения блока головок диска, так как все, что он делает, - это обновление текущей позиции в файле, представляющей собой просто число в памяти. [30]