"П.Нортон "Программно-аппаратная организация компьютера IBM PC"" - читать интересную книгу автора

- Если на целевой дискете должен создаваться новый файл, то
необходимо проверить, имеется ли свободное место в справочнике или он уже
заполнен.
- Установить формат исходной дискеты: односторонний или
двухсторонний?
- Установить формат целевой дискеты: односторонний или двухсторонний?
- Проверить, не копируется ли файл сам в себя (что запрещено).
- Проверить наличие в системе двух дисководов, поскольку для систем с
одним дисководом необходимо имитировать диск В.
- Проверить, необходимо ли вычислять размер исходного файла по его
размеру, указанному в справочнике, или он будет определяться маркером
конца файла (как для текстовых файлов в коде ASCII).
- Проверить, находится ли таблица размещения файлов для исходной
дискеты в оперативной памяти.
- Проверить, находится ли таблица размещения файлов для целевой
дискеты в оперативной памяти.
- Проверить корректность размещения исходного файла на дискете по
соответствующей таблице размещения файлов.
- Проверить, совпадает ли размер файла, указаный в справочнике, с
действительным размером.
- Установить, какой обьем памяти можно использовать в качестве буфера
при перезаписи файла.
- Проверить, больше или меньше 64К размер буфера.
- Нужно ли удалять из памяти интерпретатор команд, чтобы увеличить
размер буфера?
Вы еще не устали от этого перечисления? А ведь это еще только начало!
Пока что рассмотрен только логический уровень задачи. Ниже приводится
физический уровень, причем при его изменении опущено значительно больше
подробностей:
- Запущен ли двигатель дисковода?
- Выведена ли головка чтения/записи на нужную дорожку?
- Сколько секторов данных нужно считать/записать на этой дорожке?
- Готов ли дисковод к выполнению команды?
- Работает ли дискета? Не требуется ли перезапуск, повторная попытка
выполнения операции или повторное позиционирование головки?
- Если уже выполнялась повторная попытка, достаточно ли было сделано
попыток, чтобы выдать запрос о дальнейших действиях?
- Каким был ответ на запрос? Повторить, игнорировать или аварийно
завершить работу?
- Ожидание готовности дисковода?
- Операция чтения/записи/поиска завершилась успешно?
- Целевая дискета защищена от записи?
Все описанное выше является лишь приблизительным перечислением
подробностей операции копирования файла. А это еще относительно простая
операция ДОС. Кстати, приведенное разделение на логический и физический
уровни очень важно для работы операционной системы.
Основная забота операционной системы, такой как ДОС, заключается в
том, чтобы скрыть от пользователя эти ненужные ему подробности.
Значительная часть функций операционной системы заключается в обслуживании
устройств ввода/вывода.