Відмінності між версіями «Системне програмування»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
(Рекомендована література)
 
(не показано 65 проміжних версій цього учасника)
Рядок 1: Рядок 1:
  
  
=Назва курсу=
+
=Системне програмування=
Галузь знань 0403 Системні науки та кібернетика, напрям підготовки 040302 Інформатика, освітньо-кваліфікаційний рівень: бакалавр
+
Галузь знань 12 Інформаційні технології, спеціальність 122 Комп'ютерні науки, освітній ступінь «Бакалавр»
  
 
==Мета та завдання навчального курсу==
 
==Мета та завдання навчального курсу==
Метою викладання дисципліни "Системне програмування та операційні системи" є формування у студентів теоретичних знань та практичних навичок, необхідних для розуміння взаємодії прикладних програм із ядром операційної системи за допомогою системних викликів та бібліотек.
+
Метою викладання дисципліни "Системне програмування" є формування у студентів теоретичних знань та практичних навичок, необхідних для розуміння взаємодії прикладних програм із ядром операційної системи за допомогою системних викликів та бібліотек.
  
 
Програмою дисципліни "Системне програмування та операційні системи" передбачається ознайомлення студентами із об’єктами ядра операційної системи (процесами, потоками, засобами синхронізації, файлами, проекціями файлів, каналами, поштовими скриньками, повідомленнями) та способами використання об’єктів ядра у прикладних програмах за допомогою системних викликів.
 
Програмою дисципліни "Системне програмування та операційні системи" передбачається ознайомлення студентами із об’єктами ядра операційної системи (процесами, потоками, засобами синхронізації, файлами, проекціями файлів, каналами, поштовими скриньками, повідомленнями) та способами використання об’єктів ядра у прикладних програмах за допомогою системних викликів.
Рядок 28: Рядок 28:
 
* оброблювати виключення в операційній системі Windows.
 
* оброблювати виключення в операційній системі Windows.
  
[https://owncloud.kspu.kr.ua/public.php?service=files&t=1f32fccfba2f3a8a227fca453eb4f2df Робоча програма курсу]
+
[https://owncloud.kspu.kr.ua/index.php/s/tR0BaKCzea6vzsQ Робоча програма курсу]
 +
 
 
==Автор курсу==
 
==Автор курсу==
 
[[Користувач:Баранюк Олександр Филимонович|Баранюк Олександр Филимонович]]
 
[[Користувач:Баранюк Олександр Филимонович|Баранюк Олександр Филимонович]]
Рядок 34: Рядок 35:
  
 
=Учасники=
 
=Учасники=
[[Група 26, спеціальність "Інформатика", 2014-2015 н.р.]] викладач [[Користувач:Баранюк Олександр Филимонович|Баранюк Олександр Филимонович]], [[Обговорення курсу:Системне програмування|Отримати консультацію]]
+
[[КН18Б (комп‘ютерні науки 2018 рік вступу)]] викладач [[Користувач:Баранюк Олександр Филимонович|Баранюк Олександр Филимонович]], [[Обговорення:Системне програмування|Отримати консультацію]]
 
----
 
----
  
 
=Графік навчання=
 
=Графік навчання=
  
==Варіант Структура ==
+
==Структура курсу==
  
 
===Змістовий модуль 1. Основи системного програмування===
 
===Змістовий модуль 1. Основи системного програмування===
Тема 1. Системне та прикладне програмування.
+
Тема 1. Основні поняття системного програмування.
Тема 2. Взаємодія програм з ОС. Функції BIOS та DOS.
+
 
Тема 3. Основи та принципи програмування у Windows.
+
Тема 2. Взаємодія програм з операційною системою.
Тема 4. Прикладний програмний інтерфейс Windows (Win32 API).
+
 
Тема 5. Консольні програми у Windows. Функції вводу/виводу.
+
Тема 3. Принципи програмування для Windows.
Тема 6. Керовані подіями програми. Концепція повідомлень.
+
 
Тема 7. Віконні програми у Windows. Використання ресурсів.
+
Тема 4. Консольні програми у Windows. Функції вводу/виводу.
Тема 8. Модульне програмування. Робота з динамічними бібліотеками.
+
 
Тема 9. Обробка виключень у Windows.
+
Тема 5. Керовані подіями програми. Концепція повідомлень.
 +
 
 +
Тема 6. Віконні програми у Windows. Використання ресурсів.
 +
 
 +
Тема 7. Модульне програмування. Робота з динамічними бібліотеками.
 +
 
 +
Тема 8. Обробка виключень у Windows.
  
 
===Змістовий модуль 2. Програмування із використанням об’єктів ядра===
 
===Змістовий модуль 2. Програмування із використанням об’єктів ядра===
Тема 10. Об'єкти ядра Windows.
+
Тема 9. Об'єкти ядра Windows.
Тема 11. Робота з файлами засобами WinAPI.
+
Тема 12. Керування пам’яттю у Windows. Відображення файлів у пам’ять.
+
Тема 13. Керування процесами і потоками у Windows.
+
Тема 14. Синхронізація потоків засобами WinAPI.
+
Тема 15. Взаємодія між процесами. Канали (Pipes). Поштові ящики.
+
Тема 16. Основи мережевого програмування з використанням сокетів.
+
Тема 17. Розробка мовних процесорів.
+
Тема 18. Розробка операційних систем та драйверів.
+
  
===Змістовий модуль 3===
+
Тема 10. Робота з файлами засобами WinAPI.
Навчальні теми змістового модуля 3.
+
  
===Змістовий модуль 4===
+
Тема 11. Керування пам’яттю у Windows. Відображення файлів у пам’ять.
Навчальні теми змістового модуля 4.
+
  
==Варіант Календар==
+
Тема 12. Керування процесами і потоками у Windows.
 +
 
 +
Тема 13. Синхронізація потоків засобами WinAPI.
 +
 
 +
Тема 14. Взаємодія між процесами. Канали. Поштові скриньки.
 +
 
 +
Тема 15. Основи мережевого програмування з використанням сокетів.
 +
 
 +
Тема 16. Розробка операційних систем та драйверів.
 +
 
 +
==Календар курсу==
 +
{| class="wikitable" border="1"
 +
 
 +
! style="padding-left:6pt;padding-right:6pt;"| <center>Тиждень</center>
 +
! style="padding-left:6pt;padding-right:6pt;"| <center>Тема</center>
 +
! style="padding-left:6pt;padding-right:6pt;"| <center>Лекція</center>
 +
! style="padding-left:6pt;padding-right:6pt;"| <center>Лабораторна робота</center>
 +
 
 +
|-
 +
| <center>1</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Системне та прикладне програмування. Взаємодія програм з операційною системою
 +
| <center>1, 2</center>
 +
|
 +
 
 +
|-
 +
| <center>2</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Принципи програмування для Windows
 +
| <center>3</center>
 +
| <center>1</center>
 +
 
 +
|-
 +
| <center>3</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Консольні програми у Windows
 +
| <center>4</center>
 +
|
 +
 
 +
|-
 +
| <center>4</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Концепція повідомлень у Windows
 +
| <center>5</center>
 +
| <center>2</center>
 +
 
 +
|-
 +
| <center>5</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Віконні програми. Використання ресурсів
 +
| <center>6</center>
 +
|
 +
 
 +
|-
 +
| <center>6</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Модульне програмування. Динамічні бібліотеки
 +
| <center>7</center>
 +
| <center>3</center>
 +
 
 +
|-
 +
| <center>7</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Обробка виключень у Windows.
 +
| <center>8</center>
 +
|
 +
 
 +
|-
 +
| <center>8</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Контрольна робота
 +
|
 +
| <center>4</center>
 +
 
 +
|-
 +
| <center>9</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Об'єкти ядра Windows.
 +
| <center>10</center>
 +
|
 +
 
 +
|-
 +
| <center>10</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Робота з файлами засобами WinAPI.
 +
| <center>11</center>
 +
| <center>5</center>
 +
 
 +
|-
 +
| <center>11</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Керування пам’яттю у Windows. Відображення файлів у пам’ять.
 +
| <center>12</center>
 +
|
 +
 
 +
|-
 +
| <center>12</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Керування процесами у Windows.
 +
| <center>13</center>
 +
| <center>6</center>
 +
 
 +
|-
 +
| <center>13</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Керування потоками у Windows.
 +
| <center>14</center>
 +
|
 +
 
 +
|-
 +
| <center>14</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Синхронізація потоків засобами WinAPI.
 +
| <center>15</center>
 +
| <center>7</center>
 +
 
 +
|-
 +
| <center>15</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Взаємодія між процесами. Канали. Поштові ящики.
 +
| <center>16</center>
 +
|
 +
 
 +
|-
 +
| <center>16</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Основи мережевого програмування з використанням сокетів
 +
| <center>17</center>
 +
| <center>8</center>
 +
 
 +
|-
 +
| <center>17</center>
 +
| style="padding-left:6pt;padding-right:6pt;"| Контрольна робота
 +
|
 +
|
 +
 
 +
|}
  
 
===Тиждень 1===
 
===Тиждень 1===
Навчальні теми для вивчення на  1-му тижні.
+
'''Тема 1. Основні поняття системного програмування'''
 +
 
 +
Поняття про системне програмування.
 +
Концепції програмування. Імперативне програмування. Програмування, засноване на подіях (Event-Driven Programming). Windows-програми.
 +
Засоби створення Windows-програм.
 +
 
 +
'''Тема 2. Взаємодія програм з операційною системою'''
 +
 
 +
Архітектура Windows.
 +
Виконання програм різних типів.
 +
Прикладний програмний інтерфейс Windows.
  
 
===Тиждень 2===
 
===Тиждень 2===
Навчальні теми для вивчення на  2-му тижні.
+
'''Тема 3. Принципи програмування для Windows'''
 +
 
 +
Типи даних Windows.
 +
Принципи найменування змінних (Угорська нотація).
 +
ASCII та Unicode.
 +
Домовленості для Windows-програмування.
  
 
===Тиждень 3===
 
===Тиждень 3===
Навчальні теми для вивчення на  3-му тижні.
+
'''Тема 4. Консольні програми у Windows. Функції введення-виведення'''
 +
 
 +
Принцип дії консолі Windows. Вхідний та екранні буфери консолі.
 +
Консольна програма. Створення та налаштування консолі.
 +
Високорівневі та низькорівневі функції для роботи з консоллю.
  
 
===Тиждень 4===
 
===Тиждень 4===
Навчальні теми для вивчення на  4-му тижні.
+
'''Тема 5. Керовані подіями програми. Концепція повідомлень'''
  
----
+
Концепція повідомлень.
 +
Типи повідомлень.
 +
Чергові повідомлення.
 +
Позачергові повідомлення.
  
=Зміст курсу=
+
===Тиждень 5===
==Змістовий модуль І. Назва модулю==
+
'''Тема 6. Віконні програми у Windows. Використання ресурсів'''
===Тема 1. Назва теми===
+
====Теоретичний матеріал====
+
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Лекція №1]
+
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Лекція №2]
+
Створення Вікна. Цикл Повідомлень. Процедура Вікна.
 +
Поняття про ресурси. Іконки, курсори, рядки. Сценарії ресурсів. Редактори ресурсів. Компіляція ресурсів.
 +
Робота з меню та діалогами у Windows-програмах.
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Лекція №3]
+
===Тиждень 6===
 +
'''Тема 7. Модульне програмування. Робота з динамічними бібліотеками'''
  
====Практичні завдання====
+
Статичні та динамічні бібліотеки. Способи завантаження (зв'язування) динамічних бібліотек: явне та неявне завантаження.
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Практична №1]
+
Створення та використання DLL.
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Практична №2]
+
===Тиждень 7===
 +
'''Тема 8. Обробка виключень у Windows'''
  
====Самостійна робота====
+
Обробка помилок у Windows. Структурна обробка виключень (SEH). Фреймова та фінальна обробка виключень. Векторна обробка виключень (VEH).
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Самостійна робота №1]
+
===Тиждень 8===
 +
Модульний контроль.
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Самостійна  робота №2]
+
===Тиждень 9===
 +
'''Тема 9. Об'єкти ядра Windows'''
  
 +
Об'єкти ядра Windows.
 +
Дескриптори об’єктів.
 +
Наслідування та дублювання дескрипторів.
  
 +
===Тиждень 10===
 +
'''Тема 10. Робота з файлами засобами WinAPI'''
  
==Змістовий модуль ІІ. Назва модулю==
+
Створення, відкриття, закриття файлу.
===Тема 1. Назва теми===
+
Читання з файлу і запис у файл.
====Теоретичний матеріал====
+
Копіювання, переміщення та видалення файлу.
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Лекція №1]
+
Одержання інформації про файли.
 +
Блокування файлів.
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Лекція №2]
+
Функції роботи з каталогами.
 +
Пошук файлів і каталогів.
 +
Робота з системним реєстром.
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Лекція №3]
+
===Тиждень 11===
 +
'''Тема 11. Керування пам’яттю у Windows'''
  
====Практичні завдання====
+
Концепція віртуальної пам’яті.
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Практична №1]
+
Організація віртуальної пам’яті.
 +
Робота з віртуальною пам’яттю та купою засобами WinAPI.
 +
Відображення файлів у пам’ять.
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Практична №2]
+
===Тиждень 12===
 +
'''Тема 12. Керування процесами і потоками у Windows'''
  
====Самостійна робота====
+
Поняття про процеси і потоки.
 +
Створення і завершення процесу.
 +
Очікування завершення процесу.
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Самостійна робота №1]
+
Поняття потоку. Контекст потоку.
 +
Створення і завершення потоку.
 +
Призупинення і відновлення потоків.
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Самостійна  робота №2]
+
===Тиждень 13===
 +
'''Тема 13. Синхронізація потоків засобами WinAPI'''
  
==Змістовий модуль ІІІ. Назва модулю==
+
Проблема синхронізації потоків.
===Тема 1. Назва теми===
+
Засоби синхронізації потоків.
 +
Атомарні функції WinAPI.
 +
Критичні секції.
 +
М’ютекси.
 +
Семафори.
 +
Події.
 +
 
 +
===Тиждень 14===
 +
'''Тема 14. Взаємодія між процесами'''
 +
 
 +
Способи обміну даними між процесами.
 +
Локальні засоби: передача повідомлень, анонімні канали, проекції файлів.
 +
Віддалені засоби: іменовані канали, поштові скриньки.
 +
 
 +
===Тиждень 15===
 +
'''Тема 15. Основи мережевого програмування'''
 +
 
 +
Поняття сокета. Програмування з використанням сокетів.
 +
Віддалений виклик процедур (Remote Procedure Call або RPC).
 +
 
 +
===Тиждень 16===
 +
Тема 16. Розробка операційних систем та драйверів.
 +
 
 +
===Тиждень 17===
 +
Модульний контроль
 +
----
 +
 
 +
=Матеріали до курсу=
 +
==Змістовий модуль І. Основи системного програмування==
 +
<!--===Тема 1. Основні поняття системного програмування===-->
 
====Теоретичний матеріал====
 
====Теоретичний матеріал====
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Лекція №1]
+
[https://owncloud.kspu.kr.ua/index.php/s/69e0915776ee3225579f734e986ad017 Лекція № 1] Системне та прикладне програмування
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Лекція №2]
+
[https://owncloud.kspu.kr.ua/index.php/s/a2f164aa479a1b711fbce446f2620e1b Лекція № 2] Взаємодія програм з операційною системою
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Лекція №3]
+
[https://owncloud.kspu.kr.ua/index.php/s/decf61142fac92a14cda8c4dd601d2eb Лекція № 3] Принципи програмування для Windows
  
====Практичні завдання====
+
[https://owncloud.kspu.kr.ua/index.php/s/Qn51wDRtmm7kNOB Лекція № 4] Консольні програми у Windows
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Практична №1]
+
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Практична №2]
+
[https://owncloud.kspu.kr.ua/index.php/s/yy9axxrjxUO3SHK Лекція № 5] Концепція повідомлень у Windows
  
====Самостійна робота====
+
[https://owncloud.kspu.kr.ua/index.php/s/DBNQiCpu3sRIhGZ Лекція № 6] Віконні програми. Використання ресурсів
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Самостійна робота №1]
+
[https://owncloud.kspu.kr.ua/index.php/s/IeeOE5bGApU8L2q Лекція № 7] Модульне програмування. Динамічні бібліотеки
  
[https://www.dropbox.com/sh/haf7uew7jqk1hus/AACW5eD7hNdVgc6N64XIF_6Ta/%D0%95%D1%82%D0%B0%D0%BF%D0%B8%20%D1%81%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%B4%D0%B8%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D0%B9%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BA%D1%83%D1%80%D1%81%D1%83%20%D0%B7%D0%B0%D1%81%D0%BE%D0%B1%D0%B0%D0%BC%D0%B8%20%D0%92%D1%96%D0%BA%D1%96.docx?dl=0 Самостійна  робота №2]
+
[https://owncloud.kspu.kr.ua/index.php/s/jxuCCekQh8FxV0Q Лекція № 8] Обробка виключень у Windows
  
 +
====Лабораторні роботи====
 +
[https://owncloud.kspu.kr.ua/index.php/s/CgGU6ZQ75mRIXDa Лабораторна робота № 1]
 +
 +
[https://owncloud.kspu.kr.ua/index.php/s/Qz4uhRynCfEQgGp Лабораторна робота № 2]
 +
 +
[https://owncloud.kspu.kr.ua/index.php/s/TNSHCnMYebOCkDp Лабораторна робота № 3]
 +
 +
[https://owncloud.kspu.kr.ua/index.php/s/AMpyAqYnYB86Pnm Лабораторна робота № 4]
 +
<!--====Самостійна робота====
 +
[https://owncloud.kspu.kr.ua/public.php?service=files&t=69e0915776ee3225579f734e986ad017 Самостійна робота №1]
 +
[https://owncloud.kspu.kr.ua/public.php?service=files&t=69e0915776ee3225579f734e986ad017 Самостійна  робота №2]-->
 +
 +
==Змістовий модуль ІІ. Програмування із використанням об’єктів ядра==
 +
<!--===Тема 1. Назва теми===-->
 +
<!--====Теоретичний матеріал====
 +
[https://owncloud.kspu.kr.ua/public.php?service=files&t=69e0915776ee3225579f734e986ad017 Лекція №1]
 +
 +
[https://owncloud.kspu.kr.ua/public.php?service=files&t=69e0915776ee3225579f734e986ad017 Лекція №2]
 +
 +
[hhttps://owncloud.kspu.kr.ua/public.php?service=files&t=69e0915776ee3225579f734e986ad017 Лекція №3]-->
 +
 +
====Лабораторні роботи====
 +
[https://owncloud.kspu.kr.ua/index.php/s/6rx41ay26KfciHZ Лабораторна робота № 5]
 +
 +
[https://owncloud.kspu.kr.ua/index.php/s/MMOCje4cdLZbQse Лабораторна робота № 6]
 +
 +
[https://owncloud.kspu.kr.ua/index.php/s/ouJ4tPyvlyyvP0i Лабораторна робота № 7]
 +
 +
[https://owncloud.kspu.kr.ua/index.php/s/chYaGTBPjjST7Bn Лабораторна робота № 8]
 +
 +
<!--====Самостійна робота====
 +
[https://owncloud.kspu.kr.ua/public.php?service=files&t=f458057dcb1df8841b239532962a3b19 Лабораторна робота №1]
 +
 +
[https://owncloud.kspu.kr.ua/public.php?service=files&t=f458057dcb1df8841b239532962a3b19 Лабораторна робота №1]-->
 
----
 
----
 +
 
=Ресурси=
 
=Ресурси=
 
==Рекомендована література==
 
==Рекомендована література==
 +
<gallery>
 +
Файл:Pobegaylo 4780674.gif
 +
Файл:Richter winpro.jpg
 +
Файл:Hart 141823.jpg
 +
Файл:Baraniuk_SP-II.jpg
 +
Файл:Willams 0111499.jpg
 +
Файл:Shchupack 1524629.jpg
 +
</gallery>
 
===Базова===
 
===Базова===
#
+
# Побегайло А. П. Системное программирование в Windows / А.П. Побегайло. – СПб. : БХВ-Петербург, 2006. – 1056 с.
#
+
# Рихтер Дж. Windows для профессионалов: создание эффективных Win32 приложений с учетом специфики 64-разрядной версии Windows / пер. с англ. – 4-е изд. – СПб. : Питер, 2008. – 720 с.
#
+
# Харт, Джонсон, М. Системное программирование в среде Windows / пер. с англ. – 3-е изд. – М. : Издательский дом "Вильямс", 2005. – 592 с.
 
+
  
 
===Допоміжна===
 
===Допоміжна===
#
+
# Системне програмування. Ч. ІІ. Прикладний програмний інтерфейс WinAPI : методичні вказівки до лабораторних робіт / О.Ф. Баранюк. – Кіровоград : КДПУ ім. В. Винниченка, 2012. – 64 с.
#
+
# Вильямс А. Системное программирование в Windows 2000 для профессионалов / пер. с англ. – СПб. : Питер, 2001 – 624 с.
#
+
# Щупак Ю. Win32 API. Разработка приложений для Windows / Ю.А. Щупак. – СПб. : Питер, 2008. – 592 с.
  
 
==Інформаційні ресурси==
 
==Інформаційні ресурси==
 
+
# [https://docs.microsoft.com/en-us/windows/win32/api/ Programming reference for the Win32 API]
#
+
# [https://docs.microsoft.com/en-us/windows/win32/apiindex/windows-api-list Бібліотека MSDN. Windows API Index]
#
+
# [https://docs.microsoft.com/en-us/windows/win32/apiindex/api-index-portal API Index for desktop Windows applications]
 
+
# [https://docs.microsoft.com/ru-ru/windows/win32/ Build desktop Windows apps using the Win32 API]
---
+
# [http://www.eportal.ho.ua/inform/sp/index.html Матеріали з курсу]
 +
----
 
[[Категорія:Навчальні курси]]
 
[[Категорія:Навчальні курси]]

Поточна версія на 21:30, 22 вересня 2023


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

Галузь знань 12 Інформаційні технології, спеціальність 122 Комп'ютерні науки, освітній ступінь «Бакалавр»

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

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

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

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

знати:

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

вміти:

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

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

Автор курсу

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


Учасники

КН18Б (комп‘ютерні науки 2018 рік вступу) викладач Баранюк Олександр Филимонович, Отримати консультацію


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

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

Змістовий модуль 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

Концепція віртуальної пам’яті. Організація віртуальної пам’яті. Робота з віртуальною пам’яттю та купою засобами WinAPI. Відображення файлів у пам’ять.

Тиждень 12

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

Поняття про процеси і потоки. Створення і завершення процесу. Очікування завершення процесу.

Поняття потоку. Контекст потоку. Створення і завершення потоку. Призупинення і відновлення потоків.

Тиждень 13

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

Проблема синхронізації потоків. Засоби синхронізації потоків. Атомарні функції WinAPI. Критичні секції. М’ютекси. Семафори. Події.

Тиждень 14

Тема 14. Взаємодія між процесами

Способи обміну даними між процесами. Локальні засоби: передача повідомлень, анонімні канали, проекції файлів. Віддалені засоби: іменовані канали, поштові скриньки.

Тиждень 15

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

Поняття сокета. Програмування з використанням сокетів. Віддалений виклик процедур (Remote Procedure Call або RPC).

Тиждень 16

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

Тиждень 17

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


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

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

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

Лекція № 1 Системне та прикладне програмування

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

Лекція № 3 Принципи програмування для Windows

Лекція № 4 Консольні програми у Windows

Лекція № 5 Концепція повідомлень у Windows

Лекція № 6 Віконні програми. Використання ресурсів

Лекція № 7 Модульне програмування. Динамічні бібліотеки

Лекція № 8 Обробка виключень у Windows

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

Лабораторна робота № 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. Системне програмування. Ч. ІІ. Прикладний програмний інтерфейс WinAPI : методичні вказівки до лабораторних робіт / О.Ф. Баранюк. – Кіровоград : КДПУ ім. В. Винниченка, 2012. – 64 с.
  2. Вильямс А. Системное программирование в Windows 2000 для профессионалов / пер. с англ. – СПб. : Питер, 2001 – 624 с.
  3. Щупак Ю. Win32 API. Разработка приложений для Windows / Ю.А. Щупак. – СПб. : Питер, 2008. – 592 с.

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

  1. Programming reference for the Win32 API
  2. Бібліотека MSDN. Windows API Index
  3. API Index for desktop Windows applications
  4. Build desktop Windows apps using the Win32 API
  5. Матеріали з курсу