Similar presentations:
Системное программирование в среде Windows
1. Системное программирование. Введение в дисциплину
2. Рекомендуемая литература
Джонсон М. Харт. Системное программированиев среде Windows. – М.: Вильямс, 2005.
Побегайло А.П. Системное программирование в
Windows. – СПб.: БХВ-Петербург, 2006.
ГОСТ 19781-90. Обеспечение систем обработки
информации
программное.
Термины
и
определения
Библиотека MSDN:
http://msdn.microsoft.com/ru-ru/library/
3. Введение
Согласно ГОСТ 19781-90:Системная программа – программа, предназначенная
для поддержания работоспособности системы
обработки информации (СОИ) или повышения
эффективности ее использования в процессе
выполнения прикладных программ
Прикладная
программа
–
программа,
предназначенная для решения задачи или класса
задач в определенной области применения СОИ
Системное ПО – это ПО общего назначения, то
есть ПО, не связанное с решениями задач в
конкретной предметной области
Системное
программирование – создание
системного ПО
4. Введение
Взгляд на системное программирование исходяиз определения термина «система»:
Система – единое целое, состоящее из множества
компонентов и множества связей между ними
Системное программирование – это разработка
программ
сложной
структуры
(программных
продуктов и комплексов)
Эти два взгляда на системное программирование
не противоречат друг другу:
Разработка системного ПО – более сложная задача
Разработка системного ПО требует, как правило,
более высокой квалификации программиста
Обычно
придерживаются
«традиционного»
взгляда, соответствующего определениям ГОСТ;
второй взгляд – область Software Engineering
5. Введение
Место системного ПО в многоуровневой схемевычислительной системы:
6. Введение
Классификация (виды) системного ПО согласноГОСТ 19781-90:
1. Управляющая программа (базовое ПО) – системная
программа,
реализующая
набор
функций
управления, в который включают управление
ресурсами и взаимодействие с внешней средой СОИ,
восстановление работы системы после проявления
неисправностей в технических средствах
Операционные системы и оболочки + драйверы, firmware
2. Программа обслуживания (сервисное ПО, утилиты) –
программа, предназначенная для оказания услуг
общего характера пользователям и обслуживающему
персоналу СОИ
Дисковые утилиты (дефрагментаторы; проверка, очистка,
разметка, сжатие диска; резервное копирование), тесты и
мониторинг оборудования, работа с реестром, архиваторы,
антивирусы, обслуживание компьютерных сетей
7. Введение
Классификация (виды) системного ПО согласноГОСТ 19781-90:
3. Система программирования – система, образуемая
языком программирования, компиляторами или
интерпретаторами программ, представленных на
этом языке, соответствующей документацией, а
также вспомогательными средствами для подготовки
программ к форме, пригодной для выполнения
Трансляторы,
компоновщики
(редакторы
связей),
отладчики, графические среды разработки программ (IDE),
средства моделирования систем, приложений и баз
дынных, генераторы кода
В основном используются промышленные продукты –
системы программирования и CASE-средства
8. Введение
Современноесостояние ПО предполагает
выделение еще одного класса ПО:
Системное программное обеспечение
Прикладное программное обеспечение
Промежуточное ПО (middleware) – слой или комплекс
технологического
ПО
для
обеспечения
взаимодействия между различными приложениями,
системами, компонентами
Промежуточное ПО – основа для взаимодействия
различных
приложений
и
серверов
в
распределенных системах
Промежуточное ПО реализуется в виде серверов:
Веб-серверы, серверы приложений, СУБД, мониторы
транзакций, серверы очередей (сервисы обработки
сообщений)
9. Введение
Особенности промежуточного ПО и другихвидов серверов:
Они не ориентированы на решение конкретных
прикладных задач, но являются программной основой
для создания прикладных решений
С точки зрения инструментальных средств разработки
такое ПО ближе к прикладному
С точки зрения алгоритмов и технологий разработки
такое ПО ближе к системному
Иногда такое ПО относят непосредственно к
системному
Существуют
клиентское ПО с аналогичными
характеристиками:
Браузеры
10. Введение
Особенности системного ПО:Не
ориентировано на решение конкретных
прикладных задач
Представляет собой промежуточный слой между
аппаратной частью вычислительной системы и другим
ПО или ориентировано на взаимодействие с
аппаратной частью (не всегда)
Операционные системы, драйверы, программы диагностики
оборудования, firmware (микропрограммы)
Предоставляет программный интерфейс для другого
ПО (исходя из предыдущего пункта)
API операционных систем, API клиентских библиотек СУБД,
программный интерфейс firmware
Более сложное, чем прикладное ПО с точки зрения
технологий, алгоритмов, иногда объема кода
Повышенные требования к надежности и др.
11. Введение
Основные уровни разработки ПО:1. Прямое обращение к аппаратной части
Разработка базовых элементов ОС (загрузочный сектор или
главная загрузочная запись, загрузчик операционной
системы, уровень аппаратных абстракций), программы для
«старых» ОС (MS DOS), firmware
В программах используются: прерывания, обращение к
функциям BIOS, обращение к портам в/в, DMA
2. Программирование на уровне ядра ОС
Разработка драйверов устройств, модулей режима ядра
В программах используются: обращение к функциям режима
ядра, привилегированные инструкции процессора
3. Программирование на уровне пользовательского
режима ОС с использованием API ОС
Разработка
прикладного и системного ПО (кроме
управляющих программ)
В программах используются: обращение к функциям
пользовательского режима (Windows API, POSIX)
12. Введение
Основные уровни разработки ПО:4. Программирование с использованием библиотек
систем программирования
Разработка
прикладного и системного ПО (кроме
управляющих программ)
В программах используются: визуальные компоненты,
стандартные и сторонние библиотеки функций и т.п.
Допускаются прямые обращения к API ОС
Отличия уровня 3 от уровня 4:
Плюсы:
Можно использовать все возможности ОС
Минимальный размер программы
Минусы:
Большая сложность использования функций API OC
Написание программного кода «вручную»
Как правило больший объем программного кода
13. Введение
Используемые языки программирования:Низкоуровневое системное ПО (уровни 1 и 2):
Assembler, C.
Характерен структурный подход
Высокоуровневое системное и прикладное ПО:
Языки высокого уровня (C++, C#, Java, Delphi и др.)
Характерен
объектно-ориентированный подход
объектно-ориентированный + структурный подход
или
Варианты преподавания курса:
1. Разработка низкоуровневого системного ПО
Изучение архитектуры компьютера, Assembler, C
Было характерно в 90-е годы, время MS DOS
2. Разработка конкретного вида системного ПО
Обычно рассматривается разработка трансляторов
3. Изучение
базовых
принципов
разработки
высокоуровневого системного и прикладного ПО
14. Введение
Особенности варианта 3:Исторически один из первых видов системного ПО –
это ОС и их компоненты. При разработке ОС
сформировались базовые принципа разработки
системного ПО
Сегодня разработка ПО в большинстве случаев
выполняется под конкретную ОС (или несколько ОС), а
не под «голую» аппаратуру
Базовые вопросы разработки системного ПО:
Средства для работы с файловой системой и реестром
Обработка исключений
Управление памятью, библиотеки DLL
Управление процессами
Потоки, синхронизация потоков
Межпроцессное взаимодействие
Сетевое программирование
Службы ОС, вопросы безопасности
15. Введение
Особенности варианта 3:Перечисленные вопросы изучаются для:
Конкретной ОС (Windows, Linux или др.) изучение
архитектуры, объектов и API ОС
Конкретной системы программирования изучение
особенностей использования API ОС и собственных
средств более высокого уровня
Наш курс будет ориентирован на:
Изучение
перечисленных вопросов на основе
использования Windows API (и, возможно, более
высокоуровневых
средств)
применительно
к
разработке консольных и GUI-приложений из разных
систем программирования (Visual Studio C++, Delphi
или RAD Studio)