Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

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

Автор:   •  Март 26, 2024  •  Лабораторная работа  •  2,196 Слов (9 Страниц)  •  30 Просмотры

Страница 1 из 9

Лабораторная работа № 15-16

 «Получение навыков в работе с главной загрузочной записью жесткого диска»

Цель работы: получение практических навыков в работе с главной загрузочной записью жесткого диска.

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен

уметь: 

- осуществлять разработку кода программного модуля на современных языках программирования;

- создавать программу по разработанному алгоритму как отдельный модуль;

-  выполнять отладку и тестирование программы на уровне модуля

знать: 

- основные этапы разработки программного обеспечения;

- основные принципы технологии структурного и объектно-ориентированного программирования;

- основные принципы отладки итестирования программных продуктов

Краткие теоретические и учебно-методические материалы

по теме лабораторной работы

Жесткий диск представляет собой два или более дисков, посаженных на одну ось. Все головки чтения/записи здесь, как и для дискеты образуют жесткий блок, то есть перемещаются все вместе. Для жесткого диска вполне органичным является понятие цилиндра - совокупности всех дорожек, расположенных на разных поверхностях и равноудаленных от оси вращения. С точки зрения адресации понятия "дорожка" и "цилиндр" являются синонимами. Сектор является минимальной адресуемой единицей при обращениях к внешней памяти. Адрес сектора на внешней памяти состоит из трех составляющих:

  • номер дорожки (нумерация дорожек начинается с 0);
  • номер головки (нумерация головок начинается с 0);
  • номер сектора на дорожке (нумерация секторов начинается с 1).

В DOS для чтения/записи секторов служат прерывания (прерывания, а не функции DOS!) 0x25 (чтение) и 0x26 (запись). Обычный формат обращения к этим прерываниям  следующий:

AL

- номер логического диска (0 - A, 1 - B, 2 - C, etc.);

CX

- количество секторов, которое нужно прочитать /записать; DX - логический номер сектора;

DS:BX

- адрес области оперативной памяти, с которой происходит обмен.

На выходе, как и для прерывания 0x13, устанавливается флаг переноса, а регистр AH содержит код ошибки при наличии таковой. Заметим, что дисковый адрес задается здесь не физический, а логический - номер сектора относительно начала логического диска. Нумерация секторов внутри логического диска начинается с 0, и номер логического сектора может быть вычислен как:

logs = ( (t * ns) + h) * nh + s-1;    (1),

где

  • t, h, s - физический адрес (дорожка, головка, сектор);
  • ns - количество секторов на дорожке,
  • nh - количество головок чтения/записи.

Для получения абсолютного номера сектора надо к вычисленному значению прибавить еще некоторую величину s0 - абсолютный номер сектора начала логического диска.

Некоторые области диска содержат системную информацию, используемую DOS при работе с данным диском. К таким областям относятся:

  • Главная Загрузочная Запись (MBR - Master Boot Record) - только для жесткого диска;
  • Загрузочный Сектор логического диска (Boot-сектор);
  • Таблица Размещения Файлов (FAT - File Allocation Table);
  • Корневой Каталог (Root Directiry).

Пример:

Прочитать и выполнить форматный вывод на экран Главной Загрузочной Записи жесткого диска на своем рабочем месте.

Программа состоит из основной программы main(), которая реализует все действия для чтения главной загрузочной записи.

Переменные в основной программе:

x, y - экpанные кооpдинаты;

head - номеp головки (0);

Sect_Trk - номеp доpожки и сектоpа (0,1);

ndrive=0 - номеp логического диска;

EndList - указатель на подпись.

Кроме того, в программе есть такие структуры:

Структура элемента раздела:

  struct Part {

    byte ActFlag;     /* признак активного раздела */

                /* физический адрес начала раздела */

      byte Begin_Hd;                  /* # головки */

      word Begin_SecTrk;   /* # сектора та дорожки */

    byte SysCode;                   /* код системы */

...

Скачать:   txt (14.8 Kb)   pdf (105.1 Kb)   docx (197 Kb)  
Продолжить читать еще 8 страниц(ы) »
Доступно только на Essays.club