Базовая система ввода-вывода (BIOS)
Место BIOS в архитектуре компьютера, аппаратно-зависимые драйверы, обеспечивающие выполнение функций по поддержке работы компьютера. Работа с каталогами иерархической файловой системы. Процесс загрузки DOS, инициализация и конфигурирование системы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.02.2013 |
Размер файла | 133,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
Введение
1. Базовая система ввода-вывода (BIOS)
1.1 Модуль обработки прерываний (MSDOS.SYS)
2. Процесс загрузки DOS
2.1 Инициализация DOS
2.2 Внешняя память на магнитных дисках
2.3 Физический дисковый адрес
3. Средства чтения секторов BIOS и DOS
3.1 Логическая структура диска
3.2 Файл конфигурации CONFIG.SYS
Заключение
Список использованной литературы
Введение
MS DOS является наиболее широко распространенной операционной системой для персональных компьютеров. Число прикладных программ для MS-DOS составляет десятки тысяч, Такого большого количества программ в быстроразвивающейся компьютерной сфере никогда не было. Это разнообразие программ позволяет удерживать операционной системе MS DOS ведущее положение среди более прогрессивных и более мощных операционных систем. Естественно, что эта ОС имеет свои достоинства и недостатки.
1. Базовая система ввода-вывода (BIOS)
Модуль BIOS индивидуален для каждой вычислительной системы и поставляется её изготовителем. В этом модуле содержатся аппаратно-зависимые драйверы следующих устройств:
§ Консольный.дисплей с клавиатурой (СОМ).
§ Устройство построчной печати (РRN).
§ Последовательный канал связи (АUХ).
§ Часы/календарь (СLOCK).
§ Дисковое устройство начальной загрузки (блочно-ориентированное устройство).
BIOS находится в постоянной памяти (постоянном запоминающем устройстве, ПЗУ) и в архитектуре компьютера занимает особое место. Эту систему можно рассматривать, с одной стороны, как составную часть аппаратных средств; с другой стороны, BIOS является, по существу, одним из программных модулей DOS. Входящие в этот модуль программы обеспечивают выполнение важных функций по поддержке жизнеспособности компьютера.
Одна из первых функций BIOS - автоматическое тестирование основных аппаратных компонентов при включении машины, включая оперативную память (RAM - Random Access Memory). Если в процессе тестирования памяти или других аппаратных компонентов обнаруживаются ошибки, BIOS выдает на экран соответствующие сообщения. Дальнейшая работа машины на этом прекращается и пользователю нужно принимать меры к устранению выявленной ошибки.
Вторая важная функция BIOS, вступающая в действие по окончании тестирования, - вызов блока начальной загрузки DOS. Поскольку DOS - сложная система, состоящая из нескольких модулей, загрузка ее в память проходит в две ступени; сначала BIOS загружает с системного диска в оперативную память специальный блок начальной загрузки, а затем уже передает на него управление, а тот, в свою очередь, осуществляет загрузку других модулей DOS. При такой двухступенчатой организации загрузки с BIOS снимается забота о поиске и настройке различных модулей DOS. Единственное условие нормальной работы BIOS - это обнаружение на фиксированном месте системного диска блока начальной загрузки. При этом роль системного диска в ПК может играть гибкий или жесткий магнитный диск. компьютер bios драйвер файл
Третья важная функция BIOS - обслуживание системных вызовов или прерываний. Системные вызовы вырабатываются программными или аппаратными средствами с целью выполнения различных операций. Для реализации системных вызовов используется механизм прерываний. Суть этого механизма заключается в том, что текущая работа машины может быть приостановлена на короткое время одним из сигналов, который указывает на возникновение ситуации, требующей немедленной обработки.
Прерывания можно разделить на три группы: аппаратные, логические и программные.
Источники аппаратных прерываний - падение напряжения питания, нажатие клавиши на клавиатуре, приход очередного импульса от счетчика времени, возникновение специальных сигналов от накопителей на гибких или жестких дисках и др.
Логические, или процессорные, прерывания возникают при различных нестандартных ситуациях в работе основного процессора - деление на нуль, переполнение регистров, появление "точки останова" и др.
Программные прерывания - самая обширная категория. Вырабатываются они, когда программа хочет получить определенный сервис со стороны другой программы, причем этот сервис обычно связан с работой аппаратных средств.
Каждое прерывание имеет свой уникальный номер и с ним может быть связана определенная подпрограмма, призванная обслуживать возникшую ситуацию. Сама обслуживающая подпрограмма, вообще говоря, тоже может быть приостановлена другим прерыванием, но чаще всего на период работы подпрограммы, обслуживающей некоторое прерывание, другие прерывания "маскируются", т.е. не обслуживаются немедленно, а ставятся в очередь.
Итак, в аппаратных компонентах машины, в самой DOS и в прикладных программах могут вырабатываться прерывания, которые нужно обслуживать. На BIOS возлагается задача обслуживания прерываний нижнего уровня - тех, которые требуют непосредственного управления аппаратными компонентами. Этим прерываниям присвоены номера с 0 по 31 (шестнадцатиричные номера 0 - 1F). Другие прерывания - с номерами 32-63 (шестнадцатиричные номера 20 - 3F) - относятся к более высокому уровню, и их обслуживание возлагается на другие модули DOS.
Таким образом, BIOS является своеобразной программной оболочкой вокруг аппаратных средств ПК, предоставляя возможность другим программам, в частности самой DOS, обращаться к аппаратным компонентам через механизм прерываний.
1.1 Модуль обработки прерываний (MSDOS.SYS)
В отличие от описанного выше модуля расширения IO.SYS, имеющего дело, как и BIOS, с прерываниями нижнего уровня модуль обработки прерываний MSDOS.SYS образует верхний уровень системы, с которыми взаимодействует большинство прикладных программ (почему этот модуль DOS и называют основным или ядром системы).
Компонентами данного модуля являются подпрограммы, обеспечивающие работу файловой системы, устройств ввода/вывода (клавиатуры, монитора, принтера, коммуникаций), обслуживание некоторых специальных ситуаций, связанных с завершением программ, их искусственным прерыванием и обработкой ошибок. Некоторые из этих подпрограмм довольно велики по объему.
Деление сервисных функций DOS на два уровня обусловлено соображениями модульности и будущего развития системы. Функции, реализуемые модулем MSDOS.SYS, в первую очередь используются командами DOS (обрабатываемыми командным процессором: DIR, COPY и др.), но с тем же успехом они могут вызываться прикладными программами.
При обращении к функциям DOS из прикладных программ производится стандартный вызов прерывания 33; при этом в один из регистров микропроцессора должен быть занесен шестнадцатеричный номер вызываемой функции. В другие регистры вызывающая программа должна поместить аргументы выполняемой операции, если они нужны, а по окончании обработки из регистров могут быть получены результаты выполненной операции. Точно так же производятся обращения к прерываниям BIOS.
Все функции сгруппированы в соответствии с характером предоставляемого ими сервиса. Так, функции с шестнадцатеричными кодами О-С обеспечивают посимвольный обмен со стандартными внешними устройствами. Функции D-24 и 27-29 составляют обширную номенклатуру для работы с файловой системой, причем все они опираются на использование так называемого "блока управления файлами" (FСB-File Control Block) - специальной таблицы с параметрами, сопровождающими каждый файл. В этих операциях используется также выделенная область памяти для передачи данных между прикладной программой и функциями DOS (DTA - Data/Disk Transfer Area).
Начиная с версии 2.0, в ДОС введены новые функции для работы с файловой системой (частично повторяющие старые). Коды этих функций: ЗС-46. Они более удобны для работы (в них не используется FCB и можно не задавать адрес DTA) и при этом не противоречат старым, так что возможно их совместное использование. Некоторые из новых функций (40, 44) обеспечивают работу с дисковыми файлами и с внешними устройствами, трактуемыми как файлы. Это дает дополнительное удобство с точки зрения разработки прикладных программ.
Обе указанные группы дополняются функциями работы с каталогами иерархической файловой системы. Эти функции имеют шестнадцатеричные номера 11-12, 39-3В, 45-47, 4E-4F, 56-57.
Для разработки больших прикладных систем, состоящих из наборов взаимодействующих программ, большую ценность представляют функции 31 и 48-4D, позволяющие выделять и освобождать области памяти, а также загружать в оперативную память и запускать подчиненные программы (подзадачи). При образовании и запуске подзадачи ей передаются все файлы, открытые в ведущей ("родительской") задаче, а также описание операционной среды, в которой с помощью команд конфигурации могут быть определены различные параметры.
При запуске любой программы ДОС предоставляет в ее распоряжение всю имеющуюся свободную память. Следовательно, при запуске подзадач ведущая программа должна сама регулировать объем занятой памяти, выделяя ее в нужные моменты запускаемым подзадачам. Для этого используются вышеупомянутые функции 48-4А.
Следует также обратить внимание на три особых прерывания под десятичными номерами 34-36. В отличие от всех других прерываний, обслуживаемых DOS, эти три прерывания могут обслуживаться самой прикладной программой. В векторы этих прерываний прикладная программа может занести адреса своих резидентных подпрограмм, которые должны адекватным образом (т.е. в соответствии с замыслом разработчика) обрабатывать три особые ситуации.
Завершение задачи.
Прерывание задачи в результате нажатия пользователем клавиш Ctrl + Break.
Возникновение "фатальной" (неисправимой) ошибки.
Разработчику прикладной системы предоставляется возможность самому решать, что нужно делать, в каждом из этих случаев, если он не хочет воспользоваться стандартным сервисом DOS.
Довольно часто при разработке прикладных систем возникает вопрос, каким уровнем сервиса воспользоваться для решения той или иной частной задачи (например, чтения каталогов, прямого доступа к файлам или обмена символами с терминалом). Возможностей для этого, по меньшей мере, три:
При разработке прикладной системы на языке высокого уровня, например, Паскаль или Си, можно воспользоваться стандартными или библиотечными процедурами/функциями для достижения нужного эффекта. Это самый надежный и простой путь, к тому же гарантирующий переносимость программ на другую аппаратную конфигурацию. Встроенные и библиотечные подпрограммы языка высокого уровня не обеспечивают, однако, различных нюансов доступа к аппаратным средстеам и файловой системе. Поэтому при всем удобстве их использования часто возникает необходимость в дополнительных возможностях.
Использование подпрограмм DOS, доступных через прерывания 32-63, дает в руки разработчика широкий диапазон средств для работы с аппаратурой ПЭВМ и файловой системой. (Кстати говоря, встроенные и библиотечные функции языков высокого уровня в конечном счете тоже транслируются в прерывания ДОС, хотя этого не видно, в исходном тексте программы, с которым имеет дело разработчик). Большинство современных трансляторов с языков высокого уровня для ПЭВМ обеспечивает возможность прямого обращения к прерываниям ДОС с помощью специальных процедур. Параметры таких процедур обычно указывают номер прерывания и значения основных регистров микропроцессора. При необходимости можно делать то же самое и несколько иначе - путем составления небольших программ на языке ассемблера и последующей совместной загрузки этих программ с программами на языке высокого уровня.
Так или иначе, у разработчика прикладной системы есть возможность непосредственно обращаться к прерываниям и функциям DOS. По сравнению с обычным использованием встроенных или библиотечных процедур это требует некоторого умения и повышенной аккуратности, но зато дает программисту дополнительные возможности. Особую ценность в этом отношении представляют упоминавшиеся выше функции для посимвольного обмена с клавиатурой и дисплеем, для распределения памяти, организации подзадач и др.
Точно так же, как осуществляются обращения к прерываниям DOS верхнего уровня, можно обращаться и к прерываниям нижнего уровня, обслуживаемым BIOS. С точки зрения программиста, способы обращения к тем и другим прерываниям совершенно идентичны. Однако прерывания BIOS с кодами 0-31 дают большую близость к аппаратуре, избавляют от сервиса, который иногда может оказаться избыточным (например, повторного чтения с диска при неудачном первом чтении и др.). При выполнении операций через BIOS в целом достигается большая эффективность и быстродействие, однако прикладная программа начинает сильно зависеть от конкретной модели ПЭВМ, что может сделать ее несовместимой с другими типами ПЭВМ, даже использующими ту же операционную систему.
Таким образом, выбор наиболее подходящего уровня и способа общения с аппаратными средствами определяется целями, критериями и сложностью разрабатываемой системы. Первый из вышерассмотренных способов связывает прикладную систему с конкретным языком программирования, второй - с операционной системой, третий - с конкретной архитектурой ПЭВМ.
2. Процесс загрузки DOS
Работоспособный компьютер с операционной системой, установленной на жестком диске, после включения автоматически выполняет процедуру загрузки DOS. Как известно, при включении компьютера в нем создаются условия, заставляющие процессор начать выполнение программы, записанной в постоянном запоминающем устройстве - ПЗУ. Эта программа выполняет тестирование памяти и элементов процессора (процедура POST), после чего пытается прочитать с дискеты, установленной на дисководе А: самый первый сектор, где расположена так называемая загрузочная запись (Boot record), т. е. в сущности программа начальной загрузки. Если при включении компьютера на дисководе А: не установлена дискета (а это нормальная процедура включения машины, укомплектованной жестким диском), программа ПЗУ, не обнаружив дискеты, обращается к жесткому диску и считывает его первый сектор, в котором располагаются главная загрузочная запись (Master boot record) и таблица разделов жесткого диска. Программа главной загрузочной записи просматривает таблицу разделов, находит активный раздел (которым чаще всего является логический диск С:) и считывает самый первый сектор этого раздела, где располагается его загрузочная запись (Boot record). Программа загрузочной записи диска С: отыскивает на диске системные файлы IO.SYS и MSDOS.SYS и загружает их в оперативную память.
2.1 Инициализация DOS
После загрузки в память системных файлов начинается конфигурирование системы. Из корневого каталога загружаемого диска считывается файл CONFIG.SYS и выполняются его директивы: загружаются в память и устанавливаются драйверы, указанные в директивах DEVICE; выделяются буферы DOS, описанные в директиве BUFFERS; расширяется системная таблица файлов в соответствии с директивой FILES и т. д. Таким образом, в процессе конфигурирования определяется объем оперативной памяти, занимаемый резидентной частью DOS и, соответственно, оставшийся объем свободной памяти для загрузки прикладных программ.
После окончания обработки файла CONFIG.SYS с диска считывается и загружается в память командный процессор COMMAND.СОМ. Этот файл COMMAND.COM отыскивается в корневом каталоге того диска, с которого выполнялась загрузка системы (т. е, А: или С:). Если, однако, в файл CONFIG.SYS включена директива SHELL с описанием пути к командному процессору, он будет считан из указанного в этой директиве каталога. Таким образом, возникает возможность "подставить" системе тот вариант файла COMMAND.COM, который нас больше устраивает. Необходимость в этом может возникнуть, например, из-за повреждения основного файла COMMAND.COM.
Командный процессор, получив управление, прежде всего считывает из корневого каталога загружаемого диска файл AUTOEXEC.BAT (если он существует) и выполняет включенные в него команды. Выполнив последнюю команду этого файла, командный процессор выводит на экран системный запрос и входит в цикл ожидания команд оператора. При необходимости загрузиться повторно (например, при "зависании" системы, когда она перестает функционировать и не отзывается на нажатия клавиш клавиатуры) можно выключить машину и тут же включить ее снова. Однако каждое включение компьютера, как и любого электронного или электрического прибора, отрицательно сказывается на его долговечности. Поэтому при зависании системы желательно не выключать машину, а воспользоваться возможностью "мягкой" перезагрузки, которая реализуется одновременным нажатием трех клавиш: "Ctrl", "Alt" и "Del". Эта команда заставляет ПЗУ BIOS выполнить всю описанную выше процедуру начальной загрузки за исключением тестирования. Жесткую перезагрузку можно выполнить, нажав клавишу "Reset".
В процессе работы на компьютере довольно часто возникает необходимость изменить конфигурацию DOS (например, загрузить новый драйвер или выгрузить установленный ранее), а также подкорректировать команды файла AUTOEXEC.BAT. Неудачное изменение состава файлов AUTOEXEC.BAT и, особенно, CONFIG. SYS часто приводит к неэффективной или неправильной работе системы. Для облегчения отладки процесса загрузки в состав MS DOS 6.2 включена возможность пошагового выполнения директив файла CONFIG.SYS и команд файла AUTOEXEC.BAT.
Через короткое время после включения компьютера начинается чтение системных файлов и на экран выводится сообщение
Starting MS-DOS... (Стартует MS-DOS...)
Нажатие в этот момент определенных клавиш позволяет задать режим последующего выполнения файлов CONFIG.SYS и AUTOEXEC.BAT.
2.2 Внешняя память на магнитных дисках
В этой главе мы полностью оставляем вне рассмотрения программирование контроллера дисков на уровне портов ввода-вывода как ввиду сложности этого уровня и принадлежности его скорее курсу "Периферийные устройства", так и потому, что экспериментирование на таком уровне может привести к выводу из строя аппаратуры. Предметом нашего рассмотрения станут средства чтения/записи BIOS и DOS, логическая структура дисков и средства, обеспечивающие работу с файловой подсистемой DOS. Отметим, что экспериментировать на этих уровнях также следует с осторожностью, так как ошибки программиста, хотя и не приведут к порче аппаратуры, но могут привести к потере информации на носителях (что и случалось у автора при отладке приводимых ниже программных примеров). Из этих соображений мы во всех примерах ограничиваемся операциями чтения, не затрагивая запись на диски.
2.3 Физический дисковый адрес
Предполагая, что читатель в общих чертах знаком с конструкцией диска и дисковода, мы лишь напомним здесь те аспекты построения аппаратуры, которые играют существенную роль для дальнейшего рассмотрения.
Дискета представляет собой круглую пластину, покрытую с двух сторон магнитным материалом. Информация записывается раздельно на две стороны дискеты. В дисководе к поверхности дискеты прижимаются две (по одной с каждой стороны) головки чтения/записи. Пара головок может перемещаться вдоль радиуса дискеты, занимая на нем ряд фиксированных положений. При вращении дискеты точки ее поверхности, которые могут находиться в контакте с головками, образуют концентрические окружности, именуемые дорожками. Дорожки делятся на секторы. Поскольку обмен информацией с дисками происходит через прямой доступ к памяти, сектор - это наименьший объем (блок) информации, передаваемый за одну операцию чтения/записи. Объем сектора - 512 байт.
Жесткий диск представляет собой два или более дисков, посаженных на одну ось. Все головки чтения/записи здесь, как и для дискеты образуют жесткий блок, то есть перемещаются все вместе. Для жесткого диска вполне органичным является понятие цилиндра - совокупности всех дорожек, расположенных на разных поверхностях и равноудаленных от оси вращения. С точки зрения адресации понятия "дорожка" и "цилиндр" являются синонимами.
Сектор является минимальной адресуемой единицей при обращениях к внешней памяти. Адрес сектора на внешней памяти состоит из трех составляющих:
· номер дорожки (нумерация дорожек начинается с 0);
· номер головки (нумерация головок начинается с 0);
· номер сектора на дорожке (нумерация секторов начинается с 1).
При записи на диск больших объемов информации мы заинтересованы в том, чтобы свести к минимуму затраты по переключению на следующий сектор диска. Отсюда вопрос: какой сектор считать следующим при последовательной записи (чтении)? Принят такой порядок его определения. Следующим считается сектор, расположенный следующим на той же дорожке, под той же головкой (при записи сектора головки за счет вращения диска установятся над следующим сектором, так что затраты времени на переключения практически нулевые). При заполнении всей дорожки следующим принято считать первый сектор дорожки, расположенный на том же цилиндре под следующей головкой (этот сектор будет находиться под головками, а электрическое переключение на другую головку - процесс быстрый). И только при заполнении всего цилиндра меняется номер дорожки в адресе (этот процесс требует механического перемещения головок и, следовательно, гораздо больших затрат времени).
3. Средства чтения секторов BIOS и DOS
В BIOS работа с дисками поддерживается прерыванием 0x13. Это весьма "богатое" прерывание, имеющее много функций, определяемых содержимым регистра AH. Ниже приведена краткая сводка функций этого прерывания (номера функций 16-ричные):
0 |
- сброс дисковой подсистемы; |
|
1 |
- состояние дисковой подсистемы; |
|
2 |
- чтение секторов; |
|
3 |
- запись секторов; |
|
4 |
- контроль секторов; |
|
5,6,7 |
- форматирование дорожки; |
|
8 |
- параметры накопителя; |
|
9 |
- инициализация таблиц BIOS для жесткого диска; |
|
A |
- длинное чтение (жесткий диск); |
|
B |
- длинная запись (жесткий диск); |
|
C |
- поиск цилиндра (жесткий диск); |
|
D |
- альтернативный сброс (жесткий диск); |
|
E |
- чтение буфера секторов (жесткий диск); |
|
F |
- запись буфера секторов (жесткий диск); |
|
10 |
- проверка готовности (жесткий диск); |
|
11 |
- перекалибровка дисковода (жесткий диск); |
|
12,13,14 |
- диагностика контроллера (жесткий диск); |
|
15 |
- тип диска; |
|
16 |
- состояние замены (гибкий диск); |
|
17 |
- установка типа; |
|
18 |
- установка типа носителя; |
|
19 |
- парковка головок; |
|
1A,1B,1C |
- ESDI жесткий диск. |
Для целей нашего пособия наиболее интересны функции 2 и 3 - чтение и запись. Формат обращения к этим функция прерывания 0x13 (содержимое регистров) следующий:
AH |
- номер функции; |
|
AL |
- количество секторов, которое нужно прочитать/записать; CX - номер дорожки и сектора (см. ниже); DH - номер головки; DL - физический номер дисковода (0 - дисковод A, 1 - B, 0x80 - 1-й жесткий диск, 0x81 - 2-й жесткий диск); |
|
ES:BX |
- адрес области оперативной памяти, с которой происходит обмен. |
После выполнения прерывания 0x13 флаг переноса устанавливается в 0, если операция прошла без ошибок или в 1 при наличии ошибок, в последнем случае регистр AH содержит код ошибки.
Номер дорожки и сектора задается в регистре CX в следующем упакованном формате:
ttttttttTTssssss,
где
· t...t - младшие 8 бит номера дорожки;
· TT - старшие 2 бита номера дорожки;
· s...s - номер сектора на дорожке (6 бит).
В 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; (10.1)
где
· t, h, s - физический адрес (дорожка, головка, сектор);
· ns - количество секторов на дорожке,
· nh - количество головок чтения/записи.
Для получения абсолютного номера сектора надо к вычисленному значению прибавить еще некоторую величину s0 - абсолютный номер сектора начала логического диска.
Как мы увидим ниже, величины ns, nh, s0 могут быть получены из системной информации, находящейся на самом носителе.
В программе примера 10.1, иллюстрирующей применение средств чтения секторов средствами BIOS и DOS наибольший интерес (кроме вызывающих последовательностей для прерываний) представляют функции Daddr_to_Sect и Sect_to_Daddr, осуществляющие перевод физического адреса в логический и наоборот соответственно. Программа запрашивает способ задания адреса, формирует по заданному физическому адресу логический или наоборот, вводит один и тот же сектор дважды (сначала используя прерывание BIOS, а затем - DOS) и выводит на экран содержимое начального участка сектора, при двух вариантах ввода - результаты должны быть одинаковыми. Физический адрес в программе описывается структурой daddr, поля t, h, s которой содержат компоненты физического адреса, а ts - заготовку для регистра CX при обращении к прерыванию 0x13.
Предупредим читателя, что приведенная программа будет правильно работать только с дискетой, отформатированной на 360 Кбайт, так как величины nh, ns, s0 (параметры формулы 10.1) и другие (nt, nls) имеют константные значения, свойственные именно этому формату.
/*== ПРИМЕР 10.1 ==*/
/*========== Чтение сектора средствами BIOS и DOS ========*/
#include <dos.h>
/* типы и структуры данных */
#define byte unsigned char
#define word unsigned int
/* описание функций */
void Sect_to_Daddr(word sect,struct daddr *d);
word Daddr_to_Sect(struct daddr *d);
word get(word min, word max, char *name);
struct daddr {
byte h; /* головка */
word s, /* сектор */
t, /* дорожка */
ts; /* сектор, дорожка упакованные */
} a; /* физический дисковый адрес */
word ls; /* номер логического сектора */
/* параметры дискеты */
word nh=2, /* число головок */
ns=9, /* число секторов на дорожке */
nt=40, /* число дорожек */
s0=0, /* номер 1-го сектора */
nls=720; /* общее число секторов */
byte drive; /* номер логич.диска */
byte buff13[512]; /* буфер сектора */
byte buff25[512]; /* буфер сектора */
/*==== main ====*/
main() {
union REGS rr;
struct SREGS sr;
byte fx, flag;
byte mode;
int i, i0, y;
for (fx=0; fx==0;) {
printf("диск (A|B) >"); drive=getche();
if ((drive!='a')&&(drive!='b')) printf("\7");
else fx=1;
}
drive-='a';
for (flag=0; flag==0;) {
printf("\nA - задание физического адреса;\n");
printf("S - задание номера сектора;\n");
printf("Q - конец работы.\n");
printf("--->"); mode=getche(); printf("\n");
switch(mode) {
case 'q': flag=1; continue;
case 'a': a.h=get(0,nh-1,"головка");
a.t=get(0,nt-1,"дорожка");
a.s=get(1,ns,"сектор");
a.ts=(a.t<<8)|a.s|((a.t&0x300)>>2);
ls=Daddr_to_Sect(&a);
break;
case 's': ls=get(0,nls-1,"логич.сектор");
Sect_to_Daddr(ls,&a);
break;
default: printf("\7"); continue;
}
/* чтение сектора при помощи прерывания 13. */
rr.h.ah=2; /* функция ЧТЕНИЕ */
rr.h.al=1; /* секторов 1 */
rr.h.dl=drive; /* адрес диска */
rr.h.dh=a.h; rr.x.cx=a.ts; /* адрес на диске */
sr.es=FP_SEG(buff13); /* адрес в ОП */
rr.x.bx=FP_OFF(buff13);
int86x(0x13,&rr,&rr,&sr);
/* Проверка ошибок чтения */
if (rr.x.cflag) {
printf("Ошибка при INT 13 : %u\n",rr.h.ah);
exit(0);
}
/* Чтение при помощи прерывания DOS 25 */
rr.h.al=drive; /* логич.диск */
rr.x.cx=1; /* секторов 1 */
rr.x.dx=ls; /* номер сектора */
sr.ds=FP_SEG(buff25); /* адрес в ОП */
rr.x.bx=FP_OFF(buff25);
int86x(0x25,&rr,&rr,&sr);
/* Проверка ошибок чтения */
if (rr.x.cflag) {
printf("\nОшибка при INT 25 : %u. ",rr.h.ah);
exit(0);
}
/* дамп буферов */
clrscr();
printf(" INT 13 : гол=%d дор=%-2d сект=%d |",
a.h,a.t,a.s);
printf("| INT 25 : лог.сект=%d \n",ls);
printf(" -------------------------------------|");
printf("|-------------------------------------\n");
for(i0=0,y=3;y<25; y++,i0+=12) {
for (i=0; i<12; printf(" %02X",buff13[i0+i++]));
printf(" || ");
for (i=0; i<12; printf(" %02X",buff25[i0+i++]));
printf("\n");
}
printf(" Нажмите любую клавишу..."); getch();
}
}
/*=== формирование физич.дискового адреса из # сектора ===*/
void Sect_to_Daddr(word sect,struct daddr *d) {
/* sect - номер сектора, a - адрес на диске */
int s;
d->s=sect%ns+1;
s=sect/ns;
d->h=s%nh;
d->t=s/nh;
d->ts=(d->t<<8)|d->s|((d->t&0x300)>>2);
}
/*=== формирование # сектора из физич.дискового адреса ===*/
word Daddr_to_Sect(struct daddr *d) {
word s;
s=((d->t*nh)+d->h)*ns+d->s-1+s0;
return(s);
}
/*==== ввод какого-либо параметра ====*/
word get(word min, word max, char *name) {
byte fx;
word val;
for (fx=0; fx==0;) {
printf("%s >",name); scanf("%d",&val);
if ((val<min)||(val>max)) printf("\7");
else fx=1;
}
return (val);
}
Нетрудно построить несложную программу, перехватывающую прерывание 0x13, которая покажет нам, что выполнение прерывания 0x25 сводится к изменению формата входных данных и обращению к прерыванию 0x13 (написание такой программы предоставляем читателю в качестве самостоятельного упражнения).
Логический номер сектора, задается в 2-байтном регистре DX, следовательно, не может быть больше, чем 65535, это накладывает ограничение на объем логического диска - не более 32 Мбайт. Поскольку, начиная с версии DOS 4.0, допускается больший объем логических дисков, для работы с такими дисками применяется другой формат обращений к прерываниям 0x25, 0x26, а именно:
struct parm { /* блок параметров чтения/записи */
unsigned long sect_num; /* номер логич. сектора */
unsigned int sect_cnt; /* число секторов */
void far *ptr; /* адрес области в ОП, с которой происходит обмен */
};
В этом случае номер сектора 4-байтный, что практически снимает ограничение на число секторов на логическом диске.
3.1 Логическая структура диска
Некоторые области диска содержат системную информацию, используемую DOS при работе с данным диском. К таким областям относятся:
· Главная Загрузочная Запись (MBR - Master Boot Record) - только для жесткого диска;
· Загрузочный Сектор логического диска (Boot-сектор);
· Таблица Размещения Файлов (FAT - File Allocation Table);
· Корневой Каталог (Root Directiry).
MBR занимает самый первый сектор жесткого диска (дорожка 0, головка 0, сектор 1). Причины введения MBR в логическую структуру диска следующие. Формат некоторых системных данных и обращений к прерываниям 0x25, 0x26 в ранних версиях DOS не предусматривал возможности работы с жестким диском объемом более 32 Мбайт. Начиная с версии DOS 3.30, это ограничение обходится путем разбиения жесткого диска на два или более логических дисков, объем каждого из которых менее 32 Мбайт. И хотя уже в версии 4.0 снято ограничение на объем логического диска, возможность разбиения диска остается, так как обеспечивает целый ряд дополнительных удобств (например, разделение внешней памяти между пользователями).
Формат MBR следующий (в программе примера 10.2 он описан структурой struct MBR):
· первые 466 (0x1BE) байт занимает программа начальной загрузки;
· далее следует таблица разделов, состоящая из четырех элементов;
· последние два байта - признак конца таблицы - код 0xAA55.
Программа начальной загрузки, содержащаяся в MBR, выполняет поиск по таблице активного раздела (логического диска, с которого должна происходить загрузка DOS), чтение в память Boot-сектора этого раздела и передачу управления на него.
Элемент таблицы разделов описан в программе примера 10.2 структурой struct Part. Добавим некоторые комментарии к этому описанию.
Поле ActFlag принимает значение 0x80 для активного раздела или 0 - для неактивного.
В физических адресах начала и конца раздела дорожка и сектор задаются в формате регистра CX прерывания 0x13. Раздел, как правило, начинается и заканчивается на границе цилиндра. Если первый сектор цилиндра занимает MBR (или ее продолжение в расширенном разделе DOS), то остальные сектора этой дорожки не используются, и раздел начинается с сектора 1, головки 1 этой дорожки. Неиспользуемые сектора называются скрытыми.
Поле SysCode для MS-DOS может принимать значения: 1 - логический диск объема менее 32 Мбайт, 12-битная FAT; 4 - логический диск объема менее 32 Мбайт, 16-битная FAT; 6 - логический диск объема более 32 Мбайт; 5 - расширенный раздел DOS.
Последнее значение SysCode означает, что сектор, задаваемый адресом начала раздела в свою очередь содержит MBR (без программы загрузки, но с таблицей разделов по смещению 446), в этой таблице в свою очередь может содержаться описатель расширенного раздела и т.д. Системная утилита FDISK, производящая разбиение физического диска на логические, использует только два элемента в каждой таблице разделов, позволяя создать один первичный (соответствующий логическому диску) и один расширенный раздел DOS.
Поле RelSect содержит номер начального сектора (логический адрес) относительно начала раздела внешнего по отношению к данному.
Программист не может прочитать MBR средствами DOS. Для прерывания 0x25 задается логический адрес - номер сектора внутри данного логического диска, а сама MBR не принадлежит никакому логическому диску.
Пример 10.2 демонстрирует разбиение логического диска. Начальный адрес для чтения задается: 0,0,1. При помощи прерывания 0x13 программа считывает сектор по заданному адресу, далее происходит поэлементный анализ таблицы разделов - пока не встретится признак конца таблицы или раздел нулевого размера. Значения полей элемента таблицы выводятся на экран. Манипуляции, описываемые макросами TRK и SECT, обеспечивают распаковку номера дорожки и сектора. Если поле SysCode содержит признак расширенного раздела, то устанавливается новый дисковый адрес, считывается новый сектор и анализируется новая таблица.
/*== ПРИМЕР 10.2 ==*/
/*=== Чтение и анализ гл.загруз.записи твердого диска ===*/
#include <dos.h>
#define byte unsigned char
#define word unsigned int
#define dword unsigned long
#define SECT(x) x&0x3f
#define TRK(x) (x>>8)|((x<<2)&0x300)
main()
{
/* структура элемента раздела */
struct Part {
byte ActFlag; /* описатель*/
/* физический адрес начала раздела */
byte Begin_Hd; /* # головки */
word Begin_SecTrk; /* # сектора и дорожки */
byte SysCode; /* код системы */
/* физический адрес конца раздела */
byte End_Hd; /* # головки */
word End_SecTrk; /* # сектора и дорожки */
dword RelSec; /* # сектора начала */
dword Size; /* число секторов */
};
/* стpуктуpа главной загpузочной записи */
struct MBR {
char LoadCode[0x1be]; /* пpогpамма загpузки */
struct Part rt[4]; /* 4 эл-та pазделов */
word EndFlag; /* подпись MBR */
} mbr;
int x=10,y; /* экpанные кооpдинаты */
byte head=0; /* номеp головки (0) */
word Sect_Trk=1; /* номеp доpожки и сектоpа (0,1) */
int ndrive=0; /* номеp лог.диска */
word *EndList; /* указатель на подпись */
union REGS rr;
struct SREGS sr;
word i;
clrscr();
printf("Разделы жесткого диска # 1\n");
printf("==========================\n\n");
printf("Лог.диск \nПризнак = \n
printf("Код системы = \nНачало: гол.= \n");
printf(" дор. = \n сект. = \n");
printf("Конец: гол.= \n дор. = \n");
printf(" сект.= \nНач.сектор = \n");
printf("Размер = \n");
NEXT:
/* Чтение при помощи прерывания 13. Только таким путем
можно прочитать MBR, т.к. она не принадлежит никакому
логическому диску. */
rr.h.ah=2; /* Чтение */
rr.h.al=1; /* Секторов 1 */
rr.h.dl=0x80; /* Тв.диск */
rr.h.dh=head; /* Головка */
rr.x.cx=Sect_Trk; /* Дорожка, сектор */
sr.es=FP_SEG(&mbr); /* Адрес буфера в ОП */
rr.x.bx=FP_OFF(&mbr);
int86x(0x13,&rr,&rr,&sr);
/* Проверка ошибок чтения */
if (rr.x.cflag) {
printf("Ошибка чтения: %x. ",rr.h.ah);
printf("Нажмите любую клавишу...\n\7");
getch();
exit();
}
/* В нач.установках EndList указывает на 1-й
байт 1-го элемента pаздела */
for (EndList=(word *)&mbr.rt[(i=0)];
/* пока не встpетилась подпись MBR или pаздел
нулевого pазмеpа */
(*EndList!=0xaa55)&&(mbr.rt[i].Size>0L);
/* пеpеход к след. эл-ту (++i), EndList указывает
на 1-й байт следующего элемента pаздела */
EndList=(word *)&mbr.rt[++i]) {
/* кооpдинаты куpсоpа */
y=4; x+=7; gotoxy(x,y++);
if (mbr.rt[i].SysCode==5) printf("Ext ");
else printf("%-7c",'C'+ndrive++);
gotoxy(x,y++); printf("%02xH ",mbr.rt[i].ActFlag);
gotoxy(x,y++); printf("%-7d",mbr.rt[i].SysCode);
gotoxy(x,y++); printf("%-7d",mbr.rt[i].Begin_Hd);
gotoxy(x,y++);
printf("%-7u",TRK(mbr.rt[i].Begin_SecTrk));
gotoxy(x,y++);
printf("%-7u",SECT(mbr.rt[i].Begin_SecTrk));
gotoxy(x,y++); printf("%-7d",mbr.rt[i].End_Hd);
gotoxy(x,y++);
printf("%-7u",TRK(mbr.rt[i].End_SecTrk));
gotoxy(x,y++);
printf("%-7u",SECT(mbr.rt[i].End_SecTrk));
gotoxy(x,y++); printf("%-7lu",mbr.rt[i].RelSec);
gotoxy(x,y++); printf("%-7lu",mbr.rt[i].Size);
if (mbr.rt[i].SysCode==5) {
/* если код системы 5, pаздел содеpжит свою таблицу
pазделов; устанавливается ее дисковый адpес,
и новая таблица считывается в память */
head=mbr.rt[i].Begin_Hd;
Sect_Trk=mbr.rt[i].Begin_SecTrk;
goto NEXT;
}
}
gotoxy(x,y++); printf("\n\nНажмите любую клавишу...");
getch();
}
Следует предупредить, что описанный формат MBR обеспечивается системной утилитой FDISK. На дисках, разбиение которых осуществлялось другими средствами, можно встретить отступления от такого формата.
Поскольку дискеты не разбиваются на логические диски, MBR на них отсутствует. Структуры дискеты и логического диска одинаковы и включают в себя следующие элементы:
· Boot-сектор;
· FAT (2 копии);
· Корневой Каталог;
· область данных.
Boot-сектор является самым первым сектором логического диска (номер логического сектора - 0). Для дискеты его физический адрес - дорожка 0, головка 0, сектор 1; для логического диска на жестком диске адрес опеределяется полями Begin_Hd, Begin_SecTrk соответствующего элемента таблицы разделов. При загрузке системы с дискеты именно этот сектор считывается в память программой POST и выполняет дальнейшую загрузку; при загрузки с жесткого диска этот сектор считывается загрузчиком, содержащимся в MBR. Boot-сектор содержит информацию о физических параметрах диска и о размещении на нем системной информации, используемой далее системой при работе с диском, поэтому даже если дискета и несистемная, то есть, загрузка с нее не выполняется, на ней все равно имеется Boot-сектор с данными о носителе.
Формат Boot-сектора различен для версий DOS до 4.0 и от 4.0 и выше. В программном примере 10.3 структурой struct BootRec описан Boot-сектор для DOS 4.0 и выше. Дадим некоторые комментарии к полям этой структуры.
Первые 3 байта сектора содержат команду JMP, обеспечивающую переход на программу загрузки. Следующие 8 байт - символьный идентификатор программного средства, производившего форматизацию дискеты (диска); если дискета форматировалась системной утилитой FORMAT, там записан номер версии операционной системы. Поле SectSize всегда содержит значение 512. Поле ClustSize показывает, сколько секторов содержится в одном кластере - единице распределения дисковой памяти. Поле ResSect содержит число секторов, расположенных до начала FAT, обычно это 1 - перед FAT имеется только Boot-сектор. Число копий FAT (поле FatCnt) всегда 2. Поле RootSize показывает размер Корневого Каталога, чтобы узнать число секторов в корневом каталоге надо содержимое этого поля разделить на 16. Поле TotSecs - общее число секторов на диске для диска, отформатированного в DOS 4.0 или выше, содержит 0, если число секторов больше 65535, в этом случае число секторов может быть выбрано из поля LongTotSecs. Байт Media идентифицирует тип носителя; возможны такие его значения: 0xFF - 2 стороны, 8 секторов на дорожке; 0xFE - 1 сторона, 8 секторов на дорожке; 0xFD - 2 стороны, 9 секторов на дорожке; 0xFC - 1 сторона, 9 секторов на дорожке; 0xF9 - 2 стороны, 15 секторов на дорожке; 0xF8 - жеский диск. Поле FatSize - число секторов в одной копии FAT. Поля TrkSecs, HeadCnt содержат значения, необходимые для преобразования дискового адреса по формуле 10.1. Поля HidnSecL и HidnSecH для DOS 4.0 и выше можно интерпретировать как одно поле: dword HidnSec - это количество скрытых секторов, упоминавшихся выше. Для DOS ниже 4.0 используется 2-байтное число скрытых секторов - HidnSecL, и на этом область данных Boot-сектора кончается. Поле Drive - номер дисковода, на котором диск форматировался. Поле DOS4_flag содержит код 0x29 (символ ')' - правая скобка), если диск форматировался в DOS 4.0 и выше. Серийный номер тома - случайное число, записываемое в поле VolNum при форматизации, может использоваться в дальнейшем для идентификации диска, как и метка тома (поле VolLabel). Наконец, поле FatForm содержит символьную последовательность 'FAT12' или 'FAT16', в зависимости от формата FAT. После этой системной информации в Boot-секторе записана программа начальной загрузки.
Для версий DOS более ранних, чем 4.0 блок системной информации в Boot-секторе имеет меньший размер - до поля HidnSecL включительно. Поля от SectSize по FatSize включительно образуют так называемый Блок Параметров BIOS (BPB - BIOS Parameter Block), он формируется в оперативной памяти драйвером диска и в дальнейшем используется при всех операциях с данным диском. В DOS 4.0 и выше принят Расширенный BPB - от поля SectSize до LongTotSecs включительно.
Опыт общения со студентами подсказывает нам, что будет нелишним напоминание о том, что формат Boot-сектора зависит не от версии DOS, установленной на той ПЭВМ, на которой дискета читается, а от версии на той ПЭВМ, где дискета форматировалась. Поскольку формат ранних версий полностью перекрывается форматом поздних, совместимость по носителям сохраняется.
Программа примера 10.3 демонстрирует чтение Boot-сектора дискеты или логического диска. Boot-сектор считывается средствами DOS как логический сектор 0. Поскольку прерывание 0x25 имеет два варианта применения - в зависимости от объема диска, программа запрашивает объем диска и по-разному готовит исходные данные для чтения сектора. Считанный сектор программа распечатывает - в зависимости от содержимого поля DOS4_flag в формате той или иной версии.
Следом за Boot-сектором на диске расположена FAT. С точки зрения распредения дискового пространства диск разбит на кластеры. Кластер представляет собой группу последовательно расположенных секторов. Если DOS получает запрос на выделение дискового пространства, она выделяет сразу целый кластер. Размер кластера является компромиссом между двумя противоречивыми требованиями: с точки зрения экономии дискового пространства выгоден малый размер кластера, так как для маленького файла (размером даже в один байт) выделяется целый кластер, большая часть которого не используется. Но с другой стороны, при малом размере кластера их на диске получится очень много, и управление ими усложняется. FAT представляет собой "карту" дискового пространства - массив элементов, каждый из которых соответствует одному кластеру диска. Номер элемента соответствует номеру кластера.
Поскольку область диска, содержащая системную информацию, распределена предварительно, она в FAT не отражается. Первые два элемента FAT не используются (первый байт содержит код, совпадающий с полем Media Boot-сектора), нумерация кластеров области данных диска начинается, таким образом, с 2. Размер элемента FAT может быть 12 или 16 бит (см. поле SysCode в элементе раздела жесткого диска, а также поле FatForm в Boot -секторе). Описание содержимого полей далее дается для 12-битного формата FAT, в скобках указываются значения для 16-битного формата. Значения элементов FAT от 2 до 0xFEF (0xFFEF) включительно - информационные значения. Такое значение - номер следующего кластера, распределенного данному файлу. Таким образом, FAT обеспечивает списковую структуру распределения - каждый ее элемент содержит указание на следующий элемент. Поскольку кластеры распределяются файлу по мере его заполнения, файл не обязательно занимает смежные кластеры, FAT может обеспечить связывание в цепочку разнесенных по диску кластеров. Другие значения элементов зарезервированы для системной информации. Значение 0 индицирует свободный кластер. Значения элементов от 0xFF0 до 0xFF6 (от 0xFFF0 до 0xFFF6) - резервные кластеры. Значение 0xFF7 (0xFFF7) - сбойный кластер. Значения от 0xFF8 до 0xFFF (от 0xFFF8 до 0xFFFF) - признак конца цепочки, последнего кластера файла.
Программа примера 10.4 считывает FAT и распечатывает поэлементно ее начальную часть. Для определения начального сектора и размера FAT программа вынуждена вначале считать в память Boot-сектор так же, как это делалось в предыдущем примере. Для диска, отформатированного в DOS 4.0 или выше программа может определить формат FAT по содержимому поля FatForm Boot-сектора, в противном случае программа запрашивает формат у оператора.
Выборка элемента 12-битной FAT ведется по следующему алгоритму: выбирается слово по смещению i*1,5 от начала FAT, где i - номер кластера; если i четное, содержимое элемента FAT составляют младшие 12 бит этого слова, в противном случае - старшие 12 бит.
Для 16-битной FAT слово по смещению i*2 содержит элемент FAT.
Как уже упоминалось, на диске хранятся две идентичные копии FAT, расположенные одна за другой. Следом за FAT размещается Корневой Каталог. Корневой Каталог состоит из Элементов Каталога. В программе примера 10.5 Элемент Каталога описывается структурой struct Dir_Item. Вот некоторые дополнительные комментарии к полям этой структуры.
Поле fname содержит имя файла или подкаталога, причем для файла байты 0-7 поля содержат имя, а 8-10 - расширение, неиспользуемые байты поля заполнены пробелами. Если файл удаляется из каталога, то в соответствующем элементе первый символ имени заменяется на код 0xE5, это оставляет возможность восстановления случайно удаленного файла, если, однако, за это время Элемент Каталога не будет использован для нового файла. Код 0 в первом символе имени означает, что элемент свободен и никогда не использовался. При внесении в каталог нового файла система сначала использует элементы удаленных файлов, и лишь затем - свободные.
...Подобные документы
Система BIOS как базовая система ввода и вывода и важнейший компонент персонального компьютера. Программное обеспечение, используемое в BIOS материнских плат. Основные функции BIOS, порядок загрузки системы. Проверка стабильности работы компьютера.
доклад [94,9 K], добавлен 15.09.2013Программные модули основной BIOS (базовой системы ввода-вывода). Программа тестирования при включении питания компьютера. Реализация системы BIOS в виде одной микросхемы, установленной на материнской плате компьютера. Типы, версии и функции системы BIOS.
реферат [190,6 K], добавлен 19.08.2010Базовая система ввода-вывода информации. Базовые функции интерфейса и настройки оборудования. Основные понятия и функционирование BIOS. Сведения о системной BIOS компьютера. Затенение ROM-памяти. Самотестирование процессора, модулей оперативной памяти.
реферат [21,7 K], добавлен 12.12.2011BIOS (базовая система ввода-вывода) - реализованная в виде микропрограмм, часть системного программного обеспечения. Загрузка с помощью BIOS. Программа инициализации. Виды и назначение звуковых сигналов при возникновении сбоя при загрузке компьютера.
реферат [514,1 K], добавлен 12.04.2012Основные понятия и функционирование BIOS. Затенение ROM-памяти. Работа системной BIOS при включении компьютера. Программа CMOS Setup Utility настройки BIOS. Содержание основных разделов программы BIOS Setup. Настройка параметров компьютера.
реферат [47,5 K], добавлен 29.11.2006Основные составляющие системного блока. Назначение материнской платы. Базовая система ввода-вывода – Bios. Понятие периферийного устройства. Запоминающие устройства и их виды. Открытая архитектура в устройстве ПК. Устройства для ввода и вывода данных.
реферат [478,5 K], добавлен 18.12.2009Использование двоичной системы представления данных и принцип хранимой программы Неймана. Периферийные устройства: клавиатура, мышь, накопитель, принтеры и протеры. Базовая система ввода-вывода BIOS и операционная система DOS. Внешняя и внутренняя память.
шпаргалка [35,2 K], добавлен 01.02.2009Основные сведения о системной BIOS компьютера, представляющей собой микросхему постоянной памяти ПЗУ, или ROM, расположенную на материнской плате. Основные разделы программы установки Phoenix-Award BIOS CMOS Setup Utility. Настройка работы процессора.
реферат [34,3 K], добавлен 23.05.2015Анализ причин неисправностей основных узлов компьютера, описание методов его ремонта и диагностики. Процесс начальной загрузки, тестирование основных компонентов компьютера. Перепрошивка BIOS, неисправность HDD, ремонт флоппи-дисковода и CD-ROM.
курсовая работа [54,3 K], добавлен 02.01.2010Базовые разделы BIOS и основные доступные возможности для его настройки: Standard CMOS Features, Advan-ced BIOS Features, Chipset features setup и Integrated Peripherals. Настройки, определяющие быстродействие компьютера, режимы работы его компонентов.
статья [17,4 K], добавлен 03.04.2010BIOS как базовая система ввода-вывода, его внутренняя структура и основные элементы, модуль расширения и его задачи. Базовый модуль DOS. Функции командного процессора. Утилиты: понятие и содержание, особенности функционирования, главные цели и задачи.
презентация [219,7 K], добавлен 13.08.2013Изучение программы базовой системы ввода-вывода (BIOS) и её настроек. Разработка компьютерной обучающей программы-тренажера "Настройка BIOS" в объектно-ориентированной среде Delphi. Тестирование данного программного продукта и экономические затраты.
дипломная работа [54,5 K], добавлен 09.10.2013Назначение BIOS, определение хода запуска, первоначальное тестирование и первичная загрузка интерфейсов компьютера. Опции и базовые установки BIOS Setup, редактирование опций разделов Primary Master, Primary Slave, Secondary Master и Secondary Slave.
статья [29,1 K], добавлен 03.04.2010Операционные системы, среды и оболочки. Компоненты персонального компьютера: центральный процессор, память, устройства ввода-вывода, контроллер видеопамяти. Управление диском, способы установки драйверов. Алгоритм начальной загрузки операционной системы.
презентация [113,9 K], добавлен 24.07.2013BIOS, который поддерживает технологию Plug-and-Play. Главное назначение наращиваемого программно-аппаратного интерфейса. Отличия в процессе загрузки BIOS и UEFI. Характеристика основных преимуществ UEFI BIOS. Платформы, использующие EFI, инструментарий.
контрольная работа [1,6 M], добавлен 29.01.2012Изучение подсистемы ввода-вывода и файловой системы ОС семейства Windows NT. Анализ особенностей работы приложения TotalCommander и его взаимодействия с файловой системой и подсистемой ввода-вывода. Взаимодействие TotalCommander с сетевыми адаптерами.
лабораторная работа [1,1 M], добавлен 12.06.2012Поиск и устранение неисправностей в аппаратных частях компьютерных систем. Сборка системного блока и подключение периферийных устройств. Конфигурирование и настройка Bios. Подготовка жесткого диска к работе. Установка операционной системы Windows 98.
отчет по практике [448,2 K], добавлен 21.02.2010Общая информация о компьютере. BIOS. Материнская плата. Операционная система. Логические и физические накопители. Арифметический и мультимедийный тест процессора, тест пропускной способности компьютера и кэш-памяти с помощью программы SiSoftware Sandra.
контрольная работа [3,0 M], добавлен 21.02.2009Распространенные проблемы и необходимость перепрошивки. Перепрошивка под Windows и под DOS. Применение программы-прошивальщика и бинарного файла с микрокодом. Обновление BIOS из BIOS через встроенное меню FlashRom, запуск процесса обновления firmware.
статья [15,1 K], добавлен 03.04.2010Исследование типовой структуры шины персонального компьютера. Подсистема ввода-вывода в ядре операционной системы. Преобразование запросов на ввод-вывод в аппаратные операции. Блочные, символьные и сетевые устройства. Процесс чтения из дискового файла.
презентация [1,8 M], добавлен 24.01.2014