Системне програмування

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук


Системне програмування

Галузь знань 0403 Системні науки та кібернетика, напрям підготовки 040302 Інформатика, освітньо-кваліфікаційний рівень: бакалавр

Мета та завдання навчального курсу

Метою викладання дисципліни "Системне програмування та операційні системи" є формування у студентів теоретичних знань та практичних навичок, необхідних для розуміння взаємодії прикладних програм із ядром операційної системи за допомогою системних викликів та бібліотек.

Програмою дисципліни "Системне програмування та операційні системи" передбачається ознайомлення студентами із об’єктами ядра операційної системи (процесами, потоками, засобами синхронізації, файлами, проекціями файлів, каналами, поштовими скриньками, повідомленнями) та способами використання об’єктів ядра у прикладних програмах за допомогою системних викликів.

У результаті вивчення навчального курсу студент повинен

знати:

  • основні принципи структурно-модульного програмування та побудови мультимодульних програм;
  • принципи розробки консольних та віконних програм для Windows;
  • принципи взаємодії прикладних програм із ядром операційної системи за допомогою системних викликів WinAPI;
  • принципи використання основних об’єктів ядра операційної системи у прикладних програмах;
  • принципи обробки виключень в операційній системі Windows;
  • принципи розробки операційних систем та драйверів.

вміти:

  • писати, компілювати та відлагоджувати програми з використанням функцій WinAPI мовами низького та високого рівнів;
  • створювати програми для ОС Windows із використанням об’єктів ядра за допомогою системних викликів;
  • керувати процесами та потоками у прикладних програмах, використовувати засоби синхронізації;
  • створювати прикладні програми із використанням засобів міжпроцесної взаємодії:
  • оброблювати виключення в операційній системі Windows.

Робоча програма курсу

Автор курсу

Баранюк Олександр Филимонович


Учасники

Група 26, спеціальність "Інформатика", 2014-2015 н.р. викладач Баранюк Олександр Филимонович, Отримати консультацію


Графік навчання

Структура курсу

Змістовий модуль 1. Основи системного програмування

Тема 1. Основні поняття системного програмування.

Тема 2. Взаємодія програм з операційною системою.

Тема 3. Принципи програмування для Windows.

Тема 4. Консольні програми у Windows. Функції вводу/виводу.

Тема 5. Керовані подіями програми. Концепція повідомлень.

Тема 6. Віконні програми у Windows. Використання ресурсів.

Тема 7. Модульне програмування. Робота з динамічними бібліотеками.

Тема 8. Обробка виключень у Windows.

Змістовий модуль 2. Програмування із використанням об’єктів ядра

Тема 9. Об'єкти ядра Windows.

Тема 10. Робота з файлами засобами WinAPI.

Тема 11. Керування пам’яттю у Windows. Відображення файлів у пам’ять.

Тема 12. Керування процесами і потоками у Windows.

Тема 13. Синхронізація потоків засобами WinAPI.

Тема 14. Взаємодія між процесами. Канали. Поштові скриньки.

Тема 15. Основи мережевого програмування з використанням сокетів.

Тема 16. Розробка операційних систем та драйверів.

Календар курсу

Тиждень
Тема
Лекція
Лабораторна робота
1
Системне та прикладне програмування. Взаємодія програм з операційною системою
1, 2
2
Принципи програмування для Windows
3
1
3
Консольні програми у Windows
4
4
Концепція повідомлень у Windows
5
2
5
Віконні програми. Використання ресурсів
6
6
Модульне програмування. Динамічні бібліотеки
7
3
7
Обробка виключень у Windows.
8
8
Модульний контроль
4
9
Об'єкти ядра Windows.
10
10
Робота з файлами засобами WinAPI.
11
5
11
Керування пам’яттю у Windows. Відображення файлів у пам’ять.
12
12
Керування процесами у Windows.
13
6
13
Керування потоками у Windows.
14
14
Синхронізація потоків засобами WinAPI.
15
7
15
Взаємодія між процесами. Канали. Поштові ящики.
16
16
Основи мережевого програмування з використанням сокетів
17
8
17
Модульний контроль

Тиждень 1

Тема 1. Основні поняття системного програмування

Поняття про системне програмування. Концепції програмування. Імперативне програмування. Програмування, засноване на подіях (Event-Driven Programming). Windows-програми. Засоби створення Windows-програм.

Тема 2. Взаємодія програм з операційною системою

Архітектура Windows. Виконання програм різних типів. Прикладний програмний інтерфейс Windows.

Тиждень 2

Тема 3. Принципи програмування для Windows

Типи даних Windows. Принципи найменування змінних (Угорська нотація). ASCII та Unicode. Домовленості для Windows-програмування.

Тиждень 3

Тема 4. Консольні програми у Windows. Функції введення-виведення

Принцип дії консолі Windows. Вхідний та екранні буфери консолі. Консольна програма. Створення та налаштування консолі. Високорівневі та низькорівневі функції для роботи з консоллю.

Тиждень 4

Тема 5. Керовані подіями програми. Концепція повідомлень

Концепція повідомлень. Типи повідомлень. Чергові повідомлення. Позачергові повідомлення.

Тиждень 5

Тема 6. Віконні програми у Windows. Використання ресурсів

Створення Вікна. Цикл Повідомлень. Процедура Вікна. Поняття про ресурси. Іконки, курсори, рядки. Сценарії ресурсів. Редактори ресурсів. Компіляція ресурсів. Робота з меню та діалогами у Windows-програмах.

Тиждень 6

Тема 7. Модульне програмування. Робота з динамічними бібліотеками

Статичні та динамічні бібліотеки. Способи завантаження (зв'язування) динамічних бібліотек: явне та неявне завантаження. Створення та використання DLL.

Тиждень 7

Тема 8. Обробка виключень у Windows

Обробка помилок у Windows. Структурна обробка виключень (SEH). Фреймова та фінальна обробка виключень. Векторна обробка виключень (VEH).

Тиждень 8

Модульний контроль.

Тиждень 9

Тема 9. Об'єкти ядра Windows

Об'єкти ядра Windows. Дескриптори об’єктів. Наслідування та дублювання дескрипторів.

Тиждень 10

Тема 10. Робота з файлами засобами WinAPI.

Тиждень 11

Тема 11. Керування пам’яттю у Windows. Відображення файлів у пам’ять.

Тиждень 12

Тема 12. Керування процесами і потоками у Windows.

Тиждень 13

Тема 13. Синхронізація потоків засобами WinAPI.

Тиждень 14

Тема 14. Взаємодія між процесами. Канали. Поштові скриньки.

Тиждень 15

Тема 15. Основи мережевого програмування з використанням сокетів.

Тиждень 16

Тема 16. Розробка операційних систем та драйверів.

Тиждень 17

Модульний контроль


Матеріали до курсу

Змістовий модуль І. Основи системного програмування

Теоретичний матеріал

Лекція № 1

Лекція № 2

Лекція № 3

Лабораторні роботи

Лабораторна робота № 1

Лабораторна робота № 2

Лабораторна робота № 3

Лабораторна робота № 4

Змістовий модуль ІІ. Програмування із використанням об’єктів ядра

Лабораторні роботи

Лабораторна робота № 5

Лабораторна робота № 6

Лабораторна робота № 7

Лабораторна робота № 8


Ресурси

Рекомендована література

Базова

  1. Побегайло А. П. Системное программирование в Windows / А.П. Побегайло. – СПб. : БХВ-Петербург, 2006. – 1056 с.
  2. Рихтер Дж. Windows для профессионалов: создание эффективных Win32 приложений с учетом специфики 64-разрядной версии Windows / пер. с англ. – 4-е изд. – СПб. : Питер, 2008. – 720 с.
  3. Харт, Джонсон, М. Системное программирование в среде Windows / пер. с англ. – 3-е изд. – М. : Издательский дом "Вильямс", 2005. – 592 с.

Допоміжна

  1. Вильямс А. Системное программирование в Windows 2000 для профессионалов / пер. с англ. – СПб. : Питер, 2001 – 624 с.
  2. Щупак Ю. Win32 API. Разработка приложений для Windows / Ю.А. Щупак. – СПб. : Питер, 2008. – 592 с.

Інформаційні ресурси

  1. Microsoft API and reference catalog
  2. Бібліотека MSDN. Windows API Index
  3. Журнал MSDN Magazine
  4. Програмування під Win32 на C++. - http://winapi.pp.ua/