Similar presentations:
Системное программирование. Базовая система ввода/вывода (BIOS). Лекция 1
1. МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ ИНСТИТУТ СФЕРЫ ОБСЛУЖИВАНИЯ И ПРЕДПРИНИМАТЕЛЬСТВА (ФИЛИАЛ)
ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГОУЧРЕЖДЕНИЯ ВЫСШЕГО ОБРАЗОВАНИЯ «ДОНСКОЙ ГОСУДАРСТВЕННЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» В Г. ШАХТЫ РОСТОВСКОЙ ОБЛАСТИ
(ИСОиП (филиал) ДГТУ в г. Шахты)
СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ
ЛЕКЦИЯ №1
2. БАЗОВАЯ СИСТЕМА ВВОДА/ВЫВОДА (BIOS):
БАЗОВАЯ СИСТЕМАВВОДА/ВЫВОДА (BIOS):
BIOS (basic input/output system - базовая система ввода-вывода) - это набор микропрограмм
системного программного обеспечения низкого уровня, записанных в ПЗУ (постоянное запоминающее
устройство), имеющая программу для проверки установленной конфигурации (система POST), начальной
загрузки операционной системы и управления системами компьютера. Является одним из основных
устройств компьютера и находится на материнской плате. Микросхемы часто называют также чипом, а
набор микросхем - чипсетом. Микросхема BIOS является чипом, так как находится в одной микросхеме.
Они очень чувствительны к статическому электричеству.
Микросхема BIOS предназначена для установки параметров системы. Изначально в ней применяются
заводские настройки, принятые по умолчанию, но в процессе модернизации такие установки приходится
настраивать в соответствии с нуждами пользователя.
BIOS представляет собой элементы памяти и содержит:
- тестовую систему POST (Power On Self Test - самотестирование при включении электропитания),
проверяющую после включения компьютера основные его компоненты;
- аппаратные драйверы основных устройств компьютера;
- программу установки основных параметров и аппаратной конфигурации. Значения параметров при
этом записываются в специальный контроллер периферии, который содержит область памяти размером
100-130 байт памяти. Записанные значения, чтобы они не обнулялись, поддерживаются при помощи
аккумуляторной батарейки в то время, когда к компьютеру не подключено электропитание.
Основной программой BIOS является POST (Power-On Self Test, в переводе «самотестирование при
старте») - программа, которая начинает выполняться после включения компьютера. POST выполняет
тестирование устройств, подключенных к компьютеру, и готовит оперативную память для загрузки
операционной системы.
Программа Setup является составной частью BIOS а для ее запуска служит программа CMOS Setup. При
помощи данной программы возможно управлять работой всего железа компьютера, а именно
процессором, чипсетом, оперативной памятью и другими компонентами.
3. Интерфейс BIOS Setup и приемы работы с параметрами:
Интерфейс BIOS Setup и приемыработы с параметрами:
В основном, программа BIOS Setup предполагает текстовый интерфейс с
возможностью управления при помощи клавиатуры. В главном окне программы
BIOS Setup имеется меню с перечнем основных разделов программы Setup. Это
главное меню BIOS Setup как правило представленно в виде двух столбцов.
Все разделы BIOS Setup имеют схожую структуру.
1. В верхней части окна выводится наименование текущего раздела или
подраздела.
2. В левой части располагается список всех доступных параметров выбранного
раздела. Кроме определенных параметров, могут быть названия подразделов,
которые имеют треугольные стрелки в своем обозначении.
3. Справа от наименования параметров выводятся их текущие значения. Когда
параметр и его значения отображаются бледным цветом, это значит, что либо он
предназначен только для чтения, либо же для его редактирования нужно изменить
другой связанный параметр.
4. В правой части окна как правило выводится краткая информация о выбранном
параметре, а в нижней части — подсказка по использованию функциональных
клавиш.
В программе BIOS Setup можно использовать следующие управляющие клавиши:
(самостоятельно).
4. Интерфейс BIOS Setup и приемы работы с параметрами:
Интерфейс BIOS Setup и приемыработы с параметрами:
Некоторые ключевые адреса проверяются после включения компьютера:
1. После включения источник питания проводит самотестирование и в случае положительного результата теста
выдает на материнскую плату сигнал Power Good. Все это происходит за 0.5 сек.
2. После получения сигнала Power Good таймер перестает генерировать подаваемый на процессор сигнал Reset.
3. CPU начинает выполнять код, который записан в BIOS по адресу FFFF:0000. По данному адресу записана
команда перехода на реально выполняемый код ROM BIOS.
4. BIOS проводит тестирование системы на наличие ошибок, в случае нахождения которых будет подан лишь
звуковой сигнал, так как видеоадаптер еще не инициирован.
5. Для того, что бы найти программу работы с видеоадаптером, BIOS сканирует адреса от C000:0000 до
C780:0000. В случае нахождения программы, BIOS проверяет контрольную сумму кода. При совпадении суммы с
заданной управление передается BIOS видеоадаптера и на монитор выводится первичная информация. В случае,
если BIOS видеоадаптера на найдена, управление передается, встроенному в BIOS материнской платы, драйверу.
6. Сканируются следующие адреса памяти начиная с C800:0000 до DF80:0000 с целью обнаружения BIOS каких
либо еще устройств в системе. В случае их обнаружения так же проверяется контрольные суммы кодов и затем
управление этих устройств отдается их встроенным BIOS.
7. По адресу 0000:0472 BIOS проверяет значение слова, определяющего тип загрузки – холодная или горячая. В
случае холодной загрузки в работу будет запущена POST, в случае горячей – POST будет пропущен.
8. Выполняется POST (в случае холодного пуска) для проверки всех компонентов системы. При отсутствии
фатальных ошибок выдается встроенным динамиком короткий сигнал.
9. ROM BIOS производит поиск дискеты в дисководе (при соответствующей настройке) и читает на ней сторону 0,
цилиндр 0 сектор 1. Этот сектор загружается по адресу 0000:7С00 и проверяет, является ли дискета загрузочной. В
случае повреждения этих данных или же дискета не является загрузочной, то на экран выводится
соответствующее сообщение.
10. Если в дисководе нет дискеты, то BIOS читает MBR (Memory Boot Record), которая лежит в первом секторе
жесткого диска и загружает его (сектор) в память по адресу 0000:7С00.
ОЗУ и ПЗУ разделять на диаметрально противоположные памяти нельзя. Часть адресного пространства ОЗУ
отводится под данные и коды BIOS. Т.е., во время работы компьютера BIOS является частью оперативной памяти.
5. Системное ПО. Периферия ПК:
Системное ПО. Периферия ПК:В компьютерной терминологии термин «периферия» объединяет собой все устройства ПК, кроме
процессора и оперативной памяти. Есть и другие термины для этих устройств, например, «устройства
ввода-вывода данных», «дополнительные устройства» и др.
Периферийные устройства персонального компьютера — это устройства, которые подключаются к
компьютеру с помощью специальных разъёмов. Ниже приведены примеры основных устройств, которые
можно часто встретить на компьютерах.
1. Монитор, дисплей, экран.
2. Клавиатура. Это устройство для ввода информации. Все клавиши разделены на несколько групп:
Буквенно-цифровые;
Управляющие (клавиши Enter, Backspace, Shift, Ctrl, Alt, Win, Caps Lock, Tab, Print Screen, Scroll
Lock, Pause Break, Num Lock);
Функциональные (клавиши F1 – F12);
Клавиши управления курсором (Стрелки, Insert, Delete, Home, End, Page Up, Page Down);
Малая цифровая клавиатура.
3. Мышь. Это устройство-манипулятор, которое преобразует движения руки пользователя в движения
курсора на экране. Минимальный набор – это две клавиши и колесико прокрутки, некоторые модели могут
иметь расширенный набор: более одного колесика и дополнительные клавиши по левой и правой стороне
мышки.
Кнопки мыши обычно принято называть «левая кнопка мыши» (ЛКМ, Mouse 1) и «правая кнопка мыши»
(ПКМ, Mouse 2), под колесиком обычно тоже имеется третья дополнительная кнопка.
4. Принтер. Это устройство для вывода (печати) информации на бумагу.
5. Сканер. Устройство для передачи информации с бумажного носителя в компьютер. Отсканировав
изображение, мы получим картинку. В случае если сканируется текст и его нужно отредактировать,
применяются специальные программы для распознавания текста. Одна из популярных программ, которая
распознает текст со сканированного документа ABBYY FineReader, которая распространяется как платный
программный продукт.
Сканеры подключаются через USB.
6. Клавиатура:
Клавиатура:Практически ни одна программа не обходится без обращения к клавиатуре.
Программа может использовать клавиатуру по-разному. Она может задержать свое выполнение до тех пор, пока
оператор не введет какое-нибудь число или пока не нажмет какую-нибудь клавишу. Выполняя некоторую работу,
программа может периодически проверять, не нажал ли оператор на клавишу, изменяющую режим работы
программы. Резидентные программы могут контролировать все нажатия на клавиши, активизируясь при нажатии
определенной заранее комбинации. Можно использовать прерывание, вырабатываемое клавиатурой, например,
для завершения работы программы. Клавиатура представлена в виде одной микросхемы, которая выполняет
специализированные функции. Она отслеживает нажатия на клавиши и посылает номер нажатой клавиши в
микропроцессор. Номер клавиши, посылаемый клавиатурным процессором, однозначно связан с распайкой
клавиатурной матрицы и не зависит напрямую от обозначений, нанесенных на поверхность клавиш. Этот номер
называется скан-кодом (Scan Code).
Слово scan ("сканирование"), подчеркивает тот факт, что клавиатурный компьютер сканирует клавиатуру для
поиска нажатой клавиши.
Но программе нужен не порядковый номер нажатой клавиши, а соответствующий обозначению на этой клавише
ASCII-код. Этот код не зависит однозначно от скан-кода, т.к. одной и той же клавише могут соответствовать
несколько значений ASCII-кода. Это зависит от состояния других клавиш. Например, клавиша с обозначением '1'
используется еще и для ввода символа '!' (если она нажата вместе с клавишей SHIFT).
Поэтому все преобразования скан-кода в ASCII-код выполняются программным обеспечением. Как правило, эти
преобразования выполняют модули BIOS. Для использования символов кириллицы эти модули расширяются
клавиатурными драйверами.
Если нажать на клавишу и не отпускать ее, клавиатура перейдет в режим автоповтора. В этом режиме в
центральный компьютер автоматически через некоторый период времени, называемый периодом автоповтора,
посылается код нажатой клавиши. Режим автоповтора облегчает ввод с клавиатуры большого количества
одинаковых символов.
Следует отметить, что клавиатура содержит внутренний 16-байтовый буфер, через который она осуществляет
обмен данными с компьютером.
7. Прерывания. Клавиатурное прерывание:
Прерывания. Клавиатурноепрерывание:
Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом
выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику
прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный
код.
Использование прерываний при работе с медленными внешними устройствами позволяют совместить
ввод/вывод с обработкой данных в центральном процессоре и в результате повышает общую
производительность системы. Некоторые прерывания (первые пять в порядке номеров) зарезервированы для
использования самим центральным процессором на случай каких-либо особых событий вроде попытки деления
на ноль, переполнения и т. п.
Причины:
1. События, происходящие в периферийных устройствах (внешн).
2. Программное прерывание – вызов супервизора (внутр).
3. Неопределенные события в процессах. (внутр).
4. Действия оператора. (внешн).
5. Прерывания по таймеру. (внешн).
Каждой конкретной причине прерывания назначен номер от 0 до 255. Некоторые номера прерываний уже
назначены аппаратно процессором, другие присваиваются аппаратной системой, в которую встроен процессор.
(Например, прерывания дискового накопителя). Еще одни зарезервированы для дальнейшего расширения, а все
остальные могут использоваться программами. Когда возникает прерывание, процессор использует номер
прерывания, как индекс в таблице. Из таблицы извлекается адрес обработки прерывания. Обработчик
вызывается для производства конкретной обработки, требуемой прерыванием. Похоже, как будто в программе в
точке прерывания вставлена команда вызова.
Запись процедуры прерывания должна быть такой, чтобы прерванная программа продолжалась так, как будто
ничего не произошло. Необходимо запоминать и восстанавливать PSW и регистры, используемые процедурой
прерывания, и возврат должен происходить к команде, следующей за командой, выполненной до прерывания.
8. Прерывания. Клавиатурное прерывание:
Прерывания. Клавиатурноепрерывание:
В зависимости от источника возникновения сигнала прерывания делятся на:
- асинхронные, или внешние (аппаратные) — события, которые исходят от внешних
источников (например, периферийных устройств) и могут произойти в любой произвольный
момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш
клавиатуры, движение мыши, кончилась бумага в принтере. Во всех этих случаях требуется
прервать выполнение текущей программы и перейти на выполнение другой программы
(подпрограммы), обслуживающей данное событие. Факт возникновения в системе такого
прерывания трактуется как запрос на прерывание (англ. Interrupt request, IRQ);
- синхронные, или внутренние — события в самом процессоре как результат нарушения
каких-то условий при исполнении машинного кода: деление на ноль, появление
несуществующего кода команды, обращение программы в область памяти, для нее не
предназначенную, сбой при выполнении передачи данных или операции в АЛУ и многое
другое;
- программные (частный случай внутреннего прерывания) — инициируются
исполнением специальной инструкции в коде программы. Программные прерывания как
правило используются для обращения к функциям встроенного программного обеспечения
(firmware), драйверов и операционной системы.
9. Прерывания. Клавиатурное прерывание:
Прерывания. Клавиатурноепрерывание:
Все прерывания устройства подключаются к контроллеру прерываний, а контроллер к процессору.
Прерывания от некоторых периферийных устройств более срочные и важные, чем другие. Если
прерывания от двух устройств возникают одновременно, то контроллер передает в процессор
прерывание с более высоким приоритетом, а второе запоминает. Только процессор завершает
обработку первого прерывания, контроллер сообщает ему о втором. Контроллер прерываний
узнает о том, что прерывание обработалось, по специальной команде: OUT – код конца
прерывания выводит в порт, подключенный к контроллеру. Эта команда записывается в конце
процедуры прерывания.
Организация прерываний должна быть обеспечена определенными аппаратными и программными
средствами, которые называют подсистемой прерываний.
Подсистема прерываний должна обеспечивать выполнение следующих функций:
- обнаружение изменения состояния внешней среды (запрос на прерывание);
- идентификация источника прерывания;
- приоритет запросов - разрешение конфликтной ситуации в случае одновременного
возникновения нескольких запросов;
- приоритет программ - определение возможности прерывания текущей программы;
- фиксация состояния прерываемой (текущей) программы;
- обработка прерываний - переход к программе, соответствующей обслуживаемому
прерыванию;
- возврат к прерванной программе после окончания работы прерывающей программы.
Такие прерывания возникают, как правило, случайно и асинхронно по отношению к программе и
требуют прекращения (чаще временного) выполнения текущей программы и переход на
выполнение другой программы (подпрограммы), соответствующей возникшему событию.
10. Таблица векторов прерываний. Клавиатурное прерывание:
Таблица векторов прерываний.Клавиатурное прерывание:
Для того чтобы связать адрес обработчика прерывания с номером прерывания, используется таблица
векторов прерываний, занимающая первый килобайт оперативной памяти - адреса от 0000:0000 до
0000:03FF. Таблица состоит из 256 элементов - FAR-адресов обработчиков прерываний. Эти элементы
называются векторами прерываний. В первом слове элемента таблицы записано смещение, а во втором адрес сегмента обработчика прерывания. Прерыванию с номером 0 соответствует адрес 0000:0000,
прерыванию с номером 1 - 0000:0004 и т. д.
(Домашнее задание – найти и записать в тетрадь таблицу векторов
прерываний; ссылка http://emanual.ru/download/8237.html).
Клавиатура подключена к линии прерывания IRQ1. Этой линии соответствует прерывание INT 09h.
Клавиатурное прерывание обслуживается модулями BIOS. Как работает стандартный обработчик
клавиатурного прерывания, входящий в состав BIOS?
Этот обработчик выполняет следующие действия:
- читает из порта 60h скан-код нажатой клавиши;
- записывает вычисленное по скан-коду значение ASCII-кода нажатой клавиши в специальный буфер
клавиатуры, расположенный в области данных BIOS;
- устанавливает в 1 бит 7 порта 61h, разрешая дальнейшую работу клавиатуры;
- возвращает этот бит в исходное состояние;
- записывает в порт 20h значение 20h для правильного завершения обработки аппаратного прерывания.
Обработчик прерывания INT 09h не просто записывает значение ASCII-кода в буфер клавиатуры.
Дополнительно отслеживаются нажатия таких комбинаций клавиш, как Ctrl-Alt-Del, обрабатываются
специальные клавиши PrtSc и SysReq. При вычислении кода ASCII нажатой клавиши учитывается
состояние клавиш Shift и CapsLock. Буфер клавиатуры имеет длину 32 байта.
11. Кольцевой буфер (417h, 418h):
Кольцевой буфер (417h, 418h):Клавиатурный буфер организован циклически (кольцевой буфер). Это означает, что при его
переполнении самые старые значения будут потеряны. Указателями на начало и конец клавиатурного
буфера обычно управляют обработчики прерываний INT 09h и INT 16h. Программа извлекает из буфера
коды нажатых клавиш, используя различные функции прерывания INT 16h.
Помимо управления содержимым буфера клавиатуры, обработчик прерывания INT 09h отслеживает
нажатия на так называемые переключающие клавиши - NumLock, ScrollLock, CapsLock, Ins. Состояние
этих клавиш записывается в область данных BIOS в два байта с адресами 0000h:0417h и 0000h:0418h.
Формат байта 0000h:0417h: (0-7 – биты)
0
Нажата правая клавиша Shift.
1
Нажата левая клавиша Shift.
2
Нажата комбинация клавиш Ctrl-Shift с любой стороны.
3
Нажата комбинация клавиш Alt-Shift с любой стороны.
4
Состояние клавиши ScrollLock.
5
Состояние клавиши NumLock.
6
Состояние клавиши CapsLock.
7
Состояние клавиши Insert.
Формат байта 0000h:0418h: (0-7 – биты)
0
Нажата левая клавиша Shift вместе с клавишей Ctrl.
1
Нажата левая клавиша Shift вместе с клавишей Alt.
2
Нажата клавиша SysReq.
3
Состояние клавиши Pause.
4
Нажата клавиша ScrollLock.
5
Нажата клавиша NumLock.
6
Нажата клавиша CapsLock.
7
Нажата клавиша Insert.
12. ASCII:
ASCII:ASCII (англ. American Standard Code for Information
Interchange) — американская стандартная кодировочная
таблица для печатных символов и некоторых специальных
кодов.
ASCII представляет собой кодировку для представления
десятичных цифр, латинского и национального алфавитов,
знаков препинания и управляющих символов. Изначально
разработанная как 7-битная, с широким распространением 8битного байта ASCII стала восприниматься как половина 8битной.
В компьютерах обычно используют расширения ASCII с
задействованным 8-м битом и второй половиной кодовой
таблицы.
13. Вопросы для самоконтроля:
Вопросы для самоконтроля:1. Что такое бит, байт, килобайт, мегабайт, терабайт?
2. Какое количество информации требует двоичное кодирование одного из
256 символов?
3. Выберите вариант, в котором объёмы информации расположены в
порядке возрастания:
1) 10 бит, 2 байта, 20 бит, 1010 байт, 1 Кбайт;
2) 10 бит, 20 бит, 2 байта, 1 Кбайт, 1010 байт;
3) 10 бит, 2 байта, 20 бит, 1 Кбайт, 1010 байт;
4) 10 бит, 20 бит, 2 байта, 1010 байт, 1 Кбайт.
4. Что такое таблица ASCII?
5. Одна страница текста содержит 50 строк по 60 символов в каждой.
Чему равен объём информации, содержащийся в пяти таких страницах
текста при использовании таблицы кодировки ASCII?
programming