G.5.8. Этап 7. Оптимизация взаимодействия памяти и дисковых накопителей.

Этот этап особенно важен для работы системы под управлением MS-DOS, поскольку в эту операционную систему не входят драйверы поддержки работы различных дисковых накопителей. Однако и в операционных системах Windows 95/98 указание этих опций перед их установкой поможет лучше настроить взаимодействие драйверов дисковых накопителей и оперативной памяти.

Для организации совместной работы памяти с дисковыми накопителями используется следующие директивы файла Config.sys: Buffers, FCBS и Files, и драйвер дисковой кэш-памяти Smartdrv.exe. Рассмотрим их поподробнее.

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

Формат команды следующий:

BUFFERS=i[,j] [/x], где

i - число буферов DOS для операций ввода-вывода;

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

Ключ /x разрешает размещение буферов ввода-выводе и буферов предввода в дополнительной памяти. Загрузка в дополнительную память происходит только в том случае, если не инсталлирован драйвер Himem.sys. Если инсталлирован этот драйвер и указана опция DOS=HIGH, буферы загружаются в расширенную память вне зависимости от установки ключа /x.

Значение i меняется в диапазоне от 1 до 99 или, если указан ключ /x, в диапазоне от 1 до 9999.

Значение j всегда меняется от 1 до 8.

Принятое по умолчанию число буферов ввода-вывода i находится в диапазоне от 2 до 15, в зависимости от емкости дисков.

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

1. При поиске нужного фрагмента файла операционной системе приходится просматривать большое число буферов.

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

3. При большом числе открытых буферов расходуется дорогой ресурс - оперативная память компьютера.

Именно поэтому использование большого числа открытых буферов не рекомендуется.

Вообще-то требуемое количество нужных буферов ввода-вывода определяется при установке операционных систем и прикладных пакетов. Однако можно привести следующие рекомендации по количеству буферов ввода-вывода:

1. Если объем оперативной памяти компьютера меньше 512 Кбайт, необходим минимум буферов.

2. Если объем памяти на компьютере меньше 640 Кбайт и больше 512 Кбайт, то рекомендуемое число используемых буферов - 30 - 40.

3. При большом объеме памяти и при неиспользовании программ кэширования дисков число буферов должно лежать в диапазоне 40 - 60.

4. При использовании программ кэширования дисков число буферов должно лежать в диапазоне 30 - 40.

5. В операционных системах Windows 95/98 число буферов составляет от 10 до 30.

Учтите, что размер одного буфера ввода-вывода соответствует емкости одного сектора на диске, то есть составляет 512 байт.

Директива FCBS используется DOS для определения числа одновременно открытых управляющих блоков файлов. Метод управляющих блоков файлов использовался для работы с файлами в MS-DOS версии 1.00 и продолжает поддерживаться с целью совместимости с предыдущими версиями операционных систем от Microsoft. Формат этой директивы следующий:

FCBS=x,y , где

x - число одновременно открытых файлов. Оно колеблется от 0 до 255. При x = 0 запрещено открывать файлы методом управляющих блоков. Файлы при этом могут быть открыты только методом дескрипторов файлов. Открытие файлов методом их дескрипторов стало доступным в MS-DOS версий 2.0 и выше, и в настоящее время поддерживается во всех языках высокого уровня.

y - число файлов, которые не могут закрыться системой при открытии новых файлов. При этом 0 <= y <= x.

Если Вы используете заведомо новое программное обеспечение, то для экономии памяти установите строку:

FCBS=0,0

В Windows NT эта опция игнорируется.

Директива Files задает максимальное число одновременно открытых в операционной системе файлов. Ее формат;

FILES=<число файлов> ,

где <число файлов> находится в пределах от восьми до двухсот пятидесяти пяти. По молчанию число одновременно открытых файлов - 8. Увеличение числа одновременно открытых файлов ускоряет работу приложений, активно работающих с большим числом файлов. Но при этом уменьшается объем свободной оперативной памяти, Если нет других ограничений, пользуйтесь следующими правилами для определения числа одновременно открытых файлов:

1. При объеме оперативной памяти 512 - 640 Кбайт число открытых файлов - от 8 до 20.

2. При объеме оперативной памяти большим 640 Кбайт максимальное число одновременно открытых файлов должно составлять от 30 до 40.

3. При использовании Windows 3.1x или Windows 95/98 максимальное число открытых файлов должно быть больше 40.

4. Если не установлена программа кэширования дисков, то не следует указывать максимальное число одновременно открытых файлов большим, чем число буферов ввода-вывода. В противном случае теряется смысл буферизации ввода-вывода файлов. В общем случае должно выполняться соотношение <число файлов> < i.

5. Максимальное число одновременно открытых файлов командой Files должно быть больше, чем максимальное число открытых файлов командой FCBS (то есть x < <число файлов>). В противном случае может появиться сообщение о невозможности открытия файлов методом дескриптора файла. При этом смысл появляющегося сообщения не очевиден!

Использование этих правил частично поможет Вам избежать нестабильной работы операционной системы.

Использование кэша диска в MS-DOS.

В операционной системе MS-DOS для ускорения операций ввода-вывода применяется кэширование диска. В качестве собственной программы кэширования используется драйвер Smartdrv.exe.

Кэш - память для дисковых накопителей функционирует примерно так же, как и буферы DOS. От буферов он отличается большим объемом занимаемой памяти и возможностью загрузки в дополнительную и расширенную память. Драйверы кэш-памяти не рекомендуется устанавливать в операционных системах Microsoft Windows 95/98 при ее работе в графическом режиме. Эти операционные системы уже содержат драйверы кэширования дисков, функционирующих на уровне их ядра.

Если Вы на своей машине:

1. Имеете SCSI- или ESDI- контроллеры жесткого диска.

2. Материнская плата на Вашем компьютере содержит шину EISA (Extended Industry Standart Architecture) или MCA (Micro Channel Architecture).

3. Вы установили на своем компьютере драйвер Emm386 и Microsoft Windows 3.1x.

то Вам, вероятнее всего, потребуется двойная буферизация операций ввода-вывода. Для этого в файле Config.sys необходимо указать следующую директиву:

DEVICE=<диск>:\<путь>\SMARTDRV.EXE /DOUBLE_BUFFER ,

где <диск>:\<путь>\ - описание полного пути к файлу Smartdrv.exe.

Модуль, который осуществляет двойную буферизацию в составе драйвера Smartdrv, загружается в базовую оперативную память. Он занимает там блок размером 2 Кбайт и не может быть загружен в старшую память (например командой DEVICEHIGH.) Директиву подключения драйвера Smartdrv следует использовать сразу после подключения драйвера Emm386, до загрузки любых программ и драйверов в верхнюю память.

Для загрузки драйвера кэш-памяти можно использовать как файл Config.sys, так и файл Autoexec.bat, а также командную строку DOS. Smartdrv может также включить двойную буферизацию для контроллеров жестких дисков, не поддерживающих работу совместно с драйвером Emm386 или в расширенном режиме работы 386-го процессора для Windows 3.xx.

Загрузку драйвера в файл Conaig.sys мы уже рассматривали. Команда подключения драйвера дисковой кэш-памяти в файле Autoexec.bat будет следующей:

<диск>:\<путь>\Smartdrv,exe {<диски>[+|-]} [<опции>]

где <диск>:\<путь>\ - полный путь к файлу Smartdrv.exe. Обычно этот файл находится в основном каталоге операционной системы (например, C:\DOS\ или C:\WINDOWS).

Для работы драйвера Smartdrv необходимо, чтобы компьютер обладал расширенной памятью. При его подключении обязательно должна присутствовать команда DOS=HIGH в файле Config.sys.

В файле Autoexec.bat файл Smartdrv может быть загружен в область адресов старшей памяти.

Использование драйвера Smartdrv для работы в операционных системах Windows 95/98 или в системах со сжатыми дисками (CVF) неэффективна, поскольку у этих систем есть собственные средства кэширования дисков.

В приведенной ниже таблице приведены значения параметров для размера кэша и размера кэша Windows 3.xx по умолчанию в зависимости от объема оперативной памяти.

Таблица.

Таблица IV

Размер кэш-памяти драйвера SMARTDRV.EXE

Объем расширенной памяти

Размер кэш-памяти

Размер кэш-памяти под Windows

до 1 Мбайт

вся XMS-память

0 Кбайт

до 2 Мбайт

1 Мбайт

256 Кбайт

до 4 Мбайт

1 Мбайт

512 Кбайт

до 6 Мбайт

2 Мбайт

1 Мбайт

6 Мбайт и более

2 Мбайт

2 Мбайт

При установке операционных систем Windows 95/98/NT команда загрузки драйвера Smartdrv.exe всегда удаляется из файла Autoexec.bat.

Чтобы узнать, нужна ли двойная буферизация на Вашем компьютере, выполните следующие действия: [3]

1. Введите в файл Config.sys команду загрузки драйвера с двойной буферизацией.

2. Перезагрузите компьютер.

3. Из командной строки введите команду Smartdrv. Она отобразит на экране таблицу Disk Chaching Status.

4. Если в столбце Buffering этой таблицы для всех дисков стоит No, то двойная буферизация не нужна. В этом случае удалите из файла Config.sys команду загрузки драйвера кэш-памяти с двойной буферизацией.

5. Вновь перезагрузите компьютер.

Кроме Smartdrv, для работы под управлением MS-DOS используются и другие драйверы для кэширования дисков, например Nchache.exe из пакета Norton Utilites for DOS. Эти драйверы обладают дополнительными возможностями по сравнению с программой Smartdrv, однако они могут конфликтовать с другим программным обеспечением.

 

Назад...   Вперед...

 

Гостевая книга Обсуждение в блоге. Отправить E-mail Автору проекта.

=== *** === *** === *** ===

В настоящее время проект закрыт (в версии 1.3.0 beta). Автор приносит извинения за прекрашение разработки.

Hosted by uCoz