Dos fn 36h дать свободную память диска


Содержание

DOS Fn 49H: Освободить распределенный блок памяти

Читайте также:

  1. Алгоритмы распределения памяти
  2. Алгоритмы согласования содержимого кэш-памяти и основной памяти
  3. Архитектура с выделенным доступом к памяти
  4. Блокировка памяти
  5. Виды памяти
  6. Возможность наращивания памяти
  7. Вопрос 13. Архитектура подсистемы памяти микропроцессорной системы
  8. Вопрос 19. Основная память. Блочная организация основной памяти
  9. Вопрос 20. Кэш-память. Принципы кэширования памяти
  10. Вопрос 21. Организация кэш-памяти: кэш прямого отображения, наборно-ассоциативный кэш, полностью ассоциативный кэш
  11. Вопрос 22. Концепция виртуальной памяти

Выход

Вход

Выход

Вход

Выход

Вход

DOS Fn 46H: переназначить описатель — FORCDUP

Выход

Вход

  • AH = 45H
  • BX = существующий описатель файла
  • AX = новый описатель файла, дублирующий оригинал или код ошибки если CF установлен.

Описание:

Создает дополнительный описатель файла, ссылающийся на тот же поток в/в, что и существующий описатель. Любое продвижение указателя чтения/записи для одного описателя действует на его дубликат — включая любые операции чтения, записи или перемещения указателя посредством функции 42H LSEEK. Новый описатель наследует ограничения режима открытия оригинала. Эта функция используется с одной главной целью: вы можете закрыть описатель, заставляя DOS записать файловые буфера. такой способ DUP/CLOSE — быстрее, чем закрытие и повторное открытие файла.

  • AH = 46H
  • BX = целевой описатель файла (должен уже существовать)
  • CX = исходный описатель файла (должен уже существовать)
  • AX = код ошибки если CF установлен

Описание:

Заставляет описатель файла (handle) ссылаться на другой файл или устройство. описатель в CX (источник) закрывается, если он открыт, а затем становится дубликатом описателя в BX (назначения). Иными словами, описатели в CX и BX будут ссылаться на один и тот же физический файл или устройство.

используется для переназначения стандартного в/в. пример:

  • Откроем файл «C:STDOUT.TXT» через функцию 3dH Open File и получим описатель (например, 05).
  • установим BX=05, CX=01 и вызовем эту функцию. (замечание: описатель 01 — это предопределенный описатель «стандартного выходного устройства»).
  • Теперь можно вызвать функцию 3eH Close File и закрыть handle 05. можно обращаться к файлу STDOUT.TXT через описатель 01.
  • Стало быть, дисковый файл «C:STDOUT.TXT» будет отныне получать весь вывод, создаваемый всеми процессами (текущим и порожденными) через любую функцию символьного в/в DOS, так же как и любой вывод в описатель файла 01 через функцию DOS 40H.
  • когда вы выходите в COMMAND.COM, предопределенные описатели устанавливаются на обычные устройства (например, описатель 01 устанавливается на «CON»).


DOS Fn 47H: дать умалчиваемое оглавление DOS

  • AH = 47H
  • DS:SI = адрес локального буфера для результирующего пути (64 байта)
  • DL = номер диска (0=текущий, 1=A, и т.д.)
  • AX = код ошибка если CF установлен

Описание:

В пользовательский буфер по адресу DS:SI помещается в форме ASCIIZ путь текущего умалчиваемого оглавления для диска, указанного в DL. Путь возвращается в формате: «путьоглавление»,0. Не подставляется впереди буква диска, а сзади не подставляется символ «». например, если текущим является корневое оглавление, эта функция вернет вам пустую строку (DS:[SI] = 0).

DOS Fn 48H: распределить память (дать размер памяти)

  • AH = 48H
  • BX = запрошенное количество памяти в 16-байтовых параграфах
  • AX = код ошибки если CF установлен
  • BX = размер доступной памяти в параграфах (если памяти нехватает)
  • AX = сегментный адрес распределенного блока (если нет ошибок)

Описание:

распределяет блок памяти длиной BX параграфов, возвращая сегментный адрес этого блока в AX (блок начинается с AX:0000). если распределение неудачно, взводится Carry-флаг, в AX возвращается код ошибки, а BX содержит максимальный размер доступной для распределения памяти (в параграфах).

Чтобы определить наибольший доступный кусок, общепринято устанавливать BX=0ffffH перед вызовом. распределение завершится с ошибкой, возвратив размер максимального блока памяти в BX.

Замечание:

когда процесс получает управление через функцию 4bH EXEC, вся доступная память уже распределена ему.

Дата добавления: 2014-01-20 ; Просмотров: 393 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Программирование в среде однозадачной операционной системы

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«ПЕНЗЕНСКАЯ ГОСУДАРСТВЕННАЯ ТЕХНОЛОГИЧЕСКАЯ АКАДЕМИЯ

Е.В. Грачева

Системное программное обеспечение

Персональных ЭВМ

доктор технических наук, пофессор

зав.кафедрой «Вычислительные машины и системы»

доктор технических наук, пофессор

кафедры «Информационно-вычислительные системы»

Пензенского государственного университета

Грачева Е.В.

Системное программное обеспечение персональных ЭВМ:

Учебнле пособие /Е.В. Грачева – Пенза

Учебное пособие подготовлено на кафедре «Вычислительные машины и системы»

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

Программирование в операционной среде

Операционной средой называется набор функций ОС, сервисов и правила обращения к ним. Поскольку каждая операционная система имеет свой набор функций и правил обращения к ним, программирование в операционной среде каждой ОС должно рассматриваться отдельно [1].

Программирование в среде однозадачной операционной системы

Программы для MS DOS могут быть одного из двух форматов: COM или EXE.

Программы типа COM не могут быть размером более 64 Кб и состоят только из одного сегмента – сегмента кода.

Размер программы типа EXE может превышать 64 кб.

В современных операционных средах приложения пользуются системными вызовами, число которых превышает 2000, в то время как в MS-DOS подобных функций гораздо меньше.

Главным входом большинства функций DOS служит прерывание, вызываемое с помощью команды INT 21h. Параметры функциям DOS передаются через регистры микропроцессора: AX (AH и AL), BX, CX, DX; регистровые пары DS:DX и ES:BX используются в основном при передаче адреса ячейки памяти. Через эти же регистры возвращаются результат работы функции DOS, кроме того могут быть установлены флаги в регистре флагов.

Как и любая операционная система, DOS загружает и выполняет программы. При загрузке программы в начале отводимого для нее блока памяти (для СОМ-программ это вся свободная на данный момент память) создается структура данных PSP (префикс программного сегмента) размером 256 байт (100h). Затем DOS создает копию текущего окружения для загружаемой программы, помещает полный путь и имя программы в конец окружения, заполняет поля PSP следующим образом:

+00h: слово – CDh 20h – команда INT 20h. Если СОМ-программа завершается командой RETN, управление передается на эту команду.

+02h: слово – сегментный адрес первого байта после области памяти, выделенной для программы

+04h: байт – не используется DOS

+05h: 5 байт – 9Ah F0h FEh 1Dh F0h – команда CALL FAR на абсолютный адрес 000C0h, записанная так, чтобы второй и третий байты составляли слово, равное размеру первого сегмента для СОМ-файлов (в этом примере FEF0h). Введено для совместимости с командой СР/М CALL 5.

+0Ah: 4 байта – адрес обработчика INT 22h (выход из программы)

+0Eh: 4 байта – адрес обработчика INT 23h (обработчик нажатия Ctrl-Break).

+12h: 4 байта – адрес обработчика INT 24h (обработчик критических ошибок)

+16h: слово – сегментный адрес PSP процесса, из которого был запущен текущий.


+18h: 20 байт – JFT – список открытых идентификаторов, один байт на идентификатор, FFh – конец списка.

+2Ch: слово – сегментный адрес копии окружения для процесса.

+2Eh: 2 слова – SS:SP процесса при последнем вызове INT 21h.

+32h: слово – число элементов JFT (по умолчанию 20).

+34h: 4 байта – дальний адрес JFT (по умолчанию PSP:0018).

+38h: 4 байта – дальний адрес предыдущего PSP.

+3Ch: байт – флаг, указывающий, что консоль находится в состоянии ввода 2-байтного символа.

+3Dh: байт – флаг, устанавливаемый функцией В711h прерывания 2Fh (при следующем вызове INT 21h для работы с файлом имя файла будет замечено на полное).

+3Eh: слово – не используется в DOS.

+40h: слово – версия DOS, которую вернет функция DOS 30h (DOS 5.0+).

+42h: 12 байт – не используется в DOS.

+50h: 2 байта – CDh 21h – команда INT 21h.

+54h: 7 байт – область для расширения первого FCB (FCB, FileControlBlok — это метод работы с файлами, являющийся рудиментом от ранних версий DOS’а. При его использовании можно работать только с файлами в текущем каталоге, причем даже нет возможности сменить каталог (точнее, даже понятия «каталог» в момент создания этих функций вообще не было). Современные программы эти функции не используют. MS-DOS обеспечивает две технологии обслуживания файлов. Первая была разработана при создании версий 1.Х. Эта технология основана на использовании структур данных, называемых блоками управления файлом (FCB). В то время подавляющее большинство компьютеров работало под управлением операционной системы CPM. Блоки FCB обеспечивали совместимость файлов MS-DOS с файлами этой системы. При разработке MS-DOS версий 2.Х, когда была предложена иерархическая структура организации файлов, была разработана вторая технология их обслуживания. Она основана на использовании ссылок на управляющую запись файла и не требует организации FCB. После того, как эта технология была опробована на операционной системе UNIX, она получила широкое распространение.).

+5Ch: 16 байт – первый FCB, заполняемый из первого аргумента командной строки.

+6Ch: 16 байт – второй FCB, заполняемый из второго аргумента командной строки.

+7Ch: 4 байта – не используется в DOS.

+80h: 128 байт – командная строка и область DTA по умолчанию.

Затем DOS записывает программу в память, начиная с адреса PSP:0100h.

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

При запуске СОМ-программы регистры устанавливаются следующим образом:

AL = FFh, если первый параметр командной строки содержит неправильное имя диска (например, z:/something), иначе – 00h.

АН = FFh, если второй параметр содержит неправильное имя диска, иначе 00h.

CS = DS = ES = SS = сегментный адрес PSP.

SP = адрес последнего слова в сегменте (обычно FFFEh; меньше, если не хватает памяти).

При запуске ЕХЕ-программы регистры SS:SP устанавливаются в соответствии с сегментом стека, определенным в программе, затем в любом случае в стек помещается слово 0000h и выполняется переход на начало программы (PSP:0100h для СОМ, собственная точка входа для ЕХЕ).

Все эти действия выполняет одна функция DOS – DOS 4Bh – загрузить и выполнить программу. В качестве параметров этой функции передаются:

AL = 00h – загрузить и выполнить;

AL = 01h – загрузить и не выполнять;

DS:DX – адрес ASCIZ-строки с полным именем программы
ES:BX – адрес блока параметров ЕРВ:

+00h: слово – сегментный адрес окружения, которое будет скопировано для нового процесса (или 0, если используется текущее окружение)
+02h: 4 байта – адрес командной строки для нового процесса
+06h: 4 байта – адрес первого FCB для нового процесса
+0Ah: 4 байта – адрес второго FCB для нового процесса
+0Eh: 4 байта – здесь будет записан SS:SP нового процесса после его завершения (только для AL = 01)
+12h: 4 байта – здесь будет записан CS:IP (точка входа) нового процесса после его завершения (только для AL = 01)

AL = 03h – загрузить как оверлей;
DS:DX – адрес ASCIZ-строки с полным именем программы
ES:BX – адрес блока параметров:

+00h: слово – сегментный адрес для загрузки оверлея
+02h: слово – число, которое будет использовано в командах, использующих непосредственные сегментные адреса, – обычно то же самое число, что и в предыдущем поле. 0 для СОМ-файлов

AL = 05h – подготовиться к выполнению (используется в ОС MS DOS начиная с версии 5.0 и выше)
DS:DX – адрес следующей структуры:

+00h: слово – 00h
+02h: слово:

бит 0 – программа – ЕХЕ
бит 1 – программа – оверлей

+04h: 4 байта – адрес ASCIZ-строки с именем новой программы
+08h: слово – сегментный адрес PSP новой программы
+0Ah: 4 байта – точка входа новой программы
+0Eh: 4 байта – размер программы, включая PSP

CF = 0, если операция выполнена, ВХ и DX модифицируются,
CF = 1, если произошла ошибка, АХ = код ошибки (2 – файл не найден, 5 – доступ к файлу запрещен, 8 – не хватает памяти, 0Ah – неправильное окружение, 0Bh – неправильный формат).

Как уже отмечалось, прерывание INT 21h (сервис DOS) служит главным входом большинства функций DOS. Программа, запрашивающая сервис DOS, должна подготовить всю необходимую информацию в регистрах и управляющих блоках, указать в регистре AH номер желаемой функции DOS и затем вызвать прерывание INT 21H.

В таблице 1 приведены функции прерывания INT 21h.

Таблица 1 -Функции прерывания INT21h

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: При сдаче лабораторной работы, студент делает вид, что все знает; преподаватель делает вид, что верит ему. 9336 — | 7293 — или читать все.

MS-DOS для программиста

6. Настройка и оптимизация MS-DOS

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

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

  • правильная настройка операционной системы MS-DOS;
  • регулярная профилактика дисковой подсистемы компьютера.

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

Если вы используете компьютер на базе процессора i386, i486 или Pentium, проверьте оптимальность конфигурации компьютера, установленной в CMOS — не исключено, что вы сможете увеличить быстродействие системы в 1,5 — 2 раза только за счет правильной установки режима работы центрального процессора с оперативной памятью.

Отформатируйте дискеты DS/DD не на 360, а на 800 Кбайт — у вас временно исчезнет проблема с нехваткой дискет. Используйте средства динамического сжатия данных на диске — эффективная емкость диска возрастет в полтора-два раза (!), причем без заметного снижения быстродействия.

К сожалению, операционная система MS-DOS использует такой важный и дорогостоящий ресурс компьютера, как оперативная память, не лучшим образом. Запуская программы в MS-DOS, особенно игровые, вы часто сталкиваетесь с парадоксальной ситуацией: несмотря на то что в компьютере установлено 8 или 16 Мбайт памяти, на экране появляется сообщение о том, что памяти слишком мало, и программа не может работать!

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

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

Несмотря на то что стоимость дисковой памяти постоянно снижается, никакой диск не будет слишком большим по емкости. Для более экономного использования дисков вы можете воспользоваться системой динамического сжатия данных DriveSpace , которая поставляется вместе с MS-DOS версии 6.22.

6.1. План работ по оптимизации

Прежде чем приступить к оптимизации, необходимо выяснить конфигурацию аппаратных и программных средств вашего компьютера. В зависимости от конфигурации вы будете выполнять разные процедуры оптимизации.

В составе аппаратных средств обычно имеются:

  • процессор i286, i386, i486 или Pentium;
  • стандартная оперативная память (Conventional Memory), обычно ее размер составляет 640 Кбайт;
  • расширенная память (Extended Memory), установленная на основной (материнской) плате компьютера;
  • дополнительная память (Expanded Memory), расположена на отдельной плате (в современных компьютерах обычно не используется);
  • накопитель на жестком магнитном диске с контроллером;
  • один или два накопителя на гибких магнитных дисках;
  • устройство чтения компакт-дисков;
  • звуковой адаптер;
  • адаптер локальной сети;
  • модем или факс-модем.

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

Прежде всего вам потребуется определить:

  • тип контроллера дисковода для жесткого магнитного диска (НМД);
  • тип установленного в компьютере центрального процессора;
  • наличие и объем имеющейся расширенной оперативной памяти;
  • наличие и объем установленной в компьютере дополнительной оперативной памяти.

Определение типа контроллера НМД

При оптимизации дисковой подсистемы вам, возможно потребуется выполнить процедуру низкоуровневого форматирования НМД — это стандартная процедура подготовки нового диска к работе. Низкоуровневое форматирование выполняется по-разному в зависимости от типа контроллера и типа НМД. Единственный надежный источник информации о типе контроллера и о том, как правильно выполнять низкоуровневое форматирование — техническая документация на ваш контроллер НМД.

Существует несколько типов контроллеров. Вы можете встретиться с контроллерами, которые используют интерфейсы ST506/412 , SCSI , ESDI , IDE и Enchanced IDE . Узнайте тип вашего контроллера, он потребуется на этапе оптимизации характеристик дисковой подсистемы.

ST506/412

Интерфейс ST506/412 устарел. Он использовался преимущественно в компьютерах IBM PC/XT и IBM PC/AT с емкостью диска порядка 20 — 40 Мбайт. Характерный признак этого интерфейса — подключение НМД к контроллеру при помощи двух плоских кабелей. Один кабель широкий, в нем 34 жилы, второй состоит из 20 жил.

К одному контроллеру ST506/412 может быть подключено два НМД. В этом случае используется три кабеля — один широкий с двумя разъемами, и два узких. Каждый НМД подключается к контроллеру отдельным узким кабелем, но широкий кабель только один.

Если ваш НМД подключается к контроллеру таким способом, то у вас скорее всего установлен контроллер с интерфейсом ST506/412 , и вам имеет смысл заняться оптимизацией такой характеристики диска, как фактор чередования .

Интерфейс ESDI также устарел и встречается очень редко. Этот интерфейс, как правило, не требует оптимизации фактора чередования . Контроллер ESDI также подключается к НМД двумя кабелями шириной 34 и 20 жил.

Дополнительный признак, по которому можно отличить контроллер ESDI от контроллера ST506/412 — наличие на плате контроллера микросхемы постоянного запоминающего устройства. Эта микросхема установлена на панельке.

Низкоуровневое форматирование НМД, подключенного к контроллеру ESDI , должно выполняться с помощью программы, записанной в ПЗУ контроллера, как это будет описано в разделе «Низкоуровневое форматирование».

Если у вас не получается запустить программу низкоуровневого форматирования, находящуюся в ПЗУ контроллера, наиболее вероятная причина заключается в том, что тип вашего контроллера — не ESDI , а ST506/412 или IDE .

Интерфейс SCSI и его разновидности, также как и ESDI , используется для подключения дисков большой емкости (а также других устройств, например, стримера, устройства чтения компакт-дисков или магнитооптического накопителя) к высокопроизводительным компьютерам. Характерная особенность этого интерфейса — использование одного широкого кабеля (50 жил) для подключения всех НМД. При включении питания компьютера, оборудованного SCSI-контроллером, на экран выдается сообщение об инициализации контроллера. В этом сообщении есть слово «SCSI», по которому можно легко идентифицировать тип используемого интерфейса.

Если в вашем компьютере установлен SCSI -контроллер диска, вам не нужно выполнять процедуру оптимизации фактора чередования .

IDE и Enchanced IDE

Контроллеры IDE и Enchanced IDE имеют производительность, сравнимую с контроллерами ESDI и SCSI . Они широко используются в современных компьютерах. Как правило, можно подключить один или два НМД, причем, как и в случае SCSI, используется один широкий кабель. Этот кабель часто подключается непосредственно к разъему, расположенному на материнской плате компьютера. Интерфейс Enchanced IDE допускает подключение и использование в MS-DOS НМД большой емкости (больше 500 Мбайт).

Контроллер, использующий интерфейс IDE , не имеет отдельного ПЗУ. Оптимизация фактора чередования для диска, подключенного с помощью такого контроллера, не нужна.

Тип процессора

Тип используемого процессора можно выяснить из документации на компьютер. Если у вас компьютер IBM PC или IBM PC/XT, то скорее всего это 8086, 8088 или аналог 8088 — процессор NEC20 . Иногда встречаются компьютеры XT/286, в которых используется процессор i286. Компьютеры IBM PC/AT оборудованы процессорами i286, i386, i486 или Pentium.

Расширенная память

Расширенная память — это память, расположенная в адресном пространстве выше границы 1 Мбайт. Такая память отсутствует в компьютерах IBM PC и IBM PC/XT. Компьютер IBM PC/AT в стандартной конфигурации имеет по крайней мере 384 Кбайт расширенной памяти, расположенной на основной плате.


Как определить объем расширенной памяти?

Для этого достаточно включить компьютер и дождаться начала теста памяти. Если после теста на экране находится сообщение о том, что проверено 2048 Кбайт памяти, значит у вас есть 2048-640=1408 байт расширенной памяти.

Дополнительная память

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

Дополнительную память, в отличие от расширенной, можно установить в любой компьютер, даже в IBM PC или IBM PC/XT. Расширенная память может быть только в таком компьютере, который использует процессоры i286 или более старших моделей.

Версия операционной системы

Версию используемой операционной системы можно определить при помощи команды VER. В ответ на эту команду вы увидите на экране следующее (для MS-DOS версии 6.22):

Если вы используете более ранние версии MS-DOS, мы рекомендуем вам установить версию 6.22. Только в этом случае вы сможете легко выполнить оптимизацию используемой оперативной памяти и воспользоваться динамическим сжатием данных на диске. После оптимизации для программ будет доступно 600 — 620 Кбайт памяти!

Определение конфигурации компьютера

Для определения конфигурации компьютера можно запустить программу msd.exe, которая входит в состав MS-DOS. Эта программа сообщит вам тип процессора, количество и тип дисковых устройств, объем стандартной, расширенной и дополнительной памяти, а также множество других интересных сведений о конфигурации вашего компьютера (рис. 6.1).

Рис. 6.1. Определение конфигурации компьютера с помощью программы msd.exe

Выбрав при помощи мыши или клавиатуры поле «Computer», вы сможете узнать не только тип компьютера, но и версию BIOS, тип центрального процессора и шины (рис. 6.2).

Рис. 6.2. Просмотр дополнительной информации о конфигурации компьютера

Составление плана оптимизации

После того как вы определите конфигурацию аппаратных и программных средств, можно приступить к составлению плана оптимизации.

План оптимизации зависит от типа и конфигурации используемого вами компьютера. Перечисленные процедуры будут описаны ниже в соответствующих разделах.

Компьютер IBM PC или IBM PC/XT

Если у вас компьютер типа IBM PC или IBM PC/XT, настоятельно рекомендуем заменить его на более новую модель. Тем не менее, и в этом случае можно предпринять некоторые шаги для увеличения производительности:

  • оптимизируйте характеристики дисковой подсистемы: подберите оптимальный фактор чередования , выполните дефрагментацию диска;
  • если ваш компьютер оборудован дополнительной памятью, рассмотрите возможность организации кэширования дисковой памяти;
  • используйте программы-архиваторы, средство динамического сжатия информации на диске DriveSpace .

Компьютер IBM PC/AT с процессором i286

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

  • оптимизируйте характеристики дисковой подсистемы: подберите оптимальный фактор чередования , выполните дефрагментацию диска;
  • используйте расширенную память для организации кэширования дисковой памяти;
  • используйте программы-архиваторы, средство динамического сжатия информации на диске DriveSpace ;
  • выполните рекомендации по оптимальному использованию оперативной памяти;
  • расположите ядро MS-DOS в верхней памяти;
  • расположите содержимое BIOS в теневой памяти.

Компьютеры с процессорами i386, i486 или Pentium

Вы сможете улучшить использование оперативной памяти и увеличить быстродействие даже мощного компьютера с процессором Pentium, если сделаете следующее:

  • выполните дефрагментацию диска;
  • используйте расширенную память для организации кэширования дисковой памяти;
  • используйте программы-архиваторы, средства динамического сжатия информации на диске DriveSpace ;
  • выполните рекомендации по оптимальному использованию оперативной памяти;
  • расположите ядро MS-DOS в верхней памяти;
  • расположите драйверы и резидентные программы в расширенной памяти;
  • расположите содержимое BIOS в теневой памяти.

6.2. Увеличение быстродействия дисковой памяти

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

Почему диск работает медленно

Прежде чем приводить рекомендации по увеличению быстродействия дисковой системы, мы расскажем вам об основных причинах, приводящих к замедлению работы дисков. Их может быть несколько:

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

Каждая из приведенных выше причин сама по себе может привести к замедлению работы дисковой памяти или отдельных программ в несколько раз! А если у вас комбинация нескольких или всех неблагоприятных факторов? В этом случае даже современные быстродействующие накопители будут по скорости напоминать диски первых моделей IBM PC/XT.

Фактор чередования

Начнем с фактора чередования .

Первое, что вам следует сделать с НМД нового компьютера (или с новыми дисками, установленными в старом компьютере) — выполнить низкоуровневую инициализацию или, другими словами, низкоуровневое форматирование . Эта процедура не нужна, если такое форматирование уже выполнено. Как правило, современные компьютеры оборудуются НМД с интерфейсом IDE , низкоуровневая инициализация которых выполняется только на заводе-изготовителе.

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

Ни одна из команд операционной системы MS-DOS не может выполнить низкоуровневую инициализацию жесткого диска. Даже программа format.com не поможет вам в этом. Для инициализации диска на низком уровне вам не обойтись без специально предназначенных для этого программ.

Что делает программа низкоуровневой инициализации?

Как мы уже говорили, блоки данных, записанные на дорожках, содержат служебную информацию. Например, для каждого блока в области служебной информации записывается его порядковый номер, равный номеру соответствующего сектора данных. Эта структура магнитной дорожки формируется во время процедуры низкоуровневого форматирования.

Обратите внимание: низкоуровневое форматирование (или низкоуровневая инициализация , что одно и то же) формирует логическую структуру дорожки. Дорожка разделяется на секторы, для каждого сектора записывается служебная информация. Область данных размером 512 байт обычно заполняется значением 0E6h. Низкоуровневое форматирование выполняется для всех имеющихся дорожек.

Дискеты инициализируются программой format.com . Эта программа выполняет низкоуровневое форматирование только для дискет. Накопители на жестких магнитных дисках форматируются на низком уровне при помощи специальных программ.

Теперь можно перейти к фактору чередования.

Смысл фактора чередования очень прост — он равен количеству оборотов диска, за которое можно последовательно в порядке возрастания номеров секторов прочитать одну дорожку. Если секторы расположены подряд в порядке возрастания номеров, при достаточном быстродействии контроллера диска можно прочитать дорожку за один оборот диска. Если фактор чередования равен двум, потребуется два оборота.

Обычно секторы на дорожке располагаются в порядке возрастания их порядковых номеров. Сначала идет первый сектор, за ним второй и так далее. Предположим теперь, что программа желает прочитать с диска два сектора, имеющих соседние порядковые номера, например, первый и второй.

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

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

Однако пока контроллер записывал данные в память компьютера, пока компьютер выдавал команду на чтение следующего сектора, диск, разумеется, продолжал вращаться! И если производительность контроллера диска недостаточна, к моменту начала чтения второго сектора головка уже может проскочить управляющую запись второго сектора. Поэтому следующий сектор, который обнаружит контроллер, будет иметь номер три.

Теперь контроллер будет ждать, пока диск повернется на один оборот, и только затем он сможет прочитать второй сектор. Таким образом, если программа будет читать несколько секторов с последовательными номерами (а она обычно так и делает) на чтение каждого сектора будет затрачено время, равное времени оборота диска!

Например, если дорожка диска содержит 17 секторов, для чтения всей дорожки потребуется 17 оборотов диска вместо одного.

Как можно улучшить временные характеристики?

Например, можно располагать секторы через один. В таком случае после чтения одного сектора будет достаточно времени для чтения следующего, и вся дорожка может быть считана за 2 оборота диска. Это уже намного лучше.

Описанная выше ситуация встречается особенно часто на малопроизводительных компьютерах IBM PC/XT и IBM PC/AT с контроллером ST506/412 . Поэтому если вы пользуетесь таким компьютером, не упускайте случая увеличить производительность диска в несколько раз.

Если же у вас современный диск с высокопроизводительным контроллером IDE или SCSI , можно забыть про фактор чередования : эти контроллеры обладают достаточным быстродействием.

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

А что делать, если НМД вашего компьютера уже используется и содержит важные данные, которые вам не хотелось бы терять в результате выполнения низкоуровневого форматирования? Есть выход и из этой ситуации. Существуют программы, позволяющие изменить фактор чередования диска без потерь записанной на нем информации. Это такие программы, как CALIBRAT из пакета Norton Utilities и утилита SPINRITE.

Далее в этой главе мы расскажем о том, как определить в каждом конкретном случае оптимальное значение фактора чередования и оптимизировать диск по этому параметру. А сейчас продолжим перечисление причин, по которым обычно снижается производительность дисковой подсистемы компьютера.

Сдвиг цилиндров

Предположим, ваша программа считывает (или записывает) большой файл, занимающий на диске несколько цилиндров (цилиндром называется совокупность дорожек диска, расположенных друг над другом). Что происходит в тот момент, когда завершается чтение последней дорожки текущего цилиндра? Теперь надо установить головки на нулевую дорожку следующего цилиндра. Очень хорошо, контроллер выдает соответствующую команду, головки устанавливаются на другой цилиндр и начинается поиск первого сектора нулевой дорожки.

Но пока головки перемещались, диск повернулся и головки проскочили мимо первого сектора. Теперь надо ждать, пока диск повернется на один оборот и первый сектор окажется снова напротив блока головок.

Здесь мы неявно предполагали, что все дорожки на всех цилиндрах расположены как бы параллельно, то есть первые секторы на всех дорожках для всех цилиндров располагаются на одинаковом расстоянии от маркера начала дорожки.

Некоторые НМД, в частности, использующие интерфейс ESDI , можно отформатировать «со сдвигом цилиндров» (Cylinder Skew ). В этом случае цилиндры, расположенные ближе к центру, будут сдвинуты вперед по направлению вращения относительно внешних цилиндров. При переходе от одного цилиндра к другому головки успеют как раз к началу следующей дорожки, то есть к первому цилиндру. И если величина сдвига выбрана правильно, дополнительный оборот диска не потребуется.

Сдвиг головок

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

Для выбора правильного расположения первого сектора некоторые программы низкоуровневого форматирования позволяют задавать сдвиг головок (Head Skew ) относительно маркера дорожки.

Фрагментация файлов

Для того чтобы понять причины появления фрагментированных файлов, нам необходимо вспомнить основы логической структуры файловой системы MS-DOS.

Мы уже говорили о том, что физически информация на диске храниться в секторах, которые для MS-DOS имеют размер 512 байт. Сектор — минимальный элемент данных, читаемый с диска или записываемый на диск. Для работы с файлами операционная система MS-DOS пользуется элементами данных, называемых кластерами. Кластер — это просто совокупность секторов, имеющих смежные номера. Кластер может состоять из одного сектора (для дискет) или содержать несколько секторов (для жесткого диска).

Операционная система выделяет для файлов, которые записываются на диск, некоторое количество кластеров, в зависимости от размера файла. Если файл маленький (например, в нем всего один или два байта), выделяется один кластер. Это, в частности, означает, что при размере кластера, равном 8 секторам, для хранения файла размером в один байт используется 4 Кбайт дисковой памяти.

Где же располагаются кластеры, выделяемые файлу?

Номер первого кластера, выделенного файлу, хранится в дескрипторе файла, то есть в каталоге. Для выделения остальных кластеров можно использовать две стратегии.

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

В этом случае можно говорить о сильной фрагментации свободного пространства на диске. Получается ситуация, когда на диске есть много свободного места, но оно разделено на много участков маленького размера.

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

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

После форматирования диска программой format.com все кластеры, предназначенные для хранения файлов, помечаются в FAT как свободные. В процессе записи на диск нового файла в FAT записываются номера всех кластеров, распределенных данному файлу. Эти номера хранятся в виде односвязного списка.

Список строится следующим образом. Перед началом записи нового файла на диск MS-DOS просматривает FAT и находит первый свободный кластер. Номер этого кластера записывается в дескриптор файла. Далее в секторы этого кластера записываются данные. Если файл короткий и помещается целиком в один кластер, после записи данных в элемент FAT, соответствующий первому кластеру, записывается специальное значение, означающее конец цепочки кластеров (0FFFFh или 0FFFh в зависимости от типа FAT).

Если же длина файла больше размера одного кластера, MS-DOS ищет следующий свободный кластер, который может оказаться в любом месте диска. Номер найденного свободного кластера записывается в элемент FAT для первого кластера, распределенного файлу. Таким образом, элемент FAT, соответствующий первому кластеру будет содержать ссылку на второй кластер, распределенный файлу. Ссылка представляет собой просто порядковый номер следующего кластера.

По мере того как файл записывается на диск, MS-DOS формирует в FAT список кластеров, распределенных файлу. В элементе FAT, соответствующему последнему кластеру, распределенному файлу, записывается число, означающее конец цепочки кластеров.

При удалении файла все кластеры, принадлежащие файлу, помечаются как свободные — в соответствующие элементы FAT записывается нулевое значение. В каталоге первая буква имени файла заменяется на русскую букву «х» (в альтернативной кодировке символов). Это означает, что файл удален. Те кластеры, которые раньше занимал удаленный файл, становятся доступными для записи новых файлов.

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

Однако при использовании описанного выше метода файл становится фрагментированным — он как бы «размазан» по диску. К чему это может привести?

К тому, что для доступа к файлу необходимо перемещать магнитные головки от одного участка файла к другому. А на это требуется время, и весьма значительное.

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

Существуют различные методы дефрагментации диска. Наиболее очевидный и наименее удобный — выгрузка всего диска на дискеты или стример, форматирование диска и восстановление всех файлов, соответственно, с дискет или стримера.

Лучше всего использовать специальные программы, такие как defrag.exe , входящую в состав MS-DOS или speedisk.exe из пакета утилит Нортона.

Буферизация

Еще один путь к увеличению быстродействия дисковой системы лежит в использовании буферизации ввода/вывода. Что здесь имеется в виду?

Пусть нам надо скопировать некоторый, достаточно большой файл и этот файл располагается в начале диска, в области первых нескольких цилиндров. Пусть копия файла будет располагаться в конце диска (например, потому, что там имеется свободное пространство).


Как можно копировать файл?

Мы уже говорили, что наименьший элемент данных, который может быть прочитан с диска или записан на диск — это сектор длиной 512 байт. Можно копировать файл по секторам. Для этого сначала надо прочитать первый сектор первого кластера исходного файла, затем записать сектор в первый сектор первого кластера нового файла. Затем надо прочитать второй сектор первого кластера и записать прочитанные данные во второй сектор нового файла. И так далее до конца файла.

Однако после чтения каждого сектора необходимо переместить головки в конец диска для записи в сектор нового файла, а затем переместить головки снова в начало диска. При этом головки диска будут постоянно перемещаться от первых цилиндров к последним и обратно. Сколько копируется секторов, столько будет перемещений! А так как перемещение блока головок — длительный процесс, может получится так, что время, затраченное на перемещение, будет гораздо больше времени, затраченного собственно на чтение и запись данных.

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

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

Операционная система MS-DOS имеет специальные средства для управления процессом буферизации ввода/вывода.

Кэширование дисковой памяти

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

Можно привести много примеров, когда в процессе работы программы происходит частое обращение к одним и тем же областям диска, или даже к одним и тем же секторам диска.

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

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

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

Описанный выше механизм хранения в оперативной памяти наиболее часто используемых секторов диска называется кэшированием дисковой памяти или просто кэшированием диска. Существуют различные способы организации кэширования диска в MS-DOS. Все они реализуются специальными драйверами, которые необходимо подключать в файлах config.sys или autoexec.bat.

Схематически реальный алгоритм кэширования дисковой памяти выглядит так.

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

Если требуемого сектора в буфере кеша нет, он читается с диска и записывается в буфер кеша, например, на место самого «старого» сектора данных. То есть на место сектора, к которому давно не было обращений. Таким образом, новая информация вытесняет из кеша старую. Разумеется, если в буфере кеша есть свободное место, никакого вытеснения не происходит, сектор просто записывается в буфер.

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

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

Физически кеш диска обычно реализуется с использованием расширенной или дополнительной оперативной памяти. Чем больше размер области памяти, отведенной для буфера кеша, тем больше вероятность того, что требуемый сектор уже хранится в памяти и его не надо заново считывать с диска.

Электронный диск

Если в вашем компьютере имеется расширенная или дополнительная память, вы можете организовать так называемый электронный диск . Подключив в файле config.sys драйвер ramdrive.sys , поставляемый вместе с операционной системой MS-DOS, вы получите дополнительный псевдодиск, организованный в оперативной памяти. От обычного диска он будет отличаться значительно более высоким быстродействием.

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

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

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

Переменная среды PATH

Вам, наверное, известно назначение переменной среды PATH , устанавливаемой в файле autoexec.bat: эта переменная служит для перечисления путей доступа к каталогам, содержащим запускаемые программы. Например:

Когда в ответ на системное приглашение MS-DOS вы набираете имя программы, MS-DOS вначале ищет эту программу в текущем каталоге, а затем в каталогах, перечисленных в переменной среды PATH .

Допустим, вы желаете запустить текстовый процессор Microsoft Word. Для этого вы набираете: word и нажимаете клавишу . Если переменная PATH установлена так, как в нашем примере, то после просмотра текущего каталога командный процессор в процессе поиска программы word.exe просмотрит корневой каталог диска c:, каталог, содержащий операционную систему MS-DOS c:\dos, каталоги c:\norton и d:\borlandc\bin, и, наконец, каталог e:\word. Здесь и располагается искомая программа.

Для запуска текстового процессора потребуется некоторое время. Это время будет затрачено, в частности, и на просмотр перечисленных каталогов, находящихся на разных дисках. Вы можете ускорить запуск программ, правильно расположив каталоги в определении переменной PATH . Такое ускорение заметно, если в компьютере установлен медленный диск с большим временем позиционирования головок.

Каталоги, которые содержат наиболее часто запускаемые программы, целесообразно размещать в левой части определения PATH .

Например, если вы постоянно запускаете Norton Commander и текстовый процессор Microsoft Word, а транслятором Borland C пользуетесь эпизодически, рекомендуется преобразовать приведенную выше строку следующим образом:

Корневой каталог c:\ мы поместили в левой части потому, что в этом каталоге описан командный процессор COMMAND.COM, нужный для запуска любых программ. Утилиты MS-DOS обычно используются редко, поэтому мы поместили их в правой части строки.

Расположение файлов

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

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

Рабочие или временные файлы целесообразно располагать на отдельном НМД, желательно обладающем наибольшим быстродействием.

Настройка дисковой системы

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

Оптимизация фактора чередования

Реально можно использовать два метода выбора правильного значения для фактора чередования :

  • метод подбора;
  • метод, основанный на использовании специальных программ.
Метод подбора

При использовании этого метода вам предлагается попробовать по очереди все значения фактора чередования с измерением производительности диска.

Преимущество метода: не требуются специальные программы оптимизации фактора чередования .

Недостатки: большие затраты времени, необходимость полной предварительной выгрузки содержимого НМД.

Рекомендуем следующую последовательность действий:

  • убедитесь в том, что ваш диск подключен без использования контроллеров типов IDE , ESDI или SCSI , так как в этом случае должно всегда использоваться значение фактора чередования , равное 1. Использование других значений для фактора чередования в этом случае возможно, однако это не приведет к увеличению производительности дисковой системы и вы только зря потратите время;
  • выгрузите оптимизируемый диск на магнитную ленту (стример), на дискеты или скопируйте его содержимое на другой физический диск (если в компьютере установлено два физических диска, то есть два НМД);
  • запустите программу низкоуровневого форматирования. Задайте значение фактора чередования , равное 1, и выполните низкоуровневое форматирование диска.
  • Запустите программу fdisk.exe , создайте на диске небольшой раздел (порядка 3 — 5 Мбайт) и отформатируйте его программой format.com .
  • Для проверки быстродействия НМД измерьте время, затраченное на форматирование диска с данным значением фактора чередования .
  • Вернитесь снова к этапу низкоуровневого форматирования, задав значение фактора чередования , равное 2. Выполните действия по созданию раздела и его форматирования с замером времени, затраченного на форматирование.
  • Проверьте все значения фактора чередования от 1 до 17 (17 — количество секторов на дорожке НМД), записывая время форматирования при каждом значении фактора чередования в таблицу:
Номер функции Название Входные данные Выходные данные Описание
Функции ввода/вывода данных
01H Ввод с клавиатуры AH = 01H AL = символ, полученный из стандартного ввода Считывает (ожидает) символ со стандартного входного устройства. Отображает этот символ на стандартное выходное устройство (эхо). При распознавании Ctrl-Break выполняется INT 23H. Замечание: Ввод расширенных клавиш ASCII (F1-F12, pgup, курсор и т.п.) требует двух обращений к этой функции. Первый вызов возвращает AL=0. Второй вызов возвращает в AL расширенный код ASCII.
02H Вывод на дисплей AH = 02H DL = символ, выводимый на стандартный вывод Посылает символ из DL на стандартный вывод. Обрабатывает символ Backspace (ASCII 8), перемещая курсор влево на одну позицию и оставляя его в новой позиции. При обнаружении Ctrl-Break выполняется INT 23H.
03H Вспомогательный ввод AH = 03H AL = символ, полученный со стандартного вспомогательного устр-ва Считывает (ожидает) символ со стандартного вспомогательного устройства, COM1 или AUX и возвращает этот символ в AL. Замечание: Ввод не буферизуется и должен опрашиваться (не управляется прерываниями). При запуске DOS порт AUX (COM1) инициализируется так: 2400 бод, без проверки на четность, 1 стоп-бит, 8-битовые слова. Команда DOS MODE используется для установки иных характеристик.
04H Вспомогательный вывод AH = 04H DL = символ, записываемый на стандартное вспомогательное устр-во Посылает символ в DL на стандартное вспомогательное устройство, COM1 или AUX.
05H Вывод на принтер AH = 05H DL = символ, записываемый на стандартный принтер Посылает символ в DL на стандартное устройство принтера, обычно LPT1. Замечание: Команда DOS «MODE» может перенаправить этот вывод в последовательный порт.
06H Консольн. ввод-вывод AH = 06H DL = символ (от 0 до 0feh), посылаемый на стандартный вывод DL = 0ffh запрос ввода со стандартного ввода ZF = Сброшен (NZ), если символ готов при запросе ввода При DL = 0ffh выполняет ввод с консоли «без ожидания», возвращая взведенный флаг нуля (ZF), если на консоли нет готового символа. Если символ готов, сбрасывает флаг ZF (NZ) и возвращает считанный символ в AL. Если DL не равен 0ffh, то DL направляется на стандартный вывод. Замечание: Не проверяет Ctrl-Break. Вызывайте дважды для расширенного ASCII.
07H Нефильтрующий консольный ввод без эха AH = 07H AL = символ, полученный через стандартный ввод Считывает (ожидает) символ со стандартного входного устройства и возвращает этот символ в AL. Не фильтрует: Не проверяет на Ctrl-Break, backspace и т.п. Замечания Вызывайте дважды для ввода расширенного символа ASCII. Используйте функцию 0bh для проверки статуса (если не хотите ожидать нажатия клавиши).
08H Консольный ввод без эха AH = 08H AL = символ, полученный через стандартный ввод Считывает (ожидает) символ со стандартного входного устройства и возвращает этот символ в AL. При обнаружении Ctrl-Break выполняется прерывание INT 23H. Замечание: Вызывайте дважды для ввода расширенного символа ASCII.
09H Выдать строку на дисплей AH = 09H DS:DX = адрес строки, заканчивающейся символом ‘$’ (ASCII 24H) Строка, исключая завершающий ее символ ‘$’, посылается на стандартный вывод. Символы Backspace обрабатываются как в функции 02H Display Char. Обычно, чтобы перейти на новую строку, включают в текст пару CR/LF (ASCII 0dh и ASCII 0ah). Строки, содержащие ‘$’, можно выдать через 40H Write Handle (BX=0).
0ah Ввод строки в буфер AH = 0ah DS:DX = адрес входного буфера (смотри ниже) Буфер содержит ввод, заканчивающийся символом CR (ASCII 0dh) При входе буфер по адресу DS:DX должен быть оформлен так:
Max * * * *

Где max – максимальная допустимая длина ввода (от 1 до 254)

При выходе буфер заполнен следующим образом:

Max Len T E X T 0dh

Где len– действительная длина данных без завершающего CR (здесь — 04H). Символы считываются со стандартного ввода вплоть до CR (ASCII 0dh) или до достижения длины MAX-1. Если достигнут MAX-1, включается консольный звонок для каждого очередного символа, пока не будет введен возврат каретки CR (нажатие Enter).

Второй байт буфера заполняется действительной длиной введенной строки, не считая завершающего CR. Последний символ в буфере — всегда CR (который не засчитан в байте длины). Символы в буфере (включая LEN) в момент вызова используются как «шаблон». В процессе ввода действительны обычные клавиши редактирования: Esc выдает «\» и начинает с начала, F3 выдает буфер до конца шаблона, F5 выдает «@» и сохраняет текущую строку как шаблон, и т.д. Большинство расширенных кодов ASCII игнорируются. При распознавании Ctrl-Break выполняется прерывание INT 23H (буфер остается неизменным).

0bh Проверить статус ввода AH = 0bh AL = 0ffh, если символ доступен со стандартного ввода Проверяет состояние стандартного ввода. При распознавании Ctrl-Break выполняется INT 23H. Замечание: используйте перед функциями 01H 07H и 08H, чтобы избежать ожидания нажатия клавиши. Эта функция дает простой неразрушающий способ проверки Ctrl-Break в процессе длинных вычислений или другой обработки, обычно не требующей ввода. Это позволяет вам снимать счет по нажатию Ctrl-Break.
0ch Ввод с очисткой AH = 0ch AL = номер функции ввода DOS (01H, 06H, 07H, 08H или 0ah) Очищает буфер опережающего ввода стандартного ввода, а затем вызывает функцию ввода, указанную в AL. Это заставляет систему ожидать ввод очередного символа. Следующие значения допустимы в AL: 01H ввод с клавиатуры 06H ввод с консоли 07H Нефильтрующий без эха 08H ввод без эха 0ah буферизованный ввод
Операции с файлами
3ch Создать файл через описатель (дескриптор) AH = 3ch DS:DX = адрес строки ASCIIZ с именем файла CX = атрибут файла AX = код ошибки если CF установлен и описатель файла если ошибки нет DS:DX указывает на строку ASCIIZ в формате: «d:\путь\имяфайла»,0. Если диск и/или путь опущены, они принимаются по умолчанию. Файл создается в указанном (или умалчиваемом) оглавлении Файл открывается в режиме доступа чтение/запись Вы должны сохранить описатель (дескриптор, handle) для последующих операций. Если файл уже существует: При открытии файл усекается до нулевой длины Если атрибут файла — только чтение, открытие отвергается (атрибут можно изменить функцией 43H изменить атрибут) CONFIG.SYS специфицирует число доступных описателей в системе Используйте функцию 5bh создать Новый файл, если вы не хотите перекрывать (усекать) существующий файл.
3dh Открыть описатель файла AH = 3dh DS:DX = адрес строки ASCIIZ с именем файла AL = режим открытия AX = код ошибки если CF установлен и описатель файла если нет ошибки. DS:DX указывает на строку ASCIIZ в формате: «d:\путь\имяфайла»,0. Если диск и/или путь опущены, они принимаются по умолчанию. Файл должен существовать. См. Функцию 3ch (создать файл). Файл открывается в выбранном режиме доступа / режиме открытия для совместимости с DOS 2.x и избежания сетевых режимов, задавайте: AL = 0 чтобы открыть для чтения AL = 1 чтобы открыть для записи AL = 2 чтобы открыть для чтения и записи Указатель чтения/записи устанавливается в 0. См. 42H (LSEEK) Вы должны сохранить описатель (handle) для последующих операций Разделение файлов должно быть активизировано (команда DOS SHARE), если запрашивается открытие в одном из режимов разделения. CONFIG.SYS специфицирует число доступных описателей файлов.
3eh Закрыть описатель файла AH = 3eh BX = описатель файла AX = код ошибки если CF установлен BX содержит описатель файла (handle), возвращенный при открытии. Файл, представленный этим описателем, закрывается, его буфера сбрасываются, и оглавление обновляется корректными размером, временем и датой. Из-за нехватки описателей файлов (максимум 20, по умолчанию 8), вам может понадобиться закрыть часть умалчиваемых описателей, как, например, описатель 3 (стандартный AUX).
3fh Читать файл через описатель AH = 3fh BX = описатель файла DS:DX = адрес буфера для чтения данных CX = число считываемых байт AX = код ошибки если CF установлен или число действительно прочитанных байт CX байт данных считываются из файла или устройства с описателем, указанным в BX. Данные читаются с текущей позиции указателя чтения/записи файла и помещаются в буфер вызывающей программы, адресуемый через DS:DX. Используйте функцию 42H LSEEK, чтобы установить указатель файла, если необходимо (OPEN сбрасывает указатель в 0). Модифицирует указатель чтения/записи файла, подготавливая его к последующим операциям чтения или записи. Вы должны всегда сравнивать возвращаемое значение AX (число прочитанных байт) с CX (запрошенное число байт): Если AX = CX, (и CF сброшен) — чтение было корректным без ошибок Если AX = 0, достигнут конец файла (EOF) Если AX При чтении с устройства — входная строка имеет длину AX байт При чтении из файла — в процессе чтения достигнут EOF Замечания: Эта функция превосходит сложные и неудобные FCB-функции. Она эффективно сочетает произвольный и последовательный доступ, позволяя пользователю выполнять свое собственное блокирование. Удобно использовать эту функцию для чтения стандартных описателей, таких как описатели стандартного в/в, взамен многочисленных буферизующих и посимвольных FCB-функций ввода. Когда вы читаете с устройства, AX возвращает длину считанной строки с учетом завершающего возврата каретки CR (ASCII 0dh).
40H Писать в файл через описатель AH = 40H BX = описатель файла DS:DX = адрес буфера, содержащего записываемые данные CX = число записываемых байт AX = код ошибки если CF установлен AL = число реально считанных байт (лучший тест для ошибок) CX байт данных записывается в файл или на устройство с описателем, заданным в BX. Данные берутся из буфера, адресуемого через DS:DX. Данные записываются, начиная с текущей позиции указателя чтения/записи файла. Используйте функцию 42H LSEEK, чтобы установить указатель файла, если необходимо (OPEN сбрасывает указатель в 0). Обновляет указатель чтения/записи файла, чтобы подготовиться к последующим операциям последовательного чтения или записи. Вы должны всегда сравнивать возвращаемое значение AX (число записанных байт) с CX (запрошенное число байт для записи). Если AX = CX, запись была успешной Если AX Замечание: Эта функция превосходит сложные и неудобные FCB-функции. Она эффективно сочетает произвольный и последовательный доступ, позволяя пользователю осуществлять собственное блокирование. Удобно использовать эту функцию для вывода на умалчиваемые устройства, такие как стандартный вывод, взамен использования различных функций вывода текста.
42H Установить указатель файла – LSEEK AH = 42H BX = описатель файла CX:DX = на сколько передвинуть указатель: (CX 65536) + DX AL = 0 переместить к началу файла + CX:DX AL = 1 переместить к текущей позиции + CX:DX AL = 2 переместить к концу файла + CX:DX AX = код ошибки если CF установлен DX:AX = новая позиция указателя файла (если нет ошибки) Перемещает логический указатель чтения/записи к нужному адресу. Очередная операция чтения или записи начнется с этого адреса. Замечание: Вызов с AL=2, CX=0, DX=0 возвращает длину файла в DX:AX. DX здесь старшее значащее слово: действительная длина (DX 65536) + AX.
Операции с файловой системой
0dh Сброс диска AH = 0dh Сбрасывает (пишет на диск) все файловые буфера. Если размер файла изменился, такой файл должен быть предварительно закрыт (при помощи функций 10H или 3eh).
0eh Установить текущий диск DOS AH = 0eh DL = номер диска (0=A, 1=B и т.д.), который становится текущим AL = общее число дисководов в системе Диск, указанный в DL, становится текущим (умалчиваемым) в DOS. Проверка: используйте функцию 19H «дать текущий» для проверки. В регистре AL возвращается число дисководов всех типов, включая твердые диски и «логические» диски (как B: в 1-floppy системе).
19H Дать текущий диск DOS AH = 19H AL = номер текущего умалчиваемого диска (0=A, 1=B, и т.д.) Возвращает номер дисковода текущего умалчиваемого диска DOS.
1bh Дать информацию FAT (текущий диск) AH = 1bh DS:BX = адрес байта FAT > Возвращает информацию о размере и типе умалчиваемого диска. Размер диска в байтах = (DX*AL*CX). Ищите свободную память функциями 36h Disk Free или 32h Disk Info. Версии: DOS 1.x держит FAT в памяти и возвращает DS:BX => FAT. DOS 2.0+ может держать в памяти лишь порцию всей FAT. Предупреждение: Эта функция изменяет содержимое регистра DS.
1ch Дать информацию FAT (любой диск) AH = 1ch DL = номер диска (0=текущий, 1=A, и т.д.) DS:BX = адрес байта FAT > Аналогична функции 1bh Get FAT Cur, с той разницей, что регистр DL указывает диск, для которого вы хотите получить информацию. Версии: Недоступна для DOS 1.x.
32H Дать информацию DOS о диске AH = 32H DL = номер диска (0=текущий, 1=A, и т.д.) AL = 0 если DL задавал корректный диск FF = 0ffh если диск задан неверно DS:BX = адрес блока информации диска для запрошенного устройства Возвращает блок информации, представляющей интерес для приложений и утилит, выполняющих доступ к диску, поддерживаемый драйверами устройств, на уровне секторов. Некоторые дисководы (особенно незагружаемые) функционируют исключительно через свои драйверы устройств. Такие диски могут содержать неверную информацию в корневой записи и таблице разделов, что делает очень трудным определение, например, размера корневого оглавления, числа таблиц FAT, и т.п. Блок информации диска содержит все данные такого рода в хорошо форматированной структуре. Это может быть единственным способом определить адрес драйвера устройства. Предупреждение: Изменяет сегментный регистр DS. Эта недокументированная функция может измениться в будущих версиях.
36H Дать свободную память диска AH = 36H DL = номер диска (0=текущий, 1=A, и т.д.) AX = 0ffffh, если AL содержал неверный номер диска или число секторов на кластер, если нет ошибок. BX = доступных кластеров. CX = байт на сектор. DX = всего кластеров на диске. Возвращает данные для подсчета общей и доступной дисковой памяти. Если в AX возвращено 0ffffh, значит, вы задали неверный диск. Иначе, свободная память в байтах = (AX*BX*CX) всего памяти в байтах = (AX*CX*DX)
39H Создать новое оглавление — MKDIR AH = 39H DS:DX = адрес строки ASCIIZ с именем оглавления AX = код ошибки если CF установлен DS:DX указывает на строку ASCIIZ в формате: «d:\путь\имяоглавл»,0 если диск и/или корневой путь опущены, то принимаются по умолчанию. Подоглавление создается и связывается с существующим деревом. Если флаг CF установлен при возврате, то AX содержит код ошибки, и оглавление не создается.
3ah Удалить оглавление – RMDIR AH = 3ah DS:DX = адрес строки ASCIIZ с именем оглавления AX = код ошибки если CF установлен DS:DX указывает на строку ASCIIZ в формате: «d:\путь\имяоглавл»,0. Если диск и/или корневой путь опущены, то принимаются по умолчанию. Подоглавление удаляется из структуры оглавления. Если флаг CF установлен при возврате, то AX содержит код ошибки, и оглавление не удаляется. Замечание: Оглавление не должно содержать файлов и подоглавлений и не должно быть связано возможными ограничениями DOS (например, не должно быть задействовано в активных командах JOIN или SUBST).
3bh Установить умалчиваемое оглавление DOS – CHDIR AH = 3bh DS:DX = адрес строки ASCIIZ с именем оглавления AX = код ошибки если CF установлен DS:DX указывает на строку ASCIIZ в формате: «d:\путь\имяоглавл»,0. Если диск и/или корневой путь опущены, то принимаются по умолчанию. Указанное подоглавление для указанного диска становится текущим (умалчиваемым) оглавлением DOS для этого (или текущего) диска. Если флаг CF установлен при возврате, то AX содержит код ошибки, и текущее оглавление для выбранного диска не изменяется.
41H Удалить файл AH = 41H DS:DX = адрес строки ASCIIZ с именем файла AX = код ошибки если CF установлен DS:DX указывает на строку ASCIIZ в формате: «d:\путь\имяфайла»,0. Если диск и/или путь опущены, они принимаются по умолчанию. Имя файла не может содержать обобщенные символы (‘?’ и ‘*’). Файл удаляется из заданного оглавления заданного диска. Если файл имеет атрибут только чтение, то перед удалением необходимо изменить этот атрибут через функцию 43H CHMOD.
43H Установить/опросить атрибут файла – CHMOD AH = 43H DS:DX = адрес строки ASCIIZ с именем файла AL — код подфункции: = 0 — извлечь текущий атрибут файла AL = 1 — установить атрибут файла CX = новый атрибут файла (для подфункции 01H) AX = код ошибки если CF установлен CX = текущий атрибут файла (для подфункции 00H) DS:DX указывает на строку ASCIIZ в формате: «d:\путь\имяфайла»,0. Если диск и/или путь опущены, они принимаются по умолчанию. Атрибут файла извлекается или устанавливается, согласно коду в AL. Замечание: Чтобы спрятать оглавление, используйте CX=02H (а не 12H, как вы, возможно, ожидали, см. описание файловой системы FAT, аттрибуты файлов).
45H Дублировать описатель файла – DUP AH = 45H BX = существующий описатель файла AX = новый описатель файла, дублирующий оригинал или код ошибки если CF установлен. Создает дополнительный описатель файла, ссылающийся на тот же поток в/в, что и существующий описатель. Любое продвижение указателя чтения/записи для одного описателя действует на его дубликат — включая любые операции чтения, записи или перемещения указателя посредством функции 42H LSEEK. Новый описатель наследует ограничения режима открытия оригинала. Эта функция используется с одной главной целью: вы можете закрыть описатель, заставляя DOS записать файловые буфера. Такой способ DUP/CLOSE — быстрее, чем закрытие и повторное открытие файла. Оставить комментарий – для сохранения файла без его закрытия – CTRL+S
46H Переназначить описатель – FORCDUP AH = 46H BX = целевой описатель файла (должен уже существовать) CX = исходный описатель файла (должен уже существовать) AX = код ошибки если CF установлен Заставляет описатель файла (handle) ссылаться на другой файл или устройство. Описатель в CX (источник) закрывается, если он открыт, а затем становится дубликатом описателя в BX (назначения). Иными словами, описатели в CX и BX будут ссылаться на один и тот же физический файл или устройство. Используется для переназначения стандартного в/в. Пример: Откроем файл «C:\STDOUT.TXT» через функцию 3dh Open File и получим описатель (например, 05). Установим BX=05, CX=01 и вызовем эту функцию. (замечание: описатель 01 — это предопределенный описатель «стандартного выходного устройства»). Теперь можно вызвать функцию 3eh Close File и закрыть handle 05. Можно обращаться к файлу STDOUT.TXT через описатель 01. Стало быть, дисковый файл «C:\STDOUT.TXT» будет отныне получать весь вывод, создаваемый всеми процессами (текущим и порожденными) через любую функцию символьного в/в DOS, так же как и любой вывод в описатель файла 01 через функцию DOS 40H. Когда вы выходите в COMMAND.COM, предопределенные описатели устанавливаются на обычные устройства (например, описатель 01 устанавливается на «CON»).
47H Дать умалчиваемое оглавление DOS AH = 47H DS:SI = адрес локального буфера для результирующего пути (64 байта) DL = номер диска (0=текущий, 1=A, и т.д.) AX = код ошибка если CF установлен В пользовательский буфер по адресу DS:SI помещается в форме ASCIIZ путь текущего умалчиваемого оглавления для диска, указанного в DL. Путь возвращается в формате: «путь\оглавление»,0. Не подставляется впереди буква диска, а сзади не подставляется символ «\». Например, если текущим является корневое оглавление, эта функция вернет вам пустую строку (DS:[SI] = 0).
4eh Найти 1-й совпадающий файл AH = 4fh DS:DX = адрес строки ASCIIZ с именем файла (допускаются ? И *) CX = атрибут файла для сравнения AX = код ошибки если CF установлен DTA = заполнена данными (если не было ошибки) DS:DX указывает на строку ASCIIZ в форме: «d:\путь\имяфайла»,0. Если диск и/или путь опущены, они подразумеваются по умолчанию. Обобщенные символы и ? Допускаются в имени файла и расширении. DOS находит имя первого файла в оглавлении, которое совпадает с заданным именем и атрибутом, и помещает найденное имя и другую информацию в DTA, как показано ниже: Замечания: Атрибут файла обычно используется во «включающем» поиске. Если вас интересуют как файлы, так и оглавления, установите бит атрибута 4 (т.е. Attr | 10H). См. Атрибут файла для полной информации. Типичная последовательность, используемая для поиска всех подходящих файлов: Используйте вызов 1ah, чтобы установить DTA на локальный буфер (или используйте умалчиваемую DTA в PSP по смещению 80H) Уст. CX=атрибут, DS:DX => ASCIIZ диск, путь, обобщенное имя Вызовите функцию 4eh (Найти 1-й) Если флаг CF указывает ошибку, вы закончили (нет совпадений) Уст. DS:DX => DTA (или на данные, которые вы скопировали из DTA после вызова функции 4eh) Повторять Обработать имя файла и данные по адресу DS:DX Вызвать функцию 4fh (Найти следующий) Пока CF=1 не покажет, что совпадений больше нет
4fh Найти следующий совпадающий файл AH = 4fh DS:DX = адрес данных, возвращенных предыдущей 4eh Найти 1-й файл AX = код ошибки если CF установлен DTA = заполнена данными DS:DX указывает на 2bh-байтовый буфер с информацией, возвращенной функцией 4eh Найти 1-й (либо DTA, либо буфер, скопированный из DTA). Используйте эту функцию после вызова 4eh. Следующее имя файла, совпадающее по обобщенному имени и атрибуту файла, копируется в буфер по адресу DS:DX вместе с другой информацией (см. Функцию 4eh о структуре файловой информации в буфере, заполняемом DOS).
56H Переименовать/переместить файл AH = 56H DS:DX = адрес старого ASCIIZ имени (путь/имя существующего файла) ES:DI = адрес нового ASCIIZ имени (новые путь/имя) AX = код ошибки если CF установлен DS:DX и ES:DI указывают на строки ASCIIZ: «d:\путь\имяфайла»,0. Старое имя DS:DX должно отвечать существующему файлу и не может содержать обобщенных символов. Диск и путь необязательны (если опущены, они принимаются по умолчанию). Новое имя ES:DI должно описывать НЕ существующий файл. Если указан диск, он должен быть тем же, что и в старом имени. Если диск или путь опущены, принимаются текущие умолчания. Если старое и новое имя содержат разные пути (явно или принятые по умолчанию), то элемент оглавления для файла ПЕРЕМЕЩАЕТСЯ в оглавление, указанное в новом имени. Замечание: Если ID диска в старом имени отличается от текущего диска DOS, не забывайте указывать такой же ID диска в новом имени.
57H Установить/опросить дату/время файла AH = 57H AL = 0 чтобы получить дату/время файла = 1 чтобы установить дату/время файла BX = описатель файла (handle) CX = (если AL=1) новая отметка времени в формате время/дата файла DX = (если AL=1) новая отметка даты в формате время/дата файла AX = код ошибки если CF установлен CX = отметка времени файла в формате время/дата файла DX = отметка даты файла в формате время/дата файла BX должен содержать описатель открытого файла (см. 3ch или 3dh ). Укажите подфункцию, 0 или 1, в регистре AL. DX и CX задаются в формате памяти; например, младшие 8 бит даты находятся в DH.
5ah Создать уникальный временный файл AH = 5ah DOS 3.0+ DS:DX = адрес строки ASCIIZ с диском и путем (заканчивается \) CX = атрибут файла AX = код ошибки если CF установлен и описатель файла (если нет ошибки) DS:DX = (не изменяется) становится полным ASCIIZ-именем нового файла Открывает (создает) файл с уникальным именем в оглавлении, указанном строкой ASCIIZ, на которую указывает DS:DX. COMMAND.COM использует эту функцию, когда создает временные «канальные» файлы, используемые при переназначении ввода-вывода. Описание пути должно быть готово к присоединению в его конец имени файла. Вы должны обеспечить минимум 12 байт в конце строки. Сама строка должна быть заполнена в одной из форм: «d:\путь\»,0 (указаны диск и путь) ИЛИ «d:»,0 (умалчиваемое оглавление диска) ИЛИ «d:\»,0 (корневое оглавление диска) ИЛИ «»,0 (умалчиваемые диск и оглавление) После возврата строка DS:DX будет дополнена именем файла. Замечания: DOS создает имя файла из шестнадцатеричных цифр, получаемых из текущих даты и времени. Если имя файла уже существует, DOS продолжает создавать новые имена, пока не получит уникальное имя. Создаваемые таким способом файлы — по существу НЕ ВРЕМЕННЫЕ, и их следует удалять посредством функции DOS 41H , когда они не нужны. Версии: Доступна, начиная с DOS 3.0
5bh Создать новый файл AH = 5bh DOS 3.0+ DS:DX = адрес строки ASCIIZ с именем файла CX = атрибут файла AX = код ошибки если CF установлен и описатель файла если ошибок нет DS:DX указывает на строку ASCIIZ в форме: «d:\путь\имяфайла»,0. Если диск и/или путь опущены, они принимаются по умолчанию. Этот вызов идентичен функции DOS 3ch CREATE, с тем исключением, что он вернет ошибку, если файл с заданным именем уже существует. Файл открывается для чтения/записи в совместимом режиме доступа
5ch Блокировать/разблокировать доступ к файлу AH = 5ch DOS 3.0+ AL = подфункция: 0 = заблокировать область файла = 1 = разблокировать ранее захваченную область BX = описатель файла (handle) CX:DX = смещение ((CX 65536) + DX) от начала файла SI:DI = длина блокируемой области ((SI 65536) + DI) байт AX = код ошибки если CF установлен Блокирует или освобождает доступ к участку файла, идентифицируемого описателем в BX. Область файла, начинающаяся по логическому смещению CX:DX и имеющая длину SI:DI, блокируется (захватывается) или разблокируется (освобождается). Смещение и длина обязательны. Разделение файлов ДОЛЖНО быть активизировано (командой SHARE), иначе функция вернет код ошибки «неверный номер функции.» Блокировка действует на операции чтения, записи и открытия со стороны порожденного или конкурирующего процесса. При попытке такого доступа (и режиме доступа , определенном при OPEN как «режим разделения», который запрещает такой доступ), DOS отвергает операцию через вызов INT 24H (обработчик критических ошибок) после трех попыток. DOS при этом выдает сообщение «Abort, Retry, Ignore». Рекомендуемое действие — НЕ пытаться читать файл и ожидать кода ошибки. Вместо этого попытайтесь заблокировать область и действуйте в соответствии с кодом возврата. Это позволяет избежать довольно неустойчивого состояния DOS, связанного с выполнением INT 24H. Блокировка за концом файла не является ошибкой. Вы можете захватить весь файл, задав CX=0, DX=0, SI=0ffffh, DI=0ffffh и AL=0. При освобождении, смещение и длина участка должны точно совпадать со смещением и длиной захваченного участка. Замечания: Дублирование описателя через 45H или 46H дублирует и блокировки. Даже если во время OPEN выбран режим доступа Inherit, механизм блокировки не даст никаких привилегий доступа порожденным процессам, созданным функцией 4bh EXEC (они трактуются как отдельные). Важно, чтобы все блокировки файла были сняты до завершения программы. Если вы используете блокировку, особо отслеживайте вызовы INT 23H (выход Ctrl-Break) и INT 24H (выход по критической ошибке), чтобы снять блокировки до действительного завершения программы. Рекомендуется освобождать блокировки как можно скорее. Всегда блокируйте, обрабатывайте файл и освобождайте блокировку одной операцией. Версии: Доступна, начиная с DOS 3.0
Операции с системой прерываний
25H Установить вектор прерывания AH = 25H AL = номер прерывания DS:DX = вектор прерывания: адрес программы обработки прерывания Устанавливает значение элемента таблицы векторов прерываний для прерывания с номером AL равным DS:DX. Это равносильно записи 4-байтового адреса в 0000:(AL*4), но, в отличие от прямой записи, DOS здесь знает, что вы делаете, и гарантирует, что в момент записи прерывания будут заблокированы. Предупреждение: Не забудьте восстановить DS (если необходимо) после этого вызова.
26H Построить PSP AH = 26H DX = адрес сегмента (параграфа) для нового PSP CS = сегмент PSP, используемого как шаблон для нового PSP Устанавливает PSP для порождаемого процесса по адресу DX:0000. Текущий PSP (100H байт, начиная с CS:0), копируется в DX:0 Поле memtop соответственно корректируется Векторы Terminate, Ctrl-Break и Critical Error копируются в PSP из векторов прерываний INT 22H, INT 23H и INT 24H после этого вы можете загрузить программу с диска и передать ей управление посредством FAR JMP. Замечание: Если вы перехватываете INT 21H, позаботьтесь о помещении в стек корректного CS:IP. Еще лучше использовать функцию 4ch (EXEC).
2ah Дать системную дату AH = 2ah AL = день недели (0=Вск, 1=Пнд. 6=Суб) DOS 3.0+ CX = год (1980 до 2099) DH = месяц (1 до 12) DL = день (1 до 31) Возвращает текущую дату, как она известна системе. Версии: DOS 2.x не гарантирует возврата в AL значения дня; все версии 1.0+ возвращают правильный день недели. Версии до 2.1 имеют проблемы с переходом даты.
2bh Установить системную дату AH = 2bh CX = год (1980 до 2099) DH = месяц (1 до 12) DL = день (1 до 31) AL = 0 если дата корректна Устанавливает системную дату DOS.
2ch Дать время DOS AH = 2ch CH = часы (0 до 23) CL = минуты (0 до 59) DH = секунды (0 до 59) DL = сотые доли секунды (0 до 99) Возвращает текущее время, как оно известно системе. Замечание: Поскольку системные часы имеют частоту 18.2 тиков в секунду (интервал 55мс), DL имеет точность 0.04 сек.
2dh Установить время DOS AH = 2dh CH = часы (0 до 23) CL = минуты (0 до 59) DH = секунды (0 до 59) DL = сотые доли секунды (0 до 99) AL = 0 если время корректно Устанавливает системное время DOS.
2eh Установить/сбросить переключатель верификации AH = 2eh AL = 0 отключить верификацию = 1 включить верификацию Устанавливает, должна ли DOS верифицировать (считывать обратно) каждый сектор, записываемый на диск. Это замедляет операции записи на диск, но гарантирует максимальную надежность записи. Функция 56H Get Verify возвращает текущий статус верификации DOS.
2fh Дать адрес текущей DTA AH = 2fh ES:BX = адрес начала текущей DTA Возвращает адрес начала области ввода-вывода (DTA). Поскольку DTA глобальна для всех процессов, в рекурсивной процедуре (например, при проходе по дереву оглавления) может потребоваться сохранить адрес DTA, а впоследствии восстановить его посредством функции 1ah «Уст. DTA». Замечание: Эта функция изменяет сегментный регистр ES.
30H Дать номер версии DOS AH = 30H AL = старший номер версии AH = младший номер версии BX,CX = 0000H DOS 3.0+ Возвращает в AX значение текущего номера версии DOS. Например, для DOS 3.2, в AL возвращается 3, в AH — 2. Замечание: Если в AL возвращается 0, можно предполагать, что работает DOS более ранней версии, чем DOS 2.0. Версии: DOS 2.x не гарантирует очистки регистров CX и BX.
31H Завершиться и остаться резидентным – KEEP AH = 31H AL = код выхода DX = объем памяти, оставляемой резидентной, в параграфах Выходит в родительский процесс, сохраняя код выхода в AL. Код выхода можно получить через функцию 4dh Wait. DOS устанавливает начальное распределение памяти, как специфицировано в DX, и возвращает управление родительскому процессу, оставляя указанную память резидентной (число байт = DX 16). Эта функция перекрывает функцию INT 27H, которая не возвращает код выхода и неспособна установить резидентную программу, большую 64K.
33H Установить/опросить статус Ctrl-Break AH = 33H AL = 0 чтобы опросить текущий статус контроля Ctrl-Break AL = 1 чтобы установить статус контроля Ctrl-Break DL = требуемый статус (0=OFF, 1=ON) (только при AL=1) DL = текущий статус (0=OFF, 1=ON) Если AL=0, в DL возвращается текущий статус контроля Ctrl-Break. Если AL=1, в DL возвращается новый текущий статус. Когда статус ON, DOS проверяет на Ctrl-Break с консоли для большинства функций (исключая 06H и 07H). При обнаружении, выполняется INT 23H (если оно не перехватывается, то это снимает процесс). Когда статус OFF, DOS проверяет на Ctrl-Break лишь при операциях стандартного в/в, стандартной печати и стандартных операциях AUX.
35H Дать вектор прерывания AH = 35H AL = номер прерывания (00H до 0ffh) ES:BX = адрес обработчика прерывания Возвращает значение вектора прерывания для INT (AL); то есть, загружает в BX 0000:[AL*4], а в ES — 0000:[(AL*4)+2]. Предупреждение: Эта функция изменяет сегментный регистр ES.
44H Управление устройством в/в – IOCTL AH = 43H AL = код подфункции: AL = 0ch — (зарезервировано) Прочие = (в зависимости от подфункции) AX = код ошибки если CF установлен или иное значение (в зависимости от подфункции) IOCTL предоставляет метод взаимодействия с устройствами и получения информации о файлах. Входные параметры и выходные значения варьируются в зависимости от кода подфункции в регистре AL. Версии: Подфункции 0-7 . DOS 2.1+ Подфункции 8,0bh . DOS 3.0+ Подфункции 9,0ah . DOS 3.1+ Подфункции 0dh,0eh,0fh . DOS 3.2+ ———————————— Подфункция 00H: Запросить флаги информации об устройстве Вход: BX= описатель файла (устройство или дисковый файл) Выход: DX= IOCTL Инф об устр ———————————— Подфункция 01H: установить флаги информации об устройстве Вход: BX = описатель файла (устройство или дисковый файл) DX = IOCTL Инф об устр (DH должен быть нулевым) Выход: DX= IOCTL Инф об устр ———————————— Подфункция 02-03: читать (AL=02H) или писать (AL=03H) строку IOCTL на СИМВОЛЬНОЕ устр Вход: DS:DX = адрес буфера (чтение) или данных (запись) CX= число передаваемых байт BX= описатель файла (только устройство — не файл!) Выход: AX= код ошибки если CF установлен ———————————— Подфункция 04-05: читать (AL=04H) или писать (AL=05H) строку IOCTL на БЛОЧНОЕ устр Вход: DS:DX = адрес буфера (чтение) или данных (запись) CX = число передаваемых байт BL = : Вход: CL = код действия 40H = установить параметры устройства 60H = дать параметры устройства 41H = писать дорожку логического устройства 61H = читать дорожку логического устройства 42H = форматировать дорожку с верификацией 62H = Верифицировать дорожку логического устройства DS:DX=> адрес пакета данных IOCTL Выход: AX= код ошибки если CF установлен DS:DX=> пакет данных может содержать информацию возврата. ———————————— Подфункция 0eh: Выяснить, назначил ли драйвер устройства несколько логических устройств одному физическому устройству. [DOS 3.2+] Вход: BL= . Эта функция позволяет вам сообщать DOS, что диск с указанным >
48H Распределить память (дать размер памяти) AH = 48H BX = запрошенное количество памяти в 16-байтовых параграфах AX = код ошибки если CF установлен BX = размер доступной памяти в параграфах (если памяти не хватает) AX = сегментный адрес распределенного блока (если нет ошибок) Распределяет блок памяти длиной BX параграфов, возвращая сегментный адрес этого блока в AX (блок начинается с AX:0000). Если распределение неудачно, устанавливается CF, в AX возвращается код ошибки, а BX содержит максимальный размер доступной для распределения памяти (в параграфах). Чтобы определить наибольший доступный кусок, общепринято устанавливать BX=0ffffh перед вызовом. Распределение завершится с ошибкой, возвратив размер максимального блока памяти в BX. Замечание: Когда процесс получает управление через функцию 4bh EXEC, вся доступная память уже распределена ему.
49H Освободить распределенный блок памяти AH = 49H ES = сегментный адрес (параграф) освобождаемого блока памяти AX = код ошибки если CF установлен Освобождает блок памяти, начинающийся с адреса ES:0000. Этот блок становится доступным для других запросов системы. Вообще говоря, вы должны освобождать лишь те блоки памяти, которые вы получили через функцию 48H распределить память. Родитель отвечает за освобождение памяти порожденных процессов. Тем не менее, ничто не препятствует вам освобождать память чужих процессов.
4ah Сжать или расширить блок памяти AH = 4ah ES = сегмент распределенного блока памяти BX = желаемый размер блока в 16-байтовых параграфах AX = код ошибки если CF установлен BX = наибольший доступный блок (если расширение неудачно) Изменяет размер существующего блока памяти. Когда программа получает управление, функция 4bh EXEC уже распределила блок памяти, начиная с PSP, который содержит всю доступную память. Чтобы освободить память для запуска порождаемых процессов, блок памяти, начинающийся с PSP, необходимо сначала сжать. Замечание: Функция 31H (KEEP) и INT 27H (TSR) сжимают блок по адресу PSP.
4bh Выполнить или загрузить программу – EXEC AH = 4bh DS:DX = адрес строки ASCIIZ с именем файла, содержащего программу ES:BX = адрес EPB (EXEC Parameter Block — блока параметров EXEC) AL = 0 = загрузить и выполнить AL = 3 = загрузить программный оверлей AX = код ошибки если CF установлен Предоставляет средства одной программе (родителю) вызвать другую программу (ребенка), которая по завершению возвратит управление родителю. DS:DX указывает на строку ASCIIZ в форме: «d:\путь\имяфайла»,0. Если диск или путь опущены, они подразумеваются по умолчанию. ES:BX указывает на блок памяти, подготовленный как EPB, формат которого зависит от запрошенной подфункции в AL. AL=0 EXEC: так как родительская программа первоначально получает всю доступную память в свое распоряжение, вы должны освободить часть памяти через функцию 4ah до вызова EXEC (AL=0). Обычная последовательность: 1. Вызовите функцию 4ah с ES=сегменту PSP и BX=минимальному объему памяти, требуемой вашей программе (в параграфах). 2. Подготовьте строку ASCIIZ с именем вызываемого программного файла и установите DS:DX на первый символ этой строки. 3. Подготовьте блок параметров EXEC со всеми необходимыми полями. 4. Сохраните текущие значения SS, SP, DS, ES и DTA в переменных, адресуемых через регистр CS (CS — это единственная точка для ссылок после того, как EXEC вернет управление от ребенка). 5. Выдайте вызов EXEC с AL=0. 6. Восстановите локальные значения SS и SP. 7. Проверьте флаг CF, чтобы узнать, не было ли ошибки при EXEC. 8. Восстановите DS, ES и локальную DTA, если необходимо. 9. Проверьте код выхода через функцию 4dh WAIT (если надо). Все открытые файлы дублируются, так что ребенок может обрабатывать данные как через описатели файлов, так и через стандартный в/в. Режимы доступа описателей дублируются, но любые активные блокировки файлов не будут относиться к ребенку. См. Функцию 5ch. После возврата из ребенка, векторы INT 22H Terminate, INT 23H Ctrl-Break и INT 24H Critical Error восстанавливаются в их предыдущие значения. AL=3 LOAD: Эта подфункция используется для загрузки «оверлея». DS:DX указывает на ASCIIZ имя файла, а ES:BX указывает на «LOAD»-версию блока параметров EXEC. Главное значение этой подфункции в том, что она считывает заголовок EXE и выполняет необходимые перемещения сегментов, как это требуется для программ .EXE. Замечания: Эта функция использует программу-загрузчик из COMMAND.COM, который транзитен в DOS 2.x (и, возможно, уже перекрыт программой). В этом случае возникнет ошибка, если DOS не найдет файл COMMAND.COM. Вы должны обеспечить корректную строку COMSPEC= в окружении перед вызовом этой функции. Вместо разбора собственных FCB (как требуется для EPB), вы можете найти удобным загрузить и выполнить вторичную копию файла COMMAND.COM, используя опцию /C. Например, чтобы выполнить программу FORMAT.COM, установите DS:DX на адрес строки ASCIIZ: «\command.com»,0 и установите EPB+2 на сегмент и смещение следующей строки команд: 0eh,»/c format a:/s/4″,0dh такой вторичный интерпретатор команд использует очень мало памяти (около 4K). Вы можете поискать в окружении DOS строку COMSPEC=, чтобы установить точное местоположение файла COMMAND.COM.
4ch Завершить программу – EXIT AH = 4ch AL = код выхода Возвращает управление от порожденного процесса его родителю, устанавливая код выхода, который можно опросить функцией 4dh WAIT. Управление передается по адресу завершения в PSP завершающейся программы. Векторы Ctrl-Break и Critical Error восстанавливаются к старым адресам, сохраненным в родительском PSP. Замечание: Значение ERRORLEVEL (используемое в пакетных файлах DOS) можно использовать для проверки кода выхода самой последней программы.
4dh Дать код выхода программы – WAIT AH = 4dh AL = код выхода последнего завершившегося процесса AH = 0 — нормальное завершение AH = 1 — завершение через Ctrl-Break AH = 2 — завершение по критической ошибке устройства AH = 3 — завершение через функцию 31H KEEP Возвращает код выхода последнего из завершившихся процессов. Эта функция возвращает правильную информацию только однажды для каждого завершившегося процесса.
54H Дать переключатель верификации DOS AH = 54H AL = 0 если верификация выключена (OFF) AL = 1 если верификация включена (ON) Возвращает текущий статус верификации записи DOS. Если в AL возвращается 1, то DOS считывает обратно каждый сектор, записываемый на диск, чтобы проверить правильность записи. Функция DOS 2eh позволяет установить/изменить режим верификации.
59H Дать расширенную информацию об ошибке AH = 59H DOS 3.0+ BX = 0000H (номер версии: 0000H для DOS 3.0, 3.1 и 3.2) AX = расширенный код ошибки (0, если не было ошибки) BH = класс ошибки BL = предлагаемое действие CH = сфера (где произошла ошибка) Используйте эту функцию, чтобы уточнить, что предпринять после сбоя функции DOS по ошибке (только DOS 3.0+ ). Вызывайте ее: В обработчике критических ошибок INT 24H После любой функции INT 21H , возвратившей Carry-флаг После вызова FCB-функции, возвратившей AL=0ffh Версии: Эта функция отсутствует в версиях до DOS 3.00. В DOS 2.x, когда флаг CF указывает на ошибку, используйте логику вашей программы, чтобы отреагировать на ошибку. В DOS 3.0+, когда функция возвращает CF=1, рекомендуем вам игнорировать код ошибки, возвращенный в AX, вызвать эту функцию и выполнить действие, предложенное в BL.
5eh Разные сетевые функции AH = 5eh DOS 3.1+ AL = подф.: 0=дать имя машины (узла) в сети AL = 2=установить стартовую строку сетевого принтера AL = 3=извлечь стартовую строку сетевого принтера Прочие = (зависят от подфункции) AX = код ошибки если CF установлен Прочие = (зависят от подфункции) Эти функции доступны при установленной IBM PC Network Program. Версии: Доступны, начиная с DOS 3.1 ———————————— Подф. 00H: Извлекает имя машины (узла), как оно известно в сети. Вход: DS:DX=> буфер пользователя для ASCIIZ сетевого имени Выход: DS:DX=> буфер, содержащий сетевое имя CH= 0=имя не определено; иначе=имя определено CL= номер имени NETBIOS (если CH ненулевой) AX= код ошибки если CF установлен Замечание: Сетевое имя — 15-симв. (дополненная пробелами) строка ASCIIZ ———————————— Подф. 02H: Задает настроечную строку, посылаемую на принтер каждый раз, когда эта машина выдает результаты на сетевой принтер. Вход: DS:SI=> буфер, содержащий настроечную строку (до 64 байт) CX= длина настроечной строки BX= индекс в списке назначений, отвечающий принтеру Выход: AX= код ошибки если CF установлен ———————————— Подф. 03H: Извлекает настроечную строку принтера, заданную ранее посредством DOS Fn 5eh подф. 02H. Вход: DS:DI=> 64-байтовый буфер пользователя для результата bx= индекс принтера в списке назначений Выход: ES:DI=> буфер, заполненный настроечной строкой CX= длина настроечной строки AX= код ошибки если CF установлен Замечание: Поскольку индекс в списке назначений может измениться в любой момент, используйте функцию 5fh подф. 02H, чтобы получить индекс непосредственно перед вызовом этой функции.
5fh Переназначение устройств в сети AH = 5fh DOS 3.1+ AL = подф.: 2=получить элемент списка переназначений устройств = 3=переназначить сетевое устройство = 4=отменить переназначение сетевого устройства Прочие = (зависят от подфункции) AX = код ошибки если CF установлен Эти функции доступны при установленной IBM PC Network Program. Версии: Доступны, начиная с DOS 3.1 ———————————— Подф. 02H: Извлекает элемент из списка переназначений сетевых устройств. Вход: DS:DI=> 128-байтовое ASCIIZ локальное имя устр. («LPT1»,0) ES:DI=> 128-байтовый буфер с ASCIIZ сетевым именем BX= индекс в списке назначений Выход: DS:DI=> ASCIIZ локальное имя устройства (напр., «LPT1»,0) ES:DI=> ASCIIZ сетевое имя BL= тип устр: 3=принтер; 04=файл ‘устройство’ BH= статус устр: бит 0=1 -неверное устр.; 0=верное CX= сохраненный параметр (при NETBIOS, всегда 0) AX= код ошибки если CF установлен DX,BP = (изменены) Замечание: обычно эту функцию вызывают с BX=0, затем повторяют вызовы, увеличивая значение BX, пока DOS не вернет ошибку 12H (больше нет файлов). ———————————— Подф. 03H: этот вызов определяет имена оглавлений для сети и перенаправляет доступ на сетевые принтеры. Замеч: доступ к принтеру переназначается на уровне ROM-BIOS INT 17H. Вход: DS:SI = ASCIIZ имя исходного устройства ES:DI = ASCIIZ назначение (сетевой путь с паролем) BL= тип устр: 03=принтер; 04=файл ‘устройство’ CX= параметр для вызывающего (задавайте 0 для NETBIOS) Выход: AX= код ошибки если CF установлен Замеч: если BL=03, то источник задает ASCIIZ-имя принтера (например, «LPT1»,0). Назначение кодируется в форме: [\\computername\],0,[password],0. Если пароль начинается с 00, считается, что пароля нет. Если BL=04, то источник задает ASCIIZ-имя диска (например, «F:»,0), а назначение — ASCIIZ-имя пути. После вызова этой функции, локальные обращения к этому диску переназначаются на выбранные имя компьютера и путь. ———————————— Подф. 04H: Отменить сетевое переназначение для указанного устройства. Вход: DS:SI=> ASCIIZ-имя устройства или ,0), то переназначение этого диска прекращается, и ID диска восстанавливает свое предыдущее значение.
Фактор Время форматирования, сек.
1
2
.
16
17
  • Выберите из полученной таблицы значение фактора чередования , при котором форматирование выполняется за минимальное время. Выполните низкоуровневое форматирование с найденным оптимальным значением фактора чередования .
  • Создайте на диске все необходимые вам для работы разделы и выполните их форматирование программой format.com .
  • Восстановите файлы, выгруженные вами перед началом оптимизации.

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

Существует два способа выполнить низкоуровневое форматирование НМД.

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

Второй способ основан на использовании процедуры инициализации диска, записанной в микросхеме постоянного запоминающего устройства ROM (Read Only Memory — только читаемая память), располагающейся в BIOS или в контроллере диска. Этот способ пригоден не для всех контроллеров, так как не все контроллеры содержат ROM. Подробности вы сможете узнать из документации на ваш дисковый контроллер, там же приведены все необходимые сведения о работе с программой форматирования, записанной в ROM.

Программа инициализации hdinit

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

Самая простая утилита низкоуровневого форматирования — hdinit. Запустите ее (предварительно выгрузив диск) с параметром C: для первого НМД или с параметром D: для второго НМД. Например:

Программа hdinit сообщит вам имя и физический адрес инициализируемого НМД (в нашем случае инициализируется диск drive c:, его адрес — 80H), количество цилиндров (cylinders), головок (heads), секторов на трек (sector/track) и другие параметры (рис. 6.3).

Далее программа сообщит вам, что она уничтожит все данные, находящиеся на диске и спросит, желаете ли вы продолжить работу. На этот вопрос вы отвечаете «y», если желаете инициализировать диск и «n» в противном случае.

Рис. 6.3. Программа hdinit

На второй вопрос — Scan for existing defective tracks (y/n) (желаете ли вы просмотреть существующие дефектные дорожки) — ответьте «n».

Продолжение диалога можно увидеть на рисунке 6.4.

Рис. 6.4. Последнее предупреждение перед началом форматирования

Сперва программа выведет на экран список дефектных дорожек диска в формате цилиндр/головка (если на диске имеются дефектные дорожки). Вы сможете пополнить список дефектных дорожек, если введете их номера в аналогичном формате, или исключить дорожки из списка дефектных, если укажите адрес дорожки в формате «-цилиндр/головка». Если дефектных дорожек нет, просто нажмите клавишу .

На следующий вопрос (Is the list OK?) надо ответить «y».

Далее программа спросит вас, использовать ли при форматировании значение фактора чередования , равное трем (Use interleave factor of 3 (y/n)? ). На этот вопрос надо ответить «n», если, конечно, вы и в самом деле решили использовать другой фактор чередования .

После этого программа попросит вас ввести новое значение для фактора чередования (ENTER new interleave factor (2. 8)). На рисунке было введено значение 4. Для подтверждения на следующий вопрос (Use interleave factor of .. (y/n)?) необходимо ответить «y».

Последний вопрос — это самое последнее предупреждение, которое программа выдает перед тем, как начать форматировать диск (LAST CHANCE: Continue with initialization (y/n)?). Мы ответили на этот вопрос «n», и на этом работа программы закончилась. Если же вам надо начать инициализацию, ответьте «y». На экране будет отображаться процесс форматирования. Он может продолжаться несколько десятков минут.

Инициализация программой, записанной в ПЗУ контроллера

Рассмотрим теперь способ низкоуровневого форматирования НМД при помощи программы, записанной в ПЗУ дискового контроллера. Мы уже говорили о том, что этот способ будет работать не для всех типов контроллеров.

Вначале запустите программу-отладчик debug.exe , входящую в состав MS-DOS:

В ответ на приглашение отладчика введите:

Запустится программа низкоуровневого форматирования. Она будет задавать вопросы, аналогичные тем, что задает программа hdinit. Вам необходимо установить правильное значение для фактора чередования .

Если программа форматирования не запустилась, попробуйте вместо адреса c800:5 ввести c800:6 (работает на компьютере Bondwell B-300) или d800:5. Правильное значение адреса запуска программы можно узнать только из документации на контроллер диска.

Что вы увидите на экране после запуска описанным только что способом программы низкоуровневого форматирования? Это зависит от контроллера. Поэтому мы не будем приводить копии экранов для одного отдельного случая. Вместо этого перечислим возможные вопросы, которые может задать утилита низкоуровневого форматирования.

Сперва программа определяет физические параметры установленных НМД и выводит их на экран. Затем вам может быть предложено меню:

  • функция форматирования (Format);
  • функция проверки (Verify);
  • функция анализа поверхности (Surface Analysis).

Для выполнения низкоуровневого форматирования выберите функцию Format или Format/Verify. Вам будет нужно указать требуемый фактор чередования (Interleave) и другие параметры, для которых лучше использовать те значения, которые предложит сама программа форматирования.

Обычно контроллер сам определяет оптимальные значения для сдвига цилиндров (Cylinder Skew ) и сдвига головок (Head Skew). Если ваша программа не может сама определить оптимальное значение для сдвига цилиндров, используйте величину, равную одной трети от общего количества секторов на дорожке. Аналогично, для сдвига головок укажите значение 1.

Некоторые НМД используют резервирование секторов (Sector Sparing). При этом на каждой дорожке резервируется один сектор для замены дефектного. Резервирование секторов заметно сокращает общую емкость НМД, поэтому используйте резервирование только для дисков, имеющих значительное количество дефектов.

После низкоуровневого форматирования не забудьте запустить программу fdisk.exe , создать с ее помощью разделы на диске и отформатировать их программой format.com .

Программа CALIBRAT

Программа CALIBRAT входит в состав пакета Norton Utilities . Она значительно облегчает процедуру выбора оптимального фактора чередования , полностью автоматизируя весь процесс.

Преимущества:

  • не требуется выгружать содержимое диска перед началом процесса оптимизации;
  • выбор оптимального фактора чередования и переформатирование диска без потери содержимого выполняется самой программой автоматически;
  • перед началом оптимизации программа сама определяет возможность переформатирования данного диска, что позволяет избежать напрасных потерь времени.

Дефрагментация диска

Для дефрагментации файлов на диске у вас есть две альтернативы:

  • «ручная» дефрагментация;
  • дефрагментация при помощи специально предназначенных для этого программ.


Процедура «ручной» дефрагментации заключается в том, что вы выгружаете диск на магнитную ленту (стример) или дискеты, форматируете диск программой format.com , и восстанавливаете содержимое диска с магнитной ленты или дискет.

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

Очевидный недостаток «ручной» фрагментации — большая трудоемкость и значительная продолжительность процесса. Кроме того, для выполнения операции вам потребуется много дискет или стример.

Гораздо лучше воспользоваться программой defrag.exe , которая входит в состав MS-DOS, или программой speedisk.exe из пакета Norton Utilities . Эти программы выполняют дефрагментацию диска «по месту», как бы переставляя кластеры.

После запуска программы defrag.exe вы должны выбрать из меню нужный диск. Программа исследует его содержимое и подберет наилучший, с ее точки зрения, метод оптимизации. Она может, например, просто сделать все файлы на диске расположенными в непрерывных областях, либо полностью оптимизировать расположение файлов на диске. В случае полной оптимизации все свободные кластеры собираются в один непрерывный блок.

Программа defrag.exe представляет собой сокращенный вариант программы speedisk.exe из пакета Norton Utilities . Для последней возможны следующие методы оптимизации.

Первый метод — полная оптимизация (Full Optimization). Программа выполняет все действия по оптимизации диска, не меняя содержимое каталогов и порядок расположения файлов. Это наиболее подходящий метод для большинства случаев.

Второй метод (Full with DIR’s first) выполняет оптимизацию диска с переносом каталогов в начало диска.

Третий метод (Full with File reorder) кроме дефрагментации выполняет группировку файлов вблизи каталогов, в которых они описаны.

Для второго и третьего методов требуется несколько больше времени, чем для первого.

Четвертый метод (Unfragment Files Only) выполняет дефрагментацию файлов без изменения каталогов или изменения порядка расположения файлов. При использовании этого метода свободное пространство на диске остается фрагментированным.

Пятый метод (Unfragment Free Space) — дефрагментация свободного пространства. Все свободные кластеры собираются вместе в одной непрерывной области диска.

Во время работы программа показывает на экране все свои действия по перемещению кластеров. Стоит посмотреть на это захватывающее зрелище!

Буферизация ввода и вывода

Операционная система MS-DOS имеет средства буферизации, которые можно подключить при помощи команды BUFFERS . Эту команду необходимо поместить в файл CONFIG.SYS:

В этой строке n задает количество буферов, которые MS-DOS использует для ввода и вывода. Если файл CONFIG.SYS отсутствует, или в нем нет команды BUFFERS , по умолчанию MS-DOS создает 15 буферов (если в системе установлено 640 Кбайт основной памяти).

Параметр m задает количество буферов предварительной выборки. Предварительная выборка означает, что в буфер записывается не только сектор, затребованный программой, но и некоторое количество следующих за ним секторов. Можно задать от 1 до 8 буферов предварительной выборки.

Параметр n может принимать значения от 1 до 99.

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

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

Несмотря на простоту оператора BUFFERS , большей эффективности можно достичь при использовании кэширования дисковой памяти.

Если вы используете программу кэширования, имеет смысл задать небольшое количество буферов, например, 10 или даже 5.

Кэширование дисковой памяти

Для кэширования диска можно воспользоваться либо драйвером smartdrv.exe , входящим в стандартную поставку операционной системы MS-DOS, либо специальными средствами кэширования, такими, как HyperDisk фирмы HyperWare.

Драйвер SMARTDRV

Самый простой способ организации кэширования дисковой памяти — использование драйвера smartdrv.exe . Этот драйвер можно запускать как резидентную программу из файла autoexec.bat или из командного приглашения MS-DOS:

Необязательный параметр [НачРазмер] задает размер области оперативной памяти в Кбайтах, отводимой под кеш. Если он не задан, для кеша отводится блок памяти, размер которого зависит от общего объема расширенной памяти, установленной в компьютере.

Параметр [РазмерДляWindows] (также необязательный) задает минимальный размер кеша в Кбайтах. Этот параметр обычно используют при работе с оболочкой Microsoft Windows , которая умеет уменьшать размер кеша и использовать освободившуюся память для своих нужд. Например, может уменьшить размер кеша до нуля, что скажется отрицательно на производительности дисковой системы.

Задавая параметр [Диск], можно управлять кэшированием отдельных дисков. Если этот параметр указан без символов «+» или «-«, для данного диска разрешается кэширование на чтение. Если же указан символ «+», разрешается кэширование на чтение и запись. Символ «-» полностью отключает кэширование.

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

Приведем краткое описание других параметров.

Параметр Описание
X Отключение кеширования на запись для всех устройств, кроме указанных индивидуально в параметре [Диск+]
U Отключение кеширования устройства чтения компакт-диска
C Принудительная запись содержимого кеш-памяти на диск. Используется при запуске программы smartdrv.exe из командного приглашения MS-DOS
R Стирание содержимого кеш-памяти и перезапуск программы smartdrv.exe
F Сохранение всех изменений в кеш-памяти на диске должно происходить сразу после выполнения операции записи. Этот режим используется по умолчанию
N Сохранение всех изменений в кеш-памяти на диске должно происходить, когда процессор не занят выполнением других операций
L Отключение возможности загрузки программы smartdrv.exe в верхнюю область памяти
V Отображение состояния программы smartdrv.exe и сообщений об ошибках
Q Отключение режима отображения состояния программы smartdrv.exe
S Отображение дополнительной информации о состоянии программы smartdrv.exe
E Размер блока памяти, который записывается на диск или читается с диска при выполнении одной операции, по умолчанию равен 8 Кбайт
B Размер буфера предварительной выборки при чтении, должен быть кратен размеру блока памяти, указанному в параметре E

Если вы собираетесь использовать программу smartdrv.exe для кеширования устройства чтения компакт-дисков, загружайте ее ПОСЛЕ запуска программы mscdex.exe.

Драйвер HyperDisk

Драйвер HyperDisk — одно из самых мощных и быстродействующих средств кеширования дисковой памяти. Этот драйвер может располагать кеш в обычной, расширенной или дополнительной памяти компьютера. При использовании драйвера HyperDisk производительность дисковой системы может увеличиться в несколько раз.

Для установки драйвера HyperDisk версии 4.30 вам достаточно скопировать в корневой каталог диска C: (или в любой другой каталог любого другого диска) все файлы дистрибутива драйвера HyperDisk с расширением exe. Затем надо убедиться в том, что вы не используете другие средства кеширования дисковой памяти, такие как драйвер smartdrv.exe .

На установочной дискете драйвера HyperDisk находятся следующие файлы: hyper286.exe, hyper386.exe, hyperdkx.exe, hyperdke.exe, hyperdkc.exe, hyperdk.exe. Все эти файлы (за исключением hyperdk.exe) представляют собой различные варианты драйвера HyperDisk. Файл hyperdk.exe предназначен для динамического изменения параметров драйвера HyperDisk.

Если ваш компьютер не оборудован расширенной или дополнительной памятью (IBM PC или IBM PC/XT), вы должны использовать файл hyperdkc.exe. При этом кеш будет располагаться в стандартной памяти, сильно сокращая доступное другим программам пространство. Для подключения драйвера поместите в файл config.sys следующую строку (мы предполагаем, что вы скопировали все файлы драйвера HyperDisk в корневой каталог диска C:):

Параметр C:100 указывает, что кеш должен иметь размер 100 Кбайт. Если этот параметр не указывать, то по умолчанию для кеша, расположенного в основной памяти, будет отведено 128 Кбайт.

При использовании драйвера HyperDisk параметр BUFFERS в файле config.sys должен быть равен 5:

Кроме того, в файл autoexec.bat следует добавить строку:

Если вы — обладатель компьютера, выполненного на базе процессора i286 (IBM PC/AT), то обычно вам доступно по крайней мере 384 Кбайт расширенной памяти. В этом случае используйте следующий вариант подключения драйвера:

Если вы не укажите параметр C:, для кеша будет отведена вся имеющаяся расширенная память.

Для компьютеров IBM PC/AT, выполненных на базе процессора i386, используйте файл hyper386.exe:

В данном случае для кеша отводится 2 Мбайт расширенной памяти.

Обычно набора описанных только что файлов достаточно для организации кеша практически на любых компьютерах. Однако если у вас возникли проблемы совместимости драйвера HyperDisk с другим используемым программным обеспечением, вы можете попробовать установить драйверы hyperdkx.exe или hyperdke.exe. Первый из них предназначен для использования расширенной памяти в компьютерах, выполненных на базе процессоров i286 или i386, а второй — для использования дополнительной памяти. Эти драйверы подключаются аналогично только что описанным, например:

Драйвер HyperDisk может выполнять множество других функций и имеет различные режимы работы, которые можно динамически изменять после загрузки операционной системы. Полный перечень и подробное описание всех возможностей драйвера приведены в документации, распространяемой в виде файла вместе с драйвером (на английском языке).

Драйвер HyperDisk может «накапливать» изменения в оперативной памяти и сбрасывать их на диск позже, во время простоев компьютера или через заданный промежуток времени. Это увеличивает производительность при записи данных на диск. Кроме того, драйвер HyperDisk может оптимизировать последовательность записываемых секторов с целью сокращения перемещений блока головок.

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

Возможности драйвера HyperDisk реализуются необязательными параметрами. Эти параметры могут задаваться в файле config.sys :

Кроме того, некоторые параметры можно изменять во время работы операционной системы при помощи программы hyperdk.exe. Для этого надо запустить эту программу с новыми параметрами для драйвера HyperDisk :

Приведем таблицу некоторых, наиболее полезных на наш взгляд, параметров:

Параметр Описание
H Если задан этот параметр, кэшируются только накопители НМД
F Кэшируются также и НГМД. Этот режим включен по умолчанию
V Включение проверки записываемых данных. Этот параметр используется вместо команды VERIFY. Команда VERIFY не должна использоваться вместе с драйвером HyperDisk
N Не выполнять проверку записываемых данных. Отменяет действие параметра V
C:nn Параметр определяет количество памяти, используемой драйвером для организации кеша, nn задает размер кеша в Кбайтах
W Режим немедленной записи данных на диск сразу после их обновления в кеше. Этот режим включен по умолчанию
Q Аналогично W, но для НГМД
S Запись данных на диск откладывается до тех пор, пока компьютер не перейдет в состояние ожидания
A Аналогично S, но для НГМД
XU Отключение кеша. Вся память, которая использовалась для кеша, освобождается и становится доступна другим программам

Полный список команд приведен в документации на драйвер HyperDisk .

Приведем комбинацию параметров для кеширования только накопителей на жестких дисках с отложенной записью измененных данных:

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

Параметры драйвера HyperDisk можно динамически изменять в процессе работы с помощью ряда комбинаций клавиш. Например, перед тем, как вы запускаете новую программу, целесообразно отключить кеширование или, по крайней мере, режим отложенной записи.

Приведем описание некоторых наиболее важных комбинаций клавиш, управляющих работой драйвера HyperDisk .

Комбинация клавиш Выполняемое действие
Отключение драйвера HyperDisk . Эту команду целесообразно использовать при проверке нового программного обеспечения, либо при установке программ, защищенных от копирования
Включение драйвера HyperDisk в работу. Используется после ввода предыдущей команды для возобновления кеширования
Включение режима отложенной записи
Выключение режима отложенной записи. Используйте эту команду при выполнении «рискованных» операций, которые могут привести к зависанию компьютера
Команда вызывает принудительную запись содержимого кеша на диск перед запуском каждой новой программы. Эту команду удобно использовать при отладке нового программного обеспечения
Отмена предыдущего режима
Перезагрузка операционной системы. Драйвер HyperDisk запишет содержимое кеша на диск. Когда начнется запись данных, вы услышите два звуковых сигнала. После завершения записи для выполнения перезагрузки операционной системы нажмите еще раз. Если вы используете какие-либо драйверы или резидентные программы, которые выполняют немедленную перезагрузку MS-DOS по указанной комбинации клавиш, используйте перед перезагрузкой команду для сброса содержимого кеша на диск

Создание электронного диска

Для организации электронного диска добавьте в файл CONFIG.SYS следующую строку:

В качестве первого параметра следует указать размер создаваемого электронного диска в Кбайтах. Второй параметр — число, определяющее размер сектора электронного диска. Он может принимать значения 128, 256, 512 и 1024 байт. Третий параметр — максимальное количество файлов в корневом каталоге диска.

Дополнительно можно указывать параметры /E и /A. Параметр /E вызывает размещение электронного диска в расширенной памяти, а параметр /A — в дополнительной.

Все параметры драйвера ramdrive.sys необязательные. Если ни один из них не указан, создается диск размером 64 Кбайт с размером сектора 512 байт. Максимальное количество файлов, которые можно записать в корневой каталог — 64. Кроме того, если не указан ни один ключ, электронный диск создается в стандартной памяти, отнимая память у запускаемых программ.

Если ваш компьютер оборудован расширенной памятью размером в несколько Мбайт, вы можете создать электронный диск размером в 1024 Кбайт следующим образом:

Драйверы кеша и Microsoft Windows

Так как Windows может сам уменьшать размер кеша, созданного драйверами кеширования (вплоть до нуля), не забудьте указать минимальный размер используемого кеша. Для драйвера smartdrv.exe это можно сделать, например, так:

В этом случае, когда программы работают непосредственно в среде MS-DOS, размер кеша составляет 2048 Кбайт. Если же запускается Microsoft Windows , размер кеша может уменьшиться до 1024 Кбайт.

Аналогично в драйвере HyperDisk размер кеша, использующегося при работе с Windows , указывается при помощи параметра CW:, например,

Можно использовать и такой способ:

При работе драйвера HyperDisk вместе с Microsoft Windows для переключения режимов работы драйвера рекомендуется следующая последовательность действий:

    нажмите клавишу

или ;

  • нажмите комбинацию клавиш, необходимую для выбора нового режима работы драйвера HyperDisk .
  • Программа FASTOPEN

    Программа fastopen.exe — еще одно средство кеширования, предоставляемое операционной системой MS-DOS. Это резидентная программа, запоминающая в оперативной памяти расположение файлов и каталогов на диске. При ее использовании сильно уменьшается время доступа к файлам.

    Однако драйвер smartdrv.exe обеспечивает большую эффективность, так как он может хранить в оперативной памяти не только расположение файлов и каталогов, но и любые часто используемые файлы или участки файлов. Поэтому мы не рекомендуем вам использовать программу fastopen.exe .

    6.3. Увеличение вместимости диска и дискет

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

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

    Частая причина переполнения диска — лишние файлы, которые вам либо совсем не нужны, либо нужны крайне редко. Следует убедиться в том, что вы понимаете назначение каждого файла, расположенного на диске. Очень часто диск оказывается заполнен временными файлами и резервными копиями рабочих файлов. Общий размер таких файлов может оказаться весьма значительным.

    Вторая причина — наличие так называемых потерянных кластеров . Мы уже говорили о том, что MS-DOS хранит файлы в кластерах, причем файл может занимать много кластеров. Иногда (в основном после «зависания» операционной системы) появляются кластеры, не описанные ни в одном каталоге. Эти кластеры помечены в таблице размещения файлов FAT как занятые файлами, но доступа к этим файлам нет (так как доступ к файлам возможен только через каталоги). Потерянные кластеры занимают место на диске, и это место нельзя освободить иначе, чем с помощью специальных средств ремонта файловой системы.

    И, наконец, третья причина заключается в том, что для файла любого размера (даже для файла размером 1 байт) выделяется по крайней мере один кластер. Кластер может иметь размер от одного до 8 секторов, то есть даже для хранения файла размером 1 байт расходуется от 512 до 4096 байт дисковой памяти. Если на вашем диске хранятся сотни маленьких файлов, все вместе они могут занимать несколько сотен Кбайт дисковой памяти.

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

    Существуют специальные программы-архиваторы, сжимающие файлы и хранящие их в виде библиотеки (архива). Каждый архив располагается в отдельном файле и может содержать сотни сжатых файлов.

    На чем основано сжатие файлов?


    На устранении избыточности информации.

    Поясним это на примере. Пусть у нас есть обычный текстовый файл, причем в тексте используется русский язык.

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

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

    Реальные программы-архиваторы используют более сложные алгоритмы устранения избыточности информации, обеспечивая сжатие файлов в 1,5 — 2 раза (в зависимости от содержимого файлов).

    Архиваторы удобно использовать для сжатия редко используемых файлов. Причем вы можете легко сжимать все файлы в каталоге, включая и подкаталоги, а затем, при необходимости, восстанавливать их снова.

    Что же касается дискет, то для увеличения эффективности их использования можно предложить два взаимодополняющих способа:

    • хранение на дискетах архивов, созданных программами-архиваторами;
    • форматирование дискет на повышенную по сравнению со стандартной емкость.

    Существуют специальные программы, позволяющие отформатировать дискеты двойной плотности (360 Кбайт) на емкость 720 или 800 Кбайт. Дискеты высокой плотности (1,2 Мбайт или 1,44 Мбайт) можно отформатировать на емкость 1,6 — 1,8 Мбайт.

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

    Потерянные кластеры

    Самый простой способ избавиться от потерянных кластеров — запустить утилиту MS-DOS scandisk.exe .

    Можно также использовать старую программу chkdsk.exe . Например, если вам надо проверить файловую систему на диске C: и исправить ее возможные повреждения (в том числе устранить потерянные кластеры), введите из системного приглашения следующую команду:

    Все имеющиеся цепочки потерянных кластеров будут оформлены в виде файлов. Эти файлы будут находиться в корневом каталоге проверяемого диска и иметь имена FILEnnnn.CHK. Вы можете просмотреть содержимое этих файлов, так как среди них могут быть нужные вам файлы, которые были потеряны при зависании операционной системы. Затем все ненужные файлы можно удалить.

    Другой способ устранения потерянных кластеров заключается в использовании специальной утилиты Norton Disk Doctor из пакета утилит Нортона . Эта диалоговая утилита способна выполнить диагностику и ремонт файловой системы даже в случае ее сильных повреждений.

    Динамический компрессор диска DriveSpace

    Операционная система MS-DOS имеет в своем составе средство динамического сжатия файлов, записанных на диске, которое называется DriveSpace .

    При использовании этого средства на одном из логических дисков компьютера создается специальный файл с именем вида drvspace.00 , имеющий атрибуты «скрытый» и «системный». Специальный драйвер, который не виден для пользователя (не подключается в файле config.sys , а встраивается до начала обработки этого файла) делает из него еще один логический диск. За счет устранения избыточности информации размер этого логического диска получается примерно в полтора-два раза больше, чем размер использованного для него файла.

    Если ваш компьютер имеет жесткий диск емкостью, например, 40 Мбайт, вы можете разместить на нем файл системы DriveSpace размером 30 Мбайт. При этом у вас останется 10 Мбайт на жестком диске, и еще прибавится примерно 60 Мбайт — это размер созданного логического диска.

    Принцип работы диска DriveSpace прост: при записи файлов на этот диск они сжимаются, при чтении — восстанавливаются. Разумеется, сжатие несколько замедляет процесс записи, однако замедление небольшое и незаметно в большинстве случаев.

    Нет смысла хранить на диске DriveSpace архивы, созданные программами-архиваторами. Файлы архивов не содержат избыточной информации и практически не сжимаются. Не рекомендуется также использовать диск DriveSpace для создания временных и рабочих файлов, для организации виртуальной памяти в среде Windows . В последнем случае замедление ввода и вывода может отрицательно сказаться на производительности системы.

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

    Установка системы DriveSpace

    Для установки системы DriveSpace введите из приглашения MS-DOS команду drvspace:

    На экране появится сообщение, показанное на рис. 6.5.

    Рис. 6.5. Установка системы DriveSpace

    Для продолжения установки нажмите клавишу .

    Вам будет предложено выбрать один из двух возможных вариантов установки системы DriveSpace (рис. 6.6): быстрая автоматическая установка (Express Setup) и ручная установка (Custom Setup).

    Рис. 6.6. Выбор варианта установки системы DriveSpace

    При выборе автоматической установки система сама преобразует диск C: таким образом, что все записанные на нем файлы станут сжатыми. Диск C: будет преобразован в диск DriveSpace .

    Очевидно, что это не всегда удобно, так как на диске C: могут находиться каталоги для временных файлов, файл виртуальной памяти Microsoft Windows или другие файлы, которые по тем или иным причинам нежелательно хранить на диске DriveSpace .

    Поэтому мы рекомендуем вам выбрать второй вариант установки (Custom Setup).

    Вам будет предложено два варианта создания диска DriveSpace (рис. 6.7). Вы можете преобразовать существующий диск в диск DriveSpace, выбрав строку «Compress an existing drive», или создать новый использовав для него свободное пространство, расположенное на любом диске. В последнем случае надо выбрать строку «Create a new empty compressed drive».

    Рис. 6.7. Два варианта создания диска DriveSpace

    Выберите второй вариант, так как он не затронет существующие файлы и, следовательно, наиболее безопасен.

    Вам будет предложено выбрать логический диск, на котором будет создан скрытый системный файл drvspace.00 (рис. 6.8). Вы можете выбрать любой диск, содержащий свободное пространство достаточного размера.

    Рис. 6.8. Выбор диска для размещения файла drvspace.00

    На следующем этапе вы сможете определить параметры создаваемого диска DriveSpace (рис. 6.9).

    Рис. 6.9. Определение параметров создаваемого диска DriveSpace

    В поле «Free space to leave on drive . » вы можете указать размер свободного пространства, который останется на выбранном для файла drvspace.00 логическом диске.

    В поле «Compression ratio for new drive» можно указать желаемую степень сжатия файлов, размещенных на диске DriveSpace . Чем больше сжатие, тем будет медленнее выполняться процедура записи на диск DriveSpace. Фактическая степень сжатия может отличаться от указанной, так как она определяется в первую очередь содержимым сжимаемых файлов.

    И, наконец, в поле «Drive letter of new drive» можно выбрать обозначение для создаваемого диска DriveSpace .

    После выбора параметров переместите курсор на строку «Continue» и нажмите клавишу . На экране появится сообщение о запуске процедуры создания диска DriveSpace (рис. 6.10). Вы можете приступить к созданию диска, нажав клавишу , или вернуться к определению параметров, нажав клавишу .

    Рис. 6.10. Сообщение о запуске процедуры создания диска DriveSpace

    В процессе создания диска DriveSpace будет выполнен перезапуск MS-DOS для загрузки драйвера drvspace.bin . Этот драйвер находится в корневом каталоге диска C:, причем его не нужно подключать в файле config.sys . Напомним, что драйвер drvspace.bin загружается до начала обработки файла config.sys.

    На следующем этапе установки будет запущена программа scandisk.exe , которая входит в состав MS-DOS версии 6.22 и предназначена для проверки и ремонта файловой системы (рис. 6.11, 6.12).

    Рис. 6.11. Проверка файловой системы

    Рис. 6.12. Проверка поверхности диска

    Далее произойдет второй перезапуск операционной системы MS-DOS, вслед за чем диск DriveSpace станет доступным для использования.

    Удаление диска DriveSpace

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

    Для удаления диска запустите программу drvspace.exe из командного приглашения MS-DOS. Теперь, когда система DriveSpace установлена, с помощью этой программы можно выполнять различные операции над дисками DriveSpace, такие, как проверка, дефрагментация и т. п. (рис. 6.13).

    Рис. 6.13. Работа с диском DriveSpace

    Для того чтобы удалить диск DriveSpace , выберите его из меню, расположенном в центре экрана. Затем из меню «Drive» выберите строку «Delete. «. На экране появится предупреждающее сообщение о том, что содержимое диска будет уничтожено (рис. 6.14).

    Рис. 6.14. Удаление диска DriveSpace

    Выберите кнопку «OK». После этого программа удалит диск DriveSpace и освободит место, которое было занято файлом drvspace.00 .

    Отключение драйвера drvspace.bin

    В процессе установки системы DriveSpace в файл config.sys добавляется следующая строка:

    Можно было бы подумать, что файл drvspace.sys и есть драйвер системы DriveSpace . Однако это не так.

    Драйвер drvspace.sys выполняет перемещение драйвера drvspace.bin в область старших адресов памяти для освобождения основной памяти. При этом сам драйвер drvspace.sys после инициализации удаляется из оперативной памяти.

    Для того чтобы полностью отключить систему DriveSpace , после удаления всех дисков DriveSpace описанным выше методом вы должны удалить из корневого каталога диска C: следующие файлы:

    Затем нужно перезапустить операционную систему MS-DOS.

    Нестандартное форматирование дискет

    В настоящее время наиболее распространены дискеты с двойной (Double Density — DD) и высокой (High Density — HD) плотностью, имеющие диаметр 5,25″ и 3,5″, соответственно.

    При помощи программы format.com можно отформатировать эти дискеты следующим образом.

    Дискеты диаметром 5.25″:

    Плотность Емкость отформатированной дискеты
    Двойная (DD) 360 Кбайт
    Высокая (HD) 1,2 Мбайт

    Дискеты диаметром 3,5″:

    Плотность Емкость отформатированной дискеты
    Двойная (DD) 720 Кбайт
    Высокая (HD) 1,44 Мбайт

    В документации по операционной системе MS-DOS подробно описано, как форматировать дискеты двойной и высокой плотности.

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

    Мы уже рассказывали вам о том, что на дисках (и на дискетах) информация записывается на дорожках. Каждая дорожка делится на секторы. Ниже мы приведем количество используемых дорожек и секторов для дискет, отформатированных стандартным образом:

    Формат Количество дорожек и секторов
    5,25″ DD, 360 Кбайт 40 дорожек, 9 секторов
    5,25″ HD, 1,2 Мбайт 80 дорожек, 15 секторов
    3,5″ DD, 720 Кбайт 40 дорожек, 9 секторов
    3,5″ HD, 1,44 Мбайт 80 дорожек, 18 секторов

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

    При этом емкость дискеты увеличится. Например, дискеты DD диаметром 5.25″ часто форматируют на емкость 800 Кбайт (стандартная емкость такой дискеты — 360 Кбайт). Дискета, отформатированная на 800 Кбайт, имеет 80 дорожек и 10 секторов.

    Для нестандартного форматирования вам потребуются специальные программы. Наиболее распространены программы 800.com , 900.com , fdformat.exe . Кроме того, вы можете воспользоваться программой pu_1700.com , созданной Ю. И. Панковым.

    Для форматирования дискет на повышенную емкость, а также для использования таких дискет вам необходимо запустить одну из перечисленных выше программ. Лучше всего это сделать, указав такую программу в файле autoexec.bat, например:

    Если запущена программа 800.com , вы можете форматировать дискеты обычной программой format.com , задавая при помощи параметров /T: и /N: нужное количество дорожек и секторов на дорожке. Например:

    В данном случае дискета, вставленная в дисковод A:, будет форматироваться на емкость 800 Кбайт.

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

    Какие параметры можно задавать программе format.com ? Это зависит от типа НГМД, установленного в вашем компьютере. Встречаются 4 типа:

    • НГМД для дискет двойной плотности диаметром 5,25″, отформатированных на 360 Кбайт;
    • НГМД для дискет высокой плотности диаметром 5,25″, отформатированных на 1,2 Мбайт;
    • НГМД для дискет двойной плотности диаметром 3,5″, отформатированных на 720 Кбайт;
    • НГМД для дискет высокой плотности диаметром 3,5″, отформатированных на 1,44 Мбайт.

    При использовании программы 800.com вместе с НГМД для дискет двойной плотности диаметром 5,25″ или 3,5″ для программы format.com можно указывать следующие параметры:

    Емкость дискеты, Кбайт Параметры
    360 /T:40 /N:9
    400 /T:40 /N:10

    Если у вас дисковод высокой плотности, вам также доступны и другие параметры:

    Емкость дискеты, Кбайт Параметры
    720 /T:80 /N:9
    800 /T:80 /N:10
    1200 /T:80 /N:15
    1360 /T:80 /N:17
    1440 /T:80 /N:18
    1600 /T:80 /N:20


    Последние две строки таблицы описывают параметры, доступные только для НГМД высокой плотности при использовании дискет диаметром 3,5″.

    Программа pu_1700.com является функциональным аналогом программы 800.com , но обладает большими возможностями. После ее запуска вы можете задавать программе format.com следующие параметры:

    Здесь:

    • drv — имя НГМД, который используется для форматирования (A или B);
    • tt — число форматируемых цилиндров;
    • nn — число секторов на дорожке.

    Приведем таблицу значений объемов отформатированной дискеты в зависимости от типа НГМД, типа дискеты и параметров форматирования tt и nn:

    Параметры программы format.com Емкость дискеты, на которую рассчитан НГМД, Кбайт Объем отформатированной дискеты, байт
    tt nn 360 720 1200 1440 Норма Максимум
    40-41 9 + + + + 362,496 371,712
    — » — 10 + + + + 398,848 409,086
    80-83 9 + + + 724,480 752,168
    — » — 10 + + + 806,460 837,120
    — » — 15 + + 1212,928 1259,008
    — » — 16 + + 1294,848 1344,000
    — » — 17 + + 1376,768 1427,968
    — » — 18 + + 1457,664 1512,960
    — » — 19 + 1539,584 1596,928
    — » — 20 + 1620,480 1681,920
    — » — 21 + 1702,400 1765,888

    Приведем пример команды форматирования дискеты HD на емкость 1702,400 байт:

    Параметр /u необходим для того, чтобы программа format.com не делала попыток сохранения на форматируемой дискете данных, нужных программе unformat.com для восстановления содержимое дискеты после ошибочного форматирования.

    Приведем описание некоторых параметров программы pu_1700.com (полностью параметры описаны в документации к программе, составленной на русском языке и распространяемой в файле pu_1700.doc).

    • /cfat контроль FAT при форматировании

    Этот параметр допустим только при первом запуске программы.

    Следующие параметры можно указывать как при первом запуске программы, так и при последующих ее перезапусках:

    • /off отключение программы pu_1700.com ;
    • /on активизация отключенной программы pu_1700.com ;
    • /A=off НГМД A: не обслуживается (не установлен);
    • /B=off НГМД B: не обслуживается (не установлен);
    • /A=360 параметр указывает, что НГМД A: — это дисковод двойной плотности (DD), рассчитан на дискеты диаметром 5,25″ стандартной емкости 360 Кбайт;
    • /B=360 НГМД 360 Kбайт диаметром 5,25″ (DD);
    • /A=1.2 НГМД 1,2 Mбайт, 5,25″ (HD);
    • /B=1.2 НГМД 1,2 Mбайт, 5,25″ (HD);
    • /A=720 НГМД 720 Kбайт, 3,5″ (DD);
    • /B=720 НГМД 720 Kбайт, 3,5″ (DD);
    • /A=1.44 НГМД 1,44 Mбайт, 3,5″ (HD);
    • /B=1.44 НГМД 1,44 Mбайт, 3,5″ (HD);
    • /? вызов подсказки;
    • /sm=1 оптимальное расположение секторов при форматировании для увеличения производительности НГМД;
    • /sm=2 другой способ оптимального расположения секторов при форматировании для увеличения производительности НГМД;
    • /sm=off отключение оптимизации расположения секторов при форматировании.

    В заключение пара советов относительно использования нестандартно отформатированных дискет.

    • По возможности не используйте нестандартно отформатированные дискеты для резервного копирования дистрибутивных дискет программного обеспечения, особенно операционных систем. У вас могут появиться проблемы с установкой программного обеспечения с нестандартных дискет. В крайнем случае воспользуйтесь программой pu_1700.com . Дискеты, подготовленные этой программой, могут быть загрузочными (системными).
    • Лучшее применение для программ нестандартного форматирования — форматирование дискет двойной плотности диаметром 5,25″ (360 Кбайт) на емкость 800 Кбайт. Такие дискеты вы можете использовать для хранения архивов, документации, другого программного обеспечения, не критичного к структуре дорожки.

    6.4. Оперативная память

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

    Фирма IBM в своем первом персональном компьютере IBM PC использовала процессор Intel 8086, способный непосредственно адресовать 1024 Кбайт оперативной памяти. Из этого адресного пространства фирма IBM использовала для операционной системы и программ 640 Кбайт памяти, зарезервировав оставшиеся 384 Кбайт для системного постоянного запоминающего устройства, дисплейного адаптера и другой аппаратуры.

    Однако по мере того, как компьютеры становились все мощнее и мощнее, для них находились новые задачи, требующие все большего объема оперативной памяти. Первоначально заложенного в архитектуру IBM PC объема памяти программ (640 Кбайт) стало недостаточно для решения сложных задач.

    С появлением процессора Intel 80286, способного адресовать до 16 Мбайт оперативной памяти, возникли предпосылки для расширения доступного программам адресного пространства. Архитектура компьютера IBM PC/AT позволяет использовать для программ все 16 Мбайт памяти.

    Казалось бы, все хорошо, однако даже если ваш компьютер содержит 16 Мбайт оперативной памяти, операционная система MS-DOS без принятия специальных мер может использовать для себя и программ только первые 640 Кбайт. При этом программам пользователя достается обычно не более 500 — 550 Кбайт основной оперативной памяти, остальная память используется MS-DOS для своих собственных нужд.

    Это связано с тем, что MS-DOS использует так называемый реальный режим работы процессора 80286. В реальном режиме процессор 80286 становится несколько улучшенным аналогом старого процессора 8086, и может адресовать только первые 1024 Кбайт памяти.

    Возникает странная ситуация, когда память есть, но пользоваться ей нельзя!

    Распределение памяти в MS-DOS

    Для того, чтобы как-то задействовать память, расположенную выше границы 1024 Кбайт (эту память называют расширенной), в старых версиях MS-DOS использовались драйверы электронного диска ramdrive.sys и кеш дисковой памяти smartdrv.sys. Драйвер электронного диска предназначен для организации быстродействующего квазидиска. Этот диск ведет себя так же, как и обычный, но за счет того, что данные пересылаются в оперативную память, такой диск работает очень быстро.

    Начиная с версии 5.0 операционная система MS-DOS может использовать расширенную память и для решения других задач.

    В частности, в расширенной памяти (вернее, в ее небольшой начальной части размером около 64 Кбайт, называющейся верхней памятью) могут располагаться модули, буферы и рабочие области самой операционной системы. Если в компьютере используется процессор i386 или i486, можно поместить в расширенную память резидентные программы и драйверы.

    Если расположить в расширенной памяти MS-DOS резидентные программы и драйверы, для программ останется порядка 600 — 620 Кбайт памяти. Это на 100 — 140 Кбайт больше, чем при использовании старых версий MS-DOS.

    А если ваша программа имеет размер 2 Мбайт и к тому же ей требуется обрабатывать массивы данных размером в 1 Мбайт?

    Для решения таких задач в среде MS-DOS можно использовать дополнительную память. Эта память располагается на отдельной плате, которая вставляется в слот расширения материнской платы компьютера. Дополнительная память может быть установлена даже в компьютерах, выполненных на базе процессоров 8086 или 8088, которые не могут адресовать память за границей одного Мбайта. Как это может быть?

    Здесь все дело в том, что дополнительная память (которая может по размеру достигать 16 или даже 32 Мбайт) отображается с помощью специальных схем в область памяти, лежащую ниже границы 1024 Кбайт, то есть в стандартную память. Для работы с расширенной памятью выделяются 4 окна в области адресов выше границы 640 Кбайт, но ниже 1024 Кбайт. Причем общий размер этих окон составляет 64 Кбайт.

    Программы обращаются по адресам, соответствующим одному из четырех окон. Эти адреса находятся в пределах первых 1024 Кбайт. Но специальное аппаратное устройство отображает в эти окна часть дополнительной памяти, поэтому фактически программа будет работать с дополнительной памятью.

    При необходимости окна могут двигаться по дополнительной памяти, позволяя программам адресовать весь объем дополнительной памяти.

    Запомните: расширенная память и дополнительная память — разные вещи!

    • Расширенная память (extended memory) — лежит в адресном пространстве процессора выше границы 1024 Кбайт, непосредственно адресуется процессорами 80286/i386/i486/Pentium в так называемом защищенном режиме. Операционная система MS-DOS не может непосредственно использовать расширенную память для загрузки и выполнения программ. Вы можете использовать часть расширенной памяти для размещения ядра MS-DOS, системных буферов, резидентных программ и драйверов. Расширенная память располагается непосредственно на основной плате компьютера.
    • Дополнительная память (expanded memory) — отображается в окна, расположенные в адресном пространстве ниже границы 1024 Кбайт, то есть в стандартную память. Эта память доступна MS-DOS и программам, работающим в реальном режиме, то есть в дополнительную память могут загружаться программы и эти программы могут там выполняться под управлением MS-DOS. Дополнительная память располагается на отдельной плате, которая вставляется в слоты расширения основной платы компьютера. Для работы дополнительной памяти в файле config.sys должен быть установлен специальный драйвер, который поставляется вместе с платой памяти.

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

    Для иллюстрации сказанного выше на рис. 6.15 изображена упрощенная карта распределения оперативной памяти .

    Рис. 6.15. Упрощенная схема распределения оперативной памяти

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

    Область от 640 до 1024 Кбайт зарезервирована фирмой IBM для аппаратного обеспечения. В ней находятся:

    • память видеоадаптера (адреса от A000h:0000h до BFFFh:FFFFh);
    • ПЗУ для обслуживания видеоадаптеров, дисков и другой аппаратуры (адреса от C000h:0000h до EFFFh:FFFFh);
    • BIOS (адреса от F000h:0000h до FFFFh:000Fh).

    Память с адресами от 640 до 1024 Кбайт — это зарезервированная память, она играет ключевую роль в механизме расположения драйверов и резидентных программ в расширенной памяти. Эта память также используется драйверами дополнительной памяти.

    Как правило, зарезервированная память задействована не полностью, в ней есть свободные области. Эти свободные области и используются при работе с расширенной или дополнительной памятью.

    Драйвер emm386.exe , входящий в MS-DOS, отображает свободные области на расширенную память, пользуясь виртуальным режимом работы процессоров i386, i486 или Pentium (режим виртуального процессора 8086). К сожалению, в этой книге нет места для детального описания виртуального режима работы. Для нас важно, что процессор, находясь в виртуальном режиме при использовании драйвера emm386.exe адресуется к свободным областям зарезервированной памяти. При этом процессор использует механизм адресации, соответствующий реальному режиму работы. Однако на эти свободные области зарезервированной памяти отображаются участки расширенной памяти, находящиеся выше границы 1024 Кбайт.

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

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

    Разумеется, программы могут передвигать окно, адресуя через него по частям всю дополнительную память.

    Область от 1024 Кбайт и выше — это расширенная память. Ее начальный участок от 1024 до 1088 Кбайт — область старшей памяти (High Memory Area — HMA ). Именно в эту область MS-DOS может помещать значительную часть своего ядра и области данных. Интересной особенностью области HMA является то, что она доступна для процессора, работающего в реальном режиме, то есть как раз в том режиме, который использует MS-DOS.

    Как такое может быть? Для того, чтобы это понять, необходимо вспомнить механизм сегментной адресации памяти, используемый процессорами серии Intel. Физический адрес получается из двух компонент — сегментного адреса и смещения. Каждая компонента — двухбайтовая. Для вычисления адреса в реальном режиме работы процессора к сегментной компоненте, сдвинутой влево на четыре бита, прибавляется компонента смещения.

    Например, пусть у нас имеется логический адрес 1234h:0005h. Сегментный адрес равен 1234h, а смещение — 0005h. Сдвигаем сегментный адрес влево на четыре бита, получаем 12340h. Затем прибавляем смещение 0005h и получаем физический адрес 12345h.

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

    А что получится, если задать сегментный адрес FFFFh, то есть самое большое значение для сегментного адреса?

    Очевидно, что конец области оперативной памяти, простирающейся от 0 до 1024 Кбайт, имеет адрес FFFFh:000Fh, так как этому логическому адресу соответствует физический адрес FFFFFh. Адрес FFFFFh — это самый большой адрес, который может быть задан при использовании 20-разрядной адресации. А реальный режим работы процессора использует именно 20-разрядную адресацию.

    Зададим себе вопрос: что произойдет, если, например, при записи в память будет указан логический адрес FFFFh:0010h?

    Если в вашем компьютере установлен процессор 8086 или 8088, то произойдет запись в самую первую ячейку оперативной памяти, имеющую физический адрес 00000h, так как перенос из девятнадцатого разряда в двадцатый будет игнорирован (адресные разряды в процессоре 8086 или 8088 нумеруются от 0 до 19).

    Процессоры 80286, i386, i486 и Pentium имеют большее количество адресных линий, поэтому перенос в двадцатый разряд не будет потерян. Произойдет адресация памяти за пределами первого Мбайта!

    За счет двадцатого разряда адресной шины процессор в реальном режиме получает доступ к памяти в диапазоне адресов от FFFFh:0010h до FFFFh:FFFFh. Это почти 64 Кбайт (без шестнадцати байт). Именно эти 64 Кбайт MS-DOS может использовать для размещения своего ядра и областей данных. Все что вам нужно для того чтобы использовать таким образом область старшей памяти HMA — это две строки в файле config.sys :

    Как использовать всю доступную память

    Возможности, имеющиеся у вас для оптимизации использования оперативной памяти, сильно зависят от типа процессора и наличия расширенной или дополнительной памяти.

    IBM PC или IBM PC/XT

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

    Что еще вы можете сделать для увеличения объема доступной программам оперативной памяти? Можно сократить до минимума количество используемых драйверов и резидентных программ.

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

    Драйвер Назначение драйвера и рекомендации по использованию
    ega.sys Сохранение текущего состояния видеоадаптера EGA. Этот драйвер вам нужен только в том случае, если вы работаете с оболочкой DOSSHELL или Windows и при этом ваш компьютер оснащен видеоадаптером EGA
    country.sys Этот драйвер нужен вам только в одном случае — если вы используете интернациональную поддержку, встроенную в MS-DOS, например, работаете с символами кириллицы
    display.sys Аналогично предыдущему драйверу
    keyboard.sys Аналогично предыдущему драйверу
    printer.sys Аналогично предыдущему драйверу
    himem.sys Драйвер предназначен для управления расширенной памятью. Он бесполезен на тех компьютерах, в которых отсутствует расширенная память. В частности, на компьютерах IBM PC и IBM PC/XT
    ansi.sys Драйвер обеспечивает расширенное управление консолью и используется достаточно редко. Подключайте его только в том случае, если он действительно необходим для правильной работы используемых вами программ, о чем можно узнать из документации на программы
    ramdrive.sys Этот драйвер предназначен для организации электронного диска в оперативной памяти. Используйте его только в том случае, когда в компьютере имеется расширенная или дополнительная память достаточного объема. Учтите, что более предпочтительным способом увеличения быстродействия дисковой подсистемы является кэширование дисковой памяти
    smartdrv.exe Драйвер нужен для организации кеширования дисковой памяти. Его использование оправдано только на тех компьютерах, которые имеют расширенную или дополнительную память
    driver.sys Этот редко используемый драйвер предназначен для поддержки нестандартных или внешних НГМД
    setver.exe Драйвер позволяет «обмануть» программы, не рассчитанные на использование MS-DOS версии 6.22. Когда такие программы пытаются определить версию MS-DOS, драйвер setver.exe возвращает заранее оговоренное для каждой программы значение, например, 3.30. Если вы не запускаете программы, рассчитанные на конкретную версию MS-DOS, у вас нет необходимости использовать этот драйвер
    emm386.exe Этот драйвер используется для управления расширенной памятью в компьютерах, выполненных на базе процессоров i386, i486 или Pentium. Он совершенно бесполезен, если ваш компьютер содержит процессоры 8086, 8088, NEC20 или 80286

    IBM PC/AT с процессором 80286

    Если ваш компьютер содержит процессор 80286, вы можете предпринять следующие шаги, направленные на более эффективное использование оперативной памяти:

    • ядро операционной системы MS-DOS и ее буферы можно перенести в область адресов, лежащую выше границы 1024 Кбайт. При этом доступная для программ область оперативной памяти увеличится на несколько десятков Кбайт;
    • компьютер IBM PC/AT с процессором 80286 обычно имеет по крайней мере 384 Кбайт расширенной памяти. Эту память лучше всего задействовать для организации кеширования дисков. Кэширование дисков улучшит производительность дисковой подсистемы компьютера;
    • если вы располагаете расширенной памятью размером в несколько Мбайт, имеет смысл увеличить размер кеша до 2-4 Мбайт. Кроме того, можно организовать в расширенной памяти электронный диск ;
    • если размер расширенной памяти составляет 384 Кбайт, но имеется еще и дополнительная память, вы можете организовать кеш в расширенной памяти и электронный диск в дополнительной. Если вы работаете с программным обеспечением, использующим дополнительную память, лучше ограничиться дисковым кешем в расширенной памяти.

    Первое, что необходимо сделать при оптимизации использования памяти — перенести ядро операционной системы MS-DOS, ее буферы и рабочие области в область адресов, лежащую выше границы 1024 Кбайт. Эта возможность появилась в MS-DOS начиная с версии 5.0.

    После установки MS-DOS на компьютере IBM PC/AT файл config.sys будет содержать следующие две строки:

    Первая строка нужна для подключения драйвера himem.sys , управляющего расширенной памятью. Этот драйвер необходим для размещения MS-DOS выше границы 1024 Кбайт. Вторая строка указывает, что MS-DOS и все ее рабочие области должны быть размещены в расширенной памяти.

    Учтите, что эти две строки должны располагаться в файле config.sys именно в том порядке, в котором они были приведены выше — вначале необходимо подключить драйвер himem.sys , а затем указать MS-DOS о необходимости загрузки ее ядра и областей данных в старшие адреса памяти строкой DOS=HIGH.

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

    IBM PC/AT с процессорами i386, i486 и Pentium

    Если ваш компьютер содержит процессор i386, i486 или Pentium, к перечисленным выше возможностям добавляется еще две:

    • вы можете разместить практически все используемые драйверы и резидентные программы в расширенной памяти. При этом объем памяти, доступной прикладным программам, составит 618 — 620 Кбайт;
    • вам становится доступна эмуляция дополнительной памяти с использованием расширенной памяти.

    Остановимся подробнее на второй возможности.

    Обычно компьютеры с процессорами i386, i486 или Pentium оснащены расширенной памятью объемом от 2 до 16 Мбайт (вам могут встретиться компьютеры с еще большим объемом расширенной памяти). Однако все еще встречаются программы рассчитаны на использование дополнительной памяти.

    Получается, что у вас есть очень много расширенной памяти, но вам-то нужна дополнительная! Как быть в этом случае? Не покупать же еще и плату дополнительной памяти!

    В этом случае необходимо воспользоваться драйвером emm386.exe , входящим в состав MS-DOS. Этот драйвер использует часть расширенной памяти для эмуляции в ней дополнительной памяти. То есть у вас становится меньше расширенной памяти, но появляется дополнительная.

    Если вы — обладатель компьютера с процессором 80386 или 80486, вам доступна возможность переноса драйверов и резидентных программ в расширенную память, а также эмуляция дополнительной памяти с использованием расширенной памяти.

    Для реализации этих возможностей подключите драйвер emm386.exe :

    Эта строка должна располагаться в файле config.sys после строки, подключающей драйвер himem.sys .

    В качестве параметра вы можете указать размер эмулируемой дополнительной памяти в Кбайтах. Например, если вам нужна дополнительная память размером 1 Мбайт, используйте следующую строку:

    Если вы не укажите размер эмулируемой дополнительной памяти, будет использовано значение по умолчанию — 256 Кбайт.

    Для того, чтобы полностью отключить эмуляцию дополнительной памяти, задайте параметр NOEMS:

    В этом случае драйвер emm386.exe будет использоваться только для загрузки драйверов и резидентных программ в расширенную память.

    Однако даже если вы подключите драйвер emm386.exe , ваши резидентные программы и драйверы не попадут автоматически в расширенную память. Для того, чтобы разместить драйверы и резидентные программы в расширенной памяти, вам необходимо сделать следующее:

    • подключить драйвер himem.sys ;
    • поместить в файл config.sys строку «DOS=HIGH,UMB»;
    • для загрузки драйверов вместо оператора «DEVICE=» использовать оператор «DEVICEHIGH =»;
    • для загрузки резидентных программ в файле autoexec.bat использовать команду LOADHIGH , передав ей в качестве параметра имя и параметры загружаемой резидентной программы.


    Для примера приведем образец файла config.sys , в котором подключен драйвер emm386.exe :

    В первой строке подключается драйвер himem.sys , необходимый для управления расширенной памятью. Во второй строке подключается драйвер emm386.exe , который используется для эмуляции двух Мбайт дополнительной памяти и для загрузки резидентных программ и драйверов в расширенную память. В третьей строке указывается, что MS-DOS должен быть загружен в верхние адреса памяти, и кроме того, что должна быть использована возможность размещения драйверов и резидентных программ в расширенной памяти.

    Последние две строки — пример размещения драйверов в расширенной памяти.

    Для загрузки в расширенную память резидентных программ воспользуйтесь командой LOADHIGH или LH . Приведем фрагмент файла autoexec.bat, в котором используется загрузка резидентных программ в расширенную память:

    Первая строка демонстрирует загрузку в расширенную память драйвера клавиатуры, вторая — драйвера мыши.

    Отметим еще один важный момент, связанный с использованием драйвера emm386.exe .

    В состав MS-DOS входит программа mem.exe , предназначенная для исследования оперативной памяти. Запустив ее с параметром /f, вы увидите на экране примерно следующее:

    Программа отображает объемы свободных блоков стандартной памяти и блоков верхней памяти.

    Обратите внимание, что область верхних блоков памяти фрагментирована. В ней выделяются области с номерами 1 и 2.

    При загрузке драйверов и резидентных программ в верхнюю область памяти можно указать параметр /L, указав в нем номер используемой для загрузки области:

    Зная объем оперативной памяти, необходимый для драйверов и резидентных программ, вы можете расположить их в верхних блоках памяти оптимальным образом, указав для каждого драйвера или резидентной программы нужную область. Для определения объема резидентной части драйверов и резидентных программ вы можете использовать все ту же программу mem.exe , запустив ее с параметром /D.

    Если имеется несколько свободных блоков верхней памяти и десяток драйверов, а также резидентных программ, «ручное» их размещение в областях верхней памяти может отнять много времени. К счастью, в состав MS-DOS входит программа memmaker.exe , выполняющая такое размещение в автоматическом режиме. Иногда после автоматической оптимизации бывает полезно выполнить «ручную доводку», перемести некоторые резидентные программы в другие области верхней памяти.

    Детальное обсуждение программы memmaker.exe вы сможете найти во втором томе нашей серии книг «Персональный компьютер — шаг за шагом», который называется «Операционная система Microsoft Windows . Руководство пользователя». Заметим только, что программа memmaker.exe добавляет к номеру области еще и размер резидентной части драйвера или программы:

    Быстродействие оперативной памяти

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

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

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

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

    SETUP-программа может запускаться при включении компьютера (если нажать определенную клавишу, обычно ), либо эта программа может поставляться на дискете вместе с компьютером.

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

    Это особенно необходимо, если в вашем компьютере установлен процессор i386 или i486. Такие компьютеры обычно комплектуются быстрой памятью. И если в CMOS-памяти указано, что надо вставлять циклы ожидания при работе с памятью, компьютер не будет работать с максимальной производительностью.

    Другая возможность повышения скорости работы с памятью, но на этот раз с постоянной памятью (BIOS), часто имеется в компьютерах, выполненных на процессорах i386 или i486. Эта возможность заключается в копировании содержимого относительно медленной постоянной памяти BIOS в специальную область быстродействующей оперативной памяти с последующим преобразованием адресов. Используемая область памяти имеет специальное название — теневая память.

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

    Будет выполняться копирование BIOS в теневую память или нет — зависит от установки определенной ячейки CMOS-памяти. Для выбора правильного режима вам необходимо воспользоваться SETUP-программой.

    Как правило, SETUP-программа описывается в документации на основную плату компьютера. Возможность изменения количества тактов ожидания и режим теневой памяти обычно имеются только в компьютерах, выполненных на процессорах i386, i486 и Pentium, однако бывают и исключения. Например, модели компьютеров фирмы SUMMIT, выполненные на основе процессора 80286, могут работать без тактов ожидания. В них также имеется возможность использования теневой памяти.

    Как вылечить сервер, который считает, что все место на диске закончилось, так как df -h показывает 100% занятого места на /, но df -ih показывает 27%?

    Ubuntu 16.04 LTS (GNU/Linux 4.4.0-53-generic x86_64)

    lsof +L1 не показывает ничего.

    Перезагрузка не помогает.
    sudo touch /forcefsck и reboot не помогают.

    По факту, мне кажется, занято должно быть именно где-то 27%.

    • Вопрос задан более двух лет назад
    • 5263 просмотра

    nginx, apache и mysql не установлены

    df / -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/vda1 144G 138G 5.8G 97% /

    5.8G это конечно хорошо, только что с того?

    JustAleksei: а теперь уже можно спокойно разбираться
    du -h —max-depth=1 /
    смотрите где больше всего
    потом по той директории делаете аналогично

    Просто с 5.8 гига вы уже хоть как-то жить сможете. А это была суровая админская магия с уменьшением зарезервированного места, которого ныне слишком много резервируют под неиспользование.

    JustAleksei: вообще место может быть занятым, но вы можете не находить если файл уже был удален, но держится еще каким-то процессом.
    sudo lsof |grep deleted
    может показать такие файлы
    Пока их держит процесс они занимают место, но таки вы их можете не найти.
    Но таки это должно лечиться ребутом

    du -sh это ужасно

    Сделайте, как я сказал sudo du -h —max-depth=1 /, вам же легче будет смотреть на вывод этого дела.

    DOS, функция 36h Получить свободную память диска

    DL — номер диска (0 — текущий, 1 — А и так далее)

    AX=FFFFh, если AL содержал неверный номер диска

    Если функция выполнена успешно:

    AX — число секторов на кластер

    ВХ — число доступных кластеров

    СХ — байт на сектор

    DX — всего кластеров на диске

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

    вой памяти. Если в АХ возвращено FFFFh, значит задан неверный

    диск. Иначе свободная память (в байтах) составляет (АХ*ВХ*СХ), все-

    Dos fn 36h: дать свободную память диска

    enterspell,
    Шас уже успел сам проверить на CS:S — максимальные настройки, Singularity — средние и CoD:MW -средние. все очень даже играбельно и без лишних тормозов, но фпски еще не замерял.

    Сообщение отредактировал Black Diver — 19.10.10, 11:03

    2 марта 2010 года вышла платформа второго поколения, получившая название ION 2. Платформа включает в себя двухядерный процессоры Intel Atom второго поколения на ядре Pineview, дискретный чип NVIDIA GT218, а также чипсет NM10, выполняющий роль южного моста. Нетбук на базе ION 2 объединяет процессор Atom N450/470 (сейчас процессор Intel Atom D525 с двумя ядрами и частотой 1,8 ГГц) с интегрированным графическим ядром, чипсет Intel NM10, дискретное графическое ядро GT218 и выделенный для нужд графической подсистемы буфер памяти типа DDR3, объём которого может достигать 512 Мб. Видеочип связан с чипсетом по шине PCI Express 1.1, чья пропускная способность может варьироваться от x1 (250 Мбайт/с) до x4 (1 Гбайт/с).

    Графическое ядро GT218 в рамках платформы ION 2 может иметь 8 или 16 потоковых процессоров в зависимости от сферы применения. Так, в нетбуках с размером диагонали экрана не более 10.1 дюймов, графическое ядро будет иметь 8 потоковых процессоров на частоте 405 МГц (6 Вт), а в более крупных нетбуках и неттопах их количество будет 16 и частота будет составлять 475 МГц (12 Вт) и 535 МГц соответсвенно. Чип GT218 выпускается по 40-нм технологии и поддерживает DirectX 10.1. Предусмотрено аппаратное декодирование видео высокой чёткости в разрешении до 1080p. Нетбуки на основе ION 2 могут оснащаться экраном с поддержкой разрешения 1366×768 пикселей. Для работы с высокими разрешениями при подключении к порту HDMI придётся питать нетбук от сети, поскольку с подобной работой справится только видеочип GT218, а при работе от батареи он, как правило, отключается ради экономии электроэнергии.

    Платформа ION 2 совместима с технологией NVIDIA Optimus, которая увеличивает время автономной работы ПК от аккумуляторной батареи, что достигается за счёт автоматического переключения между интегрированным графическим контроллером Intel (обычно, Intel GMA 3150) и дискретным видеоадаптером. В силу ограничений, накладываемых технологией Optimus, нетбуки на базе ION 2 могут использовать только операционную систему Windows 7 — не только в версии Starter, но и в версии Home Premium.[1]

    Продукты на базе ION 2:
    Нетбуки:
    — ASUS Eee PC 1015N с технологией NVIDIA Optimus
    — ASUS Eee PC 1201PN без технологии NVIDIA Optimus
    — ASUS Eee PC 1215N с технологией NVIDIA Optimus
    — ASUS LAMBORGHINI Eee PC VX6 с технологией NVIDIA Optimus
    — Acer Aspire One 532G с технологией NVIDIA Optimus
    Неттопы:
    — Acer Aspire Revo RL100
    — Acer Aspire Revo AR3700
    — Acer Veriton N282G[4]
    — ASUS Eee Box PC 1501P
    — Giada slim-N20
    — Giada slim-DN230
    — Lenovo IdeaCentre Q150
    — Shuttle XS35
    — ZOTAC ZBOX HD-ID11
    — ZOTAC ZBOX HD-ID33
    — ZOTAC ZBOX HD-ID34
    — TwinBox Mini PC HL-N322G
    Планшетные ПК:
    — DreamBook ePad L11 HD
    компьютеры всё-в-одном (компьютер-моноблок):
    — ASUS EeeTop PC ET2010PN
    — ASUS EeeTop PC ET2010PNT
    — Lenovo C200
    Видеокарты:
    — Zotac ION-GPU-AE
    — Pegatron
    Материнские платы:
    — ASUS AT5IONT-I

    Тотальная очистка диска/тома (c:)

    Более года меня мучила проблема полного отсутствия памяти на диске «с» (97гб всего).

    С 80гб свободного пространства до полного нуля ситуация скатилась всего за пол года. Ни ручная чистка ни какие утилиты мне не помогали освободить память более чем на 5гб, которые снова пропадали в течении нескольких часов. Я с этим смирился но в последние пару месяцев мне это стало причинять неудобства, пропали эскизы файлов и ярлыков, программы и игры не запускались, браузер жутко тормозил. Облазил весь интернет и перепробовал кучу действий и советов но не помогало ничего, до сегодняшнего дня. Наткнулся я на совет воспользоваться очередной программой очистки «Glary Utilities» которая так же мне не чем не помогла пока я не зашел в раздел «анализатор дискового пространства» где я увидел что что папка по пути «локальный диск (с:) — Windows — System32 — config» весит 60гб.

    Доступа к ней конечно же у нас нету. И что бы увидеть что там происходит нужно в параметрах папок снять галочку с пункта «скрывать защищенные системные файлы» и естественно поставить галочку на пункте «показывать скрытые файлы и папки’.

    Далее заходим по адресу «локальный диск (с:) — Windows — System32 — config» и недоумеваем от того что там происходит. Нам нужны файлы regtrans-ms и blf

    Которых у меня было более 200 тысяч. По очереди прописываем их в поиск, дожидаемся полной загрузки, выделяем сразу все сочетанием ctrl+a и смело удаляем. те файлы которые не удаляются просто пропускаем с пометкой для всех. Я таким образом удалил более 200 тысяч файлов и освободил 60гб памяти.

    p.s скорее всего эти файлы и дальше будут плодиться со временем, чем вызвана такая проблема я понятия не имею.

    DISKPART – управление дисками, томами и разделами в командной строке Windows.

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

    Формат командной строки:

    /s — использовать сценарий DiskPart. Сценарий представляет собой текстовый файл с набором внутренних команд утилиты DISKPART.EXE

    /? — отобразить подсказку по параметрам командной строки DISKPART.

    При запуске без параметров, утилита переходит в интерактивный режим с ожиданием ввода команд пользователя. Для получения списка допустимых команд используется ввод знака вопроса или директивы help . В ответ на это действие отображается версия утилиты diskpart.exe и перечень допустимых команд DISKPART:

    По каждой из команд, также можно получить краткую справку по использованию, например по команде FORMAT:

    В справке приводится краткое описание команды, синтаксис и примеры использования:

    Утилита diskpart.exe является мощным средством, предоставляющим администратору практически весь спектр возможностей, необходимых для работы с дисками и разделами, однако, при ошибках или необдуманных действиях, ее использование может привести к краху системы и потере пользовательских данных. Поэтому, для безопасного применения DISKPART, нужно в первую очередь освоить работу с ее внутренними командами, обеспечивающими получение сведений об объектах, над которыми планируется выполнять какие-либо действия и способы выбора этих объектов.

    Для получения списка дисков используется команда:

    В результате получаем список дисков, присутствующих в системе:

    В данном случае имеется 4 физических диска, нумерация которых начинается с нуля — Диск 0 – Диск 3 . Для выбора какого-либо из них для дальнейших операций, используется команда SELECT:

    select disk 0 — выбрать первый диск.

    В списке объектов (в данном случае – дисков), получаемом по команде LIST, выбранный объект отмечается звездочкой.

    Для получения подробной информации о выбранном диске используется команда DETAIL:

    В результате отображается подробная информация о диске, выбранном командой SELECT:

    Список разделов, имеющихся на выбранном диске можно посмотреть с помощью команды:

    list partition Разделы, в отличии от дисков нумеруются начиная с единицы, а не с нуля:


    Для выполнения каких-либо действий по отношению к разделу, его нужно также выбрать командой SELECT:

    select partition 2 — выбрать второй раздел.

    Для получения детальной информации о выбранном разделе используется команда:

    Пример результат выполнения команды:

    Для получения списка логических томов используется команда:

    Подобная информация полезна при работе с флэшками и съемными дисками. В колонке Имя отображаются привычные буквы логических дисков, в колонке Метка — метка тома. Нумерация томов, как и дисков начинается с нуля. В данном примере Том 2 — это логический диск C: .

    select volume 2 — выбрать том 2

    detail volume — отобразить детальную информацию о томе, которому соответствует логический диск C: . Пример информации:

    Для отображения сведений о текущей файловой системе выбранного тома и о поддерживаемых файловых системах для форматирования используется команда FILESYSTEMS. Пример отображаемых сведений:

    Для завершения работы с DISKPART используется команда EXIT.

    Практические примеры применения утилиты diskpart.exe для решения типовых задач при работе с дисками и разделами рассматривается ниже.

    Назначение буквы скрытому системному разделу

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

    list volume — определяем список томов.

    Как видим, Том 1 — это скрытый системный раздел (c меткой ”Зарезервировано системой”), не имеющий назначенной буквы.

    select volume 1 — выбираем Том 1

    assign letter=R — назначаем тому букву R:

    Если назначение буквы пошло успешно, то отобразится соответствующее сообщение:

    Подготовка загрузочной флэшки.

    Нужно выполнить форматирование флэшки и создать на ней активный раздел.

    в строке приглашения ввести команду для отображения списка дисков:

    выбрать для последующих операций нужную флэшку:

    select disk 3 — если флэшка отображалась в списке дисков как «Диск 3». При наличии в системе нескольких дисков, обычно достаточно знать объем используемой флэшки. Однако, ошибка в выборе диска может привести к потере хранящихся на нем данных и в качестве дополнительной информации можно использовать данные полученные по подкоманде detail (после выбора командой select disk ):

    detail disk . Пример отображаемой информации:

    очистить содержимое флэшки:

    Команду clean желательно применять для удаления любого форматирования, ранее примененного к данному диску. После выполнения команды диск переходит в неинициализированное состояние. На MBR-дисках перезаписываются только сведения о структуре разделов MBR и данные скрытых секторов. На GPT-дисках перезаписываются сведения о структуре GPT-разделов, в том числе защитный MBR. Дополнительно обнуляется первый и последний мегабайт дискового пространства.

    создать первичный раздел на выбранном диске:

    create partition primary

    выполнить форматирование созданного раздела:

    format fs=ntfs Label=»FlashDisk» quick

    Параметр quick задает режим быстрого форматирования, при котором не выполняется сканирование всей поверхности раздела, а сразу выполняется запись пустого оглавления.

    сделать текущий раздел флэшки активным (установить флажок активности раздела):

    Нужно отметить, что команда active не пишет на диск какие-либо загрузочные секторы или программы загрузки операционной системы, а только устанавливает флажок активности раздела в главном загрузочном секторе диска. Все прочие операции, обеспечивающие загрузку, выполняются другим программным обеспечением (bootsect.exe, grub4dos и т.п.)

    Изменение разделов диска.

    Допустим, возникла необходимость разбить существующий на данный момент диск C: на два диска C: и D: без потери данных. Фактически, необходимо освободить часть дискового пространства раздела, которому соответствует диск C: и создать новый раздел в освободившейся области. Порядок действий:

    list disk — при необходимости, просмотреть список дисков и выбрать тот, с которым будем работать. Выбранный диск отмечается звездочкой:

    list partition — просмотреть список разделов для выбора того, от которого нужно «отнять» дискового пространства. Например:

    В данном случае, на диске имеется 3 раздела, два служебных и один, соответствующий диску C: размером 59Gb. При необходимости, уточнить сведения о разделах можно с помощью команды DETAIL PARTITION (после SELECT)

    select partition 2 — выбираем раздел, от которого будем отрезать свободное дисковое пространство.

    Для сокращения раздела (тома) используется команда SHRINK, подсказку по которой можно получить выполнив:

    Для того, чтобы освободить 10000Mb ( приблизительно 10Гб, правильнее в расчетах вместо числа 1000 использовать 1024) из выбранного раздела, выполняем команду:

    shrink desired=10000 — освободить 10000Мб.

    При выполнении команды отображается объем освободившегося дискового пространства (естественно, не совсем 10Гб):

    Теперь можно создать новый раздел, смежный с тем, у которого было отнято дисковое пространство, которое будет занято новым разделом:

    create partition primary

    Можно посмотреть, как теперь представлен список разделов диска:

    Вновь созданный раздел не имеет файловой системы, которую предстоит создать, выполнив команду форматирования. Выбираем раздел :

    select partition 4 Выбранный раздел (фокус) отмечается звездочкой в списке. При выполнении команды CREATE фокус автоматически перемещается на созданный раздел. Однако, во избежание неприятностей, стоит взять за правило, выбирать и проверять выбор перед выполнением опасных операций, как например форматирование. Подсказку по использованию команды FORMAT можно получить стандартным HELP FORMAT:

    Для быстрого форматирования раздела с использованием метки тома Disk_D и файловой системы NTFS:

    format fs=ntfs label=»Disk_D» quick

    Ждем завершения операции:

    Раздел готов к использованию, и ему можно присвоить букву командой ASSIGN:

    assign letter=d — присвоить букву D:

    В случае, если указанная буква уже назначена другому разделу, утилита выдаст сообщение об ошибке:

    Нужно либо переназначить буквы с учетом нового раздела, либо использовать первую свободную, что делается при помощи команды ASSIGN без параметров:

    При успешном присвоении буквы, отображается соответствующее сообщение:

    Аналогичным образом решается задача объединения двух смежных разделов в один. Например, созданный в рассмотренном выше случае, диск D: нужно удалить и занимаемое им место присоединить к диску C: . Естественно, команда DISKPART не занимается сохранением пользовательских данных и этим вопросом должен озаботиться сам пользователь, и до того, как будет удален раздел. Для решения задачи нужно удалить раздел 4 (Disk_D в примере выше) и на освободившееся место расширить раздел 2 (Disk_C). Для удаления раздела используется команда DELETE, а для расширения команда EXTEND. Подсказка по использованию может быть получена стандартным образом:

    Таким образом, для решения задачи, нужно выполнить последовательность команд:

    select partition 4 — выбрать раздел для удаления.

    delete partition — удалить выбранный раздел.

    Как правило, раздел используется системой и команда удаления может завершиться ошибкой:

    delete partition override — удалить выбранный раздел независимо от его использования системой.

    После удаления, необходимо переместить фокус на тот раздел, который нужно расширить:

    select partition 2 — выбрать раздел 2.

    extend — расширить раздел на весь объем смежного свободного пространства.

    HDD был 500 гб, стал 32 гб. Что случилось?

    Т.к. вы неавторизованы на сайте. Войти.

    Т.к. тема является архивной.

    Объявления на НН.РУ — Техника

    В рабочем состоянии Возможна отправка по России
    Цена: 290 руб.

    Постоянно покупаем новые Картриджи, покупаем только ОРИГИНАЛЬНЫЕ КАРТРИДЖИ в КОРОБКАХ, не распечатанные, от лазерных принтеров HP.
    Цена: 45 000 руб.

    Коммутатор engenius ews2910p neutron series 8-портовый гигабитный 61,6 вт poe контроллер управления wlan / коммутатор. — 3500 р -.
    Цена: 3 500 руб.

    Рабочий жесткий диск hdd ide seagate st380011a
    Цена: 450 руб.

    Завершилось голосование за лучшего претендента в конкурсе «Народный участковый — 2020». Официальное награждение.

    Нижегородские санитарные врачи рассказали о результатах санитарно-эпидемиологического расследования, которое они провели в детсаду.

    Каждый ребёнок может стать выдающимся, каждый способен исполнить свою мечту. Главное — правильно определить, что ему нравится, и.

    Последние пару недель всё мужское внимание и вся женская зависть были сосредоточены на одной новости — 23-летняя шлифовщица из.

    dumping physical memory to disk

    krutoy__sene #1 Отправлено 09 янв 2013 — 00:18

    возникла проблема (не у меня одного), при игре в танки комп. бывает полностью зависает и странный шум издается из наушников далее через секунд 5-10 экран становится синим и на нижней строчки пишет «dumping physical memory to disk и идет отчет с 0% до 100% «. Дабы избежать 100% я зажимаю пусковую кнопку чтобы комп. выключелся. Мой соклановец говорил что и у него тоже была такая проблема говорил что надо удолять видео из папки replays .

    Связано ли оно с этим?

    процессор: Intel Core i5 3.30 GHz
    Оперативка: 16 ГБ
    тип системы: 64-разрядная ( 7-ая винда)

    Общая оценка производительности по меркам Windows 7.5 из 7.9

    krutoy__sene #2 Отправлено 09 янв 2013 — 00:20

    QoodrooQ #3 Отправлено 09 янв 2013 — 00:20

    нет, не связано.
    1) перегрев опретивки. (скорее всего) или тупо бракованая оперативка.
    2) какое то еще железо сбоит.
    3) корявая винда.

    выстроено в порядке вероятности.

    karls0n8 #4 Отправлено 09 янв 2013 — 00:20

    sahsa761 (09 Янв 2013 — 00:18) писал:

    возникла проблема (не у меня одного), при игре в танки комп. бывает полностью зависает и странный шум издается из наушников далее через секунд 5-10 экран становится синим и на нижней строчки пишет «dumping physical memory to disk и идет отчет с 0% до 100% «. Дабы избежать 100% я зажимаю пусковую кнопку чтобы комп. выключелся. Мой соклановец говорил что и у него тоже была такая проблема говорил что надо удолять видео из папки replays .

    Связано ли оно с этим?

    процессор: Intel Core i5 3.30 GHz
    Оперативка: 16 ГБ
    тип системы: 64-разрядная ( 7-ая винда)

    Общая оценка производительности по меркам Windows 7.5 из 7.9

    В папке replays нет видео,но очищать переодически её обязательно нужно,или убери галочку»записывать бои»
    Ты не указал количество свободного места на С:,возможно там проблема

    Илон Маск рекомендует:  Что такое код pg_copy_from
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL