МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ
МЕТОДИЧНI ВКАЗІВКИ ДО САМОСТІЙНОЇ РОБОТИ СТУДЕНТІВ
З ДИСЦИПЛIНИ “СИСТЕМНЕ ПРОГРАМУВАННЯ”
для студентів денної та заочної форм навчання напрямку
„Комп’ютерна інженерія”
ЗАТВЕРДЖЕНО
кафедрою ЕОМ
протокол № 9 від 26.04.2007 р.
Харків 2007
Методичні вказівки до самостійної роботи з дисципліни “Системне програмування” для студентів денної та заочної форм навчання напрямку „Комп’ютерна інженерія” (спеціальності 7.091501 “Комп’ютерні системи та мережі”, 7.091502 “Системне програмування”, 7.091503 “Спеціалізовані комп’ютерні системи”) / Упоряд.: М.А. Волк, Т.В. Корнієнко. – Харків: ХНУРЕ, 2007.– 39 с.
Упорядники: М.О. Волк
Т.В. Корнієнко
Рецензенти: В.Г. Лобода, к.т.н., проф. каф. АПВТ
ЗМІСТ
ВСТУП 4
1 МЕТА І ЗАДАЧІ ДИСЦИПЛІНИ 5
2 РОБОЧА ПРОГРАМА ДИСЦИПЛІНИ 6
2.1 Тематичний зміст дисципліни та розподіл часу на її вивчення 6
2.2 Лабораторні роботи 9
2.3 Самостійна робота студента 10
2.4 Практичні заняття 10
2.5 Курсове проектування 11
2.6 Рекомендована література 12
2.6.1 Список основної літератури 12
2.6.2 Список додаткової літератури 13
2.6.3 Методичні посібники та вказівки 13
3 ХАРАКТЕРИСТИКА ПІДРУЧНИКІВ І НАВЧАЛЬНИХ ПОСІБНИКІВ 13
4 МЕТОДИЧНІ ВКАЗІВКИ З ВИВЧЕННЯ ДИСЦИПЛІНИ 14
4.1 Введення. Сучасне ставлення до системного програмування 14
4.2 Основи розробки додатків Windows 15
4.3 Текст та графіка 20
4.4 Засоби вводу інформації 22
4.5 Використання таймеру 24
4.6 Дочірні вікна керування 25
4.7 Керування пам'яттю 27
4.8 Ядро операційної системи 29
4.9 Використання ресурсів 30
4.10 Багатовіконний інтерфейс 32
4.11 Введення у мову програмування Асемблер 34
4.12 Використання мови Асемблер у системному програмуванні 35
5 РЕКОМЕНДАЦІЇ З ВИКОРИСТАННЯ ОБЧИСЛЮВАЛЬНОЇ ТЕХНІКИ 37
6 ОСНОВНІ РЕКОМЕНДАЦІЇ ПО ОРГАНІЗАЦІЇ САМОСТІЙНОЇ РОБОТИ 37
ВСТУП
Методичні вказівки до самостійної роботи визначають логічний зв'язок і порядок вивчення всіх тематичних розділів навчальної дисципліни, в тому числі тих, що надаються студентам для самостійного вивчення, порядок проведення лабораторних робіт та практичних занять. Ці методичні вказівки можуть бути особливо корисними студентам денного відділення, які мають вільний графік відвідування занять, а також студентам заочної і дистанційної форм навчання.
Дисципліна "Системне програмування", скорочено – СП, є однією з основних обов’язкових дисциплін навчального плану в циклі професійно-орієнтованих дисциплін. Вона відіграє роль двобічну роль в структурі підготовки бакалаврів з напрямку "Комп’ютерна інженерія": по-перше – знайомить студентів з основами системного програмування, структурою та принципами побудови сучасних операційних систем, низкорівневими мовами програмування; по-друге – надає можливість розв’язування практичних задач з використанням мови програмування та алгоритмів, які вивчалися у дисципліні "Програмування" на першому році навчання.
Зміст дисципліни СП тісним чином пов’язано з вирішенням питань аналізу та розробки системного та прикладного програмного забезпечення під сучасні операційні системи.
В ході вивчення цієї дисципліни студенти мають оформити ряд текстових (гіпертекстових) документів, а саме, звіти з лабораторних робіт, розрахунково-графічні завдання, контрольні роботи, курсові проекти тощо. При їх оформленні вони мають користуватися основними вимогами ДСТУ 3008-95 "Звіти у сфері науки і техніки. Структура і правила оформлення".
1 МЕТА І ЗАДАЧІ ДИСЦИПЛІНИ
Мета дисципліни Системне програмування (CП) полягає в ознайомленні студентів з основними принципами побудови сучасного системного програмного забезпечення та формування у них навичок практичного системного програмування під багатозадачну операційну систему Windows NT, 2000, ХР та низкорівневого програмування на мові Асемблер для процесорів типа Pentium.
Об’єкти вивчення дисципліни СП:
структурні елементи операційної системи: процеси, потоки, стандартні бібліотеки;
стандартний графічний інтерфейс програмних додатків;
засоби зберігання інформації у програмах: змінні, файли, бази даних, ресурси;
механізм обробки повідомлень;
структура програми: віконна процедура, цикл обробки повідомлень, реєстрація та створення вікна додатка;
багатозадачність та об’єкти синхронізації;
багатовіконні додатки;
бібліотеки, що динамічно підключаються;
програмна модель процесора;
система команд мови Асемблер.
В результаті вивчення дисципліни СП студент має:
знати:
принципи та теоретичні основи побудови системних програм;
стандартні функції мов програмування та операційної системи;
принципи функціонування об’єктів сучасних операційних систем,
вміти:
розробити системні програмні модулі для перемикання обчислювальних процесів, розподілу ресурсів обчислювальної системи з використанням внутрішньої інформаційної бази даних операційної системи;
використовувати команди операційної системи та об’єкти операційної системи;
розробити стандартні функції мов програмування;
керувати пам’яттю у різних режимах.
Для засвоєння навчального матеріалу з дисципліни СП необхідно мати відповідні знання з різних дисциплін, які наведені у таблиці 1.1.
Таблиця 1.1 – Перелік забезпечуючих дисциплін (із зазначенням розділів)
Забезпечуюча дисципліна
Використовується у семестрі
Семестр
Назва
Розділ
1, 2
Програмування
Усі розділи (ПФ.Д14.ПР.0.05.)
У всьому курсі
1, 2
Вища математика
Математична статистика (ПФ.Д.05. ПР. 0.02.01)
Елементи теорії множин
(ПФ.Д.06. ПР. 0.01.01)
Елементи теорії відношень
(ПФ.Д.06. ПР. 0.01.02)
У всьому курсі
1
Основи дискретної математики
Теорія алгоритмів.
(ПФ.Д.07.ПР.0.01)
Теорія графів.
(ПФ.Д.06.ПР.0.03.01)
У всьому курсі
2 РОБОЧА ПРОГРАМА ДИСЦИПЛІНИ
За навчальним планом на вивчення дисципліни відводиться 216 год., з них лекцій – 60 год., лабораторних занять – 32 год., практичних занять – 16 год., самостійної роботи – 108 год. Семестровий контроль: залік (3 семестр) та модульний екзамен (4 семестр).
2.1 Тематичний зміст дисципліни та розподіл часу на її вивчення
Навчальний матеріал дисципліни СП вивчається в аудиторному режимі та в режимі самостійної роботи. Дисципліна СП складається з чотирьох розділів та 12 тем. В таблиці 2.1 наведений розподіл годин, а в таблиці 2.2. – перелік тематичних розділів дисципліни СП.
Таблиця 2.1 – Розподіл годин
ЗМ1 26 год.
ЗМ2 46 год.
ЗМ3 36 год.
ЗМ4 58 год.
ЗМ5 50 год.
АУД
СРС
АУД
СРС
АУД
СРС
АУД
СРС
АУД
СРС
ЛК
ПЗ
ЛБ
ЛК
ПЗ
ЛБ
КР1
ЛК
ПЗ
ЛБ
ЛК
ПЗ
ЛБ
ЛІТ. ДОД.
КР2
ЛК
ПЗ
ЛБ
ЛК
ПЗ
ЛБ
ЛІТ. ДОД.
КР3
ЛК
ПЗ
ЛБ
ЛК
ПЗ
ЛБ
Курс. роб.
КР4
ЛК
ПЗ
ЛБ
ЛК
ПЗ
ЛБ
Курс. роб.
ЛІТ. ДОД.
8
2
4
4
2
2
4
12
–
12
5
–
7
6
4
10
6
–
6
8
–
2
4
16
6
12
4
4
4
10
2
14
2
4
4
2
2
20
2
14
12
24
22
16
20
34
24
20
30
Таблиця 2.2 – Зміст теоретичної частини дисципліни і розподіл часу за темами аудиторного вивчення
Залік
кред.
Зміс. тов. мод.
Назва та зміст змістовного
модулю
Розподіл часу за видами занять, год.
Рейт. оцінка
лк
лб
пз
срс
кз
1
2
3
4
5
6
7
8
9
I
1.
Введення
4
4
0
1.1 Предмет, ціль і задачі курсу. Сучасне ставлення до системного програмування
2
2
1.2 Загальна характеристика Windows, Unix, Linux.
2
2
2.
Основи розробки додатків Windows 98
4
4
2
8
10-20
2.1 Графічний інтерфейс користувача. Концепції GUI. Незалежність графічного інтерфейсу від обладнання. Багатозадачність, об’ектно-орієнтоване програмування в ОС Windows. Архітектура, що керується подіями.
2
2
4
2.2 Структура віконного додатка. Реєстрація та створення вікна. Цикл обробки повідомлень. Віконна процедура.
2
4
4
кр
Підсумок
8
4
2
12
10-20
II
3.
Текст та графіка
8
8
12
15-25
3.1 Малювання та оновлення. Дійсні та недійсні робочі вікна. Графічний інтерфейс пристрою (GDI). Контекст пристрою.
2
4
2
3.2 Шрифти. Форматування тексту.
2
2
3.3 Бітові зображення. Формат .bmp.
2
4
3.4 Векторна графіка. Метафайл.
2
4
4
4.
Засоби вводу інформації
4
4
10
15-25
4.1 Клавіатура. Апаратні, символьні повідомлення. Курсор та каретка.
2
6
5.2 Програмна модель маніпулятора "миша". Повідомлення клієнтської та не клієнтської частини вікна.
2
4
4
кр
Підсумок
12
12
22
30-50
Продовження таблиці 2.2
1
2
3
4
5
6
7
8
9
III
5.
Використання таймеру
2
2
4
5-8
5.1 Засоби програмування таймеру операційної системи. Функція SetTimer(). Повідомлення
WM_TIMER.
2
2
4
6.
Дочірні вікна керування
4
2
8
10-14
6.1 Перелік дочірніх вікон керування ОС Windows. Загальні правила створення та використання вікон.
2
4
6.2 Кнопки. Вікна редагування. Строки тексту. ScrollBar. Списки. Комбіновані списки.
2
2
4
7.
Керування пам’яттю
4
2
8
5-8
7.1 Розподіл пам’яті фіксованими розділами. Розподіл пам’яті розділами змінної довжини.
2
4
7.2 Методи розподілу пам’яті з використанням дискового простору. Поняття віртуальної пам’яті.
2
2
4
кр
Підсумок
10
6
20
20-30
Всього за 3-й семестр
30
16
8
54
60-100
IV
8.
Ядро операційної системи
4
4
2
4
10-20
8.1 Керування пам'яттю та файловий ввід-вивід.
2
2
8.2 Багатозадачність та багатопоточність
2
4
2
2
9.
Використання ресурсів
6
4
2
4
10-15
9.1 Засоби зберігання даних
2
9.2 Значки, курсори, бітові образи та строки. Меню та бистрі клавіші.
2
9.3 Вікна діалогу. Сучасний інтер-фейс користувача.
2
4
2
4
10.
Багатовіконний інтерфейс
6
4
2
6
10-15
10.1 Структура багатовіконного інтерфейсу (MDI). Ієрархія вікон. Головне, дочірні вікна, вікно-адміністратор.
2
2
10.2 Бібліотеки, що динамічно підключаються (DLL) .
2
4
2
4
кр
Підсумок
16
12
6
14
30-50
Продовження таблиці 2.2
1
2
3
4
5
6
7
8
9
V
11.
Введення у мову програмування Асемблер.
10
4
2
4
20-30
11.1 Програмна модель процесору Pentium. Засоби адресації, структура пам’яті.
2
11.2 Структура та синтаксис ассемблерної програми.
2
11.3 Система команд мікропроцесорів Intel.
4
2
11.4 Типи даних мови Асемблер. Основні типи даних. Складні типи, будування масивів, таблиць та інш.
2
4
2
2
12.
Використання мови Асемблер у системному програмуванні.
4
6
10-20
12.1 Сучасні задачі, які вирішуються за допомогою мови Асемблеру, приклади їх вирішування.
2
3
12.2 Асемблер як мова оптимізації обчислювальних задач.
2
4
ср
Підсумок
14
4
2
10
30-50
Всього за 4-й семестр
30
16
8
24
60-100
2.2 Лабораторні роботи
Метою лабораторних робіт є закріплення знань та набуття вмінь і навичок системного програмування.
Таблиця 2.3 – Теми лабораторних робіт
№
Теми занять
обсяг, год.
рейт. оцінка
ваг. коеф.
літер. джер.
1
2
3
4
5
6
1.
Будування додатків Windows. Віконна процедура. Обробка повідомлень.
4
1-5
0.3
1,2,5
2.
Контексти пристроїв. Контекст екрана. Функції GetDC, BeginPaint, EndPaint, ReleaseDC, InvalidateRect. Особливості керування графічним виводом.
4
1-5
0.15
1,2-5
3.
Функції графічного виведення.
4
1-5
0.15
2,4
4.
Засоби уведення (клавіатура, миша).
4
1-5
0.15
2,3,5
Продовження таблиці 2.3
1
2
3
4
5
6
5.
Використання ресурсів (Курсори, бітові зображення, строки, вікна діалогу, меню).
4
2-5
0.1
4,6,7
6.
Багатозадачність та багатопоточність Window's додатків.
4
2-5
0.1
1,2
7.
Багатовіконний інтерфейс (MDI).
4
2-5
0.1
4,5
8.
Бібліотеки, що динамічно підключаються (DLL) .
4
2-5
0.25
8,9
Всього годин
32
Студенти виконують лабораторні роботи в навчальних лабораторіях кафедри ЕОМ з використанням комп’ютерів з операційною системою не нижче Windows 2000 та середовищем програмування Microsoft Visual C++ (або інше). За результатами виконаної лабораторної роботи студентом складається звіт. Звіти про виконані та захищені лабораторні роботи дозволяється використовувати в процесі семестрового контролю.
2.3 Самостійна робота студента
Таблиця 2.4 – Форми самостійної роботи
№
Форми самостійної роботи
обсяг
(год.)
сем.
модуль
1.
Підготовка до лабораторних робіт
16
2
16
3
2.
Підготовка до контрольних робіт (4 роботи)
10
2
10
3
3.
Виконання домашніх завдань до практичних занять
12
2
12
3
4.
Теми для самостійного вивчення
32
Структура процесів, потоків та задач.
6
2
Будування мережевих додатків (Sockets)
6
3
Програмна модель реєстру
6
3
Програмування на мові Асемблер
14
3
Всього годин
108
2.4 Практичні заняття
Метою практичних занять є закріплення знань, отриманих на лекціях і в результаті самостійного вивчення навчального матеріалу курсу.
Таблиця 2.5 – Теми практичних занять
№
Теми занять
обсяг, год.
рейт. оцінка
ваг. коеф.
літер. джер.
1.
Будування додатків Windows. Віконна процедура. Обробка повідомлень.
2
1-5
0.2
1, 2, 5
2.
Контексти пристроїв. Контекст екрана. Функції GetDC, BeginPaint, EndPaint, ReleaseDC, InvalidateRect. Особливості керування графічним виводом.
2
1-5
0.15
1, 2-5
3.
Функції графічного виведення.
2
1-5
0.15
2, 4
4.
Засоби введення (клавіатура, миша, дочірні вікна керування ).
2
1-5
0.15
2, 3, 5
5.
Використання ресурсів (курсори, бітові зображення, строки, вікна діалогу, меню).
2
2-5
0.1
4, 6, 7
6.
Багатозадачність та багатопоточність Windows додатків.
2
2-5
0.1
1, 2
7.
Багатовіконний інтерфейс (MDI).
2
2-5
0.1
4, 5
8.
Бібліотеки, що динамічно підключаються (DLL) .
2
2-5
0.15
8, 9
Всього годин
16
На практичних заняттях студенти отримують завдання для самостійного виконання і необхідні консультації.
2.5 Курсове проектування
Основною метою курсового проектування є систематизація, поглиблення й активне застосування знань по системному програмуванню, закріплення знань, отриманих у лекційному курсі, а також на практичних і лабораторних заняттях. Дану мету можна розкрити в такий спосіб:
систематизація і закріплення теоретичних знань студентів по основних розділах курсу "Системне програмне забезпечення";
поглиблене вивчання проблем розробки програмного забезпечення для сучасних ЕОМ;
прищеплювання студентам практичних навичок використання мов низькорівневого типу при складанні системних програм, стикування програмних модулів, написаних на різних мовах, а також аналізу основних характеристик програм;
знайомство з реферативними журналами й іншими інформаційними джерелами по програмному забезпеченню з метою аналізу стану розв'язуваних задач;
виконання всіх етапів розробки програм на прикладі, близькому до реальних задач, підготовка до виконання дипломної роботи.
Найважливіша задача курсового проектування – розвиток у студентів звичок розробки складного програмного забезпечення, що включають вивчення предметної області, для якої розробляється додаток, вибір, обґрунтування і використання сучасних систем проектування з урахуванням ефективності розробок, таких, як час проектування і налагодження програмного проекту, вартості розробок. Особливу увагу необхідно приділити використанню сучасних методів розробки програм таких, як об'єктно-орієнтоване програмування і візуальне проектування, а також структурне і модульне програмування. Задачі, розв'язувані в процесі курсового проектування:
розробка системи математичного забезпечення або його частини відповідно до вимог до системи;
закріплення практичних навичок в оформленні документації на кожнім етапі розробки;
закріплення практичних навичок використання ЕОМ, програмного забезпечення, що існують, засобів обслуговування системних програмістів;
розвиток навичок самостійної роботи із системами державних стандартів.
Викладене вище повинно сприяти розвиткові в студентів алгоритмічного і логічного мислення, а також сприяти самостійній інженерній творчості.
Завдання припускають створення унікальної програми, яка написана з використанням процедур та функцій операційної системи. Важливе значення має зручний інтерфейс з користувачем та гарна документація до програми, яка необхідна для користувачів та супроводження програми. Бажано потурбуватися о засобах захисту своїх програм від несанкціонованого доступу.
Деякі завдання комплексні. Розробка великих програм потребує додаткових знань в області організаційних робіт при створенні модулів системи різними програмістами. Можливо рішення однієї задачі кількома студентами, але в цьому випадку припускається обов’язковий аналіз та порівняння різноманітних варіантів.
2.6 Рекомендована література
2.6.1 Список основної літератури
1. Петзолд Ч. Программирование под Windows 95. В двух томах: пер. с англ. – СПб.: BHV – Санкт-Петербург, 1997 – с., ил.
2. Румянцев П.В. Азбука программирования в Win 32 API.-М.: Радио и связь, 1998.– 272с.
3. Страуструп Б. Язык программирования С++/Пер. С англ. – М.: «Невский Диалект» – «Издательство БИНОМ», 1999г. – 991с.
4. Томпсон Н. Секреты программирования трехмерной графики для Windows 95. Перев. С англ. – СПб.: Питер, 1997. – 352с.
5. Тихомиров Ю. Программирование трехмерной графики – СПб.: БХВ – Санкт-Петербург, 1999. – 256с., ил.
6. Volk M.A. System programming. Summary of lectures. KNURE, 2000. – 113 p.
2.6.2 Список додаткової літератури
1. Мешков А., Тихомиров Ю. Visual C++ MFC. Программирование для Windows NT и Windows 95: В трех томах. – СПб.: BHV – Санкт-Петербург, 1997, ил.
2. Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++, 2-е изд. Бином. М.: 1998. – 342с.
3. Килверт Чарльз. Delphi 2. Энциклопедия пользователя. Dia Soft. Киев. – 1996. – 736с.
2.6.3 Методичні посібники та вказівки
1. Волк М.А. Методические указания к выполнению лабораторных работ по курсу «Системное программирование» – Харьков, ХНУРЭ, 2002. – 42с.
2. Волк М.А. Методические указания к выполнению практических работ по курсу «Системное программирование» – Харьков, 2004, электронный вариант – http:\\10.24.39.200\volk\spo\metodichki\sppract.doc.
3. Волк М.А. Методические указания к курсовому проектированию по курсу «Системное программирование» – Харьков, ХНУРЭ, 2002. – 16с.
3 ХАРАКТЕРИСТИКА ПІДРУЧНИКІВ І НАВЧАЛЬНИХ ПОСІБНИКІВ
Весь перелік наведених літературних джерел поділено на основні та додаткові. В якості основних джерел використані підручники та довідник, які є в електронній бібліотеці університету (library.kture). В якості додаткової літератури вказані довідники, які вміщують більш розширену інформацію з різних питань системного та прикладного програмування. Крім того, в якості додаткової літератури рекомендуються найбільш якісні сучасні книги, які надруковані за останні 5-7 років, але які відсутні в бібліотеці університету.
В книзі [1] в зрозумілій формі описані основні принципи та прийоми програмування під операційну систему Windows. Книга має велику кількість прикладів програм з достатньо зрозумілими поясненнями. Може бути корисним при вивченні більшості тем навчальної дисципліни СП. Є в електронній бібліотеці університету.
В книзі [2] у стислій формі наведені основні функції стандартного інтерфейсу програм під операційну систему Windows. Треба відзначити, що використовується 32-разрядна версія операційної системи, яка є найбільш популярною у теперішній час.
В класичному підручнику [3] автор мови програмування С++ дає повний опис можливостей цієї мови. Мова С++ сьогодні є однією із найбільш поширеною мовою системного програмування.
У практичної книзі [4,5] описані різні методи створення графічних додатків. Наведено параметри та правила використання функцій бібліотек трьохмерної графіки.
Конспект лекцій [6] є переклад англійською мовою текстів лекцій по системному програмуванню (який є у електронній бібліотеці) можливо знайти у залі іноземної літератури бібліотеки.
Використання додаткових підручників [7-9] надасть можливість студентам ознайомитися з настройками над операційною системою, що дають можливість збільшити ефективність програмування.
Крім цього студенти можуть скористатися навчально-методичним матеріалом з дисципліни “Системне програмування”, а саме, конспектом лекцій, довідковими матеріалами по напівпровідниковим приладам, методичними вказівками з лабораторних робіт і з практичних занять, які знаходяться на сайті кафедри ЕОМ ХНУРЕ за адресою http://www.eom.kture.
4 МЕТОДИЧНІ ВКАЗІВКИ З ВИВЧЕННЯ ДИСЦИПЛІНИ
Розділ методичних вказівок з вивчення дисципліни побудований таким чином, що для тем аудиторного вивчення наведений стислий опис основних положень навчального матеріалу цієї теми (анотація).
При вивченні тем, які наведені в табл. 2.1, слід користуватися наступними рекомендаціями, а саме отримувати необхідні теоретичні знання та виконувати необхідні розрахункові завдання. Для якісного вивчення відповідних тем та здійснення самоперевірки, студенти мають відповісти на контрольні запитання в кінці кожної теми.
4.1 Введення. Сучасне ставлення до системного програмування
Ця тема є обзорною і для її вивчення необхідно зробити самостійно аналіз сучасної літератури, особливо періодичних видань в області програмування та комп’ютерної техніки.
Особливу увагу треба приділити наступним принципам побудови операційних систем:
1. Графічний інтерфейс. На відміну від попередньої ОС (MS DOS), Windows є цілком графічною оболонкою. Всі елементи, що користувач бачить на екрані (вікна, кнопки, смуги скролінга), підтримуються на рівні ОС. У її склад входить безліч бібліотек, що містять функції по керуванню цими елементами, що дозволяє прикладному програмісту не відволікатися на створення інтерфейсу програми і стандартизує зовнішній вигляд додатків.
2. Багатозадачність. Windows підтримує багатозадачність (рівнобіжне виконання програм) на рівнях процесів (програм) і потоків (усередині програмний паралелізм), забезпечення яких відбувається за участю апаратного рівня. ОС містить велика кількість функцій, що забезпечують керування програмами, що паралельно виконуються, синхронізацію, поділ адресного простору пам'яті між додатками і т.п.
3. Апаратно-незалежне програмування. Використання в прикладній програмі функцій операційної системи забезпечує можливість для програміста не піклуватися про сумісність програми з апаратурою (відео- і аудио- карти, принтер, вінчестер). ОС сама (за допомогою драйверів, встановлюваних усередині) виконує узгодження введення-висновку. Таким чином, програма, створена на одній конфігурації буде працювати на іншій.
4. Події і механізм повідомлень. Дуже важливою особливістю сучасного програмування є те, що в більшості випадків програма починає працювати тільки при здійсненні якого або події в системі (запуск програми, необхідність перемальовування вікна додатка, сигнал від таймера і т.п.). В інший час, програма або взагалі не виконується, або виконує невеликий код у фоновому режимі. Більш того, ОС не прямо викликає деяку процедуру програми для відпрацьовування реакції на яку-небудь подію, а посилає відповідне повідомлення в програму, а програма сама вирішує, що їй робити у відповідь на одержання повідомлення.
5. Віконне середовище. У дев'яноста відсотках випадків кожній програмі відповідає одне чи кілька вікон, що мають стандартний вид і містять обов'язкові елементи (наприклад, іконку, рядок заголовка, схожий меню, кнопки закриття, мінімізації і максимізації). Стандартизація вікон допомагає при освоєнні нових додатків.
Контрольні запитання
1. Що таке операційна система ?
2. Які основні характеристики сучасних операційних систем Ви знаєте?
3. Які сучасні операційні системи Ви знаєте? Дайте порівняльний аналіз сучасних операційних систем.
4. Як підтримується багатозадачність у сучасних компьютерах – апаратно або програмно?
5. Який зв’язок між подією та повідомленням у операційній системі?
4.2 Основи розробки додатків Windows
Будь-який віконний додаток, написаний під Windows повинно містити в собі наступні елементи:
Функцію реєстрації класу вікна.
Функцію створення вікна.
Віконну процедуру.
Цикл обробки повідомлень.
Раніше вже говорилося, що більшість програм під WINDOWS повинні мати хоча б одне вікно. Для його створення необхідно виконати два кроки: реєстрацію класу вікна і викликати функцію створення вікна. Обидві дії визначають основні властивості (видимі і невидимі характеристики) вікна. Основна відмінність першого кроку від другого полягає в тім, що на основі зареєстрованого класу вікна можна створювати нескінченне число вікон. Таким чином, при реєстрації класу вікна задаються властивості, загальні (однакові) для всіх наступних вікон властивості. Функція створення вікна створює черговий екземпляр вікна, додаючи вже конкретні властивості вікна, такі як положення на екрані, розміри, зміст тексту і т.п.
Реєстрація вікна проводиться в два етапи. По-перше, заповнюється структура WNDCLASSEX (полючи якої саме і містять загальну інформацію), після чого виконується функція RegisterClassEx, у яку передається покажчик на заповнену структуру. Нижче приведений фрагмент програми з коментарями до полів заповнюваної структури:
WNDCLASSEX wcex; // оголошення перемінної типу структура віконного класу
wcex.cbSize = sizeof(WNDCLASSEX); // розмір структури в байтах
wcex.style = CS_HREDRAW | CS_VREDRAW; // стиль вікна
wcex.lpfnWndProc = (WNDPROC)WndProc; // адреса віконної процедури
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance; // описувач додатка
wcex.hIcon = MyIcon1; // визначення іконки
wcex.hCursor = LoadCursor(NULL, IDC_ARROW); // визначення курсору
wcex.hbrBackground = GetSysColorBrush(COLOR_BTNFACE); // установка фону
wcex.lpszMenuName = NULL; // визначення меню
wcex.lpszClassName = "MyWindow";// ім'я класу
wcex.hIconSm = NULL; // визначення маленької іконки
RegisterClassEx(&wcex); // реєстрація класу вікна
Після того, як клас вікна зареєстрований, можна створювати вікна, що виконується в такий спосіб:
hWnd=CreateWindow("MyWindow", // ім'я класу вікна
"Рядок заголовка", // ім'я додатка
WS_OVERLAPPEDWINDOW, // стиль вікна
CW_USEDEFAULT, // положення по Х
CW_USEDEFAULT, // положення по Y
CW_USEDEFAULT, // розмір по Х
CW_USEDEFAULT, // розмір по Y
NULL, // описувач батьківського вікна
NULL, // описувач меню вікна
hInstance, // покажчик додатка
NULL); // параметри створення.
Функція CreateWindow повертає описувач знову створеного вікна. Якщо значення, що повертається, дорівнює NULL, це значить, що вікно не було створено з якої-небудь причини.
Щоб створене вікно з'явилося на екрані, необхідно виконати послідовно двох функцій:
ShowWindow(hWnd, nCmdShow); // показати вікно
UpdateWindow(hWnd); // обновити вікно
Наступні важливі елементи програми – це віконна процедура і цикл обробки повідомлень. Адреса віконної процедури використовувався при реєстрації класу вікна (WndProc). Для їхнього розгляду зробимо невеликий відступ. У першій лекції обговорювалося питання про події і повідомлення. Прийшов час більш докладний розглянути це питання.
Коли в системі відбувається яка-небудь подія, на яке повинна відреагувати програма, що виконується, (наприклад, натиснута клавіша на клавіатурі, переміщена чи миша минув час чекання), операційна система посилає програмі повідомлення про цю подію. Програма одержує повідомлення і виконує код (частина програми), що реагує на цю подію. На рис. 4.1. відображений цей процес.
Сформоване операційною системою повідомлення міститься в системну чергу повідомлень. Кожне повідомлення призначене конкретному вікну. ОС визначає якому