Добавлен: 20.10.2018
Просмотров: 2011
Скачиваний: 14
Защита лабораторной работы
Для защиты лабораторной работы необходимо подготовить программу, демонстрирующую
использование созданной библиотеки функций (сборка программы с библиотекой, использование
заголовочного файла, примеры вызовов каждой функции, проверка корректности работы функций
при различных входных значениях). Необходимо доработать программу лабораторной работы 3, вы-
водящую на экран согласно рисунку 1 содержимое оперативной памяти, регистров и назначение
клавиш, так, чтобы на экране были нарисованы рамки, и выводилось большими символами содер-
жимое ячейки памяти, на которую указывает регистр ―instructionCounter‖.
Контрольные вопросы
1. Что такое шрифт? Как он используется при выводе символов на экран?
2. Зачем используется кодировочная таблица символов? Какие таблицы Вы знаете?
3. Почему символы, рисующие рамку в текстовом режиме, называются «псевдографическими»?
Лабораторная работа 5. Консоль управления моделью Simple Computer. Клавиатура.
Обработка нажатия клавиш. Неканонический режим работы терминала
Цель работы
Изучить устройство клавиатуры и принципы обработки нажатия клавиш в текстовом терми-
нале. Создать «распознаватель» нажатой клавиши по формируемой последовательности символов.
Разработать библиотеку myReadkey. Доработать интерфейс консоли управления Simple Computer
так, чтобы можно было изменять значения ячеек памяти и регистров.
Задание на лабораторную работу
1. Прочитайте главу 5 практикума по курсу «Организация ЭВМ и систем». Обратите особое
внимание на параграф 5.1. Изучите страницу
man
для команд
infocmp
и
read
, базы
terminfo
.
2. Используя оболочку
bash
и команду
read
, определите последовательности, формируемые
нажатием на буквенно-цифровые, функциональные клавиши и клавиши управления курсо-
ром. Используя команду
infocmp
, убедитесь, что получены правильные последовательности
символов, генерируемые функциональными клавишами «F5» и «F6».
3. Разработайте функции:
int rk_readkey (enum keys *)
- анализирующую последовательность символов
(возвращаемых функцией
read
при чтении с терминала) и возвращающую первую
клавишу, которую нажал пользователь. В качестве параметра в функцию передаѐтся
адрес переменной, в которую возвращается номер нажатой (enum keys – перечисление
распознаваемых клавиш);
int rk_mytermsave (void)
- сохраняет текущие параметры терминала;
int rk_mytermrestore (void)
- восстанавливает сохранѐнные параметры терми-
нала.
int rk_mytermregime (int regime, int vtime, int vmin, int echo, int
sigint)
- переключает терминала между режимами. Для неканонического режима
используются значения второго и последующего параметров.
4. Оформите разработанные функции как статическую библиотеку myReadkey. Подготовьте за-
головочный файл для неѐ.
Защита лабораторной работы
Для защиты лабораторной работы необходимо подготовить программу, демонстрирующую
использование созданной библиотеки функций (сборка программы с библиотекой, использование
заголовочного файла, примеры вызовов каждой функции, проверка корректности работы функций
при различных входных значениях). Необходимо доработать программу лабораторной работы 3, вы-
водящую на экран согласно рисунку 1 консоль управления Simple Computer так, чтобы возможно
было задавать значения ячейкам оперативной памяти, регистрам и обрабатывалось нажатие клавиш
―s‖, ―l‖.
Контрольные вопросы
1. Режимы работы терминала. Как настроить терминал для работы в неканоническом режиме?
2. Работа с терминалом в Linux. Структура termios.
Лабораторная работа 6. Подсистема прерываний ЭВМ. Сигналы и их обработка.
Цель работы
Изучить принципы работы подсистемы прерываний ЭВМ. Понять, как обрабатываются сиг-
налы в Linux. Реализовать обработчик прерываний в модели Simple Computer. Доработать модель
Simple Computer, создав обработчик прерываний от внешних устройств «системный таймер» и
«кнопка».
Задание на лабораторную работу
1. Прочитайте главу 6 практикума по курсу «Организация ЭВМ и систем». Изучите страницу
man
для функций
signal
,
setitimer
.
2. Доработайте консоль Simple Computer. Создайте обработчик прерываний от системного тай-
мера так, чтобы при каждом его срабатывании при нулевом значении флага «игнорирование
сигналов системного таймера» значение регистра ―instructionCounter‖ увеличивалось на 1, а
при поступлении сигнала SIGUSR1 состояние Simple Computer возвращалось в исходное. Об-
работка нажатых клавиш осуществляется только в случае, если сигналы от таймера не игно-
рируются.
Защита лабораторной работы
Для защиты лабораторной работы необходимо подготовить программу, реализующие консоль
управления Simple Computer и демонстрирующую работу обработчика прерываний.
Контрольные вопросы
1. Что такое прерывание? Что такое сигнал? Чем они отличаются друг от друга? Какую инфор-
мацию несут в себе прерывание и сигнал?
2. Как происходит обработка сигнала в программах, работающих под управлением ОС Linux?
3. Каким образом настраивается таймер? Как программа «узнаѐт» о срабатывании таймера?
4. Каким образом пользовательская программа может узнать об изменении размера окна вирту-
ального терминала?
Лабораторная работа 7. Устройство хранения данных на жестких магнитных дисках.
Цель работы
Изучить устройство накопителей на жестких магнитных дисках. Разработать библиотеку
функций по преобразованию геометрий и адресов секторов накопителей на жестких магнитных дис-
ках. Создать программу, рассчитывающую таблицу разделов (MBR).
Задание на лабораторную работу
1. Прочитайте главу 7 практикума по курсу «Организация ЭВМ и систем».
2. Разработайте пользовательские типы (typedef), для хранения адресов секторов и геометрий
жестких дисков в форматах:
CHS (20 бит). Имя пользовательского типа - tCHS;
ECHS или Large (24 бита). Имя пользовательского типа - tLARGE;
CHS из стандарта IDE (28 бит). Имя пользовательского типа tIDECHS;
LBA (32 бит). Имя пользовательского типа - tLBA.
3. Создайте библиотеку функций по преобразованию геометрий и адресов секторов накопителей
на жестких магнитных дисках в разные стандарты:
int g_lba2chs (tLBA, tCHS *).
int g_lba2large (tLBA, tLARGE *).
int g_lba2idechs (tLBA, tIDECHS *).
int g_chs2large (tCHS, tLARGE *).
int g_chs2lba (tCHS, tLBA *).
int g_chs2idechs (tIDECHS, tLBA *).
int g_large2chs (tLARGE, tCHS *).
int g_large2idechs (tLARGE, tIDECHS *).
int g_large2lba (tLARGE, tLBA *).
int g_idechs2chs (tIDECHS. tCHS *).
int g_idechs2lagre (tIDECHS. tLARGE *).
int g_idechs2lba (tIDECHS. tLBA *).
int a_lba2chs (tCHS geometry, tLBA, tCHS *).
int a_lba2large (tLARGE geometry, tLBA, tLARGE *).
int a_lba2idechs (tIDECHS geometry, tLBA, tIDECHS *).
int a_chs2lba (tCHS geometry, tCHS, tLBA *).
int a_large2lba (tLARGE geometry, tLARGE, tLBA *).
int a_idechs2lba (tIDECHS geometry, tIDECHS, tLBA *).
int a_large2chs (tLARGE geometry1, tCHS geometry2, tLARGE, tCHS *).
int a_large2idechs (tLARGE geometry1, tIDECHS geometry2, tLARGE,
tIDECHS *).
int a_chs2large (tCHS geometry1, tLARGE geometry2, tCHS, tLARGE *).
int a_idechs2large (tIDECHS geometry1, tLARGE geometry2, tIDECHS,
tLARGE *).
int a_chs2idechs (tCHS geometry1, tIDECHS geometry2, tCHS, tIDECHS
*).
int a_idechs2chs (tIDECHS geometry1, tCHS geometry2, tIDECHS, tCHS
*).
Защита лабораторной работы
С использованием библиотеки функций необходимо разработать программу, выполняющую
следующие действия:
Предлагает пользователю ввести геометрию диска в формате IDECHS.
Рассчитывает размер жесткого диска в ГБайтах и выводит его на экран.
Предлагает пользователю ввести: размер требуемого раздела на диске, его тип и будет
ли он активный (активным может быть только один раздел на диске !).
На основании введѐнных данных рассчитывает строку в таблице разделов. Считается,
что первый создаваемый пользователем раздел располагается, начиная с сектора 1
(LBA), второй – следом за ним, третий – следом за вторым и т.д.
Формирование таблицы разделов прекращается, если пользователь ввѐл 0 (ноль) как
размер раздела или на диске больше не осталось свободного места.
После ввода всей требуемой информации формируются таблицы разделов (основная и
все расширенные) и выводятся на экран с указанием номера сектора, в котором будет
записана каждая таблица.
Контрольные вопросы.
1. Основные этапы загрузки ПК на базе процессоров семейства Intel.
2. Зачем используется сигнал ―RESET‖?
3. Магнитные диски. Зачем используются. Устройство.
4. Магнитные головки чтения/записи. Типы. Зачем используются. Принцип ра-боты.
5. Привод магнитных головок. Типы приводов. Зачем используются.
6. Контроллер управления. Зачем используется.
7. Геометрия. Что это такое? Трансляция геометрии. Типы трансляции.
8. LBA адресация. Зачем используется. Перевод из LBA в СНSлог и наоборот.
9. Барьеры размеров дисков. Почему возникли? Какие присутствуют?
10. Этапы загрузки ПК.
11. Логическая организация винчестера. Разделы диска. Таблица разделов. Зачем используется.
Структура.
КУРСОВАЯ РАБОТА
В рамках курсовой работы необходимо доработать модель Simple Computer так, чтобы она
обрабатывала команды, записанные в оперативной памяти. Система команд представлена в таблице
1. Из пользовательских функций необходимо реализовать только одну согласно варианту задания
(номеру вашей учетной записи). Для разработки программ требуется создать трансляторы с языков
Simple Assembler и Simple Basic.
Обработка команд центральным процессором
Для выполнения программ моделью Simple Computer необходимо реализовать две функции:
int ALU (int command, int operand)
– реализует алгоритм работы арифметико-
логического устройства. Если при выполнении функции возникла ошибка, которая не
позволяет дальше выполнять программу, то функция возвращает -1, иначе 0;
int CU (void)
– обеспечивает работу устройства управления.
Обработку команд осуществляет устройство управления. Функция CU вызывается либо обра-
ботчиком сигнала от системного таймера, если не установлен флаг «игнорирование тактовых им-
пульсов», либо при нажатии на клавишу ―t‖. Алгоритм работы функции следующий:
1. из оперативной памяти считывается ячейка, адрес которой храниться в регистре instruc-
tionCounter;
2. полученное значение декодируется как команда;
3. если декодирование невозможно, то устанавливаются флаги «указана неверная команда» и
«игнорирование тактовых импульсов» (системный таймер можно отключить) и работа
функции прекращается.
4. Если получена арифметическая или логическая операция, то вызывается функция ALU,
иначе команда выполняется самим устройством управления.
5. Определяется, какая команда должна быть выполнена следующей и адрес еѐ ячейки памя-
ти заносится в регистр instructionCounter.
6. Работа функции завершается.
Транслятор с языка Simple Assembler
Разработка программ для Simple Computer может осуществляться с использованием низко-
уровневого языка Simple Assembler. Для того чтобы программа могла быть обработана Simple Com-
puter необходимо реализовать транслятор, переводящий текст Simple Assembler в бинарный формат,
которым может быть считан консолью управления. Пример программы на Simple Assembler:
00 READ
09
; (Ввод А)
01 READ
10
; (Ввод В)
02 LOAD
09
; (Загрузка А в аккумулятор)
03 SUB
10
; (Отнять В)
04 JNEG
07
; (Переход на 07, если отрицательное)
05 WRITE 09
; (Вывод А)
06 HALT
00
; (Останов)
07 WRITE 10
; (Вывод В)
08 HALT
00
; (Останов)
09 =
+0000
; (Переменная А)
10 =
+9999
; (Переменная В)
Программа транслируется по строкам, задающим значение одной ячейки памяти. Каждая
строка состоит как минимум из трех полей: адрес ячейки памяти, команда (символьное обозначе-
ние), операнд. Четвертым полем может быть указан комментарий, который обязательно должен
начинаться с символа точка с запятой. Название команд представлено в таблице 1. Дополнительно
используется команда =, которая явно задает значение ячейки памяти в формате вывода его на экран
консоли (+XXXX).
Команда запуска транслятора должна иметь вид: sat файл.sa файл.o, где файл.sa – имя файла,
в котором содержится программа на Simple Assembler, файл.o – результат трансляции.
Транслятор с языка Simple Basic
Для упрощения программирования пользователю модели Simple Computer должен быть
предоставлен транслятор с высокоуровневого языка Simple Basic. Файл, содержащий программу на
Simple Basic, преобразуется в файл с кодом Simple Assembler. Затем Simple Assembler-файл трансли-
руется в бинарный формат.
В языке Simple Basic используются следующие операторы: rem, input, output, goto, if, let, end.
Пример программы на Simple Basic:
10 REM Это комментарий
20 INPUT A
30 INPUT B
40 LET C = A – B
50 IF C < 0 GOTO 20
60 PRINT C
70 END
Каждая строка программы состоит из номера строки, оператора Simple Basic и параметров.
Номера строк должны следовать в возрастающем порядке. Все команды за исключением команды
конца программы могут встречаться в программе многократно. Simple Basic должен оперировать с
целыми выражениями, включающими операции +, -, *, и /. Приоритет операций аналогичен C. Для
того чтобы изменить порядок вычисления, можно использовать скобки.
Транслятор должен распознавания только букв верхнего регистра, то есть все символы в про-
грамме на Simple Basic должны быть набраны в верхнем регистре (символ нижнего регистра приве-
дет к ошибке). Имя переменной может состоять только из одной буквы. Simple Basic оперирует
только с целыми значениями переменных, в нем отсутствует объявление переменных, а упоминание
переменной автоматически вызывает еѐ объявление и присваивает ей нулевое значение. Синтаксис
языка не позволяет выполнять операций со строками.
Оформление отчета по курсовой работе
Отчет о курсовой работе представляется в виде пояснительной записки (ПЗ), к которой при-
лагается диск с разработанным программным обеспечением. В пояснительную записку должны вхо-
дить:
титульный лист;
полный текст задания к курсовой работе;
реферат (объем ПЗ, количество таблиц, рисунков, схем, программ, приложений, крат-
кая характеристика и результаты работы);
содержание:
· постановка задачи исследования;
· блок-схемы используемых алгоритмов;
· программная реализация;
· результаты проведенного исследования;
· выводы;
список использованной литературы;
подпись, дата.
Пояснительная записка должна быть оформлена на листах формата А4, имеющих поля. Все
листы следует сброшюровать и пронумеровать.
Список литературы
1. Организация ЭВМ и систем. Практикум // С.Н. Мамойленко, Новосибирск: ГОУ ВПО «Сиб-
ГУТИ», 2005 г., URL:
2. Архитектура компьютера. 4-е изд. // Э. Танненбаум. – СПб.: Питер, 2003.
3. Организация ЭВМ. 5-е изд. / К. Хамахер, З. Вранешич, С. Заки. – СПб.: Питер; Киев: Изда-
тельская группа BHV, 2003.
4. Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем: учебник для ВУЗов. – СПб.: Питер,
2004.