Документ взят из кэша поисковой машины. Адрес оригинального документа : http://new.math.msu.su/content_root/programs/kaf/special/vichmat/rab-pron.doc
Дата изменения: Mon Nov 10 08:54:35 2008
Дата индексирования: Sun Apr 10 03:17:31 2016
Кодировка: koi8-r

РАБОТА НА ЭВМ И ПРОГРАММИРОВАНИЕ
доц. Ю.Н. Пронкин
2 курс, отделение механики
Весенний семестр, 32 часа.
1. Элементарное введение в архитектуру вычислительных систем.
1.1. Общий подход к разработке программного обеспечения. Путь от
постановки задачи к получению готовой программы.
1.2. Аппаратно-программная организация компьютера. Основные компоненты
аппаратно-программной среды.
1.3. Функциональная схема компьютера. Процессор, память, подсистема
ввода/вывода. Взаимодействие основных элементов аппаратуры.
1.4. Типы и характеристики микропроцессоров. Разрядность, частота
синхронизации, форматы команд, сложность системы команд.
1.5. Организация основной памяти компьютера. Понятия адреса и адресного
пространства. Адресное пространство подсистемы ввода/вывода.
1.6. Типы и характеристики запоминающих устройств.
1.7. Многоуровневая организация памяти. Ассоциативная кэш-память.
Стратегии размещения, замещения и записи.
1.8. Машинные способы представления информации.
1.9. Аппаратная среда как основа для функционирования программного
обеспечения.
2. Элементарное введение в теорию операционных систем.
2.1. Ресурсы вычислительной системы и их классификация. Виртуализация
ресурсов.
2.2. Понятие операционной системы как основного средства управления
ресурсами.
2.3. Классификация операционных систем исходя из подхода к решению задачи
об управлении ресурсами. Распределенные операционные системы.
2.4. Структура абстрактной операционной системы. Иерархия подсистем.
Системные вызовы.
2.5. Формулировка основных задач системного программирования.
2.6. Операционная система как среда разработки и функционирования
прикладных программ.
3. Элементарное введение в средства программирования.
3.1. Процесс подготовки и выполнения программы.
3.2. Языки программирования. Различные подходы к классификации.
Трансляция языков программирования.
3.3. Связывание и время связывания. Компилируемые и интерпретируемые
языки программирования.
3.4. Внутренняя модель и реализация языков программирования. Управление
данными и последовательностью действий. Статическая и динамическая память.
Глобальные и локальные среды. Структуризация данных.
3.5. Сравнительная архитектура языков Фортран, Алгол и Си. Модульность и
блочность. Управление глобальными и локальными средами. Объектно-
ориентированный подход.
3.6. Описание грамматики языков программирования. Нормальная форма Бэкуса-
Наура. Синтаксические диаграммы.
3.7. Язык Си как универсальный язык программирования третьего поколения.
4. Элементарное введение в программирование на языке Си.
4.1. Общие понятия: алфавит, идентификаторы, ключевые слова, константы.
4.2. Базовые и производные типы данных. Особенности внутреннего машинного
представления данных. Иерархия и преобразование типов.
4.3. Основные операции и их приоритеты.
4.4. Организация массивов. Операция доступа к элементам массива.
4.5. Управление последовательностью действий. Операторы.
4.6. Адреса и указатели. Динамическое выделение памяти.
4.7. Специальные операции. Обработка битовых цепочек.
4.8. Функции и прототипы. Механизмы передачи параметров. Структурный
подход к программированию.
4.9. Структуры и объединения. Операции доступа к элементам структур.
4.10. Расширение понятия указателя. Указатели на структурированные типы.
Указатели на функции. Дальнейшие обобщения и абстрагирование данных.
4.11. Язык С++ как более высокий уровень абстракции при разработки
программ. Элементарное введение в объектно-ориентированные языки
программирования.
Осенний семестр, 48 часов.
5. Архитектура микропроцессорных вычислительных систем.
5.1. Организация системной шины персонального компютера. Совместная
работа основных элементов аппаратуры. Управление вводом/выводом.
5.2. Архитектура микропроцессоров семейства Intel 80x86. Базирование и
индексирование памяти. Управление стеком. Сегментная организация памяти.
Формирование исполнительного адреса. Битовые флаги состояния и управления.
5.3. Основные режимы адресации памяти.
5.4. Организация работы с подпрограммами для микропроцессоров семейства
Intel 80x86 в режиме реального адреса. Механизмы передачи параметров.
5.5. Прерывания и программы обработки прерываний. Классификация
прерываний. Последовательность прерывания. Зарезервированные вектора
прерываний режима реального адреса микропроцессоров Intel 80x86.
5.6. Обработка внешних аппаратных прерываний. Назначение и работа
контроллера прерываний Intel 8259A. Последовательность аппаратного
прерывания.
5.7. Работа микропроцессоров Intel 80x86 в защищенном режиме. Кольца
защиты. Общая схема формирования исполнительного адреса. Организация
дескрипторных таблиц. Разграничение доступа.
5.8. Работа с подпрограммами для микропроцессоров Intel 80x86 в
защищенном режиме. Межкольцевые вызовы. Организация шлюзов и переключение
стека.
5.9. Управление многозадачностью. Шлюзы задач. Вложенные задачи. Задачи
обработки прерываний.
5.10. Многопроцессорные архитектуры на базе Intel 80x86. Слабо связанные,
сильно связанные и сопроцессорные конфигурации. Транспьютерные системы.
5.11. Архитектура арифметических процессоров Intel 80x87. Внешние и
внутренние форматы данных. Обработка исключительных ситуаций. Управление
состоянием.
5.12. Современные направления развития микропроцессорных систем.
Специализированные процессоры и микроконтроллеры.
6. Некоторые прикладные вопросы теории операционных систем
и системного программирования.
6.1. Понятие процесса. Диаграммы состояний процесса. Параллельное
выполнение программного кода в различных операционных средах. Многонитевые
операционные системы.
6.2. Управление реальной и виртуальной памятью. Адресация виртуальной
памяти.
6.3. Проблема критической секции. Решение Дейкстры. Семафорные примитивы.
6.4. Проблема тупика. Необходимые и достаточные условия возникновения
тупиковых ситуаций. Алгоритм банкира.
6.5. Общие вопросы организации файловых систем. Практические решения на
примере DOS и UNIX.
6.6. Структуры данных процесса. Управление процессами в операционной
системе UNIX.
6.7. Загрузка и выполнение программ.
7. Структуры и базы данных.
7.1. Классификация структур данных. Оперативные динамические и
полустатические структуры. Постановка задачи моделирования.
7.2. Непрерывные реализации динамических структур данных с
последовательным доступом. Стек, дек, очередь. Примеры моделирования.
7.3. Ссылочные реализации структур данных. Преимущества и недостатки.
Организация списков, операции добавления и исключения элементов. Примеры
реализации.
7.4. Представление деревьев и графов. Специальные виды деревьев.
Организация поиска. Задача о нахождении кратчайшего пути на графе.
7.5. Множества как неупорядоченные структуры данных. Способы реализации
множества. Хеширование. Методы разрешения коллизий.
7.6. Файловые системы как внешние динамические структуры данных.
Обобщения практически важных примеров организации файловых систем.
7.7. Введение в теорию баз данных. Древовидные, сетевые и реляционные
модели. Языки запросов.
8. Базовые алгоритмы обработки данных.
8.1. Общее введение в теорию алгоритмов. Оценка трудоемкости алгоритма.
Неулучшаемые алгоритмы. Некоторые практически важные примеры.
8.2. Алгоритмы сортировки: простая обменная сортировка, методы QuickSort
и HeapSort. Неулучшаемость оценки в классе перестановочных алгоритмов.
Примеры реализации.
8.3. Оптимизация поиска. Алгоритм Боуэра и Мура.
8.4. Элементарное введение в алгоритмы машинной графики. Алгоритм
Брезенгема для рисования отрезков прямых.
8.5. Совместный взгляд на теорию алгоритмов и структур данных. Некоторые
полезные обобщения.
9. Основы организации вычислительных сетей.
9.1. Общие вопросы организации сетей. Распределенное хранение и обработка
данных. Модель ISO/OSI.
9.2. Аппаратное оборудование сетей. Важнейшие сетевые архитектуры. Сети
Ethernet и TokenRing.
9.3. Адресация в сетях. Понятие протокола передачи данных. Протоколы
семейства IP. Наиболее распространенные альтернативы.
9.4. Сетевое программирование. Работа с сокетами. Простейшие примеры
написания сетевых программ.
9.5. Организация сетевого доступа к базам данных Клиент-серверные
технологии.
9.6. Дальнейшие обобщения. Различные подходы к распределенным
вычислениям. Новый взгляд на транспьютерные системы.

Литература
1. Бек Л. Введение в системное программирование. М., Мир, 1988.
2. Валединский В.Д., Пронкин Ю.Н. Вычислительные системы и
программирование. Т. 1, 2. М., изд-во МГУ, 2000.
3. Вирт Н. Алгоритмы и структуры данных. М., Мир, 1989.
4. Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. М.,
Мир, 1981.
5. Дейтл Г.М. Введение в операционные системы. Т. 1, 2. М., Мир, 1980.
6. Коннолли Т., Бегг К., Страчан А. Базы данных: проектирование,
реализация, сопровождение. М., Вильямс, 2000.
7. Кушниренко А.Г., Лебедев Г.В. Программирование для математиков. М.,
Наука, 1988.
8. Липский В. Комбинаторика для программистов. М., Мир, 1988.
9. Лю Ю -Чжен, Гиббсон Г. Микропроцессоры семейства 8086/8088. М., Радио и
связь, 1987.
10. Мартин Дж. Организация баз данных в вычислительных системах. М., Мир,
1980.
11. Морс С.П., Алберт Д.Д. Архитектура микропроцессора 80286. М., Радио и
связь, 1990.
12. Пратт Т. Языки программирования: разработка и реализация. М., Мир,
1979.