Системное программное обеспечение
БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
МЕЖДУНАРОДНЫЙ ИНСТИТУТ ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
Кафедра «Информационные системы и технологии»
Контрольная
работа
Системное
программное обеспечение
Вариант 12
Выполнил
Поух А.М. ст.группы 417430
Проверил
Жук А.А.
Минск 2013г.
1. MS-DOS. Ввод информации с клавиатуры
При работе на компьютере пользователь часто
вводит с клавиатуры компьютера различные команды и другую информацию.
Основным модулем, который организует обработку
информации, поступающей с клавиатуры, в MS-DOS является командный процессор
COMMAND.COM. Он организует выполнение команд, когда никакая другая программа не
загружена в память.
При получении команд COMMAND.COM анализирует
полученную команду на принадлежность ее к своим внутренним командам.
Если команда является его встроенной командой,
то COMMAND.COM выполняет ее, если команда не является встроенной командой
командного процессора, то командный процессор запускает программу с указанным
именем.
Работой клавиатуры управляет специализированный
микропроцессор - контроллер клавиатуры, который воспринимает каждое нажатие
клавиши и выдает ее код в специальный порт с адресом 60h.
Код нажатой клавиши, помещенный в порт с адресом
60h называется скэн-кодом (SCAN-CODE).
Скэн-код всегда однозначно определяет нажатую
клавишу, но следует, однако, отметить, что каждой клавише как бы присваиваются
два скэн-кода, отличающиеся на 80h.
Скэн-код с меньшим значением засылается при
нажатии клавиши, с большим значением при ее отпускании.
В машинах IBM PC AT, контроллер клавиатуры
работает несколько по-иному. И при нажатии и при отпускании клавиш в выходной
порт посылается один и тот же код, но при отпускании клавиши он предваряется
кодом FOh. Хотя скэн-код и указывает однозначно на нажатую клавишу, по нему
нельзя судить, включен ли на клавиатуре верхний или нижний регистр, или
пользователь вводит русские или латинские буквы.
Кроме того, на клавиатуре компьютера имеются
клавиши “Alt”, “Ctrl”, “Shift”, “Caps Lock” и др. Таким образом, программы
операционной системы должны анализировать не только скэн-код нажатой клавиши,
но и факты нажатия других клавиш “Shift”, “Caps Lock” и др.
Рис.1. Команды
Организацией обработки нажатия клавиш в MS-DOS
занимается специальная программа обработки прерываний клавиатуры.Когда скэн-код
клавиши выдается в порт 60h, процессор моментально прекращает свою работу и
выполняет программу обработки прерываний - вызывается прерывание (INT 0%).
Аббревиатурой INT обозначено программное прерывание DOS (от слова Interrupt -
прерывание). Помимо программных прерываний в компьютерах имеются также и
аппаратные прерывания IRQ, которые выдаются устройствами компьютера. Программа
прерывания INT 09h, помимо порта с адресом 60h, работает также с двумя другими
областями памяти: кольцевым буфером ввода, расположенным обычно в диапазоне
адресов от 41 Eh до 43Dh, куда помещаются ASCII коды нажатых клавиш, и областью
памяти с адресом от 417h до 418h, хранящими слово состояния клавиатуры, в
которой фиксируется нажатие клавиш («Shift», “Caps Lock”, “Num Lock”,. “Scroll
Lock” и др.). Прерывание клавиатуры, как только будет нажата одна из
клавиш-переключателей, немедленно обновляет биты этих ячеек памяти, даже если
не было считано ни одного символа из буфера клавиатуры. Это верно и для клавиши
“Ins”, которая единственная из клавиш статуса клавиатуры помещает код в буфер
(установка статуса “Ins” меняется, даже если в буфере нет места для символа).
Прерывание клавиатуры проверяет состояние статусных битов перед тем, как интерпретировать
(преобразовать) скэн-код нажатой клавиши. При нажатии клавиши программа
обработки прерываний считывает из порта 60h, скэн-код ее нажатия и, пользуясь
имеющейся в ней таблицей трансляции скэн-кодов в коды ASCII, формирует
двухбайтовый код, старший байт которого содержит скэн-код нажатой клавиши, а
младший байт - код ASCII нажатой клавиши. В процессе трансляции программа INT
09h анализирует статусные биты и в зависимости от их состояния формирует
соответствующий код ASCII.
Полученный в ходе трансляции двухбайтовый код
засылается в буфер ввода, который служит для организации процесса
взаимодействия DOS или прикладных программ с клавиатурой. Емкость буфера
позволяет хранить 15 символов. Буфер организован по принципу FIFO (FIFO - First
Input, First Output - первым пришел, первым вышел).Коды символов извлекаются из
буфера в том порядке, в каком они в него поступают. В том случае, если буфер
переполнен, поступление новых символов блокируется, а пользователю подается
звуковой сигнал. Когда компьютер находится в состоянии ожидания, управление
вводом символов в компьютер осуществляет командный процессор COMMAND.COM. При
появлении символа в командной строке COMMAND.COM при помощи соответствующих
программ DOS переносит его в свой буфер, очищая при этом кольцевой буфер ввода
для клавиатуры, а также выводит символ на экран в режиме эхо-повтора. При
получении кода клавиши Enter (ODh) командный процессор предполагает, что ввод
команды завершен, и анализирует содержимое своего буфера по описанной выше
схеме. При этом следует отметить, что командный процессор работает только с
кодами ASCII. Если же компьютер выполняет какую-либо программу, и при этом с
клавиатуры поступает информация, то программа сама организует ввод данных с
клавиатуры и вывод их на дисплей. Чаще всего прикладные программы для этих
целей используют стандартные средства DOS, но могут включать и свои программы
обработки прерываний.
В процессе работы с прикладной программой
пользователь может нажать какие-либо символы, ввод которых не требуется прикладной
программе. В этом случае после завершения программы и передаче управления
COMMAND.COM командный процессор проанализирует содержимое кольцевого буфера
клавиатуры и поместит их в свой буфер. Кроме клавиш, обозначающих символы
алфавита, цифры, знаки препинания и специальные знаки, на клавиатуре имеются
клавиши, которые не отображаются на экране. К таким клавишам относится группа
функциональных клавиш: “F1…F10 (F11,F12 для IBM PC АТ)”, клавиши “Home”, “End”,
“Up”, “Down” и др. Для этих клавиш также существуют свои скэн-коды, которые,
однако, транслируются в коды ASCII несколько по-иному, чем рассмотренные
символьные, цифровые клавиши, клавиши знаков препинания и специальных символов.
Таким клавишам программа обработки прерывания от клавиатуры INT 09h назначает
двухбайтовый код, в котором младшему байту (ASCII-код клавиши) присвоено
значение 0. Двухбайтовые коды, содержащие на месте ASCII-кода ноль, называются
расширенными ASCII-кодами.
Эти коды находят широкое применение в утилитах
DOS и прикладных программах. Например, в оболочке DOS-программе MS-DOS Shell
клавиша F5 используется для обновления содержимого экрана MS-DOS Shell (функция
“Refresh” пункта View” главного меню программы), а комбинация клавиш Shift-F5 -
для перезакраски экрана оболочки (функция “Repaint Screen” пункта «View”). Как
свидетельствует эволюция развития персональных компьютеров и программного
обеспечения, на каком-то этапе их развития потребовались дополнительные
возможности ввода с компьютера информации, отличной от обычного текста. Для
решения этой проблемы в компьютерах IBM PC появилась возможность вводить коды
не только функциональных клавиш и клавиш управления курсором, но и коды
комбинаций этих клавиш вместе с клавишами “Alt”, “Ctrl”, “Shift”. Комбинации
функциональных клавиш и клавиш управления курсором вместе с клавишами “Shift”,
“Alt”, “Ctrl” также образуют расширенные коды. Однако в этом случае в старший
байт расширенного кода ASCII помещается не скэн-код нажатой клавиши, а
некоторый специальный код, назначенный комбинации клавиш.
2. Linux. Синтаксис языка shell
.1 Комментарии
Строки, начинающиеся с #, трактуются как
комментарии.
.2 Подстановка результатов выполнения команд
Выражения можно заключать в обратные кавычки
(`). Такие выражения вычисляются в месте использования. Они могут быть,
например, частью строк. Пример. Пусть параметром макрокоманды является имя
файла с расширением .for. Требуется удалить одноименный файл с расширением
.err.
name=`ena -n $1`-f ${name}.err
Значение, полученное в результате выполнения
команды
-n $1
присваивается переменной name. Фигурные скобки
использованы для выделения аргумента операции перехода от имени к значению. Без
них .err приклеилась бы к имени.
.3 Переменные и подстановка их значений
Все переменные в языке shell - текстовые. Их
имена должны начинаться с буквы и состоять из латинских букв, цифр и знака
подчеркивания (_). Чтобы воспользоватся значением переменной, надо перед ней
поставить символ $. Использование значения пере менной называется подстановкой.
Различается два класса переменных: позиционные и
с именем. Позиционные переменные - это аргументы командных файлов, их именами
служат цифры: $0 - имя команды, $1 - первый аргумент и т.д. Значения
позиционным переменным могут быть присвоены и командой set (см. Специальные
команды). Пример. После вызова программы на shellе, хранящейся в файле ficofl:
-d / \*.for
значением $0 будет ficofl, $1 - -d, $2 - /, $3 -
*.for, значения остальных позиционных переменных будут пустыми строками.
Заметим, что если бы символ * при вызове ficofl не
был экранирован, в качестве аргументов передались бы имена всех фортранных
файлов текущей директории.
Еще две переменные хранят командную строку за
исключением имени команды: $@ эквивалентно $1 $2 ..., а $* - "$1 $2
...".
Начальные значения переменным с именем могут
быть установлены следующим образом:
<имя>=<значение> [
<имя>=<значение> ] ...
Не может быть одновременно функции (см.
Управляющие конструкции) и переменной с одинаковыми именами.
Для подстановки значений переменных возможны
также следующие конструкции:
${<переменная>}
если значение <переменной> определено, то
оно подставляется. Скобки применяются лишь если за <переменной> следует
символ, который без скобок приклеится к имени.
${<переменная>:-<слово>}
если <переменная> определена и не является
пустой строкой, то подставляется ее значение; иначе подставляется
<слово>.
${<переменная>:=<слово>}
если <переменная> не определена или
является пустой строкой, ей присваивается значение <слово>; после этого
подставляется ее значение.
${<переменная>:?<слово>}
если <переменная> определена и не является
пустой строкой, то подставляется ее значение; иначе на стандартный вывод
выводится <слово> и выполнение shellа завершается.
Если <слово> опущено, то выдается
сообщение "parameter null or not set".
${<переменная>:+<слово>}
если <переменная> определена и не является
пустой строкой, то подставляется <слово>; иначе подставляется пустая
строка.
Пример: если переменная d не определена или
является пустой строкой, то выполняется команда pwd
${d:-`pwd`}
Следующие переменные автоматически
устанавливаются shellом:
# количество позиционных параметров (десятичное)
флаги, указанные при запуске shellа или командой
set
? десятичное значение, возвращенное предыдущей
синхронно выполненной командой
$ номер текущего процесса
! номер последнего асинхронного процесса
@ эквивалентно $1 $2 $3 ...
* эквивалентно "$1 $2 $3 ..."
Напомним: чтобы получить значения этих
переменных, перед ними нужно поставить знак $. Пример: выдать номер текущего
процесса:$$
клавиатура язык shell реестр
2.4 Специальные переменные
3. Windows
NT. Структура реестра
Реестр Windows состоит из пяти так называемых
корневых разделов (root keys):
HKEY_CLASSES_ROOT,
HKEY_CURRENT_USER, HKEY_LOCAL_ MACHINE, HKEY_USERS и
HKEY_CURRENT_CONFIG.
Каждый раздел может содержать элементы данных,
которые называются параметрами (value entries), а также вложенные разделы
(subkeys). Для понимания этой концепции можно провести аналогию с файловой
системой. Разделы в структуре реестра аналогичны каталогам, а значимые элементы
- файлам. Рис. 14.1 иллюстрирует иерархическую структуру реестра Windows 2000.
Все имена корневых разделов начинаются со строки
HKEY_, что указывает разработчикам программного обеспечения на то, что это -
дескриптор, который может использоваться программой.
Дескриптор (handle) - это значение, используемое
для уникального описания ресурса, к которому программа может получить доступ.
Описания корневых разделов реестра Windows NT/2000 приведены в таблице 1.
Таблица 1. Описание корневых разделов реестра
Имя
корневого раздела
|
Описание
|
HKEY_LOCAL_MACHINE
|
Содержит
глобальную информацию о компьютерной системе, включая такие данные об
аппаратных средствах и операционной системе, в том числе: тип шины, системная
память, драйверы устройств и управляющие данные, используемые при запуске
системы. Информация, содержащаяся в этом разделе, действует применительно ко
веем пользователям, регистрирующимся в системе Windows NT/2000. На верхнем
уровне иерархии реестра для этого раздела имеются три псевдонима: HKEY
CLASSES ROOT, HKEY CURRENT CONFIG и HKEY_DYN_DATA
|
HKEY_CLASSES_ROOT
|
Содержит
ассоциации между приложениями и типами файлов (по расширениям имени файла).
Кроме того, этот раздел содержит информацию OLE (Object Linking and
Embedding), ассоциированную с объектами COM, а также данные по ассоциациям
файлов и классов (эквивалент реестра ранних версий. Windows, служивших
настройкой над MS-DOS). Параметры этого раздела совпадают с параметрами,
расположенными в разделе HKEY_LOCAL_MACHINE\Software\Classes. Подробную
информацию о разделе HKEY_CLASSES_ ROOT можно найти в руководстве OLE
Programmer's Reference,входящем в состав продукта Windows NT 4.0 Software
Development Kit (SDK)
|
HKEY_CURRENT_CONFIG
|
Содержит
конфигурационные данные для текущего аппаратного профиля. Аппаратные профили
представляют собой наборы изменений, внесенных в стандартную конфигурацию
сервисов и устройств, установленную данными разделов Software и System
корневого раздела HKEY_LOCAL_MACHINE. В разделе HKEY_CURRENT_ CONFIG
отражаются только изменения. Кроме того, параметры этого раздела появляются
также в разделе HKEY_LOCAL_MACHINE\System
\CurentControlSet\HardwareProfites\CuiTent
|
HKEY_CURRENT_USER
|
Содержит,
профиль пользователя, на данный момент . зарегистрировавшегося в системе,
включая переменные окружения, настройку рабочего стола, параметры настройки
сети, принтеров и приложений. Этот раздел представляет собой ссылку на раздел
HKEY USERS\username, где username - имя пользователя, зарегистрировавшегося в
системе на текущий момент
|
HKEY_USERS
|
Содержит
все активно загруженные пользовательские профили, включая HKEY_CURRENT_USER,
а также профиль по умолчанию. Пользователи, получающие удаленный доступ к
серверу, не имеют профилей, содержащихся в этом разделе; их профили
загружаются в реестры на их собственных компьютерах. Windows NT/2000 требует
наличия учетных записей для каждого пользователя, регистрирующегося в
системе. Раздел HKEY_USERS содержит вложенный раздел \Default, а также другие
разделы, определяемые идентификатором безопасности (Security ID) каждого
пользователя
|
Данные реестра хранятся в виде параметров,
расположенных в разделах реестра. Каждый параметр характеризуется именем, типом
данных и собственно значением.
Рис. 2.Реестр имеет иерархическую структуру, и
его разделы могут содержать вложенные разделы и параметры
Три части параметра реестра всегда располагаются
в следующем порядке.
Таблица 2. Типы данных для параметров реестра
Тип
данных
|
Описание
|
REG_BINARY
|
Двоичные
данные. Большинство аппаратных компонентов используют информацию, которая
хранится в виде двоичных данных. Редакторы реестра отображают эту информацию
в шестнадцатеричном формате
|
REG_DWORD
|
Данные
представлены в виде значения, длина которого составляет 4 байта. Этот тип
данных используют многие параметры драйверов устройств и сервисов. Редакторы
реестра могут отображать эти данные в двоичном, шестнадцатеричном и
десятичном формате
|
REG_EXPAND_SZ
|
Расширяемая
строка данных. Эта строка представляет собой текст, содержащий переменную,
которая может быть заменена при вызове со стороны приложения
|
REG_MULTI_SZ
|
Многострочное
поле. Значения, которые фактически представляют собой списки текстовых строк
в формате, удобном для восприятия человеком, обычно имеют этот тип данных.
Строки разделены символом NULL
|
REG.SZ
|
Текстовая
строка в формате, удобном для восприятия человеком. Значениям, представляющим
собой описания компонентов, обычно присваивается именно этот тип данных
|