четверг, 20 декабря 2012 г.

Системное программное обеспечение (СПО)


Запись на курс.
Раздел - операционные системы
Курс: Основы операционных систем. Практикум.

Уровень: для специалистов || Статус: бесплатный || Опубликован: 16.09.2004
- необходимо проработать и сдать первые шесть занятий , это - материал для практических занятий в сессию. К сожалению, по теоретической части курса на "Интуите" я ничего не нашел, а самому написать ... :-((( Поэтому будем надеяться на сессию. 



Литература



 Л. Бек Введение в системное программирование. М, Мир 1988
 ( Монография учебного характера, написанная толковым специалистом. В ней изложены все основные компоненты системного программного обеспечения. Особое внимание уделено их взаимосвязи с архитектурой вычислительных комплексов. Конкретные реализации компонентов обсуждаются на примере трех современных ( 1988-му году – прим. мое) вычислительных систем: IBM/370, VAX, CYBER . Книга есть в I-net-е )





 Темы, выносимые на экзамен.
  1. Классификация систем программирования. Основные характеристики машинно-ориентированной СП.
  2. Пример характеристик машинно-ориентированной системы программирования для учебной машины.
  3. Относительный, индексный, базовый, косвенный и непосредственный методы адресации памяти в машинно-ориентированных СП и их назначение.
  4. Общая характеристика языка Ассемблера. Команды Ассемблера и директивы ассемблирования.
  5. Постановка задачи проектирования ассемблера, формат объектного модуля
  6. Структуры данных и алгоритмы первого и второго прохода двухпроходного ассемблера
  7. Постановка задачи проектирования специализированного системного ПО – загрузчиков. Виды загрузки.
  8. Задачи управления загрузкой и соответствующие им директивы
  9. Назначение и способ организации оверлейной, динамической и раскручивающей загрузки.
  10. Первоначальная загрузка ОС в ЭВМ с архитектурой IBM PC
  11. Логическая схема компилятора языка высокого уровня (ЯВУ).
  12. Формальная грамматика ЯВУ, ее структура и описание. Деревья грамматического разбора.
  13. Задача лексического анализа программы на ЯВУ. Сканирование и внутреннее представление
  14. Задача синтаксического анализа программы на ЯВУ. Восходящие и нисходящие методы.
  15. Схемы обработки программ на ЯВУ на основе компиляции и интерпретации. Р-код.



Методические указания к выполнению контрольной работы по курсу «Системное программное обеспечение»

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.
 

Комментариев нет:

Отправить комментарий