Запись на курс.
Раздел - операционные системы
Курс: Основы операционных систем. Практикум.
Уровень: для специалистов || Статус: бесплатный || Опубликован: 16.09.2004
- необходимо проработать и сдать первые шесть занятий , это - материал для практических занятий в сессию. К сожалению, по теоретической части курса на "Интуите" я ничего не нашел, а самому написать ... :-((( Поэтому будем надеяться на сессию.
Литература
Л. Бек Введение в системное программирование. М, Мир 1988
( Монография учебного
характера, написанная толковым специалистом. В ней изложены все основные
компоненты системного программного обеспечения. Особое внимание уделено их
взаимосвязи с архитектурой вычислительных комплексов. Конкретные реализации
компонентов обсуждаются на примере трех современных ( 1988-му году – прим. мое) вычислительных систем: IBM/370, VAX, CYBER
. Книга есть в I-net-е
)
Темы, выносимые на экзамен.
- Классификация систем программирования. Основные характеристики машинно-ориентированной СП.
- Пример характеристик машинно-ориентированной системы программирования для учебной машины.
- Относительный, индексный, базовый, косвенный и непосредственный методы адресации памяти в машинно-ориентированных СП и их назначение.
- Общая характеристика языка Ассемблера. Команды Ассемблера и директивы ассемблирования.
- Постановка задачи проектирования ассемблера, формат объектного модуля
- Структуры данных и алгоритмы первого и второго прохода двухпроходного ассемблера
- Постановка задачи проектирования специализированного системного ПО – загрузчиков. Виды загрузки.
- Задачи управления загрузкой и соответствующие им директивы
- Назначение и способ организации оверлейной, динамической и раскручивающей загрузки.
- Первоначальная загрузка ОС в ЭВМ с архитектурой IBM PC
- Логическая схема компилятора языка высокого уровня (ЯВУ).
- Формальная грамматика ЯВУ, ее структура и описание. Деревья грамматического разбора.
- Задача лексического анализа программы на ЯВУ. Сканирование и внутреннее представление
- Задача синтаксического анализа программы на ЯВУ. Восходящие и нисходящие методы.
- Схемы обработки программ на ЯВУ на основе компиляции и интерпретации. Р-код.
Методические указания к
выполнению контрольной работы по курсу «Системное программное обеспечение»
1. Цели и задачи.
Целью контрольной
работы является знакомство с системным программированием на уровне машинных
команд и языка ассемблера. В качестве примера машинно-ориентированной системы
программирования (МО СП) взята система учебной упрощенной машины (УУМ),
описаннная в книге Л.Бека «Системное программирование».
Содержанием контрольной работы является составление
программы на языке ассемблера УУМ и ручное ассемблирование ее на уровень
машинных команд УУМ.
2. Описание процессора УУМ.
В соответствии с правилами описания МО СП приведем следующие
ее характеристики:
1.
1.Память – байтовая, 1 машинное слово состоит из 3
байт, адресация слов – по номеру младшего байта.
2.
Регистры общего назначения –аккумулятор А, индексный
регистр Х, регистр связи L,
программный счетчик РС. Условное изображение процессора приведено на рис.1
3.
Типы данных – 24-разрядные двоичные целые и 1-байтовые
символьные (в ASCII-коде)
4.
Структура команд. Команда занимает 1 слово (24
разряда), все команды относятся к типу RM (регистр - память), во всех операциях в качестве
операционного регистра используется регистр А, в котором сохраняется результат
выполненной операции. Формат команды и схема адресации памяти (установка
эффективного адреса ЕА приведены на рис.2.
|
CPU
|
|
A
|
|
SW CC
|
|
L
|
|
PC
|
|
X
|
|
Р Адреса
|
|
Р Данных
|
|
Р Команд
|
Рис.1. Логическая
структура процессора УУМ.
Команда УУМ
|
8
|
1
|
7
|
8
|
|
Код операции
|
x
|
Адресная часть addr
|
|
EA = addr при
х=0 прямая адресация
EA = addr + < X > при х=1 индексная адресация
Рис.2. Формат команды
МО СП УУМ.
Система команд учебной
упрощенной машины имеет следующий вид:
Мнемоника код Смысл (что делает)
ADD m
18 A:=(A) + (m .. m+2)
AND
m
40 A:=(A) & (m .. m+2)
COMP
m
28 A : (m .. m+2), set CC
DIV
m
24 A:=(A) / (m .. m+2)
J
m
3C PC:= m
JEQ
m
30 PC:= m if CC set to =
JGT m
34 PC:= m if CC set to
>
JLT
m
38 PC:= m if CC set to
<
JSUB
m
48 (L) := m, PC:= m
LDA
m
00 A:= (m .. m+2)
LDCH
m
50 A[ мл.байт ]:= (m )
LDL
m
08 L:= (m .. m+2)
LDX
m
04 X:= (m .. m+2)
MUL
m
20 A:=(A) * (m .. m+2)
OR
m
44 A:=(A) | (m .. m+2)
RD
m
D8
A[ мл.байт ] := 1 байт
с устройства m
RSUB
4C PC := (L)
STA
m
0C (m .. m+2):=(A[ мл.байт ])
STCH
m
54 (m ):=(A)
STL
m
14 (m .. m+2):=(L)
STX
m
10 (m .. m+2):=(X)
SUB
m
1C A:=(A) - (m .. m+2)
TD
m
E0
Установить СС для устройства m
WD
m
DC
A[ мл.байт ] => на
устройство m
3. Описание языка ассемблера УУМ.
Формат команды ассемблера МЕТКА ОПЕРАЦИЯ ОПЕРАНД
КОММЕНТАРИЙ
Директивы
ассемблирования
START А-начала
END А-точки-входа
WORD число
BYTE `последовательность
RESW число
RESB
число
`
4. Пример программы на языке ассемблера УУМ.
Программа выполняет сложение двух целых чисел, 1 и 2,
размещенных в оперативной памяти (ОЗУ) В
таблице 1 приведены команды ассемблера и столбцы для кодов машинных команд. В
таблицах SYMTAB (символьных имен) и MOTAB (машинных команд) приведены используемые в примере данные.
Таблица 1. Программа и
коды при ручном ассемблировании (заготовка)
|
Метка
|
Команда
|
Операнд
|
Длина
|
LC
|
КОП
|
Addr
|
|
|
SUMMA
|
START
|
100
|
0
|
100
|
-
|
-
|
-
|
|
ENTRY
|
STL
|
RETADR
|
3
|
100
|
|
|
|
|
|
LDA
|
FIRST
|
3
|
103
|
|
|
|
|
|
ADD
|
SECONND
|
…
|
…
|
|
|
|
|
|
STA
|
SUMM
|
|
|
|
|
|
|
|
LDL
|
RETADR
|
|
|
|
|
|
|
|
RSUB
|
|
|
|
|
|
|
|
FIRST
|
WORD
|
1
|
|
|
|
|
|
|
SECOND
|
WORD
|
2
|
|
|
|
|
|
|
SUMM
|
RESW
|
1
|
|
|
|
|
|
|
RETADR
|
RESW
|
1
|
|
|
|
|
|
|
|
END
|
ENTRY
|
|
|
|
|
|
Таблица SYMTAB
Таблица MOTAB
|
Имя
|
Адрес
|
|
Мнемоника
|
КОП
|
Длина
|
|
SUMMA
|
100
|
|
ADD
|
18
|
3
|
|
ENTRY
|
|
|
LDA
|
00
|
3
|
|
FIRST
|
|
|
LDL
|
08
|
3
|
|
SECOND
|
|
|
STA
|
0C
|
3
|
|
SUMM
|
|
|
STL
|
14
|
3
|
|
RETADR
|
|
|
RSUB
|
4C
|
3
|
5. Объектный файл.
Объектный файл представляет собой файл, содержащий машинные
коды и информацию для загрузчика, на основании которой загрузчик сможет
разместить коды в ОЗУ. Объектные файлы в различных системах программирования
имеют различный вид. В МО СП УУМ объектный файл в простейшем случае содержит
записи трех типов, Н(запись-заголовок), Т (запись, содержащая машинный код)
и Е
(конечная завершающая запись). Форматы этих записей имеют следующий вид.
H^Имя-программы^А-начала^Длина
Т^А-загрузки^Длина-записи^Коды
Е^Адрес-точки-входа
Для рассмотренного ранее примера объектный файл запишется
следующим образом.
Н^SUMMA^100^1E
T^100^F^14
01 1B 00 01 12 18 01 15 0C 01 18 08 01 1B
T^10F^9^4C 00 00 00 00 01 00 00 02
E^100
6. Задание для контрольной работы.
В ходе выполнения контрольной работы необходимо составить 2
программы на языке ассемблера, выполнить из ассемблирование вручную и составить
соответствующие объектные файлы.
Первая программа описывает вычисление простого выражения с
помощью арифметических операций над 2 – 3 переменными, хранимыми в ОЗУ, туда же
помещается и результат вычислений. При выполнении этой части контрольной работы
следует использовать в качестве образца формы записи, приведенные в пример.
Вторая программа описывает работу с массивами, т.е. данными,
расположенными в памяти регулярным образом. При работе с такими данными следует
использовать циклические алгоритмы (с командами передачи управления) и
индексный способ адресации данных. Предполагается, что все массивы
располагаются в ОЗУ и содержат N элементов.
7. Описание вариантов заданий.
|
Вариант
|
Первая задача
|
Вторая задача
|
|
1
|
Х = (а + в )/(а - в)
|
Найти среднее арифметическое для элементов массива, N= 10
|
|
2
|
Х = (а - в )*(а + в)
|
Найти наибольший из элементов массива, N= 10
|
|
3
|
Х = (а + в )*(а - в)
|
Найти наименьший из элементов массива, N= 10
|
|
4
|
Х = (а - в )/(а + в)
|
Найти наибольший и наименьший из элементов массива, N= 10
|
|
5
|
Х = (а - в )*(2*а * в)
|
Найти наибольший из элементов массива, N= 15
|
|
6
|
Х = (а + в )/( 2*а * в)
|
Найти средне значение элементов массива, N= 15
|
|
7
|
Х = (а - в + с )/ 3
|
Создать массив, элементы которого являются суммами
соответствующих элементов двух других массивов, N= 10
|
|
8
|
Х = (а + в+ с )*(а +-в)
|
Создать массив, элементы которого являются разностями
соответствующих элементов двух других массивов, N= 10
|
|
9
|
Х = (а + в+ с)*(а - в)
|
Создать массив, элементы которого являются произведениями
соответствующих элементов двух других массивов, N= 10
|
|
10
|
Х = (а - в )*( а + в+ с)
|
Создать массив, элементы которого являются отношениями
соответствующих элементов двух других массивов, N= 10
|
|
11
|
Х = (а - в )*(2*а )
|
Создать массив, элементы которого являются числами
натурального ряда, начиная с 1, N= 10
|
|
12
|
Х = 2*а * (а - в )
|
Создать массив, элементы которого являются членами
арифметической прогрессии с первым элементом 1 и знаменателем 3, N= 10
|
|
13
|
Х = 2*а * ( а + в )
|
Создать массив, элементы которого являются членами
геометрической прогрессии с первым
элементом 1 и знаменателем 3, N= 10
|
|
14
|
Х = (а - в )^2 (возведение в степень)
|
Создать массив, элементы которого являются членами ряда Фибоначчи
с первыми двумя элементами 1 и 1, N= 10
|
|
15
|
Х = (а +в)^2 (возведение в степень)
|
Создать массив, элементы которого являются членами ряда Фибоначчи
с первыми двумя элементами 1 и 2, N= 10
|
6. Рекомендуемые учебные материалы.
1.
Л. Бек Введение в системное программирование. М, Мир 1988.
2.
http://www.mva-zo-it.blogspot.ru/2012/12/blog-post_20.html.
Комментариев нет:
Отправить комментарий