Системное программирование в среде Windows

Содержание

Слайд 2

Рекомендуемая литература Джонсон М. Харт. Системное программирование в среде Windows. –

Рекомендуемая литература

Джонсон М. Харт. Системное программирование в среде Windows. – М.:

Вильямс, 2005.
Побегайло А.П. Системное программирование в Windows. – СПб.: БХВ-Петербург, 2006.
ГОСТ 19781-90. Обеспечение систем обработки информации программное. Термины и определения
Библиотека MSDN:
http://msdn.microsoft.com/ru-ru/library/
Слайд 3

Введение Согласно ГОСТ 19781-90: Системная программа – программа, предназначенная для поддержания

Введение

Согласно ГОСТ 19781-90:
Системная программа – программа, предназначенная для поддержания работоспособности системы

обработки информации (СОИ) или повышения эффективности ее использования в процессе выполнения прикладных программ
Прикладная программа – программа, предназначенная для решения задачи или класса задач в определенной области применения СОИ
Системное ПО – это ПО общего назначения, то есть ПО, не связанное с решениями задач в конкретной предметной области
Системное программирование – создание системного ПО
Слайд 4

Введение Взгляд на системное программирование исходя из определения термина «система»: Система

Введение

Взгляд на системное программирование исходя из определения термина «система»:
Система – единое

целое, состоящее из множества компонентов и множества связей между ними
Системное программирование – это разработка программ сложной структуры (программных продуктов и комплексов)
Эти два взгляда на системное программирование не противоречат друг другу:
Разработка системного ПО – более сложная задача
Разработка системного ПО требует, как правило, более высокой квалификации программиста
Обычно придерживаются «традиционного» взгляда, соответствующего определениям ГОСТ; второй взгляд – область Software Engineering
Слайд 5

Введение Место системного ПО в многоуровневой схеме вычислительной системы:

Введение

Место системного ПО в многоуровневой схеме вычислительной системы:

Слайд 6

Введение Классификация (виды) системного ПО согласно ГОСТ 19781-90: Управляющая программа (базовое

Введение

Классификация (виды) системного ПО согласно ГОСТ 19781-90:
Управляющая программа (базовое ПО) –

системная программа, реализующая набор функций управления, в который включают управление ресурсами и взаимодействие с внешней средой СОИ, восстановление работы системы после проявления неисправностей в технических средствах
Операционные системы и оболочки + драйверы, firmware
Программа обслуживания (сервисное ПО, утилиты) – программа, предназначенная для оказания услуг общего характера пользователям и обслуживающему персоналу СОИ
Дисковые утилиты (дефрагментаторы; проверка, очистка, разметка, сжатие диска; резервное копирование), тесты и мониторинг оборудования, работа с реестром, архиваторы, антивирусы, обслуживание компьютерных сетей
Слайд 7

Введение Классификация (виды) системного ПО согласно ГОСТ 19781-90: Система программирования –

Введение

Классификация (виды) системного ПО согласно ГОСТ 19781-90:
Система программирования – система, образуемая

языком программирования, компиляторами или интерпретаторами программ, представленных на этом языке, соответствующей документацией, а также вспомогательными средствами для подготовки программ к форме, пригодной для выполнения
Трансляторы, компоновщики (редакторы связей), отладчики, графические среды разработки программ (IDE), средства моделирования систем, приложений и баз дынных, генераторы кода
В основном используются промышленные продукты – системы программирования и CASE-средства
Слайд 8

Введение Современное состояние ПО предполагает выделение еще одного класса ПО: Системное

Введение

Современное состояние ПО предполагает выделение еще одного класса ПО:
Системное программное обеспечение
Прикладное

программное обеспечение
Промежуточное ПО (middleware) – слой или комплекс технологического ПО для обеспечения взаимодействия между различными приложениями, системами, компонентами
Промежуточное ПО – основа для взаимодействия различных приложений и серверов в распределенных системах
Промежуточное ПО реализуется в виде серверов:
Веб-серверы, серверы приложений, СУБД, мониторы транзакций, серверы очередей (сервисы обработки сообщений)
Слайд 9

Введение Особенности промежуточного ПО и других видов серверов: Они не ориентированы

Введение

Особенности промежуточного ПО и других видов серверов:
Они не ориентированы на решение

конкретных прикладных задач, но являются программной основой для создания прикладных решений
С точки зрения инструментальных средств разработки такое ПО ближе к прикладному
С точки зрения алгоритмов и технологий разработки такое ПО ближе к системному
Иногда такое ПО относят непосредственно к системному
Существуют клиентское ПО с аналогичными характеристиками:
Браузеры
Слайд 10

Введение Особенности системного ПО: Не ориентировано на решение конкретных прикладных задач

Введение

Особенности системного ПО:
Не ориентировано на решение конкретных прикладных задач
Представляет собой промежуточный

слой между аппаратной частью вычислительной системы и другим ПО или ориентировано на взаимодействие с аппаратной частью (не всегда)
Операционные системы, драйверы, программы диагностики оборудования, firmware (микропрограммы)
Предоставляет программный интерфейс для другого ПО (исходя из предыдущего пункта)
API операционных систем, API клиентских библиотек СУБД, программный интерфейс firmware
Более сложное, чем прикладное ПО с точки зрения технологий, алгоритмов, иногда объема кода
Повышенные требования к надежности и др.
Слайд 11

Введение Основные уровни разработки ПО: Прямое обращение к аппаратной части Разработка

Введение

Основные уровни разработки ПО:
Прямое обращение к аппаратной части
Разработка базовых элементов ОС

(загрузочный сектор или главная загрузочная запись, загрузчик операционной системы, уровень аппаратных абстракций), программы для «старых» ОС (MS DOS), firmware
В программах используются: прерывания, обращение к функциям BIOS, обращение к портам в/в, DMA
Программирование на уровне ядра ОС
Разработка драйверов устройств, модулей режима ядра
В программах используются: обращение к функциям режима ядра, привилегированные инструкции процессора
Программирование на уровне пользовательского режима ОС с использованием API ОС
Разработка прикладного и системного ПО (кроме управляющих программ)
В программах используются: обращение к функциям пользовательского режима (Windows API, POSIX)
Слайд 12

Введение Основные уровни разработки ПО: Программирование с использованием библиотек систем программирования

Введение

Основные уровни разработки ПО:
Программирование с использованием библиотек систем программирования
Разработка прикладного и

системного ПО (кроме управляющих программ)
В программах используются: визуальные компоненты, стандартные и сторонние библиотеки функций и т.п.
Допускаются прямые обращения к API ОС
Отличия уровня 3 от уровня 4:
Плюсы:
Можно использовать все возможности ОС
Минимальный размер программы
Минусы:
Большая сложность использования функций API OC
Написание программного кода «вручную»
Как правило больший объем программного кода
Слайд 13

Введение Используемые языки программирования: Низкоуровневое системное ПО (уровни 1 и 2):

Введение

Используемые языки программирования:
Низкоуровневое системное ПО (уровни 1 и 2):
Assembler, C.
Характерен

структурный подход
Высокоуровневое системное и прикладное ПО:
Языки высокого уровня (C++, C#, Java, Delphi и др.)
Характерен объектно-ориентированный подход или объектно-ориентированный + структурный подход
Варианты преподавания курса:
Разработка низкоуровневого системного ПО
Изучение архитектуры компьютера, Assembler, C
Было характерно в 90-е годы, время MS DOS
Разработка конкретного вида системного ПО
Обычно рассматривается разработка трансляторов
Изучение базовых принципов разработки высокоуровневого системного и прикладного ПО
Слайд 14

Введение Особенности варианта 3: Исторически один из первых видов системного ПО

Введение

Особенности варианта 3:
Исторически один из первых видов системного ПО – это

ОС и их компоненты. При разработке ОС сформировались базовые принципа разработки системного ПО
Сегодня разработка ПО в большинстве случаев выполняется под конкретную ОС (или несколько ОС), а не под «голую» аппаратуру
Базовые вопросы разработки системного ПО:
Средства для работы с файловой системой и реестром
Обработка исключений
Управление памятью, библиотеки DLL
Управление процессами
Потоки, синхронизация потоков
Межпроцессное взаимодействие
Сетевое программирование
Службы ОС, вопросы безопасности
Слайд 15

Введение Особенности варианта 3: Перечисленные вопросы изучаются для: Конкретной ОС (Windows,

Введение

Особенности варианта 3:
Перечисленные вопросы изучаются для:
Конкретной ОС (Windows, Linux или др.)

⇨ изучение архитектуры, объектов и API ОС
Конкретной системы программирования ⇨ изучение особенностей использования API ОС и собственных средств более высокого уровня
Наш курс будет ориентирован на:
Изучение перечисленных вопросов на основе использования Windows API (и, возможно, более высокоуровневых средств) применительно к разработке консольных и GUI-приложений из разных систем программирования (Visual Studio C++, Delphi или RAD Studio)