
- •Многоуровневая структура компьютера
- •Операционная система
- •Функции ос
- •Архитектуры ядра ос
- •Эволюция операционных систем их классификация и основные идеи
- •Режимы работы процессора и кольца защиты.
- •Особенности создания, компиляции и загрузки модуля ядра
- •Клавиатура
- •Архитектура и характеристики процессора
- •Базовая микроархитектура микропроцессора
- •Программная модель процессора х86
- •Содержимое регистра флагов.
- •Расширение базовой архитектуры микропроцессора
- •Память Иерархическая структура памяти. Ключевой принцип построения памяти эвм и его иерархическая организация.
- •Классификация запоминающих устройств
- •Принцип работы кэш памяти.
- •Факторы влияющие на эффективность кэш-памяти.
- •Способ отображения.
- •Алгоритм замещения информации заполненной кэш-памяти
- •Алгоритм согласования содержимого основной памяти и кэш-памяти.
- •Организация кэш-памяти.
- •Принципы организации оперативной памяти пэвм
- •Организация микросхем памяти
- •Характеристики функционирование и типы динамического озу.
- •Типы памяти
- •13.2. Память ddr
- •13.3. Память rdram (Rambus dram)
- •Устройства ввода/вывода
- •Структура связи между основными устройствами вычислительной системы.
- •1 Прямые межпроцессорные связи.
- •2 Через память
- •3 Межпроцессорные связи через коммуникационные каналы.
- •Контроллер прерываний.
- •Прямой доступ к памяти (dma)
- •Следующий набор регистров общий для всех каналов.
- •Контролер имеет 4 режима работы:
- •Типы передачи пдп:
- •Цикл обмена пдп
- •Видеоадаптер
- •Системный таймер
Клавиатура
Управление работой клавиатуры в текстовом режиме осуществляется драйвером терминала, который входит в состав ядра ОС Linux.
Графический режим управления клавиатуры используется при работе приложениями, которые имеют собственный драйвер клавиатуры (пример система XWindow). Приложение само решает какой код символа выбрать для данного скан-кода при заданном сочетании видов модификаторов.
При каждом нажатии на клавишу контроллер клавиатуры генерирует скан-код представляющий собой последовательность длинной от 1 до 6 байта, которую можно получить чтением порта 0x60.
Основная задача драйвера (системного контроллера) – преобразовать эти скан-коды в соответствующие коды клавиш и далее коды символов. Код клавиши (виртуальный код) иногда говорят просто скан-код занимает размер всегда 1 байт (внутренние однобайтовые значения). Для обычной клавиши внутренний код идентичен чистому скан-коду, а расширенные коды заменяются по каким-то алгоритмам и на втором этапе уже внутренние коды преобразуются по специальной таблице раскладки клавиатуры (их много таких) преобразуются в обычные ASCII-коды.
Контроллер интерфейса находящийся на системной плате ЭВМ имеет системную поддержку на уровне BIOS (при каждом нажатии клавиши вырабатывается аппаратное прерывание IRQ1, вектор прерывания имеет номер 9h).
Драйвер клавиатуры может работать в одном из 4 режимов:
RAW (K_RAW) – прикладной программе передается последовательность чистых скан кодов (которые сгенерировала клавиатура). Для интерпретации скан-кодов существуют специальные подпрограммы в библиотеке X_LIB они выбирают подходящий символ в соответствии с таблицей символов которую можно поменять с помощью утилиты xmodmap.
CODE ( K_MEDIUMRAW) в скан код клавиши преобразуется 1 из 127 возможных кодов клавиш keycode преобразование осуществляется в соответствии с внутренней таблицей драйвера клавиатуры. Посмотреть эту таблицу можно с помощью команды getkeycodes и так же ее можно изменить при помощи setkeycodes.
XLATE( K_XLATE) – режим код клавиши преобразуется в ASCII-код символа. Команда dumpkeys выводит на экран таблицу действующую в данный момент раскладки клавиатуры. Раскладу можно поменять при помощи команды loadkeys - загружает в драйвер раскладку клавиатуры из указанного файла (sudo loadkeys ./filename).
UNICODE скан коды преобразуются в двухбайтовые коды таблицы UNICODE (она одна и содержит полный набор всевозможных символов) выбор режима осуществляется прикладной программой которая в данный момент выполняется. Узнать или изменить режим работы драйвера можно с помощью команды kbd_mode.
Из буфера клавиатуры коды можно извлечь при помощи программного прерывания BIOS int 16h.
Любой контроллер, как правило состоит из 3-ех регистров регистр данных, управления, состояния. Регистр данных имеет порт с адресом 60h. Используется для:
Считывания информации поступившей от клавиатуры.
Для передачи информации в клавиатуру.
Для получения информации возвращаемой контроллером интерфейса в ответ на выданную ему команду.
Запись информации необходимой для исполнения ранее выданной контроллеру команды.
Признаком наличия данных для считывания служит единица в младшем бите регистра состояния. Регистр состояния доступен при считывании из управляющего порта 64h.
Формат регистра состояния:
0 бит равен единице – выходной буфер контроллера содержит информацию.
1 бит равен единице – входной буфер контроллера заполнен, запись в регистр данных и команд запрещена.
2 бит равен нулю – был выполнен аппаратный сброс, равен единице – инициализация персонального компьютера закончена.
3 бит равен нулю – сигнализирует о том что последней передачей байта контроллеру была выдача команды, равен единице – последней передачей была выдача данных.
4 бит равен нулю – если клавиатура заблокирована.
5 бит равен единице – если в регистре данных находится байт полученный от мыши.
6 бит равен единице при зафиксированном таймауте. (если таймаут возник при передаче данных в устройство клавиатуры в регистре данных находится слово FE, а если при приеме данных от клавиатуры то будет значение FF).
7 бит равен единице если обнаружена ошибка четности.
Регистр команд доступен только для записи порт 64h.