Операционная система MS-DOS — страница 7

  • Просмотров 4127
  • Скачиваний 435
  • Размер файла 27
    Кб

векторная таблица связи, которая содержит адреса всех остальных структур: список блоков управления памятью MCB, список блоков управления устройствами MS-DOS, таблицу файлов, дисковые буферы и т.д. Информация, содержащаяся в векторной таблице связи открывает доступ практически ко всем внутренним структурам данных операционной системы. Поля векторной таблицы связи Смещение байт Размер байт Имя поля Описание -2 2 mcb_seg Сегмент первого

блока памяти 0 4 dev_cb Указатель на первый блок управления устройствами 4 4 file_tab Указатель на таблицу файлов MS-DOS 8 4 clocr_dr Указатель на драйвер CLOCK$ 12 4 con_dr Указатель на драйвер CON 16 2 max_btbl Максимальный размер блока (в байтах) для устройств, выполняющих передачу данных отдельными блоками 18 4 disk_buf Указатель на структуру, описывающую дисковые буферы 22 4 drv_info Указатель на массив информации об устройствах 26 4 fcb_tabl Указатель на таблицу FCB 30 2

fcb_size Размер таблицы FCB 32 1 num_bdev Число устройств, выполняющих передачу отдельными блоками 33 1 lastdriv Значение LASTDRIVE в файле config.sys 34 ? null_dr Начало драйвера NUL. Этот драйвер всегда первый в списке драйверов MS-DOS Функция 52h возвращает адрес поля dev_cb. Для того чтобы получить адрес слова, содержащего сегмент первого блока памяти MCB, необходимо уменьшить значение смещения, полученного от функции на 2. Поле mcb_seg содержит сегментную компоненту

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

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

файлам на уровне кластеров, например в системах защиты файлов от несанкционированного доступа. С помощью полей clock_dr и con_dr программа может получить доступ соответственно к драйверу CLOCK$ и драйверу консоли CON. Это может понадобиться для организации вызова драйвера непосредственно из программы. Поле max_btbl содержит размер блока устройств, которые выполняют обмен данными отдельными блоками (для MS-DOS размер блока равен 512 байтам. Поле