Document 188007

advertisement
Архитектура и эволюция ЭВМ .......................................................................... 3
Программа курса лекций (2 курс, 3 сем., 36 ч., экзамен) ........................... 3
Литература ..................................................................................................... 5
ЭВМ в планировании и обработке физического эксперимента (2 курс,
3 сем., 72 ч., диф.зачёт)....................................................................................... 7
Программа курса лекций (36 часов) ............................................................ 7
Программа практических занятий (36 часов) ............................................. 8
Литература ..................................................................................................... 9
Обьектно-Ориентированное программирование (2 курс, 3 сем., 72 ч.,
диф.зачёт) .......................................................................................................... 10
Программа курса лекций (36 часов) .......................................................... 10
Программа практических занятий (36 часов) ........................................... 14
Литература ................................................................................................... 16
Обьектно-Ориентированное программирование (2 курс, 4 сем., 64 ч.,
диф.зачёт) .......................................................................................................... 18
Программа курса лекций (32 часа) ............................................................ 18
Программа практических занятий (32 часа) ............................................. 22
Литература ................................................................................................... 24
Операционные системы .................................................................................... 25
Программа курса лекций (2 курс, 4 сем., 32 ч., экзамен) ......................... 25
Литература ................................................................................................... 26
Операционные системы Unix (3 курс, 5 сем., 108 ч., диф.зачёт) ................. 27
Программа курса лекций (36 часов) .......................................................... 27
Программа практических занятий (72 часа) ............................................. 28
Задания практикума .................................................................................... 28
Литература ................................................................................................... 40
Введение в системы автоматического проектирования радиоэлектронных
устройств ........................................................................................................... 41
Программа практических занятий (3 курс, 5 сем., 72 ч., диф.зачет)....... 41
Литература ................................................................................................... 42
Аналоговая электроника .................................................................................. 43
Программа курса лекций (3 курс, 5 сем., 36 ч., экзамен) ......................... 43
Литература ................................................................................................... 44
Цифровые интегральные схемы ...................................................................... 46
Программа курса лекций (3 курс, 5 сем., 36 ч., экзамен) ......................... 46
Литература ................................................................................................... 47
Объектно–ориентированный анализ и дизайн ............................................... 49
Программа курса лекций (3 курс, 6 сем., 64 ч., диф.зачет)...................... 49
Литература ................................................................................................... 50
Архитектура и проектирование микроконтроллеров .................................... 51
Программа практических занятий (3 курс, 6 сем., 64 ч., диф. зачет)...... 51
Задания .........................................................................................................51
Литература....................................................................................................52
Электроника детекторных систем ...................................................................53
Программа курса лекций (3 курс, 6сем., 32 ч., экзамен) .......................... 53
Литература....................................................................................................55
Микропроцессоры и микропроцессорные системы .......................................56
Программа курса лекций (3 курс, 6 сем., 32 ч., экзамен) ......................... 56
Литература....................................................................................................58
Машинная графика (3 курс, 6 сем., 64 ч., диф.зачет) .....................................59
Программа курса лекций (32 часа) ............................................................. 59
Программа практических занятий (32 часа) ..............................................61
Задания .........................................................................................................61
Литература....................................................................................................63
Динамическая 3D графика (4 курс, 7 сем., 72 ч., диф.зачет) ........................ 65
Программа курса лекций (36 часов) ........................................................... 65
Программа лабораторных занятий (36 часов) ...........................................66
Задания .........................................................................................................66
Литература....................................................................................................68
Информационные сети и системы ...................................................................70
Программа курса лекций (4 курс, 7 сем., 108 ч., диф.зачет) .................... 70
Литература....................................................................................................72
Информационные сети и системы ...................................................................73
Программа курса лекций (4 курс, 8 сем., 96 ч., диф.зачёт, экзамен) .......73
Литература....................................................................................................75
Программируемуе логические устройства ...................................................... 76
Программа практических занятий (5 курс, 9-й сем., 36 ч., диф.зачёт) ...76
Практическое задание .................................................................................77
Литература....................................................................................................77
Новые информационные технологии .............................................................. 79
Литература....................................................................................................80
Проблемы безопасности в информационных технологиях ........................... 81
Программа курса лекций (5 курс, 10 сем., 32 ч., экзамен) ....................... 81
Литература....................................................................................................82
Объектно–ориентированный анализ и дизайн ................................................84
Программа курса лекций (6 курс, 11 сем., 64 ч., экзамен) ....................... 84
Литература....................................................................................................85
АРХИТЕКТУРА И ЭВОЛЮЦИЯ ЭВМ
Программа курса лекций
(2 курс, 3 сем., 36 ч., экзамен)
Ассистент Сергей Валерьевич Дубров
1. Булева Алгебра. Основные аксиомы и теоремы. Диаграммы Вейча.
Карты Карно. Применение при проектировании и анализе работы ЭВМ.
2. Основные понятия об ЭВМ. Архитектура фон-Неймана, Гарвардская
архитектура. Центральный процессор, память, внешние устройства.
Понятие шины. Методы адресации памяти (прямая, непосредственная,
регистровая, индексная, косвенная и т.д.). Методы доступа к
периферийным устройствам.
3. Логическая организация памяти. Порядок младших/старших байт в
многобайтовых словах (low endian, big endian). Страничная, сегментная
адресация. Кэш-память, варианты кэш памяти (сквозная запись, с
обратной записью). Расслоение физической памяти.
4. Методы ввода-вывода данных. Программный канал, ввод-вывод по
прерываниям, прямой доступ в память.
5. Архитектура микроЭВМ на базе процессоров 8080/Z80. Строительные
"кубики" фирмы Intel. Ограничения микроЭВМ на базе архитектуры
8080. Система команд, методы адресации. Методов адресации
процессора 8080, дополнительные возможности процессора Z80.
Сравнительный анализ архитектуры микроЭВМ на базе процессоров
8080, Z80 и M6800..
6. Однокристальные микроЭВМ семейства Intel 8048. Архитектура
процессора, организация памяти данных и команд, регистры. Доступ к
внешним
устройствам.
Ограничения.
Поколение
микроЭВМ
улучшенной архитектуры - Intel 8051. Расширение возможностей 8051
(объем памяти, битовая обработка, прерывания, скорость выполнения).
7. Семейство PDP-11 (LSI-11). История и роль для всей отрасли
компьютерной индустрии. Основные особенности PDP-11 – регистры
общего назначения, «ортогональная» система команд, стек в ОЗУ.
Слово состояния процессора. Асинхронная шина (Unibus и Q-bus).
Достоинства и недостатки по сравнению с синхронной шиной, циклы
чтения/записи, циклы прерывания, прямого доступа в память. Методы
преодоления ограниченного адресного пространства - архитектура
диспетчера памяти старших моделей PDP-11 и LSI-11. Предельный
объем физической памяти, максимально возможный объем программы.
Арифметические команды для чисел формата с плавающей запятой.
8. Семейство VAX. Супер-мини ЭВМ. Виртуальная память - основа
построения мощных многопрограммных систем. Классический пример
машины со сложным (CISC) набором команд. Организация физической,
логической памяти, прерываний, ввода-вывода. Поддержка арифметики
с плавающей запятой. Единица производительности - VUP.
9. Основные операционные системы семейств PDP-11 и LSI-11 (RT-11,
RSX-11, TSX-11). Возможности, определяемые архитектурой ЭВМ
(размер задач, количество пользователей, количество подключаемых
периферийных устройств). Подкачка/выгрузка программ с диска/на
диск в ОЗУ/из ОЗУ (swapping). Основы виртуальной памяти в RSX путь к системе VAX/VMS.
10. Архитектура процессора i8086 и ЭВМ на его основе (IBM PC).
Регистры, ориентация на экономию памяти. Методы адресации. Шина
IBM PC, прерывания, прямой доступ к памяти. Подключение внешних
устройств. Диски, флоппи-диски, порт RS232, параллельный порт.
Карта памяти. Системный BIOS, BIOS-ы периферийных устройств назначение и организация. Арифметический сопроцессор i8087,
сопряжение с центральным процессором. Очередь команд.
11. Дальнейшее развитие архитектуры 8086 - процессор 80286.
Персональный компьютер на основе 80286 - IBM PC AT. Попытка
прорваться через одномегабайтный барьер ОЗУ. Два режима работы реальный, защищенный. Карта памяти для каждого из них. Неудачные
решения, заложенные в архитектуру процессора - барьер для
построения надежно работающих операционных систем. Полезная
ошибка при работе с сегментом с максимальным адресом. Развитие
сегментного доступа к памяти - дескрипторные таблицы. Ограничения
на объем сегментов.
12. Процессоры архитектуры 80386 и 80486. Три режима работы реальный, защищенный, виртуальный 8086. Преодоление 16-ти
разрядного барьера в размере сегментов, комбинация страничных и
сегментных способов адресации. Кэш. Бремя совместимости со старыми
моделями процессоров. Архитектурные преимущества при работе в
системе MS DOS по сравнению с моделями 8086 и 80286.
Использование преимуществ 32-х разрядной памяти. Плоская (flat)
модель памяти. Многошинная структура современных PC. SCSIинтерфейс для подключения внешних устройств.
13. Основные операционные системы для машин с архитектурой PC - DOS,
Windows, OS/2, Unix. Сетевая система Netware.
14. Противостояние и постепенное сближение машин с CISC и RISC
архитектурой. (Pentium, Pentium Pro, P7 фирмы Intel). Основные
представители RISC архитектуры - Alpha (DEC), PA-RISC (Hewlett
Packard), SPARC (Sun), Power PC (IBM, Motorola, Apple), R4xxx, R8xxx,
R10000 (MIPS Technology).
15. Архитектура мэйнфрэймов (main frames) на примере классических
машин семейства IBM/370. Многопроцессорная архитектура, каналы и
автономные процессоры ввода-вывода. Методы адресации операндов,
PSW. Поддержка шести видов прерываний - обращение к супервизору,
программные, ввода-вывода, внешние, повторного пуска и от схем
контроля. Аппаратная поддержка режимов "супервизор" - "задача". Кэш
память, расслоение памяти. Концептуальный и действительный порядок
выполнения программ. Экологическая ниша классических "больших"
ЭВМ в современных условиях.
16. Архитектура суперЭВМ. Классификация суперЭВМ (векторные,
параллельные, SIMD, MIMD т.д.). "Перемалыватели" чисел для
массово-параллельных задач (многопроцессорный суперкомпьютер
Paragon фирмы Intel). CRAY, роль и влияние на сектор
высокопроизводительных машин. Система команд, методы адресации.
Использование преимуществ параллельных архитектур (параллельные
языки программирования).
1.
2.
3.
4.
5.
6.
7.
8.
Литература
Принципы работы системы IBM/370. П/р Л.Д.Райкова. Москва, "Мир",
1975.
Компьтеры. Справочное руководство в трех томах. П/р Г.Хелмса. Т.1.
Москва, "Мир", 1986.
Супер-ЭВМ. Аппаратная и программная реализация. П/р С.Фернбаха.
Москва, "Радио и связь", 1991.
Р.Хокни,
К.Джессхоуп.
Параллельные
ЭВМ.
Архитектура,
программирование и алгоритмы. Моска, "Радио и связь", 1986.
Э.Клингман. Проектирование микропроцессорных систем. Москва,
"Мир", 1983 (?).
Э.Клингман. Проектирование специализированных микропроцессорных
систем. Москва, "Мир", 1985.
В.В.Сташин, А.В.Урусов, О.Ф.Молокогонцева. Проектирование
цифровых устройств на однокристальных микроконтроллерах. Москва,
"Энергоатомиздат", 1990.
Мини- и микро ЭВМ семейства "Электроника". Производственное
издание. Б.Л.Толстых и др. Москва, "радио и связь", 1987.
9. М.Сингер. Мини-ЭВМ PDP-11: программирование на языке ассемблера
и организация машины. Серия "Математическое обеспечение ЭВМ".
Москва, "Мир", 1984.
10. Центральный процессор М2. ТО и инструкция по эксплуатации. ЦНИИ
"Электроника", 1982.
11. Ю-Чжень Лю, Г.Гибсон. Микропроцессоры семейства 8086/8088.
Москва, "Радио и связь", 1987.
12. С.П.Морс, Д.Д.Алберт. Архитектура микропроцессора 80286. Москва,
"Радио и связь", 1990.
13. В.Л.Григорьев. Архитектура микропроцессора 80486, в 4-х томах.
14. П.М.Коуги. Архитектура конвейерных ЭВМ. Москва, "Радио и связь",
1985.
15. Ч.Кэпс, Р.Стаффорд. VAX: программирование на языке ассемблера и
архитектура. Москва, "Радио и связь", 1991.
16. Г.Майерс. Архитектура современных ЭВМ, в 2-х книгах. Москва,
"Мир", 1985.
17. Э.Таненбаум. Многоуровневая организация ЭВМ. Москва, "Мир", 1979.
18. Э.Таненбаум. Архитектура компьютера. 4-ое издание. "Питер", 2002.
ЭВМ В ПЛАНИРОВАНИИ И ОБРАБОТКЕ ФИЗИЧЕСКОГО
ЭКСПЕРИМЕНТА
(2 курс, 3 сем., 72 ч., диф.зачёт)
Программа курса лекций (36 часов)
Профессор, д.ф.-м.н. Александр Дмитриевич Букин
Занятия на практикуме предваряются вводными лекциями со следующей
программой.
1. Структура большого вычислительного центра на примере ВЦ ИЯФ СО
РАН: машины коллективного пользования, локальные сети машин,
используемых в разных экспериментах. Пакетный и интерактивный
режимы работы ЭВМ. Возможности использования ЭВМ типа VAX с
терминалов локальной сети в ИЯФ. Библиотеки стандартных программ.
2. Принципы работы операционной системы VAX/VMS. Основные
команды. Выполнение простой программы на Фортране.
3. Аналитические вычисления на ЭВМ. Система REDUCE. Простейшие
операции с программой REDUCE: подстановки, дифференцирование,
свертки. Особенности использования REDUCE на машине VAXINPZ в
ИЯФ СО РАН.
4. Основные понятия Фортрана. Запись операторов, типы данных, простые
и
индексированные
переменные,
операции
и
выражения.
Неисполняемые операторы: описания типа, DATA,END. Операторы
присваивания, ввод-вывод, форматы.
5. Фортран. Операторы передачи управления, циклы, неявные циклы.
Процедуры: подпрограммы, подпрограммы-функции, встроенные
функции. Формальные и фактические параметры. Общие блоки,
оператор EXTERNAL. Стиль программирования. Эффективность
программ и алгоритмов.
6. Случайные величины, плотность вероятности и распределение
случайной величины. Характеристики распределения: среднее,
дисперсия. Некоторые часто встречающиеся распределения и их
свойства: равномерное, пуассоновское, нормальное. Датчики случайных
чисел.
7. Метод Монте-Карло. Получение произвольных распределений
случайной величины: метод прямой выборки, метод Неймана,
существенная выборка, композиционный метод. Гистограммы.
Вычисление определенных интегралов.
8. Моделирование физических процессов и методов наблюдения методом
Монте-Карло. Моделирование в ядерном эксперименте на примере
регистрации событий в детекторе. Розыгрыш ливней и каскадов.
9. Численные методы минимизации функций нескольких переменных.
Метод «золотого сечения» для одномерного случая. Эффективность
алгоритма минимизации. Локальные минимумы, проблема глобального
минимума. Критерий нахождения минимума.
10. Определение параметров модели по экспериментальным данным.
Метод наименьших квадратов. Задача об усреднении результатов
независимых экспериментов. Аппроксимация прямой линией.
11. Метод максимального правдоподобия. Определение параметров и их
ошибок на примере подгонки резонансов. Доверительные интервалы,
нахождение верхних пределов.
12. Проверка гипотез. Критерий согласия 2, число степеней свободы.
Распределение Стьюдента и его применения.
Программа практических занятий (36 часов)
Профессор, д.ф.-м.н., Александр Дмитриевич Букин
Практические задания состоят из шести задач, которые надо решить,
написав программу на языке программирования Фортран (кроме
задания с аналитическими вычислениями, где используется язык
REDUCE). Каждая программа должна быть отлажена на предмет
технических сбоев, должна выдавать правильный ответ, и для зачета
еще требуется ответить на теоретические вопросы, решаемые в данной
задаче. Каждому студенту предлагается отдельный вариант. Темы задач
следующие:
1. Вычисление определенного интеграла методом трапеций.
2. Проведение простых аналитических вычислений, связанных с
матричной
алгеброй
и
дифференцированием.
Применение
дифференцирования для определения моментов функций распределения
с помощью производящей функции моментов.
3. Разработка генератора случайных чисел для заданного распределения
вероятностей.
4. Вычисление определенного интеграла от данной функции двух
переменных методом Монте-Карло с оценкой точности вычисления.
Интегрирование требуется выполнить двумя методами.
5. Минимизация функции двух переменных своей программой
минимизации и программой MINUIT, разработанной в ЦЕРН.
6. Получение параметров -резонанса по экспериментальным данным.
Оценка статистической точности параметров.
Литература
1. А.Д. Букин, С.И. Эйдельман. ЭВМ в планировании и обработке
эксперимента. Учебное пособие. Ред.-изд. отдел НГУ, Новосибирск,
1995, 87 стр.
2. А.Д. Букин, С.И. Эйдельман. ЭВМ в планировании и обработке
эксперимента. Учебное пособие. Изд. 2-е, испр. И доп. Ред.-изд. отдел
НГУ, Новосибирск, 2002, 114 стр.
3. Д.Мак-Кракен, У.Дорн. Численные методы и программирование на
Фортране. «Мир», Москва, 1977.
4. Ч.Хьюз и др. Методы программирования: курс на основе Фортрана.
«Мир», Москва, 1981.
5. Г.Катцан. Язык Фортран 77. «Мир», Москва, 1982.
6. Х.Гулд, Я.Тобочник. Компьютерное моделирование в физике. Часть
вторая. М.: «Мир», 1990.
7. Г.Майерс. Искусство тестирования программ. «Финансы и статистика»,
Москва, 1982.
8. Д.Худсон. Статистика для физиков. «Мир», Москва, 1970.
9. Д.Е.Кнут. Искусство программирования для ЭВМ. Том 2.
Получисленные алгоритмы. М.: Мир, 1977.
10. Д.Тернер. Вероятность, статистика и исследование операций.
«Статистика», Москва, 1976.
11. И.М.Соболь. Численные методы Монте-Карло. «Наука», Москва, 1973.
12. С.М.Ермаков, Г.А.Михайлов. Курс статистического моделирования. М.:
«Наука», 1976.
13. Г.Корн и Т.Корн. Справочник по математике для научных работников и
инженеров. М.: «Наука», 1973.
14. М.Аоки. Введение в методы оптимизации. «Наука», Москва, 1977.
15. Дж.Дайамендстоун и компания «И-Ар-Ай Трейнинг». Использование
ОС VAX/VMS. «Мир», Москва, 1992.
16. В.П.Гердт, О.В.Тарасов, Д.В.Ширков. Аналитические вычисления на
ЭВМ в приложении к физике и математике. Успехи физических наук,
1980, т.130, вып.1, с. 113-147.
17. В.Ф.Еднерал и др. Язык аналитических вычислений REDUCE. М.:
Издательство МГУ, 1983.
ОБЬЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
(2 курс, 3 сем., 72 ч., диф.зачёт)
Программа курса лекций (36 часов)
Ассистент Всеволод Юрьевич Рылов
Объектно-ориентированная модель
1. Основные принципы объектно-ориентированного программирования
(4 часа)
1.1. Эволюция методологий программирования
1.1.1. Начало
начал,
или
первое
поколение
языков
программирования.
1.1.2. Развитие алгоритмических абстракций, или второе
поколение языков программирования.
1.1.3. Модуль как единица построения программных систем,
третье поколение языков программирования.
1.1.4. Зарождение объектной модели, четвертое поколение
языков программирования.
1.1.5. Объектные
языки
программирования,
объектноориентированные языки программирования, объектноориентированный анализ, дизайн и проектирование.
1.1.6. Парадигмы программирования.
1.2. Составные части объектного подхода
1.2.1. Абстрагирование
1.2.2. Инкапсуляция
1.2.3. Модульность
1.2.4. Иерархия
1.2.5. Типизация
1.2.6. Параллелизм
1.2.7. Сохраняемость
2. Объектно-ориентированная модель (2 часа)
2.1. Понятие объекта
2.2. Свойства, присущие объектам
2.2.1. Состояние
2.2.2. Поведение
2.2.3. Идентичность
2.3. Отношения между объектами
2.3.1. Типы отношений
2.3.2. Связь (ассоциация)
2.3.3. Агрегация
3. Классы (2 часа)
3.1. Природа классов.
3.2. UML
–
унифицированный
язык
моделирования.
Четырехуровневая метамодель MOF
3.3. Отношения между классами.
3.3.1. Типы отношений
3.3.2. Ассоциация
3.3.3. Агрегация, Композиция.
3.3.4. Использование
3.3.5. Наследование
3.3.6. Инстанцирование
3.4. Отношения между классами и объектами
Инструментальные средства ООП языка программирования C++
4. Основные алгоритмические отличия C++ от C (2 часа)
4.1. Использование ссылок. Передача аргументов функции по ссылке.
4.2. Использование констант.
4.3. Логические тип и перечисления.
4.4. Операторы управления динамической памятью, инициализация
массивов.
4.5. Структура программы, раздельная компиляция и особенности
использования статической памяти.
4.6. Функциональный полиморфизм.
4.7. Пространства имен и исключения (краткий обзор)
4.8. Библиотека ввода вывода (краткий обзор iostream)
5. Средства объектного программирования языка C++ (6 часов)
5.1. Представление объектов и классов.
5.1.1. Реализация поведения объектов на примере добавления
функций—членов
в
структуры.
Структура
как
вырожденный класс.
5.1.2. Структура объявления класса.
Доступ к членам класса.
Поля данных класса как механизм реализации состояния
объекта.
5.1.5. Функции члены класса как механизм реализации
поведения объекта.
5.1.6. Спецификаторы доступа для обеспечения инкапсуляции.
5.1.7. Средства управления жизнью объекта. Конструирование и
уничтожение объектов и массивов объектов.
5.1.8. Особенности
использования
конструктора
копии,
конструктора по умолчанию, оператора присваивания.
5.1.9. Описание селекторов и модификаторов.
5.1.10. Перегрузка операторов C++ как реализация поведения с
предопределенным смыслом.
5.1.11. Дружественность как механизм нарушения инкапсуляции.
Достоинства и недостатки механизма дружественности.
5.1.12. Статические поля и методы классов. Инициализация
статических полей.
5.2. Реализация отношений между объектами и классами
5.2.1. Ассоциация и агрегация объектов и классов. Зависимость
по времени жизни.
5.2.2. Использование и зависимость от интерфейсов.
5.2.3. Объекты при передаче параметров и возврате из методов.
5.2.4. Варианты реализации отношения клиент-сервер.
5.2.5. Внутренние классы.
6. Средства объектно-ориентированного программирования С++ (7 часов)
6.1. Наследование как средство организации иерархий классов.
Принцип замещения Лисковой.
6.2. Одиночное наследование.
6.2.1. Понятие производного класса.
6.2.2. Управление доступом в производных классах.
6.2.3. Конструкторы и деструкторы, совмещение имен методов
при наследовании, иерархии.
6.2.4. Абстрактные классы и виртуальные функции.
6.2.5. Виртуальный полиморфизм.
6.2.6. Информация о типе на этапе выполнения. RTTI.
5.1.3.
5.1.4.
6.3. Множественное наследование
6.3.1. Проблема множественного наследования. Виртуальное
наследование как средство разрешения коллизий.
6.3.2. Порядок вызовов конструкторов и деструкторов при
множественном наследовании.
6.3.3. Чистые виртуальные классы, понятие интерфейса.
6.3.4. Принципы дизайна иерархий классов. OCP, DIP, ISP.
6.4. Пространства имен.
6.4.1. Пространства имен как средство реализации модульности.
6.4.2. Поиск имен и разрешение конфликтов.
6.4.3. Объединение пространств имен.
6.4.4. Принципы дизайна пакетов.
6.5. Обработка исключений.
6.5.1. Обработка ошибок.
6.5.2. Группировка и перехват исключений.
6.5.3. Управление ресурсами.
6.5.4. Исключения и эффективность.
6.5.5. Альтернативные методы обработки ошибок.
6.5.6. Стандартные исключения.
7. Обобщенное программирование. (3 часа)
7.1. Шаблоны классов.
7.1.1. Определение шаблона.
7.1.2. Инстанцирование.
7.1.3. Параметры шаблонов и проверка типов.
7.2. Шаблоны функций.
7.3. Специализация.
7.4. Наследование и шаблоны.
8. Стандартная библиотека С++. (6 часов)
8.1. Библиотека стандартных шаблонов
8.1.1. Общие сведения (понятия контейнеров, итераторов и
объектов-функций)
8.1.2. Контейнеры (виды контейнеров, последовательные и
ассоциативные контейнеры, адаптеры)
Итераторы (итератор как обобщение указателя, классы
итераторов)
8.1.4. Алгоритмы (примеры алгоритмов с использованием
итераторов: алгоритмы сортировки, алгоритмы, не
изменяющие
содержание
контейнера,
алгоритмы,
изменяющие содержание контейнера)
8.2. Библиотека ввода-вывода
8.2.1. Потоки
вывода.
Вывод
типов
определяемых
пользователем.
8.2.2. Потоки ввода. Ввод типов определяемых пользователем.
8.2.3. Форматирование в потоках ввода-вывода.
8.2.4. Буферизация.
8.1.3.
Программа практических занятий (36 часов)
Ассистент Всеволод Юрьевич Рылов
1. Тема: Введение в объектное программирование на С++.
Продолжительность: 4 занятия.
Цель: Обобщить знания студентов в инструментальном языке Си,
познакомиться с концепцией объектного подхода, используя только
механизм структур языка C++, написать командный интерпретатор,
который понадобиться для выполнения последующих заданий.
Практические задания: Написание программы обеспечивающей
функциональность записной книжки с использованием средств языка С.
Запрограммировать структуры Record, Command и функции операций
над ними. Объединить функции манипуляции с данными структур в
интерфейс структуры (сделать их функциями-членами). Обеспечить
выполнение команд поиска, редактирования и сохранения содержимого
записной книжки в файл.
2. Тема: Знакомство со структурой класса в языке С++.
Продолжительность: 1 занятие.
Цель: Выработать понимание студентами структуры класса в языке С++,
функциональности и назначения функций конструктора, конструктора
по умолчанию, конструктора копии, оператора присваивания,
деструктора. Познакомить студентов с механизмом создания и удаления
объектов и массивов объектов.
Практические задания: Написать программу и реализовать класс –
контейнер с элементарным набором операций, манипулирующий
объектами заданного типа. Реализовать набор конструкторов, оператор
присваивания и деструктор для объектов класса контейнера.
3. Тема: Знакомство с операторами языка С++.
Продолжительность: 2 занятия.
Цель: Научить студентов механизму перегрузки стандартных операторов
языка С++, выработать понимание принципов приведения аргументов.
Закрепить навыки описания классов и управления механизмом
создания/уничтожения объектов.
Практические задания: Запрограммировать классы Vector и Matrix
фиксированных размеров для реализации вектора и матрицы.
Обеспечить
полный
набор
операций
для
каждого
типа.
Модифицировать полученные классы так, чтобы обеспечить операции в
комплексном унитарном пространстве.
4. Тема: Реализация “copy on write” механизма.
Продолжительность: 1 занятие.
Цель: Развитие навыков реализации сложных композиционных отношений
между объектами. Операции с большим множеством объектов. Работа с
большими объемами памяти.
Практические задания: Реализуйте класс String классическим образом и с
помощью механизма “copy on write”. Замерьте разницу в
производительности при операциях с большими массивами строк
реализованных с помощью данных механизмов. В качестве источника
данных можно взять текстовый файл размером несколько десятков
мегабайт.
5. Тема: Итераторы.
Продолжительность: 1 занятие.
Цель: Развитие навыков работы с итераторами.
Практические задания: Реализуйте класс Iterator как внутренний класс
контейнера из задания №2. Обеспечьте доступ к элементам контейнера
в прямом и обратном порядке.
6. Тема: Наследование. Виртуальные функции.
Продолжительность: 1 занятие.
Цель: Знакомство с механизмом одиночного и множественного
наследования в C++. Изучение порядка инициализации и вызовов
конструкторов. Знакомство с абстрактными классами и виртуальными
функциями.
Практические задания: Напишите программу, демонстрирующую
порядок вызовов конструкторов и деструкторов при создании объекта
класса в иерархии классов. Напишите программу, которая вызовет
чисто виртуальную функцию. Объясните, как она работает.
7. Тема: Шаблоны.
Продолжительность: 3 занятия.
Цель: Знакомство с шаблонами классов и функций.
Практические задания: Переделайте класс контейнера и итератора с
использованием шаблонов. Реализуйте итератор с произвольным
доступом. Напишите шаблон класса Comparator для осуществления
операции сравнения двух объектов. Напишите шаблон функции sort,
реализующей механизм быстрой сортировки для контейнера с
использованием класса Comparator. Напишите тестовую программу,
сортирующую контейнер объектов типа String из задания №4 в прямом
и обратном порядке.
8. Тема: Иерархии классов и объектов.
Продолжительность: 3 занятия.
Цель: Написание программы с использованием иерархии классов и
объектов. Отработка и закрепление основных методов объектноориентированного программирования.
Практические задания: Используя командный интерпретатор из задания
№1, напишите диалоговую программу управления базой данных
сотрудников небольшого предприятия. Постройте иерархию классов и
выделите ключевые абстракции. Должны присутствовать такие
абстракции, как PersonalRecord, Department, Employer, Manager,
Developer, Salary, TermOfEmployment. Программа должна поддерживать
сохранение данных на диске и быть легко расширяемой для добавления
новых абстракций в систему.
9. Тема: Сдача заданий, самостоятельная работа.
Литература
1. Объектно-ориентированное программирование, анализ и дизайн.
Учебное пособие. / Мухортов В.В., Рылов В.Ю. Новосибирск: ИМ СО
РАН, 2002
2. Объектно ориентированный анализ и проектирование с примерами
приложений на С++, 2-е изд./Буч Гр. Пер. с англ. – СПб.; М.: «Невский
Диалект» – «Издательство БИНОМ», 1999.
3. Принципы объектно-ориентированной разработки программ. 2-е изд.
/Элиенс Антон. Пер с англ. – М.: Издательский дом «Вильямс», 2002
4. Язык UML. Руководство пользователя/ Буч Г., Рамбо Д., Джекобсон А.:
Пер. с англ. – М. ДМК, 2000.
5. Язык программирования C++, 3-е изд./ Страуструп Б. Пер. с англ. –
СПб.; М.: «Невский Диалект» – «Издательство БИНОМ», 1999 г.
6. Дизайн и эволюция языка С++. / Страуструп Б. Пер. с англ. – М. ДМК,
2000
7. Правила программирования C & C++ / Голуб А. Под редакцией
Костенко В. – М.: Восточная книжная компания. 1996
8. Эффективное использование С++. 50 рекомендаций по улучшению
ваших программ и проектов / Мейерс С. Пер. с англ. – М. ДМК, 2000
9. Наиболее эффективное использование С++. 35 новых рекомендаций по
улучшению ваших программ и проектов. / Мейерс С. Пер. с англ. – М.
ДМК, 2000
10. Философия Java / Эйкель Брюс – СПб.: Питер, 2001
11. Java 2. Наиболее полное руководство / Ноутон П., Шилдт Г. – СПб.:
BHV, 2001
ОБЬЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
(2 курс, 4 сем., 64 ч., диф.зачёт)
Программа курса лекций (32 часа)
Ассистент Всеволод Юрьевич Рылов
Инструментальные средства ООП языка программирования Java
1. Виртуальная машина Java (2 часа)
1.1. История и предпосылки появления Java.
1.2. Понятие виртуальной машины. Среда исполнения и байт-код.
Взаимодействие виртуальной машины с операционной системой.
1.3. Пространства классов. Структура приложений на Java. Загрузка
классов и инициализация объектов.
1.4. Сферы применения Java в современном информационном мире.
1.5. Версии Java машины и их эволюция.
1.6. Средства ООП, непосредственно поддерживаемые в Java.
1.7. Простейшие приложение на Java.
2. Алгоритмические средства языка Java. (1 час)
2.1. Строгая типизация Java.
2.2. Базовые типы языка. Строки и литералы.
2.3. Преобразования типов в выражениях.
2.4. Особенности инициализации массивов. Операторы управления
памятью.
2.5. Краткий обзор операторов. Использование break.
3. Средства объектного программирования языка Java. (3 часа)
3.1. Представление объектов и классов.
3.1.1. Структура объявления класса.
3.1.2. Доступ к членам класса.
3.1.3. Спецификаторы доступа для обеспечения инкапсуляции.
3.1.4. Спецификатор доступа final.
3.1.5. Средства управления жизнью объекта. Конструкторы и
метод finalize().
3.1.6. Принципы работы сборщика мусора.
3.1.7. Работа с массивами объектов.
3.1.8. Статические поля и методы классов. Классы – утилиты.
3.1.9. Блок статической инициализации.
3.1.10. Принцип работы ClassLoader.
3.2. Реализация отношений между объектами и классами.
3.2.1. Ассоциация и агрегация объектов и классов.
3.2.2. Использование и зависимость от интерфейсов.
3.2.3. Объекты при передаче параметров и возврате из методов.
3.2.4. Реализация отношения Клиент – Сервер.
3.2.5. Внутренние классы.
4. Средства объектно-ориентированного программирования Java. (6 часов)
4.1. Наследование в Java.
4.1.1. Производные классы.
4.1.2. Класс Object. Метод toString().
4.1.3. Управление доступом в производных классах.
4.1.4. Абстрактные классы и интерфейсы.
4.1.5. Реализация
интерфейсов
как
альтернатива
множественному наследованию.
4.1.6. Информация о типе на этапе исполнения. Оператор
instanceof. Приведение типов.
4.1.7. Использование класса Class.
4.2. Пакеты.
4.2.1. Определение пакета.
4.2.2. Ограничение доступа.
4.2.3. Импортирование пакетов. Разрешение конфликтов имен.
4.3. Обработка исключений.
4.3.1. Основные принципы и типы исключительных ситуаций.
4.3.2. Перехват исключительных ситуаций. Операторы try,
throw, throws, catch, finally.
4.3.3. Использование нескольких блоков catch и вложенный
оператор try.
4.3.4. Не перехваченные исключительные ситуации.
4.3.5. Встроенные исключительные исключения Java. Классы
Throwble и Exception.
4.3.6. Принципы создания и использования исключительных
ситуаций.
4.4. Многопоточное программирование на Java. Параллелизм.
4.4.1. Модель потока в Java. Зависимость от реализации потока в
операционной системе.
4.4.2. Свойства потока. Синхронизация. Передача сообщений.
4.4.3. Класс Thread и интерфейс Runnable.
4.4.4. Главный поток и способы создания потоков.
4.4.5. Управление потоками и приоритеты потоков.
4.4.6. Группы потоков.
4.4.7. Особенности написания многопоточных программ.
4.4.8. Использование синхронизирующих блоков и мониторов
объектов. Синхронизированные методы объектов.
4.4.9. Взаимная блокировка.
4.4.10. Использование пула потоков.
5. Стандартная библиотека Java. (8 часов)
5.1. Организация пакетов стандартной библиотеки Java. Пакеты java и
javax.
5.2. Обработка строк.
5.2.1. Использование и методы класса String
5.2.2. Использование StringBuffer.
5.3. Пакет java.lang.
5.3.1. Структура и назначение.
5.3.2. Использование класса System. Управление средой
исполнения.
5.3.3. Использование классов Number, Double, Integer, Character
и др.
5.3.4. Класс Math.
5.3.5. Класс Compiler и класс ClassLoader.
5.4. Пакет java.util
5.4.1. Общие принципы организации контейнеров и коллекций в
Java.
5.4.2. Использование множеств и списков.
5.4.3. Использование
отображений
и
ассоциативных
контейнеров.
5.4.4. Итераторы и исключительные ситуации при работе с
классами утилит.
5.4.5. Класс Properties.
5.4.6. Классы Date и Calendar.
5.5. Подсистема ввода вывода java.io
5.5.1. Общие концепции организации ввода – вывода в
библиотеке Java.
5.5.2. Проблема платформенной независимости и локализации.
5.5.3. Основные классы потоков ввода-вывода в Java и методы
работы с ними.
5.5.4. Использование потоков ввода вывода при работе с
файлами. Эффективность.
5.5.5. Концепция Reader и Writer. Управление локализацией.
5.5.6. Использование Tokenizer.
5.6. Пакет java.net.
5.6.1. Основы работы с сетью в Internet. Адресация.
5.6.2. Сокеты. Жизненный цикл сокета.
5.6.3. Работа с протоколом HTTP и класс URL.
6. Графическая подсистема Java. JFC. (4 часа)
6.1. Классы AWT.
Основы работы с окнами. Component, Container, Panel,
Window, Frame, Canvas.
6.1.2. Доставка и обработка событий в графической подсистеме.
Механизм Listeners.
6.1.3.
Создание программы с оконным интерфейсом. Рисование
графических примитивов.
6.1.4. Использование управляющих элементов, диспетчеров
компоновки и меню.
6.1.5. Связь
классов
AWT
с оконным
интерфейсом
операционной системы.
6.2. Классы Swing.
6.2.1. Основные принципы графической системы Swing.
Платформенная независимость, понятие Look&Feel
6.2.2. Написание графического интерфейса с использованием
Swing компонентов.
6.2.3. Работа с таблицами, текстом, диалогами и HTML.
6.3. Апплеты.
6.3.1. Основы работы с апплетом.
6.3.2. Жизненный цикл апплета.
6.3.3. Дескриптор APPLET.
6.3.4. Передача параметров и загрузка апплета.
7. Модель безопасности Java. (2 часа)
7.1. Принципы организации и эволюция модели безопасности в Java.
7.2. SecurityManager. Инициализация и функции.
7.3. Права доступа. Управление и проверка прав доступа.
7.4. Исключительные ситуации.
7.5. Java Cryptography Extension
7.6. Алгоритмы шифрования. Ключи и цифровые подписи.
8. Программирование распределенных приложений. (6 часов)
8.1. Принципы построения распределенных приложений.
8.2. Проблемы передачи объектов и синхронизации в распределенных
приложениях.
8.3. Реализация сохраняемости.
8.4. Three-tier технология.
8.4.1. Уровень интерфейса.
8.4.2. Уровень бизнес логики.
8.4.3. Уровень сохранения.
8.5. Remote Method Invocation
8.5.1. Основные принципы и протокол взаимодействия.
8.5.2. Интерфейс Remote и класс UnicastRemoteObject.
8.5.3. Класс Naming и rmiregistry сервис.
6.1.1.
RMI сервер.
RMI клиент.
Модель безопасности, синхронизация и сборка мусора в
распределенных RMI приложениях.
8.5.7. Механизм Activation.
8.6. Основы Java Enterprise технологии.
8.6.1. Интеграция с Web.
8.6.2. Java сервлеты.
8.6.3. Java Server Pages. Web контейнеры.
8.6.4. Механизм SessionBeans.
8.6.5. EJB технология. Bean контейнеры.
8.7. JDBC технология.
8.8. Java Micro Edition.
8.8.1. Java для мобильных телефонов. K-virtual machine.
8.8.2. CLDC, MIDP и iMode расширения Java 2 ME.
8.8.3. Технология JavaCard.
8.8.4. Примеры реальных приложений. Сложность разработки.
8.9. Java media framework, технологии обработки звука и голоса.
9. Технология коллективной разработки Java приложений. (2 часа)
9.1. Использование документирующих комментариев.
9.2. Соглашения при написании кода и именовании классов и
объектов.
9.3. Build система Ant. Автоматизация сборки и размещения Java
приложений.
9.4. Система log4j.
10. Основы архитектурного анализа и проектирования объектноориентированных систем
10.1. Правила дизайна классов и пакетов.
10.2. Паттерны проектирования.
10.3. Цикл разработки объектно-ориентированного приложения. RUP.
(Возможна замена этой лекции на лекцию по C#)
8.5.4.
8.5.5.
8.5.6.
Программа практических занятий (32 часа)
Ассистент Всеволод Юрьевич Рылов
1. Тема: Описание классов и структура приложения в Java.
Продолжительность: 1 занятие.
Практические задания: Напишите простой класс контейнер для хранения
произвольных объектов Object, с обеспечением минимального набора
операций.
2. Тема: Иерархии классов и объектов.
Продолжительность: 3 занятия.
Практические задания: Перенесите программу из задания №8 по C++ на
язык Java.
3. Тема: Знакомство с механизмом загрузки и инициализации
объектов.
Продолжительность: 2 занятия.
Практические задания: Напишите программу, реализующую механизм
фабрики объектов классов реализующих определенный интерфейс. Для
реализации данного механизма следует воспользоваться механизмом
Properties, классом Class, для определения класса создаваемого объекта,
его загрузки в память JVM и инстанцирования с помощью конструктора
по умолчанию.
4. Тема: Многопоточное программирование.
Продолжительность: 2 занятия.
Практические задания: Напишите программу, моделирующую сборку
машины на конвейере. Каждый изготовитель деталей и сборщик машин
представлены своими потоками, синхронизирующимися на общем
складе продукции. Задачу можно усложнить тем, что детали сами могут
быть составными.
5. Тема: Графическая подсистема Java.
Продолжительность: 2 занятия.
Практические задания: Напишите простейший текстовый редактор с
поддержкой загрузки и сохранения файлов.
6. Тема: Апплеты.
Продолжительность: 1 занятие.
Практические задания: Напишите апплет, реализующий часы со
стрелками в окне броузера. Основные параметры апплет должен брать
из дескриптора апплета.
7. Тема: Модель безопасности Java.
Продолжительность: 1 занятие.
Практические задания: Модифицируйте программу из пятого задания
так, чтобы она работала как апплет в окне броузера. С помощью
настроек системы безопасности Java обеспечьте возможность апплету
редактора работать с файлами пользователя на локальном диске.
8. Тема: Распределенное программирование.
Продолжительность: 2 занятия.
Практические задания: Модифицируйте программу из задания №4 так,
чтобы разные потоки завода по сборке машин работали в разных JVM.
9. Тема: Java Enterprise технология.
Продолжительность: 2 занятия.
Практические задания: С помощью JSP/EJB технологии реализуйте
счетчик посещений сайта.
Литература
1. Объектно-ориентированное программирование, анализ и дизайн.
Учебное пособие. / Мухортов В.В., Рылов В.Ю. Новосибирск: ИМ СО
РАН, 2002
2. Объектно ориентированный анализ и проектирование с примерами
приложений на С++, 2-е изд./Буч Гр. Пер. с англ. – СПб.; М.: «Невский
Диалект» – «Издательство БИНОМ», 1999.
3. Принципы объектно-ориентированной разработки программ. 2-е изд.
/Элиенс Антон. Пер с англ. – М.: Издательский дом «Вильямс», 2002
4. Язык UML. Руководство пользователя/ Буч Г., Рамбо Д., Джекобсон А.:
Пер. с англ. – М. ДМК, 2000.
5. Язык программирования C++, 3-е изд./ Страуструп Б. Пер. с англ. –
СПб.; М.: «Невский Диалект» – «Издательство БИНОМ», 1999 г.
6. Дизайн и эволюция языка С++. / Страуструп Б. Пер. с англ. – М. ДМК,
2000
7. Правила программирования C & C++ / Голуб А. Под редакцией
Костенко В. – М.: Восточная книжная компания. 1996
8. Эффективное использование С++. 50 рекомендаций по улучшению
ваших программ и проектов / Мейерс С. Пер. с англ. – М. ДМК, 2000
9. Наиболее эффективное использование С++. 35 новых рекомендаций по
улучшению ваших программ и проектов. / Мейерс С. Пер. с англ. – М.
ДМК, 2000
10. Философия Java / Эйкель Брюс – СПб.: Питер, 2001
11. Java 2. Наиболее полное руководство / Ноутон П., Шилдт Г. – СПб.:
BHV, 2001
ОПЕРАЦИОННЫЕ СИСТЕМЫ
1.
2.
3.
4.
5.
6.
7.
8.
Программа курса лекций
(2 курс, 4 сем., 32 ч., экзамен)
Ассистент Дмитрий Валентинович Иртегов
Классификация операционных систем. Понятие приложения реального
времени.
Обзор архитектуры фон-неймановского процессора (на примере x86,
SPARC). Режимы адресации: регистровый, литеральный, базовая,
индексная и базово-индексная адресация, относительная адресация.
Позиционно-независимый
код.
Ассемблер.
Одно-,
двухи
многопроходное ассемблирование. Таблица символов.
Загрузка программ. Абсолютный загрузчик. Относительный загрузчик.
Сборка программ. Редактор связей. Архивные библиотеки. Разделяемые
библиотеки. Позиционно-независимые разделяемые библиотеки ELF.
Загрузка операционной системы. Первичный, вторичный и
последующие загрузчики. Процесс загрузки Windows NT. Процесс
загрузки SunSoft Solaris.
Управление памятью (открытая память). Статическое, динамическое и
стековое распределение памяти. Внешняя и внутренняя фрагментация.
Стратегии выделения памяти: первый подходящий, наиболее
подходящий, наименее подходящий. Алгоритм парных меток. Алгоритм
близнецов. Алгоритм GNU Malloc
Виртуальная память. Базовая адресация. Сегментная и страничная
виртуальная память. Уровни привилегий. Виртуальная память VAX.
Виртуальная память x86. Виртуальная память SPARC v9. Страничный
обмен. Поиск жертвы. Алгоритм LRU. Clock-алгоритм. Приближения к
clock-алгоритму. Стратегия управления памятью в VAX/VMS и
Windows NT.
Внешние события. Опрос. Прерывания. Обзор многопроцессорных
архитектур.
Канальные
процессоры.
Симметричные
многопроцессорные системы. NUMA-архитектуры.
Параллелизм с точки зрения программиста. Постановка задачи. Понятие
критической секции. Реентерабельные процедуры. Взаимоисключение.
Примитивы взаимоисключения. Спинлоки. Семафоры Дейкстры.
Мертвая и живая блокировки. Обзор стратегий избежания блокировок.
Понятие
транзакции.
Мониторные
процессы.
Гармонически
взаимодействующие процессы.
Реализация параллелизма
на однопроцессорном компьютере.
Кооперативная
многозадачность
(сопрограммы).
Вытесняющая
многозадачность. Контекст процесса. Планировщик с приоритетами.
Кооперативная и вытесняющая многозадачность внутри ядра
(монолитное ядро и микроядро). Управляемая событиями архитектура.
9. Подсистема ввода-вывода. Драйверы внешних устройств. Архитектура
драйвера. Многоуровневые драйверы. Синхронный и асинхронный
ввод/вывод. Опережающее чтение и отложенная запись. Дисковый кэш.
Дисковая подсистема. RAID.
10. Файловые системы. Понятия файла и каталога. Операции над файлами.
Простые файловые системы (tar, RT-11). Сложные файловые системы
(UFS, NTFS, HPFS). Жесткие и символические связи. Устойчивость
файловой системы к сбоям. Восстановление файловых систем.
Журнальные файловые системы.
11. Вопросы
безопасности.
Аутентификация
и
авторизация.
Аутентификация
паролем.
Обзор
биометрических
методов
аутентификации. Криптографическая аутентификация. Полномочия.
Setuid и другие механизмы смены идентичности. Списки управления
доступом. Вырожденные списки управления доступом (кольца защиты).
Троянские программы и защита от них.
Литература
Баррон Д. Ассемблеры и загрузчики. — М.: Мир, 1974.
Дейкстра Э. Дисциплина программирования. — М.: Мир, 1978.
Дейтел Г. Введение в операционные системы. — М.: Мир, 1987.
Кейслер С. Проектирование операционных систем для малых ЭВМ. —
М.: Мир, 1986.
5. Иртегов Д. Введение в операционные системы – Спб: БХВ-СанктПетербург, 2002
6. Керниган
Б.,
Пайк
Р.
Unix —
универсальная
среда
программирования. — М.: Финансы и статистика, 1992.
7. Кнут Д. Э. Искусство программирования. — Издательский дом
Вильямс, 2000.
8. Краковяк С. Основы организации и функционирования ОС ЭВМ. — М.:
Мир, 1988.
9. Робачевский А. Операционная система Unix. — СПб.: БХВ — Санкт–
Петербург, 1999.
10. Танненбаум А. Современные операционные системы – М: Вильямс,
2001
11. Хевиленд К., Грэй Д., Салама Б. Системное программирование в
UNIX. — М.: ДМК Пресс, 2000.
12. Хоар Ч. Взаимодействующие последовательные процессы. — М.:
"Мир", 1989.
1.
2.
3.
4.
ОПЕРАЦИОННЫЕ СИСТЕМЫ UNIX
(3 курс, 5 сем., 108 ч., диф.зачёт)
Программа курса лекций (36 часов)
Ассистент Дмитрий Валентинович Иртегов
Раздел 1
1. Обзор среды программирования Unix. Использование компилятора gcc.
Использование man. Другие источники информации
2. Среда исполнения программ. Адресное пространство процесса,
пользовательская область. Доступ к параметрам процесса. Механизм
Setuid.
3. Управление памятью.
4. Работа с файлами. Открытие и создание файла. Чтение и запись.
Перемещение указателя чтения-записи. Отображение файлов в
оперативную память. Другие операции.
5. Блокировка участков файлов. Блокировка на чтение и на запись.
Рекомендательная и обязательная блокировка. Библиотечные функции
для работы с блокировками.
6. Создание процессов и исполнение программ. Создание процессов
системным вызовом fork. Системные вызовы семейства exec.
Завершение процесса.
7. Управление процессами. Связь родитель-потомок. Код возврата
процесса. Зомби. Системные вызовы семейства wait.
8. Терминальный ввод-вывод. Параметры терминального интерфейса.
Канонический и неканонический режим ввода. Управление заданиями.
9. Управление файлами. Проверка доступа к файлу. Получение
информации о файле. Жесткие и символические связи
10. Управление каталогами. Создание и уничтожение каталогов.
Перемещение по дереву каталогов. Просмотр каталога.
Раздел 2
11. Сигналы. Понятие сигнала, типы сигналов. Реакция на сигнал по
умолчанию. Обработка сигнала. Отправка сигнала процессам и группам
процессов. Взаимодействие сигналов и операций ввода-вывода.
12. Трубы (программные каналы). Неименованные трубы. Создание труб.
Взаимодействие процессов через неименованную трубу. Именованные
трубы. Создание именованной трубы. Открытие именованной трубы.
13. System V IPC. Создание и уничтожение средств IPC. Управление
средствами IPC.
14. IPC: очереди сообщений. Установка сообщения в очередь. Выбор
сообщений из очереди. Ограничения при работе с очередями.
15. IPC: семафоры. Инициализация набора семафоров. Операции над
набором семафоров. Группы операций.
16. IPC: разделяемая память. Подключение сегмента разделяемой памяти.
Отключение сегмента разделяемой памяти. Использование семафоров
для синхронизации доступа к разделяемой памяти.
Программа практических занятий (72 часа)
Ассистент Дмитрий Валентинович Иртегов
Оценка на дифференцированном зачете выставляется по итогам
практических занятий.
 Для получения оценки «отлично» на дифференцированном зачете
следует сдать 23 задания практикума «Системное программирование»
(не менее 10 заданий должно быть из раздела 2). Можно также получить
оценку «отлично», сдав все задания, помеченные как «задания по shell».
 Для получения оценки «хорошо» на дифференцированном зачете
следует сдать 11 заданий
 Для получения оценки «удовлетворительно» на дифференцированном
зачете следует сдать 6 заданий. Студент, не сдавший ни одного задания,
может получить оценку «удовлетворительно» по итогам устного
собеседования по теме практикума.
 При сдаче всех заданий необходимо предоставить исходные тексты
программы и продемонстрировать ее работу в операционной системе
Solaris 8. Преподаватель обязан убедиться, что студент понимает
принцип работы программы и способен контролировать последствия
вносимых в программу изменений. Для этого преподаватель имеет
право предъявить к сдаваемой программе дополнительные требования.
Задания практикума
Раздел 1
1. Вывод различных атрибутов процесса в соответствии с указанными
опциями
0 Напишите программу, которая будет обрабатывать опции, приведенные
ниже. Опции должны быть обработаны в соответствии с порядком
своего появления справа налево. Одной и той же опции разрешено
появляться несколько раз. Используйте getopt(3C) для определения
имеющихся опций. Сначала пусть ваша программа обрабатывает только
некоторые опции. Затем добавьте еще, до тех пор, пока все требуемые
опции не будут обрабатываться. Вы можете скопировать
воспользоваться программой getopt_ex.c и изменить ее.
 -i Печатает реальные и эффективные идентификаторы пользователя и
группы.
 -s Процесс становится лидером группы. Подсказка: смотриии
setpgid(2).
 -p Печатает иидентификаторы процесса, процесса-родителя и группы
процессов.
 -u Печатает значение ulimit
 -Unew_ulimit Изменяет значение ulimit. Подсказка: смотри atol(3C)
на странице руководства strtol(3C)
 -c Печатает размер в байтах core-файла, который может быть создан.
 -Csize Изменяет размер core-файла
 -d Печатает текущую рабочую директорию
 -v Распечатывает переменные среды и их значения
 -Vname=value Вносит новую переменную в среду или изменяет
значение существующей переменной.
Проверьте вашу программу на различных списках аргументов, в том числе:
 Нет аргументов
 Недопустимую опцию.
 Опции, разделенные знаком минус.
 Неудачное значение для U.
2. Время в Калифорнии
Измените программу ex_time.c, чтобы она выводила дату и время в
Калифорнии (Pacific Standard Time, PST). Подсказка: Если время UTC
20 часов, то в Калифорнии 12 часов.
3. Установка идентификатора пользователя для доступа к файлу
Создайте файл данных, который может писать и читать только владелец
(это можно сделать командой shell chmod 600 file) и напишите
программу, которая
1. Печатает реальный и эффективный идентификаторы пользователя.
2. Открывает файл с помощью fopen(3). Если fopen() завершился
успешно, файл должен быть закрыт с помощью fclose(3). Напечатайте
сообщение об ошибке, используя perror(3C), если файл не удалось
открыть.
3. Сделайте, чтобы реальный и эффективный идентификаторы
пользователя совпадали. Подсказка: setuid(2)
4. Повторите перввые два шага.
Проверьте работу вашей программы.
1. Исполните программу и посмотрите вывод
2. Сделайте программу доступной для запуска членам вашей группы и
пусть ваши одногруппники исполнят программу.
3. Командой chmod u+s prog установите бит установки идентификатора
пользователя и пусть ваши одногруппники опять исполнят эту
программу.
4. Список строк
Напишите программу, которая вставляет строки, введенные с клавиатуры, в
список. Память под узлы списка выделяйте динамически с
использованием malloc(3). Ввод завершается, когда в начале строки
вводится точка (.). Затем все строки из списка выводятся на экран.
Подсказка: Объявите массив символов размера, достаточного чтобы
вместить самую длинную введенную строку. Используйте gets(3), чтобы
прочитать строку, и strlen(3), чтобы определить ее длину. Помните, что
strlen(3) не считает нулевой символ, завершающий строку. После
определения длины строки, выделите блок памяти нужного размера и
внесите новый указатель в список.
5. Таблица поиска строк в текстовом файле.
Написать программу, которая анализирует текстовый файл, созданный
текстовым редактором, таким как ed(1) или vi(1). После запроса,
который предлагает ввести номер строки, с использованием printf(3)
программа печатает соответствующую строку текста. Ввод нулевого
номера завершает работу программы. Используйте open(2), read(2),
lseek(2) и close(2) для ввода/вывода. Постройте таблицу отступов в
файле и длин строк для каждой строки файла. Как только эта таблица
построена, позиционируйтесь на начало заданной строки и прочтите
точную длину строки. Предполагайте, что файл не длиннее сотни строк.
Подсказка: Выберите или создайте текстовый файл с короткими
строками. Помните, что первая строка начинается с нулевого отступа в
файле. Найдите каждый символ перевода строки, запишите его
позицию; в программе следует использовать вызов lseek(fd, 0L, 1). Для
отладки распечатайте эту таблицу и сравните с таблицей, полученной
вручную. Как только таблицы начнут совпадать, можно приступать к
запросу номера строки.
6. Таблица поиска строк в текстовом файле.
Измените программу так, чтобы пользователю отводилось 5 секунд на ввод
номера строки. Если пользователь не успевает, программа должна
распечатать все содержимое файла и завершиться. Если же
пользователь успел в течение пяти секунд ввести номер строки, то
программа должна работать как в предыдущей задаче.
7. Таблица поиска строк в текстовом файле 2.
Измените предыдущую программу так, чтобы использовалось отображение
файла в память взамен использования read(2), lseek(2) и write(2).
8. Защищенный текстовый редактор
Напишите программу, которая захватывает весь файл перед вызовом
редактора. Это защитит файл с правами доступа группы на изменение.
После того как программа захватит файл, вызовите свой любимый
редактор с помощью библиотечной функции system(3). Попытайтесь в
вашей программе использовать допустимое захватывание. Когда ваша
программа захватит файл, попросите одногруппника исполнить вашу
программу. Объясните результат. Потом попытайтесь использовать
обязательное захватывание. Объясните результат.
9. Создание двух процессов
Напишите программу, которая создает подпроцесс. Этот подпроцесс
должен исполнить cat(1) длинного файла. Родитель должен вызвать
printf(3) и распечатать какой-либо текст. После выполнения первой
части задания модифицируйте программу так, чтобы последняя строка,
распечатанная родителем, выводилась после завершения порожденного
процесса. Используйте wait(2), waitid(2) или waitpid(3).
10. Код завершения команды
Напишите программу, которая запускает команду, заданную в качестве
первого аргумента, в виде порожденного процесса. Все остальные
аргументы программы передаются этой команде. Затем программа
должна дождаться завершения порожденного процесса и распечатать
его код завершения.
11. Функция execvpe()
Напишите функцию execvpe(), которая работает как execvp(2), но
позволяет
изменять
среду
исполнения,
как
execve(2).
Совет: используйте внешнюю переменную environ.
12. Командный интерпретатор shell (задание №1 по shell)
В этом упражнении вы должны разработать упрощенную версию
командного интерпретатора системы UNIX - shell. В дальнейшем этот
shell будет улучшен добавлением программных каналов и обработки
сигналов. Для вас заранее написаны некоторые функции этой
программы. В файле shell.c содержится скелет функции main() с
комментариями, говорящими, где следует вставить ваш код. Функция
main() вызывает функцию prompline() из файла promptline.c, которая
читает строку из стандартного ввода. Затем main() вызывает parseline()
из файла parseline.c, которая проверяет ввод на отсутствие
синтаксических ошибок. Для каждой команды в строке, parseline()
формирует дескриптор команды типа struct command, определенного в
shell.h Существует глобальный массив таких структур, называемый
cmds[] и объявленный в shell.c. Дескриптор команды состоит из двух
полей. Первое поле - массив указателей, называемый cmdargs[].
Функция parseline() инициализирует этот массив указателями на строки
- аргументы. Каждый аргумент завершается нулевым байтом. Во
входной строке аргументы разделяются пробелами. Кроме того,
parseline() помещает после последнего аргумента в списке cmdargs[]
нулевой указатель. Команды могут разделяться переводом строки,
точкой с запятой, амперсендом (&) или символами <, >, >> или |. Другие
глобальные переменные, объявленные в shell.c определяют, должна ли
команда быть запущена в основном (foreground) или фоновом
(background) режиме, а также для перенаправления ввода/вывода из/в
файл. Эти переменные (bkgrnd, infile, outfile и appfile) устанавливаются
в функции parseline(). Если bkgrnd ненулевой, команда должна быть
запущена в фоновом режиме, то есть ваш shell не должен ожидать
завершения соответствующего процесса. Если infile ненулевой, он
указывает на имя файла, из которого должен быть получен стандартный
ввод первой команды в строке, т.е. символ <. Аналогично, если outfile
ненулевой, он указывает на имя файла, куда следует перенаправить
вывод последней команды в строке, т.е. символ >. Наконец, если appfile
ненулевой, это имя файла, к содержимому которого следует добавить
вывод последней команды в строке, т.е. символ >>. В следующих
упражнениях вы будете модифицировать shell.c. Каждое последующее
упражнение является улучшением предыдущего. Вы должны
использовать
следующую
версию
вызова
exec(2):
execvp(cmds[i].cmdargs[0], cmds[i].cmdargs);
13. Исполнение команд (задание №2 по shell)
Модифицируйте shell.c для исполнения каждой команды в массиве cmds[]
как подпроцесса. Во время исполнения этого подпроцесса, ваша
программа должна ждать его завершения. Если программа, заданная во
входной строке, не может быть найдена, shell должен распечатать
сообщение об ошибке и продолжить исполнение. Предполагается, что
пользователь набирает только простые команды, т.е. только одна
команда на строке, без метасимволов, перенаправления ввода/вывода,
конвейеров и символа &.
14. Исполнение в фоновом режиме (задание №3 по shell)
Измените вашу программу так, чтобы позволить исполнение команд в
фоновом режиме, обозначаемое символом & в конце командной строки.
Программа должна выводить идентификатор фонового процесса на
стандартный вывод.
15. Перенаправление ввода/вывода (задание №4 по shell)
Измените вашу программу так, чтобы позволить перенаправление
ввода/вывода. Заметьте, что перенаправление ввода ("< filename")
используется только с первой командой в строке, а вывода ("> filename"
или
">>
filename")
только
с
последней.
Совет: используйте dup(2).
16. Ответ без ввода новой строки
Напишите программу, которая печатает вопрос и требует односимвольного
ответа. Измените атрибуты вашего терминала так, чтобы пользователю
не нужно было вводить новую строку после ответа.
17. Строчный редактор
Многие программы, принимающие ввод с терминала, позволяют
редактировать строку перед использованием. Напишите программу,
которая выключает эхо и каноническую обработку, таким образом
выключив и обработку символа забоя. Ваша программа должна
получать ввод с клавиатуры и показывать его на терминале в
соответствии со следующими правилами:
a. Каждый введенный символ должен немедленно появляться на
дисплее.
b. Когда вводится символ ERASE, стирается последний символ в
текущей строке.
c. Когда вводится символ KILL, стираются все символы в текущей
строке.
d. Когда вводится CTRL-W, стирается последнее слово в текущей
строке, вместе со всеми следующими за ним пробелами.
e. Программа завершается, когда введен CTRL-D и курсор находится в
начале строки.
f. Все непечатаемые символы, кроме перечисленных выше, должны
издавать звуковой сигнал, выводя на терминал символ CTRL-G.
g. Длина строки ограничена 40 символами. Если какое-то слово
пересекает 40-й столбец, это слово должно быть помещено в начало
следующей строки.
18. Листинг каталога
Напишите программу - аналог команды ls -ld. Для каждого своего
аргумента эта команда должна распечатывать:
 Биты состояния файла в воспринимаемой человеком форме:


o
d если файл является каталогом
o
- если файл является обычным файлом
o
? во всех остальных случаях
Три группы символов, соответствующие правам доступа для
хозяина, группы и всех остальных:
o
r если файл доступен для чтения, иначе -
o
w если файл доступен для записи, иначе -
o
x если файл доступен для исполнения, иначе -
Количество связей файла
o
Имена собственника и группы файла (совет - используйте
getpwuid и getgrgid).
o
Если файл является обычным файлом, его размер. Иначе
оставьте это поле пустым.
o
Дату модификации файла (используйте ctime).
o
Имя файла (если было задано имя с путем, нужно
распечатать только имя).
Желательно, чтобы поля имели постоянную ширину, т.е. чтобы листинг
имел вид таблицы.
Совет - используйте printf.
19. Шаблоны имен файлов
Напишите программу, которая приглашает пользователя ввести шаблон
имени файла, аналогичный тому, который используется в shell.
Синтаксис шаблона таков:
* соответствует последовательности любых символов кроме /,
имеющей любую длину; возможно - пустой последовательности.
? соответствует любому одному символу.
/ не может встречаться.
любой другой символ соответствует самому себе.
Символы * и ? в шаблоне могут встречаться в любом количестве и в любом
порядке.
Затем программа должна найти и распечатать имена всех файлов в текущем
каталоге, соответствующих шаблону. Если таких файлов нет, программа
должна распечатать сам шаблон.
Совет: используйте readdir, чтобы считать все имена файлов в текущем
каталоге, и выберите из них соответствующие шаблону.
20. Шаблоны имен файлов (2)
Измените предыдущую программу так, чтобы в шаблоне могли встречаться
символы /. При этом программа должна распечатывать все файлы,
путевые имена которых соответствуют шаблону. Так, шаблону */*
соответствуют все файлы во всех подкаталогах текущего каталога.
Раздел 2
21. Пищалка
Напишите программу, которая входит в бесконечный цикл и издает
звуковой сигнал на вашем терминале каждый раз, когда вы нажимаете
DELETE. При получении SIGQUIT, она должна вывести сообщение,
говорящее, сколько раз прозвучал сигнал, и завершиться.
22. Мультиплексирование ввода
Напишите программу, которая читает из нескольких файлов по очереди,
т.е. после чтения строки из одного файла, читается строка из
следующего и т.д. Если в течение TIME_OUT секунд ничего не было
прочитано, берется следующий файл.
Программа получает в качестве аргументов имена одного или нескольких
файлов, из которых она будет читать. Обычно это терминальные файлы
(т.е. /dev/ttynn), но могут быть файлы и других типов. (read(2) с
нетерминального устройства может прочитать несколько строк, в
зависимости от количества требуемых байтов и длины этих строк.) Если
в одном из файлов достигнут конец файла, из него больше не читают.
Когда конец файла достигнут во всех файлах, программа завершается.
Проверьте вашу программу так: $ multiplex /dev/tty 'tty'
23. Защита от сигналов, посылаемых с терминала (задание №5 по shell)
Измените исходный текст программы shell так, чтобы она не завершалась,
когда вы генерируете сигнал SIGINT. Вместо этого должен завершаться
процесс первого плана, а ваш shell должен немедленно выдавать
приглашение. Кроме того, предохраните команды, исполняемые в
фоновом режиме, от прерывания сигналами SIGINT и SIGQUIT. (Если
вы не имеете собственной версии этой программы, вы можете
посмотреть исходные тексты заготовки в файлах shell.c, parseline.c,
promptline.c и shell.h. Откомпилировав их, вы получите простой
командный интерпретатор, способный выполнять программы в виде
порожденных
процессов,
запускать
фоновые
процессы
и
перенаправлять ввод/вывод.)
24. Простое управление заданиями (задание №6 по shell)
Если вы реализовали защиту от сигналов, модифицируйте ваш
интерпретатор shell, так чтобы обеспечить следующие возможности для
управления заданиями: SIGTSTP, посланный с клавиатуры (CTRL-Z по
умолчанию), должен заставить основную программу перейти в фоновый
режим и возобновить исполнение. PID переведенного на фон процесса
будет выведен на stderr, и командный интерпретатор выдаст
приглашение для следующей команды.
Совет: сделайте каждый порожденный процесс лидером группы процессов
и явным образом переводите его на первый план. Когда порожденный
процесс первого плана завершается или останавливается, переводите на
первый план интерпретатор.
25. Связь через программный канал
Напишите
программу,
которая
создает
два
подпроцесса,
взаимодействующих через программный канал. Первый процесс выдает
в канал текст, состоящий из символов верхнего и нижнего регистров.
Второй процесс переводит все символы в верхний регистр, и выводит
полученный текст на терминал. Подсказка: см. toupper(3).
26. Связь с использованием функций стандартной библиотеки
Используйте стандартные библиотечные функции popen(3) и pclose(3) для
выполнения тех же операций, что и в предыдущем упражнении.
27. Подсчет пустых строк в файле
Напишите программу, которая подсчитывает пустые строки в файле,
используя команду wc(1).
28. Генератор случайных чисел
Напишите программу, которая генерирует сортированный список из ста
случайных чисел в диапазоне от 0 до 99. Распечатайте числа по десять в
строке. Используйте p2open(3), чтобы запустить sort(1) и rand(3) и
srand(3) для генерации случайных чисел.
29. Конвейеры (задание №7 по shell)
Измените ваш командный интерпретатор так, чтобы он позволял создавать
конвейеры. Если вы добавили управление заданиями в упражнениях
Раздела 1, вы можете модифицировать программу так, чтобы все
процессы в конвейере принадлежали к одной группе. Тогда, например,
SIGINT мог бы прервать все процессы в конвейере первого плана.
30. Очеpеди сообщений
Напишите две программы, одна из которых шлет сообщения другой.
Получатель распечатывает содержимое сообщения, тип и значение,
возвращенное msgrcv(2). Напишите программы так, чтобы они не
исполнялись родственными процессами. Сделайте программы как
можно проще. Для этого упражнения вам не нужна никакая проверка
ошибок. Используйте численную форму вашего идентификатора
пользователя в качестве ключа. Если позволит время, вы можете
установить права доступа для очереди так, чтобы ваши одногруппники,
зная ключ очереди, могли читать из нее или писать в нее. К обоим
программам должен быть добавлен цикл, чтобы иметь дело с многими
сообщениями. Если вы будете разделять идентификатор очереди с
другими пользователями, вы должны сказать друг другу ваши
идентификаторы пользователя и использовать их как типы сообщений.
Замечание: ipcs -q распечатывает количество сообщений в очереди и их
общий размер.
31. Рассылка одного сообщения нескольким процессам
Напишите две программы: отправитель и получатель. Отправитель
принимает текст с клавиатуры и рассылает сообщения нескольким
копиям программы-получателя. Получатель сообщения распечатывает
свое имя программы (argv[0]) и содержимое сообщения. Отправитель
продолжает работу, пока не встретит конец файла. Тогда он рассылает
всем получателям сообщение-ограничитель. Как только получатель
заканчивает свою очередь сообщений, он отправляет сообщение
отправителю. После получения такого подтверждения от всех
получателей, отправитель удаляет очередь.
32. Несколько процессов, сообщающих состояние процессу-мастеру
Напишите две программы, общающиеся через очередь. Одна из программ мастер - будет получать сообщения, генерируемые другими
программами - отправителями. Эти сообщения могут изображать
состояние или степень готовности отправителя. При получении, мастер
распечатывает сообщение и какую-либо идентификацию его
отправителя. Перед завершением, каждый отправитель посылает
сообщение-ограничитель. После получения таких ограничителей от
всех отправителей, мастер удаляет очередь и завершается.
33. Моделирование производственной линии
Вы должны смоделировать производственную линию, производящую
Виджеты. Каждый Виджет состоит из Детали С и Модуля 1. Модуль 1
состоит из Детали A и Детали B. Изготовление Детали A требует 2
секунды, Детали B - 3 секунды и Детали C - 4 секунды.
Подсказка: элементы производственной линии должны быть
представлены процессами. Используйте набор семафоров, по одному
для каждой детали и модуля. Как только деталь или модуль
произведены, добавляйте единицу к соответствующему семафору.
Когда объект используется в на следующем этапе, вычитайте из того же
семафора 1. Используйте sleep(3) для моделирования частоты, с которой
производятся детали.
34. Производитель и Потребитель
Напишите две программы, Производитель и Потребитель, такие что
Производитель заполняет буфер в разделяемой памяти, а Потребитель
читает его. Производитель должен помещать новые данные в буфер
только после того, как Потребитель прочитает его.
Совет: Для синхронизации можно использовать два семафора (эффективнее
всего - набор из двух семафоров). Один из семафоров нужно
ассоциировать с записью новых данных в буфер. Другой должен быть
ассоциирован с чтением данных Потребителем.
35. Кольцевая очередь в разделяемой памяти
Реализуйте кольцевую очередь фиксированной длины в разделяемой
памяти. Программа - производитель читает с клавиатуры и помещает
прочитанный текст в виде записи в конец очереди. Потребитель берет
записи из начала очереди. При обнаружении некоторого условия
окончания, производитель должен перед выходом поместить в очередь
запись-ограничитель. Когда потребитель получит такую запись, он
также завершится.
Советы:
A. Очередь должна представлять собой массив записей. Таким
образом, размер каждой записи не может превосходить
фиксированную максимальную величину.
B. добавление записи в хвост очереди (псевдокод)
tail <- tail +1
if tail = QUE_SIZE, tail <- 0
if tail = head, queue full condition
else queue[tail] <- item
C. получение записи из начала очереди (псевдокод)
if tail = head, queue empty condition
head <- head +1
if head = QUE_SIZE, head <- 0
else item <- queue[head]
36. Один производитель и несколько потребителей буфера
Напишите программу-производитель, которая помещает текст в буфер,
размещенный в сегменте разделяемой памяти. Напишите программупотребитель, которая будет читать из этого буфера. Может
существовать несколько копий потребителя. Производитель может
обновлять буфер только после того, как все потребители считали его
содержимое.
Совет: Эта программа похожа на Задание 34. Нужны два семафора, но
их значения будут меняться в диапазоне от 0 до количества
потребителей.
37. Несколько читающих процессов и один эксклюзивный процесс
записи в разделяемую память
Предположим, что исполняется n процессов. Часть из них читает, а
остальные пишут в разделяемый сегмент памяти. Несколько читающих
процессов могут работать с буфером одновременно. Если один из
пишущих процессов выполняет запись, все остальные процессы должны
ждать. Кроме того, если пишущий процесс хочет обновить данные, он
должен ждать, пока все читающие процессы закончатся. Для
обеспечения такого взаимного исключения надо использовать
семафоры.
Замечание: В решении приведена одна программа, которая иногда читает, а
иногда пишет.
Совет: Один из способов решения состоит в использовании набора из трех
семафоров со следующими значениями:
 индекс 0 счетчик процессов, выполняющих чтение
 индекс 1 двоичный семафор, гарантирующий, что только один
процесс может писать в буфер
 индекс 2 используется для блокировки чтения на время записи или
ожидания записи
Литература
Баррон Д. Ассемблеры и загрузчики. — М.: Мир, 1974.
Дейкстра Э. Дисциплина программирования. — М.: Мир, 1978.
Дейтел Г. Введение в операционные системы. — М.: Мир, 1987.
Кейслер С. Проектирование операционных систем для малых ЭВМ. —
М.: Мир, 1986.
5. Иртегов Д. Введение в операционные системы – Спб: БХВ-СанктПетербург, 2002
6. Керниган
Б.,
Пайк
Р.
Unix —
универсальная
среда
программирования. — М.: Финансы и статистика, 1992.
7. Кнут Д. Э. Искусство программирования. — Издательский дом
Вильямс, 2000.
8. Краковяк С. Основы организации и функционирования ОС ЭВМ. — М.:
Мир, 1988.
9. Робачевский А. Операционная система Unix. — СПб.: БХВ — Санкт–
Петербург, 1999.
10. Танненбаум А. Современные операционные системы – М: Вильямс,
2001
11. Хевиленд К., Грэй Д., Салама Б. Системное программирование в
UNIX. — М.: ДМК Пресс, 2000.
12. Хоар Ч. Взаимодействующие последовательные процессы. — М.:
"Мир", 1989.
1.
2.
3.
4.
ВВЕДЕНИЕ В СИСТЕМЫ АВТОМАТИЧЕСКОГО
ПРОЕКТИРОВАНИЯ РАДИОЭЛЕКТРОННЫХ УСТРОЙСТВ
Программа практических занятий
(3 курс, 5 сем., 72 ч., диф.зачет)
Ассистент Селиванов Павел Аркадьевич
Цель данного практического курса - познакомить студентов кафедры с
полным циклом разработки радиоэлектронных устройств (РЭУ). По
ряду причин в качестве учебной системы автоматического
проектирования (САПР) был выбран продукт компании Cadence OrCAD
1. Ведение
2. Этапы создания РЭУ
3. Обзор возможностей и особенностей некоторых САПР
4. САПР OrCAD версии 9
5. Создание принципиальных схем. Capture CIS.
6. Моделирование аналоговых и цифровых устройств. PSpice A/D.
7. Подготовка списка цепей. Создание печатной платы. AutoECO.
8. Ручная и автоматическая разводка печатной платы. Layout Plus.
9. Вывод в графический файл. Редактирование полученного изображения.
GerbTool.
Во время занятий студенты должны пройти полный путь по созданию
собственного устройства. Им предлагается выполнить следующие
задания:
1. При занесении принципиальной схемы
o Навыки работы со средой Capture CIS.
o Создание нового элемента в Capture CIS и его
редактирование.
o Изменение нумерации компонентов.
o Создание библиотек Capture на основе библиотек PSpice при
помощи Model Editor.
2. При моделировании
o Создание и редактирование профиля моделирования в Capture
CIS и PSpice A/D.
o Создание и включение в профиль внешних сигналов из
.stlфайлов (Stimulus Editor).
Моделирование
аналоговых
и
цифровых
схем,
параметрический анализ, анализ производительности.
o Одновременное отображение зависимостей из нескольких
файлов .dat в одной системе координат
3. При подготовке к разводке платы
o Генерация списка цепей. Подшивка существующих и создание
новых корпусов.
o Выбор стратегии автоматической разводки и редактирование
ее параметров.
4. При разводке печатной платы
o Навыки работы со средой LayoutPlus.
o Ручная разводка. Установка препятствий для автоматического
разводчика, редактирование цепей. Заливка области.
Добавление новых компонентов и цепей, удаление
существующих. Back Annotate.
o Автоматическая разводка элемента, окна, цепи, всей платы.
Автоматическое исправление ошибок.
o Подготовка к выводу в графические файлы Gerber.
5. При работе с GerbTool
o Вывод в файлы Gerber из Layout Plus и загрузка результата в
GerbTool.
o Замена, добавление, удаление слоев.
o Редактирование слоев.
o
Литература
1. Хоровиц П., Хилл У.: Исскуство схемотехники, т.1-2
2. Стешенко В.: EDA. Практика автоматизированного проектирования
радиоэлектронных устройств, Нолидж, 2002
3. Cadence Design System, Inc., www.orcad.com
4. Разевиг В.Д.: Система сквозного проектирования радиоэлектронных
устройств DesignLab 8.0, Москва, Салон-Р, 2000
АНАЛОГОВАЯ ЭЛЕКТРОНИКА
Программа курса лекций
(3 курс, 5 сем., 36 ч., экзамен)
Профессор Владимир Михайлович Аульченко
1. Анализ сигналов
1. Импульсные сигналы.
2. Периодические сигналы.
3. Почти периодические сигналы.
4. Случайные сигналы.
5. Стационарные случайные процессы.
6. Постоянная и переменная составляющие.
7. Четная и нечетная составляющие.
8. Действительная и мнимая составляющие.
9. Сравнение сигналов.
10. Корреляционная функция.
11. Свертка.
12. Тригонометрический ряд Фурье для периодических сигналов.
13. Экспоненциальный ряд Фурье.
14. Интеграл Фурье для импульсных сигналов.
2. Передача сигналов через линейные системы
1. Линейная передающая система.
2. Классический метод.
3. Метод интеграла Фурье.
4. Интеграл суперпозиции.
5. Интеграл суперпозиции как корреляционная операция.
3. Элементы аналоговой электроники
1. Основные схемы включения активных элементов(транзисторов).
 Схема с общим эмиттером
 Схема с общим коллектором - эмиттерный повторитель.
 Схема с общей базой.
 Дифференциальный усилительный каскад.
2. Основные типы ООС
 ООС
последовательная
по
напряжению.
(неинвертирующий усилитель).
 ООС параллельная по напряжению. (инвертирующий
усилитель).
 Влияние ООС на входное и выходное сопротивление
усилителя.
 Влияние ООС на амплитудно - частотную характеристику
усилителя.
 Проблема устойчивости усилителя с ООС.
 Классификация усилителей по входному/выходному
сопротивлениям.
3. Транзисторные "двойки"
4. Зарядочувствительные предусилители
4. Шумы в усилительных каскадах.
1. Тепловой шум.
2. Дробовой шум.
3. Шум 1/f.
4. Приведение шумов ко входу. Эквивалентное шумовое
сопротивление.
5. Эквивалентный шумовой заряд.
5. Фильтрация шумов.
1. Оптимальная фильтрация.
2. Сравнительный анализ фильтров методом шумовых индексов.
 RC-CR фильтр.
 Время-инвариантный трапецеидальный фильтр.
 Время-вариантный треугольный фильтр.
 Фильтр "RC-CR + управляемый интегратор".
 Оптимальный фильтр.
Литература
1. Абрамов А.И., Казанский Ю.А., Матусевич Е.С. Основы
экспериментальных методов ядерной физики. Москва,
"Энергоатомиздат", 1985г.
2. Калашников В.И., Козодаев М.С. Детекторы элементарных частиц.
Москва, "Наука", 1966г.
3.
4.
5.
6.
7.
Заневский Ю.В. Проволочные детекторы элементарных частиц.
Москва, "Атомиздат", 1978г.
Дмитриева Н.Н, Ковтюх А.С., Кривицкий Б.Х. Ядерная электроника.
Москва, Издательство МГУ, 1984г.
Басиладзе С.Г. Быстродействующая ядерная электроника. Москва,
"Энергоиздат", 1982г.
Шмидт Х.-У. Измерительная электроника в ядерной физике. Москва,
"Мир", 1989г.
Крупен К. Детекторы элементарных частиц. Новосибирск, "Сибирский
хронограф", 1999г.
ЦИФРОВЫЕ ИНТЕГРАЛЬНЫЕ СХЕМЫ
Программа курса лекций
(3 курс, 5 сем., 36 ч., экзамен)
Старший преподаватель Юрий Васильевич Коваленко
Введение. Цели и темы курса. Цифровые интегральные схемы, аналоговые
ИС, гибридные и пленочные ИС. Технология изготовления ЦИС.
Составляющие стоимости ЦИС. Понятие логического уровня.
Схемотехника и электрические характеристики базовых логических
элементов в КМОП и ТТЛ технологиях.
Коэффициент расширения по выходу, его зависимость от частоты для
КМОП ИС.
Конструктивное исполнение ЦИС.
Формальное описание электрических схем. Различия комбинаторных и
последовательностных схем. Множественность представлений Булевой
функции, каноническая форма. Универсальный способ аппаратной
реализации канонической формы Булевой функции на примере ИС
ПЛМ 556РТ1. Приемы минимизации аппаратных затрат. Минтермы и Ртермы. Карты Карно. Возможности и ограничения алгоритмов
минимизации аппаратных затрат в современных САПР.
Этапы разработки комбинаторных электрических устройств и набор
требуемой документации. Стандартные конструктивы. Принципиальная
схема. Разработка печатной платы. Подготовка документации для
программирование ИС ПЛМ. Формы представления программы:
таблица, принципиальная схема из библиотечных элементов, языки
описания аппаратуры (HDL). Пример табличного описания схемы
управления
механическими
воротами.
Набор
библиотечных
комбинаторных схем: логические элементы, групповые логические
элементы, коммутирующие элементы.
Реализация арифметических операций. Понятие состояния. Связь между
состоянием и числом. Способы представления целых чисел. Двоичный,
двоично-десятичный код, код Грея. Представления целых чисел со
знаком. Операция арифметического суммирования чисел в
дополнительном
коде.
Условие
достоверности
результата
суммирования. Рекурсивный характер булевой функции результата
арифметической операции суммирования для двоичного разряда.
Последовательный сумматор, параллельный сумматор, схема
ускоренного переноса. Набор библиотечных арифметических
комбинаторных схем: сумматор, компаратор, АЛУ, сдвигатели.
Табличная форма реализации простейшего АЛУ на ПЛМ.
Последовательностные схемы. Связь длительности состояния и тактовой
частоты.
Однобитная последовательностная схема - триггер. T,RS,D,JK триггер.
Регистр.
Формальное описание последовательностной схемы - автомат Милли,
автомат Мура.
Формы представления алгоритмов функционирования автомата: набор
таблиц, графф, диаграмма, программа HDL. Реализация автомата Милли
на регистре и комбинаторной логике. Структура программируемой ЦИС
на примере 22v10. Набор библиотечных последовательностных схем:
регистр, регистр-защелка, сдвиговый регистр, регистровый файл,
асинхронный и синхронные счетчики. Реализация светофора на 22v10:
выбор тактовой частоты, формирование табличной формы
представления программы.
Запоминающие устройства ассоциативного типа, ЗУ последовательного
доступа, ЗУ произвольного доступа. ОЗУ, ПЗУ масочного типа,
однократно программируемые ПЗУ, ПЗУ с возможностью перезаписи,
ЕППЗУ с групповым программированием (flash). ОЗУ статического и
динамического ипа. Структура ЗУ произвольного доступа. Диаграммы
циклов чтения и записи ОЗУ. Факторы, определяющие быстродействие
ЗУ. Страничная организация, групповое чтение, синхронный режим.
Процессор как последовательностная схема с выборкой условий из памяти.
Формальное описание процессора как операционного устройства (ОУ) и
управляющего автомата (УА). Программа. КОП и операнды. Режим
адресации. Одно, двух и трех адресная форма бинарных операций.
Шина данных, шина адреса, шина управляющих сигналов и их связи с
УА и ОУ. Разработка простейшего процессора на программируемой
ЦИС: формирование системы команд, синтез УА, разработка ОУ на
основе регистрового файла и АЛУ.
1.
2.
3.
4.
Литература
П. Хоровиц, У. Хилл. Искусство схемотехники (пер. с англ. ) Изд. 5-е,
перераб. - 704 с. ISBN 5-03-003315-7/0-521-37095-7/5-03-003395-5/0-52137 ~99. 01. 12/138.
Стешенко В. Б. EDA: Практика автоматизированного роектирования
радиоэлектронных устройств - 768 с. ISBN 5-94740-001-4 ~92. 04. 08/014
изд. Нолидж.
Угрюмов Е.П. Цифровая схемотехника. изд. БХВ-Санкт-Петербург
2000.
Стешенко Б. ПЛИС фирмы ALTERA: элементная база, система
проектирования и языки описания аппаратуры. Изд. Додэка 2002. ISBN
5-94020-033-1 576 страниц.
5. Антонов А. Язык описания цифровых устройств AlteraHDL изд.
РадиоСофт 2002. ISBN 5-93037-052-4 221 страниц.
ОБЪЕКТНО–ОРИЕНТИРОВАННЫЙ АНАЛИЗ И ДИЗАЙН
1
2
3
4
Программа курса лекций
(3 курс, 6 сем., 64 ч., диф.зачет)
Ассистент Вячеслав Викторович Мухортов
Введение. Сложность, присущая программному обеспечению.
Формальные подходы в программировании как метод преодоления
сложности, ОО подход. Основные концепции ООП, классы, отношения,
атрибуты, операции.
Моделирование. Введение в UML.
2.1 Необходимость моделирования ПО
2.2 Словарь, правила, общие механизмы UML
2.3 Варианты использования, актеры
2.4 Диаграммы деятельностей
2.5 Диаграммы классов, типы отношений
2.6 Диаграммы взаимодействия (последовательностей и коопераций)
2.7 Диаграммы состояний, переходы, суперсостояния
2.8 Диаграммы компонент и процессоров
2.9 Диаграммы пакетов
2.10 Метамодель
Основные фазы процесса разработки ПО
3.1 Начальная фаза, анализ предметной области, анализ рисков.
3.2 Уточнение спецификаций.
3.3 Проектирование.
3.4 Приемка.
3.5 Сопровождение и реорганизация.
3.6 Обратное проектирование
Rational Unified Process
4.1 Бизнес-анализ
4.1.1 Документирование бизнес-процессов
4.1.2 Анализ процессов, идентификация ролей
4.1.3 Бизнес-сущности в бизнес-процессах
4.2 Системный анализ, формирование требований к системе
4.2.1 Системные роли и варианты использования
4.2.2 Диаграммы деятельностей и диаграммы взаимодействия
4.3 Архитектурный анализ
4.3.1 Аналитическая
модель.
Реализация
вариантов
использования.
4.3.2 Сотрудники, сущности, граничные классы.
4.4 Дизайн
4.4.1 Уровни, подсистемы, пакеты
4.4.2 Диаграммы процессов
4.4.3 Модель реализации
4.4.4 Модель размещения
5 Принципы дизайна иерархий классов
5.1 Open-Closed Principle, Demeter principle
5.2 Liskov Substitution Principle
5.3 Dependency Inversion Principle
5.4 Interface Segregation Principle
6 Дизайн пакетов.
6.1 Reuse-Release Equivalence Principle
6.2 Common Reuse Principle
6.3 Common Closure Principle
6.4 Acyclic Dependencies Principle
6.5 Stable Dependencies Principle
6.6 Stable Abstractions Principle
6.7 Метрики OOD, main sequence
7 Образцы проектирования (Design patterns)
7.1 Роль образцов в проектировании, поддержка на уровне CASEсредств.
7.2 Посредник
7.3 Клиент – сервер (callback)
7.4 Моностэйты
7.5 Синглетоны
7.6 Адаптеры
7.7 Стратегии
7.8 Factory
7.9 Команды
7.10 Лестница в небеса
1.
2.
3.
4.
5.
6.
Литература
Г. Буч «Объектно-ориентированный анализ и проектирование», второе
издание, М.: Бином, 2000
Г. Буч, Д. Рамбо, А. Джекобсон «Язык UML. Руководство
пользователя», М.: ДМК, 2000
М. Фаулер, К. Скотт «UML в кратком изложении», М.: Мир, 1999
Scott Whitmire «Object Oriented Design Measurement», Wiley Computer
Publishing, 1997
Gamma et al. «Design Patterns», Addison-Wesley, 1995
Э. Гамма. «Приемы объектно-ориентированного проектирования:
Паттерны проектирования», СПб: Питер.
АРХИТЕКТУРА И ПРОЕКТИРОВАНИЕ МИКРОКОНТРОЛЛЕРОВ
Программа практических занятий
(3 курс, 6 сем., 64 ч., диф. зачет)
Ассистент Олег Юрьевич Курилин
1. Знакомство с программой курса (учебные пособия, документация,
программное обеспичение) - 2часа.
2. Обзор документации. Изучение структуры документа. Внуренняя
структура микроконтроллера - 2 часа.
3. Среда разработки, органы управления, настройка и возиожности.
Самостоятельная работа. - 4 часа.
4. Система команд микроконтроллера PIC16F84A. Реализация циклов. - 4
часа.
5. Система прерывания, маски и флаги. Источники прерываний. - 4 часа.
6. Счетчик-таймер. Работа счетчика-таймера в режиме таймера с
использованием прерываний. - 4 часа.
7. Самостоятельная работа. - 4 часа.
8. Изучение демонстрационной платы, схема, назначение элементов. - 4
часа.
9. Порты ввода-вывода, режимы работы, конфигурирование. - 4 часа.
10. Динамическая индикация, алгоритмы, выбор временных параметров,
реализация. - 4 часа.
11. Самостоятельная работа. - 8 часов.
12. Энергонезависимая память. - 4 часа.
13. Разработка проекта на основе демонстрационной платы, реализация его
до конечной стадии - 16 часов.
14. Обсуждение разрабатываемых проектов. - 4 часа.
Задания
1. Минимальным количеством команд построить цикл с пустым телом,
который выполнится 10 раз.
2. Расчитать время между прерываниями при частоте кварцевого
резонатора 12,5MHz, проверить результат в среде разработки.
3. Вывести на индикаторы демонстрационной платы статически заданное
число.
4. Считать секундные интервалы времени, выводить результат на
индикатор, сохранять результат в случае проподания пидание.
5. Управлять микроконтроллером по интерфейсу RS-232.
6. При помощи динамика, подключенного к порту воспроизвести какой
либо сигнал.
Литература
1. Прокопьев Ю.М. «Архитектура и проектирование микроконтроллеров»
Практикум по проектированию микроконтроллеров на примере
компонентов фирмы Microchip Technology. Учебное пособие /
Новосибирск. Новосибирский ун-т, 1999. 80с.
ЭЛЕКТРОНИКА ДЕТЕКТОРНЫХ СИСТЕМ
Программа курса лекций
(3 курс, 6сем., 32 ч., экзамен)
Профессор Владимир Михайлович Аульченко
1. Основные функции электронной аппаратуры в ЯФ.
o структурные схемы каналов регистрации
o структурная схема процессора отбора событий.
2. Газовые счетчики.
o классификация
o режимы работы
o искровые камеры, способы съема информации.
o плоская ионизационная камера
o пропорциональные камеры - конструкция, временное и
пространственное разрешение
3. Считывание информации с МПК.
o дискретное, аналоговое
o съем второй координаты
4. Дрейфовые камеры.
o требования к газовым смесям
o модификации ДК
o пространственное и временное разрешение ДК.
5. Электроника ДК.
o классификация, основные требования к электронике ДК.
o многоканальная схема кодировки времени дрейфа
o гибридная сборка "усилитель - формирователь" К243АГ1
o гибридная схема УФ с токовым входом
o линейный предусилитель для ДК
6. Сцинтилляционные счетчики.
o общие требования к сцинтилляторам
o ФЭУ, характеристики, форма импульса
o черенковские счетчики
7. Полупроводниковы кристаллические детекторы.
o конструкция, основные парметры
o P-I-N диод
8. Калориметры.
o назначение; типы калориметров
o основные требования к калориметрам и их электронике
o калориметры детекторов СНД и КЕДР
o спектрометрический канал детектора СНД
o устройство выборки и хранения
9. Преобразование АНАЛОГ-ЦИФРА.
o амплитудный дискриминатор как простейший анализатор
o дифференциальный дискриминатор
o многоканальные анализаторы прямого и косвенного действия
o преобразователи Вилкинсоновского типа, структурная схема
o преобразователь поразрядного уравновешивания, структурная
o схема
o понятие о дифференциальной и интегральной нелинейностях
o скользящая шкала
o микросхема КГО1-ПТ1, схемы включения
10. Линейные пропускатели.
o ЛП на основе пороговых усилителей
o токовые ЛП
o ЛП ключевого типа
11. Временные измерения.
o основные требования
o привязка по переднему фронту
o ОУ с положительной обратной связью, триггер Шмитта
o формирователь со следящим порогом
o способ "пересечения нуля"
o дискриминатор Д14
12. Метод совпадений и антисовпадений.
o схемы совпадений Росси, Гарвина
o СС на сложении токов
o дифференциальная СС и схема компенсации геометрии как
элементы
o системы измерения времени пролета
13. Кодирование интервалов времени.
o многоканальная схема СС
o метод прямого счета, информационные платы Т2а, ТАМ
o нониусный метод
o время-амплитудный преобразователь
o преобразование Т-А-Т
o ВЦП комбинированного типа
o комбинированный
ВЦП
с
непрерывно
работающим
генератором
o преобразователь хронотронного типа
14. Системы запуска современных детекторов.
o основные требования и основные параметры
o соотношения для выбора мертвого времени и коэффициента
селекции
o классификация систем отбора, примеры
o аппаратура потенциальных систем отбора
o аппаратура импульсных систем отбора
o спецпроцессоры
o применение схем памяти в устройствах отбора событий
Литература
1. Абрамов А.И., Казанский Ю.А., Матусевич Е.С. Основы
экспериментальных
методов
ядерной
физики.
Москва,
"Энергоатомиздат", 1985г.
2. Калашников В.И., Козодаев М.С. Детекторы элементарных частиц.
Москва, "Наука", 1966г.
3. Заневский Ю.В. Проволочные детекторы элементарных частиц. Москва,
"Атомиздат", 1978г.
4. Дмитриева Н.Н, Ковтюх А.С., Кривицкий Б.Х. Ядерная электроника.
Москва, Издательство МГУ, 1984г.
5. Басиладзе С.Г. Быстродействующая ядерная электроника. Москва,
"Энергоиздат", 1982г.
6. Шмидт Х.-У. Измерительная электроника в ядерной физике. Москва,
"Мир", 1989г.
7. Крупен К. Детекторы элементарных частиц. Новосибирск, "Сибирский
хронограф", 1999г.
МИКРОПРОЦЕССОРЫ И МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ
Программа курса лекций
(3 курс, 6 сем., 32 ч., экзамен)
Старший преподаватель Юрий Васильевич Коваленко
Исторический обзор микропроцессоров. Классификация микропроцессоров.
Основные компоненты микро-ЭВМ с шинной архитектурой (на
примере i8080).
Понятия шины, канала, интерфейса, протокола. Шины адреса, данных и
управления. Диаграммы операций процессора с шиной. Понятие
машинного цикла.
Понятия адресных пространств процессора и ЭВМ.
Система команд. Классификация. Ограничения на право исполнения
некоторых
команд,
обоснование
потребности
в
режиме
суперпользователя. Основные стадии исполнения команд. Программнодоступные элементы процессора. Элементы процессора не доступные
программно. Условия разрыва последовательности стадий исполнения
одной команды другой командой.
Прерывание. Сравнение метода опроса и прерывания. Понятия вектора,
приоритета, маскирования. Последовательность операций процессора и
внешнего устройства во время процедуры прерывания. Функции и
структура контроллера прерываний.
Оценка времени от возникновения запроса на прерывания до начала его
обработки.
Прямой доступ к памяти. Последовательность операций процессора и
внешнего устройства во время процедуры ПДП. Функции контроллера
ПДП. Оценка выигрыша времени при применении ПДП.
Микроконтроллеры (на примере PIC16xXX). Области применения
микроконтроллера.
Понятие системы на кристалле SoC. . Особенности PIC в сравнении с
другими микроконтроллерами. Основные элементы микроконтроллера.
Специфика питания. Процедура RESET. Управление энергопотреблением.
Понижение тактовой частоты. Режим сна. Режим пониженного
потребления.
Программируемые выводы корпуса. Реализации двунаправленных
выводов.
Квази-двунаправленность, подтягивающий резистор, открытый сток,
открытый исток.
Гарвадская архитектура. Независимость разрядности операционного
устройства от разрядности слова команды. Разделение шин
программной памяти и памяти данных.
Повышение производительности микропроцессора совмещением операций
над данными и выборкой командного слова. Адресное пространство
контроллера. Страничная (банковая) организация памяти. Аппаратный
кэш. Отображение физической памяти PIC16xXX на адресное
пространство. Канальная архитектура на примере ППЗУ.
Система команд. Классификация системы команд предлагаемая фирмой
MicroChip, сравнение с классификацией данной для i8080. Структура
слова команды.
Операции с битами. Понятие Булевого процессора. Система прерываний,
отличия от i8080.
Средства и методика разработки программного обеспечения для
микроконтроллеров.
Механизмы защиты программного кода от копирования.
Микропроцессоры общего назначения на примере ядра ARM7.
Многозадачность.
Организация защиты программ. Устройство управление памятью (MMU),
сегменты и страницы. Режимы пользователя и супервизора, режим
обработки исключений.
Конвеер, RISC и CISC процессоры. Сбои в работе конвеера, предсказание,
условное исполнение команды. Кэш.
Арифметика с плавающей точкой, стандарт IEEE-754. Сопроцессор и
арифметическое расширение процессора (в сравнении с i8087).
Методы сокращения объема кода программы. Система команд
транспьютера, система команд Thumb процессора ARM.
Средства интеграции микропроцессорных систем.
Шинная архитектура. Обоснование специализации шин. Понятие чипсета.
Пример чипсета для ЭВМ на базе i8080. Шина памяти. Шина
видеоконтроллера. Шина периферии. Примеры: архитектура PC,
модульный стандарт VME. Универсальная шина расширения ISA,
микропроцессорные системы в стандартах PC104, микро-PC.
Мезонинные
технологии
IndustrialPack.
Конструктивы
микропроцессорных систем Евромеханика.
Канальная архитектура. Предпосылки к широкому применению
последовательных
линий
связи.
Физические
характеристики
последовательных линий связи. Оптика, медь, радиоканал. Способы
кодирования сигналов. Двух и трех уровневое кодирование.
Уравновешенный код. Самосинхронизирующийся код на примере
Манчестер II.
Топология последовательных линий связи. Механизмы арбитража доступа
к линии связи. Гарантированное время передачи информации. Доставка
с подтверждением.
Влияние механизма подтверждения на скорость передачи.
Стандарты интеграции систем по канальной технологии: SPI, I2C,
RS232,(422,485), USB, Ethernet, mil1.std1553b
Литература
1. Боборыкин А.В., Янковецкий Г.П. и др.Однокристальные микро-ЭВМ,
М.:МИКАП, 1994,-400с.
2. Проектирование микропроцессорных устройств. Иванов Д.А. Учебное
пособие для начинающих разработчиков. Вып. 1: Архитектура и
технология программирования микроконтроллеров. - СПб.:СПбГТУ,
1997.-101 с.
3. Дж. Фрир. Построение вычеслительных систем на базе перспективных
микропроцессоров. Мир 1990.
МАШИННАЯ ГРАФИКА
(3 курс, 6 сем., 64 ч., диф.зачет)
1.
2.
3.
4.
5.
Программа курса лекций (32 часа)
Доцент Виктор Алексеевич Дебелов
Цели и задачи курса. Широкое определение компьютерной графики
(КГ), основные разделы: Иллюстративная КГ (ИКГ), распознавание
образов, обработка изображений. Основные задачи ИКГ: методы
графического представления данных, алгоритмы, языки КГ,
графические программные средства. Графический стандарт ГКС.
Сегментированный дисплейный файл, сегмент, примитивы вывода,
атрибуты. Примитивы и устройства ввода. Режимы ввода: опрос,
запрос, событие. Графические метафайлы.
Краткий курс работы в среде Windows Visual C++ 5 или 6. Создание
графических приложений с интерфейсом Single Document/View с
использованием Graphical Device Interface. Правила сдачи задач по
электронной почте. Критерии для выставления оценок за курс.
Пиксельные области (ПО): а) 4-связные и 8-связные; б) внутренне
определенные ПО, внутренне заполняющие алгоритмы; в) гранично
определенные ПО, гранично заполняющие алгоритмы; г) рекурсивный
алгоритм, span-алгоритм; д) заполнение шаблоном; е) аффинные
преобразования над ПО. Перевод координат: вещественные <->
растровые. ВМР-файл.
Задача растеризации алгебраических кривых. Алгоритм Брезенхэма для
отрезков. Идея алгоритма Брезенхэма для растеризации окружностей.
Многоугольники, определения. Ориентированные многоугольники.
Характеристическая функция. Растеризация многоугольников (идея).
Простейший алгоритм растеризации треугольника на основе алгоритма
Брезенхэма. Клиппирование многоугольников: алгоритм СазерлендаХоджмана.
Клиппирование
многоугольников:
алгоритм
Вейлера-Азертона.
Пересечение отрезков на основе параметрической формы. Теоретикомножественные операции (ТМО) над многоугольниками. Понятие
регуляризованных ТМО, схема алгоритма для регуляризованных
объединения, пересечения и разности. Дизеринг. Аппроксимация
полутонов: за счет увеличения пространственного разрешения и без
увеличения.
Матрицы
дизеринга.
Алгоритм
упорядоченного
возмущения, алгоритм и рекуррентное соотношение для матриц.
Алгоритм Флойда-Стайнберга. Дизеринг цветных изображений.
Перевод цветного изображения в черно-белое. Пересчет на удвоенное
разрешение.
6. Визуализация в научных вычислениях (ViSC). Задача "Изолинии".
Задача "Векторные поля". "Лица Чернова".
7. Гамма монитора, гамма-коррекция, яркость, контраст. Пересчет
(увеличение до 16 бит при промежуточных вычислениях).
Антиалиасинг. Основная идея (в пикселе часть объекта мира). Алиасинг
анимаций (по времени). Регуляризация функций. Сглаживающий
фильтр. Запись ядра (матрицы) бокс-фильтра. По-пиксельные операции.
Основные задачи обработки изображений: коррекция изображения,
улучшение изображения, структурный анализ. Оператор Робертса,
дифференцирование, алгоритм, порог. Что будет, если взять значение
порога больше (меньше)? Примеры популярных фильтров:
сглаживающий, подчеркивание краев, тиснение, повышение резкости,
акварелизация, медианный фильтр. Что делать, если интенсивность
получается меньше 0 или больше 255? А что делать если цветные
изображения?
Для
сглаживающих,
для
дифференцирующих?
Композиция изображений, альфа-канал.
8. Визуализация объемных плотностей (ОП). Что такое ОП? Простейшие
модели визуализации ОП: функция передачи прозрачностью, функция
передачи цветом. Оптическая модель взаимодействия света с ОП
(скалярным полем). Только поглощение. Только эмиссия. Поглощение
+ эмиссия. Случай раздельного назначения параметров поглощения и
эмиссии. Случай модели частиц. Формула приближенного вычисления.
9. Элементы вычислительной геометрии (точка, вектор, расстояние на
плоскости и в 3Д, ...). Уравнения отрезка на плоскости и в 3Д: деление
1, параметрические. Уравнения луча на плоскости и в 3Д:
параметрические, с направляющим вектором. Уравнение прямой на
плоскости как линейное уравнение. Нормаль. Расстояние до точки.
Функции угла между векторами, лучами, прямыми. Уравнение
плоскости в 3Д как линейное уравнение. Нормаль. Расстояние до точки.
Кривизна и кручение. Барицентрические координаты (отрезок,
треугольник, тетраэдр). Деление единицы. Выпуклая оболочка
множества точек.
10. Конструирование кривых с локальной модификацией. Метод Эрмита,
метод Безье. Геометрические свойства отрезка кривой Безье. Всплайны. Геометрические свойства В-сплайновой кривой. Сопряжение
участков кривых (Эрмит, Безье). Геометрическая и параметрическая
непрерывности.
11. Параметрические
поверхности.
Параметрические
линии
на
поверхностях и касательные к ним. Нормаль к поверхности. Уравнение
пути фрезы. Конструирование участков поверхностей. Билинейная
функция. Линейчатая поверхность, построенная на опорных кривых.
Участок поверхности по методу Кунса. Участок поверхности по методу
Эрмита. Участок поверхности по методу Безье. Геометрические
свойства.
В-сплайны.
Сшивка
двух
участков
поверхности.
Суперквадрики.
12. Особые случаи параметризации. Поверхности вращения. Другие
моделирующие преобразования: скручивание, экструзия и т.п. Морфинг
поверхностей.
13. Преобразования. Понятия модельных, видовых, анимационных
преобразований. Векторная алгебра, базисы. Линейные и аффинные
преобразования. Сдвиг, масштабирование и поворот на плоскости.
Матричные записи для линейных. Задача поворота относительно точки
(невозможно представить одной матрицей из-за сдвига). Примеры языка
PostScript. Однородные координаты и 2Д преобразования. Соглашения о
записи вектора: строка / столбец. Запись и применение преобразований.
Левосторонняя и правосторонняя СК. Положительное вращение вокруг
осей. Однородные координаты и 3Д преобразования. Поворот: углы
Эйлера. Преобразование твердого тела. Из чего состоит матрица?
Поворот вокруг произвольной оси. Кватернионы. Сферическая
интерполяция.
14. Видовое
преобразование:
перспективное
и
параллельное
проецирование. Пирамида видимости (POV), видимый объем. Матрицы
проецирования, вывод. Преобразование видимого объема к полукубу.
Алгоритм Z-буфера. Конвейер преобразования координат: модельные
СК – мировая СК – СК камеры – полукуб – клиппирование – плоскость
изображения – порт вывода. Преобразование координат через базисы.
15. Полигонолизация поверхностей – полигональные сетки. Фактура:
текстура, bump mapping. Выборка: Nearest, Linear, MIPMAP.
Текстурные системы координат. Покрытия: flat, cylindrical, spherical,
chrome. Пример неверного задания сетки куба для текстурирования.
16. Моделирование и имитация природных объектов: рост ботанических
деревьев на основе гелиотропизма, моделирование пламени. Обзор
курса.
Программа практических занятий (32 часа)
Доцент Виктор Алексеевич Дебелов
Задания
1. Task1 (см. файл Task1_03.doc). Освоить программирование в среде
VisualStudio 6.0 на языке C++ графических приложений типа Single
Document/View. Краткое пособие находится в файлах: Vc_gdi_03.doc,
2.
3.
4.
5.
6.
7.
8.
9.
Vc_gdi_03(2).doc, Vc_gdi_03(3).doc, Vc_gdi_03(4).doc.
Отработка
технологии сдачи задач через электронную почту (см. файл
E_mail_TaskRule_03.doc). Разработка – 8 часов. Сдача – 4-я и 5-я
учебные недели.
PixDom (см. файл TaskPixDom_03.doc). Работа с пиксельными
областями, программирование алгоритмов заливки. Разработка – 4 часа.
Сдача – конец 6-ой учебной недели.
Clip (см. файл TaskClip_03.doc). Программирование алгоритмов
клиппирования многоугольников на плоскости. Примечание: эта задача
выполняется по алгоритму Сазерленда студентами, имеющими
нечетный номер в списке группы, иначе алгоритмом Вейлера.
Разработка – 4 часа. Сдача – конец 8-й учебной недели.
Izo (см. файл TaskIzo_03.doc). Разработка программы построения
изолиний и цветотоновой карты для функции двух переменных.
Примечание: эта задача выполняется студентами, имеющим нечетный
номер в списке группы. Разработка – 4 часа. Сдача – конец 10-й учебной
недели.
Vector (см. файл TaskVecPol_03.doc). Разработка программы построения
карты векторных полей. Примечание: эта задача выполняется
студентом, имеющим четный номер в списке группы. Разработка – 4
часа. Сдача – конец 10-й учебной недели.
Fog (см. файл TaskFog_03.doc). Программирование простейших
фильтров для полноцветных изображений и алгоритма визуализации
объемных плотностей. Разработка – 5 часов. Сдача – конец 13-й
учебной недели.
Morph (см. файл TaskMorph_03.doc). Программирование морфинга
параметрически заданных кривых. Разработка – 3 часа. Сдача – конец
14-й учебной недели.
Wire (см. файл TaskWire_03.doc). Изображение функции двух
переменных в виде проволочной модели поверхности. Применения
преобразований
в
однородных
координатах
(модельные
преобразования, преобразования камеры, клиппирование по полукубу,
преобразование в экранные координаты). Делают те студенты, которые
программировали задачу Izo. Разработка – 4 часа. Сдача – конец 16-й
учебной недели.
ParWire (см. файл TaskParWire_03.doc). Изображение параметрической
поверхности в виде проволочной модели поверхности. Применения
преобразований
в
однородных
координатах
(модельные
преобразования, преобразования камеры, клиппирование по полукубу,
преобразование в экранные координаты). Делают те студенты, которые
программировали задачу Vector. Разработка – 4 часа. Сдача – конец 16-й
учебной недели.
Оценка на дифференцированном зачете по курсу "Компьютерная графика"
выставляется после устного ответа с учетом:

предварительных отметок по заданиям 1 – 7;

оценки, выставляемой преподавателем за работу в семестре с
учетом своевременной сдачи заданий.
При проверке программ на всех этапах существенными будут следующие
факторы:

Своевременность сдачи программ. Все программы сдаются по
электронной почте по установленным в курсе правилам. Например,
неверная тема письма считается грубейшей ошибкой. Временем
предъявления программы считается время отправки письма. Это
время должно быть не позднее, чем 24:00 субботы указанной
учебной недели.

Полнота, недвусмысленность и краткость описания особенностей
авторской реализации.

Полнота учета требований к программе.

Реализация дополнительных эффектов сверх требований.
1.
2.
3.
4.
5.
6.
7.
8.
9.
Литература
А.В.Фролов, Г.В.Фролов. Графический интерфейс GDI в MS Windows.
(Библиотека системного программиста Т. 14) – М.: "ДИАЛОГ-МИФИ",
1994.
С. Холзнер. Microsoft Visual C++ 6: учебный курс. С.-Пб: Питер пресс,
1999.
http://studentweb.nait.ab.ca/courses/start.asp?table=bcs232 – Introduction to
Windows Programming, 1999.
И.Ю. Баженова. Visual studio 98. Visual C++ 6.0. Уроки
программирования. – М.: ДИАЛОГ-МИФИ, 1999..
Дж. Фоли, А. вэн Дэм. Основы интерактивной машинной графики. В
двух книгах. Пер. с англ.-М.:Мир,1985.
А. Фокс, М. Пратт. Вычислительная геометрия. Применение в
проектировании и на производстве. Пер. с англ. – М.: Мир, 1982.
Д. Роджерс. Алгоритмические основы машинной графики. Пер. с англ. –
М.: Мир, 1989. (2-ое издание – 2001 год).
А.В. Погорелов. Дифференциальная геометрия. – М.: Наука, 1969.
N. Max. Optical Models for Direct Volume Rendering. - IEEE Trans. on
Visualization and Comput. Graphics. 1995, v. 1, No.2, pp. 99-108
10. Visualization and Computer Animation, 1994, v.5, No.1.
11. У. Пратт, "Цифровая обработка изображений ", т. 1, 2, Москва, Мир,
1982.
12. П. Ньюмен, Р. Спрулл, "Основы интерактивной машинной графики",
Москва, Мир, 1976
13. В. Гилой, "Интерактивная машинная графика", Москва, Мир, 1981
14. Т. Павлидис, "Алгоритмы машинной графики и обработки
изображений", Москва, Радио и связь, 1986
ДИНАМИЧЕСКАЯ 3D ГРАФИКА
(4 курс, 7 сем., 72 ч., диф.зачет)
Программа курса лекций (36 часов)
Доцент Виктор Алексеевич Дебелов
1. Цели и задачи курса. Реалистическая визуализация. Введение,
исторический обзор алгоритмов и аппаратных возможностей.
Wireframe. Удаление невидимых линий. Алгоритм подвижного
горизонта. Очерки или линии силуэта.
2. Упрощенная модель зрения (или сведения из психофизиологии –
колбочки, палочки, цвет). Полосы Маха. Диапазон различаемых
яркостей. Локальная модель освещенности, рассеянный свет, диффузное
отражение, зеркальное отражение. Закраска по Гуро, закраска по Фонгу.
Полигональные приближения гладких поверхностей. Модель ТорренсаСпэрроу.
3. Простейшая трассировка лучей. Пространственная сцена. Отраженный
и преломленный лучи. Нахождение пересечений луча с основными
элементами сцены: а) сфера; б) бокс; в) плоский многоугольник в
пространстве.
4. Алгоритм обратной рекурсивной лучевой трассировки. Основные
элементы сцены. Камера. Правила ограничения дерева трассировки.
Методы повышения качества изображений (удаление лестничного
эффекта) – рендеринг на субпиксельном уровне, фильтрация, .
5. Методы ускорения лучевой трассировки. Пространственные структуры
данных: иерархические ограничивающие объемы (боксы, сферы), сетки,
иерархические сетки, октодеревья, kd-деревья. Достоинства и
недостатки этих структур при изображении динамических сцен.
Кластеризация источников света.
6. Недостатки рекурсивной лучевой трассировки – отсутствие диффузных
переотражений. Компонент рассеянного света. Метод световых сеток.
Световые сетки прямой и непрямой освещенности.
7. Введение в MS DirectX. Общие сведения об объектно-ориентированной
системе SmogDX: сцена (основной объект), камера, порт вывода,
мировая система координат, фреймы, модельная система координат,
геометрические элементы, источники света, материалы, текстуры,
анимации.
8. Основной объект – сцена. Пульс – динамика сцены. Методы класса
CD3DMainObject.
9. Класс CD3DFrame. Иерархическая структура фреймов. Управление
фреймами на основе однородных преобразований координат. Создание
геометрии сцены (полигональные сетки). Окрашивание поверхностей
сцены,
применение
полупрозрачных
цветов.
Динамика
–
поступательная и вращательная скорости фрейма. Основные методы
класса.
10. Методика программирования геометрических классов в системе
SmogDX. Методика создания простейшего приложения. Класс
CD3DMaterial. Расчет освещенности в точке в зависимости от
материала. Методы класса. Приписывание материала фрейму.
11. Класс CD3DTexture. Понятие текстуры, текстурные координаты. Виды
покрытий. Текстурирование поверхностей (сеток) сцены. Класс
CD3DDecal. Размещение изображения фона на порту вывода.
12. Программирование динамики сцены. Использование скоростей фрейма.
Простейший морфинг – изменение положения вершин в сетках. Класс
CD3DAnimation – создание сценариев поведения фреймов.
13. Программирование указаний мышью на трехмерные объекты сцены.
Программирование теней. Обзор инструментов для создания
динамических интерактивных приложений в среде SmogDX.
14. Ведение в OpenGL. Совпадающие и различающиеся характеристики
OpenGL и SmogDX или OpenGL и DirectX.
15. Создание приложений на OpenGL в среде Windows.
16. Уравнение визуализации – уравнение баланса освещенности в сцене.
Особенности лучевой трассировки Монте-Карло. Диффузные сцены.
Излучательность (radiosity), уравнение излучательности. Расчет
методом конечных элементов.
17. Методы расчета коэффициентов формы: полукуб, Монте-Карло. Обзор
курса.
Программа лабораторных занятий (36 часов)
Доцент Виктор Алексеевич Дебелов
Задания
Задание № 1 (сдать к концу 8-й учебной недели)
Лучевая трассировка
Разработать программу в среде VisualStudio 6.0 на языке C++,
реализующую алгоритм рекурсивной лучевой трассировки для
визуализации пространственных сцен. Выполняется в 3 этапа:
1. Программа выбора ракурса. Создается простая сцена, состоящая из 1-3
примитивов. Минимальный набор примитивов: плоскость, куб, сфера.
Вычисляется габаритный бокс сцены. Пользователь при помощи мыши
осуществляет повороты и перемещения бокса для достижения
требуемого ракурса. Разработка – 4 часа. Сдача – конец 2-й учебной
недели.
2. Разработать библиотеку функций, вычисляющих пересечение луча со
сферой, с боксом, с плоским выпуклым многоугольником в
пространстве. Разработать функции, вычисляющие: нормальный вектор
к примитиву в указанной точке, отраженный вектор, преломленный
вектор. Для тестирования предлагается унифицированный формат
файла. Разработка – 4 часа. Сдача – конец 4-й учебной недели.
3. Разработать программу лучевой трассировки на основе программы,
выполненной на этапе 1, и библиотеки функций, выполненной на
этапе 2. Характеристики программы: а) возможен выбор ракурса
изображения сцены в интерактивном режиме (см. этап 1), разрешение
изображения определяется клиентской областью окна приложения; б)
чтение описания сцены из файла (унифицированный формат); в) все
действия выполняются с использованием библиотеки функций,
разработанных на этапе 2; г) регулируется глубина дерева трассировки
(от одного до трех отражений); д) один из объектов сцены должен быть
в
движении
–
имитация
смазывания
изображения;
е)
включение/выключение гамма-коррекции. Разработка – 8 часов. Сдача –
конец 8-й учебной недели.
Задание № 2 (сдать к концу 14-й учебной недели)
Динамическое приложение SmogDX
Разработать динамическое приложение, используя систему классов
SmogDX в среде VisualStudio 6.0 на языке C++. Выполняется в 3 этапа:
1. Простейшее приложение. Разработать собственный геометрический
класс. Разработка – 2 часа. Сдача – конец 10-й учебной недели.
2. Разработать сценарий анимационного приложения. Запрограммировать
геометрические элементы и анимацию элементов сцены. Источники
освещения. Разработка – 6 часов. Сдача – конец 12-й учебной недели.
3. Применить текстурирование объектов сцены, применить 2-3 материала,
использовать 1-2 тени, использовать указание на изображение
трехмерного объекта. Разработка – 4 часа. Сдача – конец 14-й учебной
недели.
Задание № 3 (сдать к концу 17-й учебной недели)
Динамическое приложение OpenGL
Разработать несложное динамическое приложение, используя библиотеку
OpenGL в среде VisualStudio 6.0 на языке C++. Программа должна
основываться на иерархическом построении объектов, использовать
текстуры, дисплейные списки и стеки координатных преобразований.
Разработка – 6 часов. Сдача – конец 17-й учебной недели.
Оценка на дифференцированном зачете по курсу "Динамическая 3D
графика" выставляется после устного ответа с учетом:
 трех предварительных отметок по заданиям 1 – 3;
 оценки, выставляемой преподавателем за работу в семестре с учетом
своевременной сдачи заданий.
При проверке программ на всех этапах существенными будут следующие
факторы:
 Своевременность сдачи программ. Все программы сдаются по
электронной почте по установленным в курсе правилам. Например,
неверная тема письма считается грубейшей ошибкой. Временем
предъявления программы считается время отправки письма. Это
время должно быть не позднее, чем 24:00 субботы указанной
учебной недели.
 Полнота, недвусмысленность и краткость описания особенностей
авторской реализации.
 Полнота учета требований к программе.
 Реализация дополнительных эффектов сверх требований.
1.
2.
3.
4.
5.
Литература
Дж. Фоли, А. вэн Дэм. Основы интерактивной машинной графики. В
двух книгах. Пер. с англ.-М.:Мир,1985.- 368 с.ил.
А. Фокс, М. Пратт. Вычислительная геометрия. Применение в
проектировании и на производстве. Пер. с англ. – М.: Мир, 1982.
Е.В. Шикин, А.В. Боресков. Компьютерная графика. Динамика,
реалистические изображения – М.: "ДИАЛОГ - МИФИ", 1995.
В.А.Дебелов, Ю.А.Ткачев. SmogDX – объектно-ориентированная
графика для Windows (DirectX и Visual C++). Новосибирск: Сибирское
университетское изд-во, 2001, 311 с.
В.А.Дебелов,
Ю.А.Ткачев.
Объектно-ориентированная
система
машинной графики для Windows (C++ и Microsoft DirectX). –
Новосибирск: ИВМиМГ СО РАН, 1999.
6. Д. Роджерс. Алгоритмические основы машинной графики. Пер. с англ. –
М.: Мир, 1989. (2-ое издание – 2001 год).
7. Н. Томпсон. Секреты программирования трехмерной графики для
Windows 95. СПб: Питер, 1997. – 352 с.
8. Ю. Тихомиров. Программирование трехмерной графики – СПб.: БХВ –
Санкт-Петербург, 1999. – 256 с.
ИНФОРМАЦИОННЫЕ СЕТИ И СИСТЕМЫ
Программа курса лекций
(4 курс, 7 сем., 108 ч., диф.зачет)
Ассистент Всеволод Юрьевич Рылов
Введение
Введение
в
программирование
сетевых
приложений.
Пример
взаимодействия программ с использованием стека протоколов TCP/IP
под OS Unix (Linux). Пример параллельного TCP сервера и TCP
клиента. Пример последовательного UDP сервера и UDP клиента.
1. Основы теории информации
Свойства информации. Понятие источника сообщений и его
характеристики. Эргодические источники. Определение меры
информации по Шеннону. Связь информации и энтропии. Теорема
Шеннона. Сигнал и шум. Избыточность. Естественные языки и
генетический код как примеры избыточного кодирования. Теорема
Шеннона для канала с шумом.
2. Введение в информационные сети
Что такое сеть? Обязательные элементы сетевого взаимодействия. Обзор
сервисов современных компьютерных сетей: файловый сервис, сервис
печати, сервис передачи сообщений, доступ к базам данных, сервис
приложений, распределенные вычисления.Сети с коммутацией каналов,
сообщений и пакетов.
3. Понятие протокола. Семиуровневая модель OSI
Протокол как механизм внесения избыточности. Многоуровневая
структура протоколов на примере естественного языка (фонемы,
лексемы,
синтаксис,
невербальные
сигналы).
Требования
совместимости. Диалекты. Открытые и "собственные" протоколы. Сети
и вообще средства связи как исторически складывающиеся
эволюционирующие структуры. Семиуровневая модель OSI. словная
природа этой модели. Разнобой в трактовках самой модели.
Четырехуровневая модель DoD.
4. Физический уровень модели OSI
Использование электромагнитных колебаний для передачи информации.
Частотные диапазоны. Дисперсия, затухание, помехи. Модулированная
и немодулированная передача. Способы модуляции. Синхронная и
асинхронная передача. RS232 как пример асинхронного протокола.
Примеры синхронной передачи. Манчестерский код и его
модификации.
Использование
полосы
пропускания.
Мультиплексирование. Беспроводная передача информации. Провода и
волноводы. Волоконная оптика. Физическая топология сети.
Двухточечное соединение; кольцо; шина; звезда; соты; полносвязная
сеть. Соединительные устройства физического уровня: концентраторы,
повторители, ретрансляторы, модемы, устройства сопряжения.
5. Канальный уровень OSI
Адресация
канального
уровня.
Логическая
топология
сети.
Широковещательные, групповые и индивидуальные адреса. Доступ к
среде. Способы разделения доступа: маркер, разрешение коллизий,
временное мультиплексирование. Ethernet, FDDI, PPP как примеры
канальных протоколов. Варианты физической топологии Ethernet как
пример независимости физической и логической топологий.
Соединительные устройства канального уровня: мосты и коммутаторы.
6. Сетевой уровень OSI.
Необходимость соединения разнородных сетей канального уровня.
Адресация сетевого уровня. IP как пример сетевого протокола.
Трансляция сетевых адресов в канальные на примере протокола ARP.
Маршрутизация. Алгоритмы поиска и выбора маршрутов: вектор
расстояний, состояние соединения, балансировка загрузки. Шлюзы и
туннели. NetBEUI как пример немаршрутизуемого сетевого протокола.
7. Транспортный уровень OSI.
Проблема надежности передачи. Сегментация сообщений. Квитирование.
Связь с установлением соединения и без него. TCP и UDP как примеры
протоколов транспортного уровня. Трансляция имен в адреса. Обзор
протоколов DNS и TCPBEUI. URL. Сессионный уровень OSI
Управление диалогом: симплексная, полудуплексная и дуплексная
передача. Управление сессиями. Понятие транзакции. Проблемы
безопасности и аутентификации. Методы аутентификации: привязка к
адресу, пароль, challenge/response механизмы, электронная подпись.
rlogin/rsh как пример аутентификации привязкой к адресу. Червь
Морриса. ssh как пример криптографической challenge/response
аутентификации.
8. Уровень представления OSI
Представление данных. Обзор кодировок текста на примере кодировок
кириллицы. Другие проблемы представления: порядок байт,
разрядность чисел, разделители строк. Понятие метаданных. Кодовые
страницы и Unicode. Протокол MIME. Использование MIME
протоколом HTTP и почтовыми протоколами.
9. Прикладной уровень OSI
Способы поиска сервиса: пассивный, рекламирование, служба каталогов.
Понятия клиента и сервера. Языки запросов и ответов на примере
протокола HTTP. Популярные стеки протоколов. Протокол IPX и стек
протоколов NetWare. Протокол IPX фирмы Xerox. Схема адресации
IPX. Протоколы RIP и SAP. NetWare Core Protocol (NCP). SPX. NLSP.
Служба каталогов NetWare. NetWare/IP.
Литература
1. Компьютерные сети. Принципы, технологии, протоколы. / Олифер В.Г.
Олифер Н.А. – СПб: Питер, 2001.
2. Новые технологии и оборудование IP-сетей. / Олифер В.Г. Олифер Н.А.
– СПб: БХВ – Санкт-Петербург, 2000.
3. Технологии корпоративных сетей. Энциклопедия. / Кулыгин М. – СПб:
Питер, 1999.
4. Телекоммуникационные и компьютерные сети. Водный курс. /Уолренд
Дж. Пер. С англ. – Москва: Постмаркет, 2001
5. Стандарты и протоколы Интернета. / Найк Дилип – М.: Издательский
отдел «Русская редакция» ТОО «Channel Trading Ltd.», 1999.
6. Аппаратные средства локальных сетей. Энциклопедия. / Гук М. – СПб:
Питер, 2000.
7. Эффективное программирование TCP/IP. / Йон Снейдер. – Спб: Питер,
2001.
8. Принципы маршрутизации в Internet. 2-е издание. / Сэм Хелеби, Денни
Мак-Ферсон. – Издательский дом «Вильямс», 2001
9. TCP/IP: Архитектура, протоколы, реализация (включая IP версии 6 и IP
Security), 2-е изд. / Др. Сидни Фейт. – Издательство «Лори», 2000
10. Виртуальные частные сети. / Стивен Браун. – Издательство «Лори»,
2001
11. Руководство по технологиям объединённых сетей. 3-е издание. / Cisco,
Inc. и др. – Издательский дом «Вильямс», 2002
12. Атака на Internet. 2-е издание /Медведовский И.Д., Семьянов П.В.,
Леонов Д.Г. – М: ДМК, 1999.
ИНФОРМАЦИОННЫЕ СЕТИ И СИСТЕМЫ
Программа курса лекций
(4 курс, 8 сем., 96 ч., диф.зачёт, экзамен)
Ассистент Сабитов Андрей Альбертович
1. История развития БД и СУБД. Понятие базы данных. Иерархические,
сетевые, реляционные СУБД. Объектно–ориентированные и объектно–
реляционные СУБД.
2. Введение в реляционную модель.
2.1. Основные понятия и определения реляционной модели. Свойства
отношений.
2.2. Реляционная алгебра. Операции над отношениями. Свойства
операций. Приводимые и неприводимые операции.
2.3. Реляционное исчисление. Исчисление кортежей. Исчисление
доменов. Соотношение реляционного исчисления и реляционной
алгебры.
3. Язык SQL.
3.1. Стандарты SQL-92 и SQL-3. Диалекты SQL. Уровни соответствия
стандартам языка SQL.
3.2. Типы данных и их соотношения в различных диалектах
SQL.Таблицы, и их отличия от отношений.
3.3. Подъязык DML. Общий синтаксис команд DML. Вложенные
подзапросы. Представления (view). Алгоритмические аспекты
оптимизации
исполнения
DML–предложений.
Внешние
объединения.
3.4. Подъязык DDL. Объекты словаря базы данных. Модификация
словаря базы данных.
3.5. Прочие команды SQL. Права доступа и роли. Транзакции и
управление транзакциями.
4. Язык PL/SQL.
4.1. Недостатки языка SQL. Цели создания языка PL/SQL. Хранимые
процедуры и функции. Модули. Триггеры.
4.2. Типы данных PL/SQL и их отличие от типов данных в SQL.
4.3. Структура программного блока PL/SQL. Основные операторы.
Синтаксис создания хранимых процедур и функций.
4.4. Курсоры.
4.5. Триггеры. Задачи, решаемые триггерами. Псевдозаписи :new и
:old. Порядок срабатывания триггеров.
4.6. Минусы и плюсы вынесения «бизнес–логики» на сторону сервера
БД.
5. Проектирование БД.
5.1. Особенности проектирования БД.
5.2. Инфологическая модель. ER–диаграммы, нотация ER–диаграмм.
Критерии выбора типов данных. Критерии выбора первичных
ключей. Суррогатные первичные ключи.
5.3. Стратегия индексации таблиц. Типы индексов. Минусы
использования индексов.
5.4. Нормализация. Функциональная, транзитивная и многозначная
зависимости в отношениях. Полная декомпозиция таблицы.
Определения нормальных форм. Аномалии модификации данных
в ненормализованных таблицах.
5.5. Денормализация. Причины проведения денормализации. Типы
денормализации. Механизмы обеспечения целостности данных
после денормализации.
6. Архитектура СУБД Oracle.
6.1. Экземпляр и база данных.
6.2. Состав экземпляра. SGA и ее структура. Назначение Shared Pool’a,
буфера БД, буфера журнала. Основные фоновые процессы Oracle
и их функции.
6.3. Серверный процесс Oracle. Взаимодействие прикладной
программы с СУБД Oracle.
6.4. База данных Oracle. Файлы данных. Блоки данных, экстенты,
сегменты, табличные пространства. Структура блока данных.
Миграция строк. Файл параметров init.ora. Контрольный файл.
Файлы журнала. Сегменты отката.
6.5. Порядок исполнения команд SELECT и UPDATE. “Concurrency
and consistency!”
6.6. Механизмы автоматического восстановления Oracle после аварии.
На семинарских занятиях, проходящих в терминальном классе, студенты
выполняют определенный набор небольших заданий из 80 возможных
вариантов. Список конкретных заданий определяется семинаристом
каждому студенту персонально. Целью данных заданий ставится
знакомство студентов с декларативным языком SQL и приобретение
навыков работы с сервером баз данных. Кроме того, студенты
выполняют программный проект в качестве курсовой работы. Основной
целью данного программного проекта является развитие навыков
проектирования баз данных.
1.
2.
3.
4.
5.
6.
7.
8.
9.
Литература
Дж. Ульман, Основы систем баз данных, М., Финансы и статистика,
1983.
К. Дж. Дейт, Введение в системы баз данных, шестое издание, МоскваСанкт-Петербург-Киев, Изд. дом “Вильямс”, 1999.
М. Грабер. Введение в SQL, M.: Лори, 1996.
Дж. Л. Уэлдон, Администрирование баз данных, М., Финансы и
статистика, 1984.
Журналы СУБД N 2, 1995г., N 1-6 , 1996г, N 1-4 1997г.
Г. Буч. Объектно-ориентированное проектирование с примерами
применения: Пер с англ. - М.: Конкорд, 1992. – 519 с.
А.М. Вендров CASE-технологии. Современные методы и средства
проектирования информационных систем, М.: Финансы и статистика,
1998. – 176с.
Д. Артемов, Г. Погульский, М. Альперович Microsoft SQL Server 7.0 для
профессионалов: установка, управление, эксплуатация, оптимизация. –
М.: Издательский отдел “Русская редакция” ТОО “Channel Trading Ltd.”,
1999
Марк Шпеник, Оррин Слендж и др. Руководство администратора баз
данных Microsoft SQL Server 7.0. – М.:, Изд. дом “Вильямс”,1999.
ПРОГРАММИРУЕМУЕ ЛОГИЧЕСКИЕ УСТРОЙСТВА
Программа практических занятий
(5 курс, 9-й сем., 36 ч., диф.зачёт)
Старший преподаватель Селиванов Аркадий Николаевич
1. Введение
Элементная база цифровой электроники.
Интегральные микросхемы (ИМС, IC). БИС.
Специализированные (application specific) БИС.
Цикл разработки ASIC.
2. Программируемые логические интегральные схемы (ПЛИС, PLD)
Архитектура ПЛИС фирм ALTERA и XILINX.
Коммутируемые матричные блоки (CLB)
Реконфигурируемые модули памяти (EAB)
Методы конфигурации – PPA, PPS, AS, PS.
Конфигурационные EEPROM
Конфигурирование в системе (ISP).
System-on-chip (SoC)
3. Цикл разработки проекта на ПЛИС.
Создание нового файла проекта. Шаблон (template)
Выбор семейства ПЛИС
Текстовый редактор
Графический редактор
Сигнальный редактор
4. Языки описания аппаратуры VHDL и AHDL.
Числа, константы, символы
Булевы выражения
Логические операторы
Арифметические операторы
Реализация условной логики (операторы IF, CASE)
Компараторы (операторы сравнения)
Оператор FOR – GENERATE
Оператор Truth Table
Примитивы
Порты
Комбинационная логика
Узел (node)
Определение групп
Реализация условной логики (IF, CASE)
Значения по умолчанию
Реализация двунаправленных выводов
Последовательная логика
Регистры
Счетчики
Цифровые автоматы (state machine)
Реализация иерархического проекта
Макрофункции Altera
Пользовательские макрофункции
Импорт и экспорт цифровых автоматов.
Управление синтезом
Примитивы LCELL и SOFT
5.Системы проектирования ПЛИС – MAX+PLUS и QUARTUS
Поддерживаемые устройства PLD (семейства)
Средства описания проекта
Схемный ввод, поддержка языка AHDL, интерфейс с САПР третьих
фирм, топологический редактор, иерархическая структура проекта,
библиотека параметризируемых модулей
Средства компиляции проекта
Логический синтез и трассировка, автоматическое обнаружение
ошибок, поддержка мегафункций по программам MegaCore и AMPP
Средства верификации проекта
Временной анализ, функциональное и временное моделирование,
анализ
сигналов,
возможность
использования
программ
моделирования (симуляторов) третьих фирм
Практическое задание
Разработать и моделировать каскадный цифровой фильтр
(медианный + ФНЧ) на языке AHDL.
Проект должен иметь иерархическое строение:
Каскадное включение фильтров +
Макрофункция медианного фильтра
Макрофункция ФНЧ.
Верификация проекта должна доказывать правильное
функционирование фильтра при наличии на входе
импульсного выброса и высокочастотного сигнала.
Литература
Development System
1. Programmable Logic
MAX+PLUS(R) Altera
Corporation
2. Стешенко В.Б. ПЛИС фирмы ALTERA: проектирование устройств
обработки сигналов. М., ДОДЭКА, 2000.
3. Enchanced VHDL tutorial with applications. http:\\www.aldec.com
4. Enchanced Verilog HDL tutorial with applications. http:\\www.aldec.com
НОВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
Программа курса лекций
(5 курс, 10 сем., 64 ч., экзамен)
Ассистент Сергей Валерьевич Дубров
Лекции построены в виде докладов преподавателя и студентов (вариант
для студентов: реферат). За одну лекцию представляются два-три доклада,
один в исполнении преподавателя, остальные - силами самих студентов.
Темы выбираются студентами из предложенного преподавателем списка
либо самостоятельно (по согласованию с лектором). Примерный список
охватывает самые разные направления современной ИТ индустрии – как
аппаратные (hardware), так и программные (software):
1. Архитектура и особенности современных микропроцессоров.
2. Скоростные шины.
3. Технология скоростной памяти (RAMBUS, DDRAM)
4. Технологии построения современных локальных вычислительных сетей
– Gigabit Ethernet, ATM и др. Коммутация. VLAN.
5. Технологии беспроводного доступа – BlueTooth, IEEE802.11.
6. Технологии современных проекторов – ЖКИ, микрозеркальная,
лазерная.
7. Системы и устройства для хранения данных – IDE (ATA, SATA). SCSI,
SAN, NAS, RAID-массивы.
8. Современные портативные компьютеры (notebook).
9. CD, DVD – технологии.
10. Понятие каталога (directory), обзор и сравнение технологий eDir
(Novell), Active Directory (Microsoft), LDAP.
11. Технологии современных браузеров – IE, Netscape, Mozilla, Opera.
12. Терминальный сервис в семействе Windows. «Надстройка» от фирмы
Citrix. Протоколы RDP, ICA.
13. Обзор новых возможностей семейства Windows2003.
14. Технологии на базе Java (J2EE, JSP,…).
15. Технологии .NET.
16. Базы данных, SQL. Сравнительный обзор основных участников в этом
секторе рынка.
17. Кластерные вычисления.
18. Технологии мобильной связи – GSM, CDMA,…
19. Технологии построения поисковых машин.
20. 3D-технологии в современных компьютерных играх. OpenGL, DirectX.
21. Трехмерный звук. Технологии сжатия звука (MP3, OGG, WMA,…)
Литература
Поскольку в данном курсе обычно рассматриваются самые свежие и
новые технологии, то трудно порекомендовать ту или иную литературу в ее
классическом – бумажном – воплощении. Книги очень быстро устаревают.
Основным источником информации для данного курса могут быть названы
тематические, поисковые Интернет-сайты или сайты фирм-разработчиков
той или иной технологии. Некоторые из них перечислены ниже:
1. www.google.com - на сегодня, несомненно, лучшая поисковая машина в
Интернете.
2. www.yandex.ru - одна из лучших поисковых машин в русскоязычной
части Интернета.
3. www.ixbt.com - авторитетный сайт, спеализирующийся на аппаратном
обеспечении.
4. www.3dnews.ru - еще один очень авторитетный ресурс по аппаратному
обеспечению.
5. www.novell.ru - русскоязычный сайт фирмы Novell.
6. www.microsoft.com/rus - русскоязычный сайт фирмы Microsoft.
7. www.java.com - сайт, посвященный технологиям Java.
8. www.citrix.com - сайт фирмы Citrix.
9. www.intel.com - сайт фирмы Intel.
10. www.ibm.com - сайт фирмы IBM
ПРОБЛЕМЫ БЕЗОПАСНОСТИ В ИНФОРМАЦИОННЫХ
ТЕХНОЛОГИЯХ
Программа курса лекций
(5 курс, 10 сем., 32 ч., экзамен)
Ассистент Сергей Валерьевич Дубров
1. Определение информационной безопасности. Основные понятия.
Принцип трех «А» - Аутентификация, Авторизация, Аудит.
2. Криптография. Алгоритмы традиционного шифрования (DES).
Алгоритмы блочного шифрования.
3. Криптография с открытым ключом. Аутентификация сообщений.
Защищенные функции хэширования (SHA, HMAC). Алгоритм RSA.
Схема обмена ключами Диффи-Хелмана. Цифровые подписи,
сертификаты, PKI.
4. Базовые средства обеспечения безопасности автономных операционных
систем. Пользователи, группы, права, привилегии (на примере
Windows2000, Linux). Аутентификация пользователя. Списки доступа
(ACL).
5. Защита файловой системы. Права, атрибуты файлов и каталогов,
фильтры. Разделение доступа к файлам и каталогам. Реализация на
файловой системе NTFS (WindowsNT/2000/XP/2003). Реализация на
файловой
системе
Netware
(явные
назначения,
фильтры,
эквивалентность по безопасности). Реализация разграничения доступа к
файлам и директориям на *nix-системах (sticky bit).
6. Защита операционной системы в сетевом окружении. Использование
служб каталога и/или домена для аутентификации пользователя.
Реализация в eDir (NDS) фирмы Novell, Active Directory (Microsoft),
LDAP, NIS (Sun).
7. Kerberos – основные понятия. Схема входа в сеть с использованием
Kerberos. Служба аутентификации X.509.Управление настройками
локальной безопасности с помощью групповых политик (правил).
8. Недостатки защиты в основе и в реализации распространенных сетевых
протоколов – telnet, ftp, smtp, pop3 и др. Методы преодоления
некоторых из них – однократные пароли, туннелирование (stunnel).
Защита электронной почты – S/MIME, PGP. Защита от ложных ARP-,
DNS- серверов. Защита от отказа в обслуживании (DoS).
9. Обеспечение безопасности уровня IP – IPSec, ESP, Oakley, ISAKMP.
Виртуальные частные сети (VPN).
10. Защита Web. Протоколы SSL, TLS. Протокол защищенных электронных
транзакций (SET).
11. Безопасность протоколов сетевого управления SNMP. SNMP версии 3.
12. Защита систем. Межсетевые экраны (firewall, брандмауэры). Принципы
работы. Типы межсетевых экранов (пакетный фильтр (stateless, stateful),
шлюз
прикладного
уровня,
шлюз
уровня
коммутации).
«Демилитаризованная зона» (DMZ). Персональные межсетевые экраны
– необходимое дополнение к комплексной защите сети предприятия
(точное распознавание внутреннего источника-нарушителя).
13. Системы обнаружения вторжений – IDS. Сопряжение с межсетевыми
экранами.
14. Обзор основных межсетевых экранов – Checkpoint, Cisco PIX, Novell
Border Manager, Microsoft ISA. Персональные межсетевые экраны –
Outpost, Sygate Personal Firewall, Symantec PF, Zone Alarm, Tiny PF,
Kerio firewall.
15. Безопасность и защита сетевых устройств, работающих на втором
уровне эталонной модели OSI. Защита VLAN.
16. Вирусы, «черви», «троянцы». Обеспечение антивирусной безопасности.
Мониторирование в реальном времени, сканирование дисков и архивов.
Корпоративные версии антивирусных программ. Лучшие антивирусные
пакеты – Norton Symantec Antivirus, Kaspersky Anivirus, DrWeb, Panda
Antivirus, CAI Innoculan.
Литература
1. Столингс Вильям. Основы защиты сетей. Приложения и стандарты.
Москва, Изд. дом «Вильямс» , 2002
2. Браг Роберта. Система безопасности Windows 2000. Москва, изд. дом
«Вильямс», 2001
3. Медведовский И.Д., Семьянов П.В., Леонов Д.Г. Атака на Internet. 2-ое
изд. Москва, ДМК, 1999
4. Крис Касперски. Техника сетевых атак. Москва, изд. «СОЛОН-Р», 2001
5. Оглтри Т. Firewalls. Практическое применение межсетевых экранов.
Москва, ДМК Пресс, 2001
6. Соломон Д. И Русинович М. Внутреннее устройство Microsoft Windows
2000. Мастер-класс. Спб.: Питер, 2001.
7. Таненбаум Э., Современные операционные системы. 2-е изд. СПб.:
Питер, 2002
8. http://www.infosecurity.ru/
9. http://bugtraq.ru/
10. http://openna.com/
11. http://www.securityfocus.com/bid
12. http://www.microsoft.com/Windows2000/downloads/security/
13. http://www.securitylab.ru/
14. http://www.hackzone.ru/
15. http://www.securityspace.com/
16. http://thecrack.net/
17. http://www.nsa.gov/snac/index.html
18. http://www.sans.org/index.php
19. http://www.sec.ru/
20. http://opensores.thebunker.net/pub/mirrors/blackhat/presentations/bh-usa-02/
ОБЪЕКТНО–ОРИЕНТИРОВАННЫЙ АНАЛИЗ И ДИЗАЙН
Программа курса лекций
(6 курс, 11 сем., 64 ч., экзамен)
Ассистент Вячеслав Викторович Мухортов
1. Введение. Сложность, присущая программному обеспечению.
Формальные подходы в программировании как метод преодоления
сложности, ОО подход. Основные концепции ООП, классы,
отношения, атрибуты, операции.
2. Моделирование. Введение в UML.
2.1. Необходимость моделирования ПО
2.2. Словарь, правила, общие механизмы UML
2.3. Варианты использования, актеры
2.4. Диаграммы деятельностей
2.5. Диаграммы классов, типы отношений
2.6. Диаграммы
взаимодействия
(последовательностей
и
коопераций)
2.7. Диаграммы состояний, переходы, суперсостояния
2.8. Диаграммы компонент и процессоров
3. Диаграммы пакетов
4. Метамодель
5. . Основные фазы процесса разработки ПО
5.1. Начальная фаза, анализ предметной области, анализ рисков.
5.2. Уточнение спецификаций.
5.3. Проектирование.
5.4. Приемка.
5.5. Сопровождение и реорганизация.
5.6. Обратное проектирование
6. Rational Unified Process
1.1. Бизнес-анализ
1.1.1. Документирование бизнес-процессов
1.1.2. Анализ процессов, идентификация ролей
1.1.3. Бизнес-сущности в бизнес-процессах
1.2. Системный анализ, формирование требований к системе
1.2.1. Системные роли и варианты использования
1.2.2. Диаграммы
деятельностей
и
диаграммы
взаимодействия
1.3. Архитектурный анализ
1.3.1. Аналитическая модель. Реализация вариантов
использования.
2.
3.
4.
1.3.2. Сотрудники, сущности, граничные классы.
1.4. Дизайн
1.4.1. Уровни, подсистемы, пакеты
1.4.2. Диаграммы процессов
1.4.3. Модель реализации
1.4.4. Модель размещения
Принципы дизайна иерархий классов
2.1. Open-Closed Principle, Demeter principle
2.2. Liskov Substitution Principle
2.3. Dependency Inversion Principle
2.4. Interface Segregation Principle
Дизайн пакетов.
3.1. Reuse-Release Equivalence Principle
3.2. Common Reuse Principle
3.3. Common Closure Principle
3.4. Acyclic Dependencies Principle
3.5. Stable Dependencies Principle
3.6. Stable Abstractions Principle
3.7. Метрики OOD, main sequence
Образцы проектирования (Design patterns)
4.1. Роль образцов в проектировании, поддержка на уровне CASEсредств.
4.2. Посредник
4.3. Клиент – сервер (callback)
4.4. Моностэйты
4.5. Синглетоны
4.6. Адаптеры
4.7. Стратегии
4.8. Factory
4.9. Команды
4.10. Лестница в небеса
Литература
1. Г. Буч «Объектно-ориентированный анализ и проектирование», второе
издание, М.: Бином, 2000
2. Г. Буч, Д. Рамбо, А. Джекобсон «Язык UML. Руководство
пользователя», М.: ДМК, 2000
3. М. Фаулер, К. Скотт «UML в кратком изложении», М.: Мир, 1999
4. Scott Whitmire «Object Oriented Design Measurement», Wiley Computer
Publishing, 1997
5. Gamma et al. «Design Patterns», Addison-Wesley, 1995
6. Э. Гамма. «Приемы объектно-ориентированного
Паттерны проектирования», СПб: Питер.
проектирования:
Download