Операційні системи

Спеціальність: Інженерія програмного забезпечення
Код дисципліни: 6.121.00.O.018
Кількість кредитів: 6.00
Кафедра: Програмне забезпечення
Лектор: Грицай О.Д.
Семестр: 3 семестр
Форма навчання: денна
Мета вивчення дисципліни: Метою викладання дисципліни є вивчення студентами класифікації та принципів проектування, а також теоретичних основ та алгоритмів функціонування сучасних операційних систем. В результаті навчання студенти повинні отримати базові знання про архітектуру та структуру операційних систем, її функції та алгоритми управління ресурсами.
Завдання: Вивчення навчальної дисципліни передбачає формування у здобувачів освіти компетентностей: К02. Здатність застосовувати знання у практичних ситуаціях. К05. Здатність вчитися і оволодівати сучасними знаннями. К15. Здатність розробляти архітектури, модулі та компоненти програмних систем. К18. Здатність аналізувати, вибирати і застосовувати методи і засоби для забезпечення інформаційної безпеки (в тому числі кібербезпеки). К27. Здатність демонструвати розуміння принципів побудови і функціонування обчислювальних систем та комп'ютерних мереж для врахування їх особливостей при розробці програмного забезпечення, що функціонує на різних платформах.
Результати навчання: У результаті вивчення навчальної дисципліни здобувач освіти повинен бути здатним продемонструвати такі результати навчання: - Здатність демонструвати знання принципів функціонування та структури різних операційних систем. - Здатність демонструвати знання алгоритмів управління ресурсами операційною системою. - Здатність демонструвати знання принципів взаємодії між процесами та розподілу пам'яті. - Здатність демонструвати знання організації підсистеми вводу-виводу в сучасних операційних системах. - Здатність демонструвати знання принципів розробки файлових систем, безпеки і захисту даних. - Вміти використовувати методи взаємодії між процесами, такі як семафори, монітори, передача повідомлень тощо. - Вміти управляти розподілом пам'яті, використовувати віртуальний адресний простір. - Вміти ефективно використовувати підсистему вводу-виводу та файлові системи. У результаті вивчення навчальної дисципліни здобувач освіти повинен бути здатним продемонструвати такі програмні результати навчання: ПР01. Аналізувати, цілеспрямовано шукати і вибирати необхідні для вирішення професійних завдань інформаційно-довідникові ресурси і знання з урахуванням сучасних досягнень науки і техніки. ПР05. Знати і застосовувати відповідні математичні поняття, методи доменного, системного і об’єктно-орієнтованого аналізу та математичного моделювання для розробки програмного забезпечення. ПР07. Знати і застосовувати на практиці фундаментальні концепції, парадигми і основні принципи функціонування мовних, інструментальних і обчислювальних засобів інженерії програмного забезпечення. ПР12. Застосовувати на практиці ефективні підходи щодо проектування програмного забезпечення ПР13. Знати і застосовувати методи розробки алгоритмів, конструювання програмного забезпечення та структур даних і знань. ПР17. Вміти застосовувати методи компонентної розробки програмного забезпечення. ПР18. Знати та вміти застосовувати інформаційні технології обробки, зберігання та передачі даних. ПР21. Знати, аналізувати, вибирати, кваліфіковано застосовувати засоби забезпечення інформаційної безпеки (в тому числі кібербезпеки) і цілісності даних відповідно до розв’язуваних прикладних завдань та створюваних програмних систем. ПР23. Вміти документувати та презентувати результати розробки програмного забезпечення. ПР25. Використовувати знання принципів побудови і функціонування обчислювальних систем та комп'ютерних мереж для створення ефективного програмного забезпечення.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: Основи програмування Архітектура комп'ютера та комп'ютерних мереж Кросплатформне програмування
Короткий зміст навчальної програми: "Операційні системи" – навчальний курс, який належить до професійно-орієнтованих дисциплін підготовки розробника програмного забезпечення, є корисним як для тих хто використовує програмне забезпечення, так і для тих, хто його створює. Вивчення курсу "Операційні системи" забезпечує розуміння того, як функціонує операційна система, як вона взаємодіє з комп’ютерним обладнанням і користувачем, як можна використати її механізми для створення ефективних і безпечних застосунків. Дисципліна передбачає вивчення класифікації, архітектури та алгоритмів функціонування сучасних операційних систем. Лекції дисципліни розглядають алгоритми управління ресурсами системи, їх ефективне використання для проектування та конструювання програмного забезпечення, а також принципи розробки файлових систем, безпеки і захисту даних. Практичні та лабораторні включають використання інструментальних засобів та API для моніторингу та управління ресурсами операційної системи, програмування алгоритмів взаємодії між процесами, потоками, використовуючи управління підсистемою вводу-виводу і пам’яттю, файлову систему та базові методи синхронізації (семафори, мютекси, монітори та ін.). Частина програмних результатів дисципліни може бути оцінена через представлення результатів неформальної та інформальної освіти (сертифікати платформи Coursera для Intro to Operating Systems, сертифікати навчальних програм ІТ фірм, напр.. Linux Kernel GL BaseCamp, та ін..).
Опис: - Вступ. (Загальна характеристика предмету. Академічна доброчесність. Можливості неформальної та інформальної освіти. Основні поняття, концепції операційної системи. Архітектура операційної системи). - Процеси (Поняття процесу, стани, моделі представлення процесів , операції над процесами. Планування процесів: рівні, критерії та вимоги до алгоритмів. Алгоритми планування FCFS, RR, SJF. Гарантоване, пріоритетне планування. Багаторівневі черги.) - Кооперація процесів та основні аспекти її логічної організації ( Потоки виконання. Поняття чергування, умови перегонів та взаємовиключення. Критична секція програми. Апаратні засоби та програмні алгоритми організації синхронізації процесів. Механізми синхронізації: семафори, монітори, повідомлення. Еквівалентність семафорів, моніторів та повідомлень.) - Тупики. ( Поняття взаємного блокування, тупикових ситуацій та «зависання» системи. Умови виникнення тупиків. Основні напрямки боротьби з тупиками.) - Управління пам’яттю в операційних системах (Фізична та логічна організація пам’яті комп’ютера. Найпростіші схеми управління пам’яттю: фіксовані та змінні розділи, оверлейна структура, сторінкова пам’ять, сегментна і сегментно-сторінкова організація пам’яті, динамічний розподіл, підкачування. Віртуальна пам’ять, сторінкова та сегментно-сторінкова організація віртуальної пам’яті. Структура таблиці сторінок, інвертована таблиця. Виняткові ситуації при роботі з пам’яттю. Стратегії управління сторінковою пам’яттю. Алгоритми заміщення сторінок: FIFO, OPT, LRU, NFU. Модель робочої множини процесу.) - Файлові системи (Основні функції та інтерфейс файлової системи. Організація файлів та доступ до них. Розділи диску, організація доступу до каталогів. Структура файлових систем. Методи виділення дискового простору: таблиця розміщення файлів та індексні вузли. Приклади реалізації файлових систем в сучасних ОС. Кооперація процесів при роботі з файлами. Сучасні архітектури файлових систем. Безпека та механізми захисту файлових систем.) - Система управління вводом-виводом. (Фізичні принципи організації вводу-виводу. Переривання, виняткові ситуації та системні виклики. Логічні принципи організації вводу-виводу. Структура системи вводу-виводу. Типи системних викликів. Обробка переривань та помилок.)
Методи та критерії оцінювання: 1. Усне та письмове опитування на практичних заняттях 2. Захист лабораторних робіт 3. Результати неформальної та інформальної освіти (сертифікати платформи Coursera для Intro to Operating Systems, сертифікати навчальних програм ІТ фірм, напр.. Linux Kernel GL BaseCamp, та ін.) можуть бути зараховані для оцінення результатів лабораторних і практичних занять відповідно до тем заняття і тем зазначених у сертифікатах. 4. Екзаменаційна робота (письмова та усна компоненти)
Критерії оцінювання результатів навчання: • поточний контроль включає захист 9 лабораторних робіт з усним опитуванням та письмовими звітами (3+3+3+3+3+3+3+3+6=30%) та усне і письмове опитування на практичних заняттях (10%). Для захисту лабораторних з балами встановлюються крайні терміни. За межами крайніх термінів роботи оцінюються в 0 балів; • контрольний захід - екзамен: письмово-усна форма (50+10=60%)
Порядок та критерії виставляння балів та оцінок: 1. Бали за поточний контроль виставляють до початку сесії. Студент, який виконав менше 50% робіт поточного контролю, вважається неатестованим. Студент, який виконав більше 50% робіт може довиконати завдання і скласти іспит на комісії. 2. Бали за практичні заняття виставляють згідно усного або письмового опитування та загальної активності на занятті. 3. Бали за лабораторні роботи виставляють згідно календарного графіку та успішного захисту. Захист вважають успішним, якщо студент продемонстрував виконання лабораторної (1, 2 л.р.) і коректну роботи програми (3-8 л.р.) відповідно до свого завдання, правильно оформив звіт та захистив його та дав правильні відповіді на усні запитання; зміг внести корективи у лабораторну на прохання викладача (3-8 л.р.). Виконання лабораторної роботи №9 передбачає проектний підхід із застосуванням гнучких навичок для роботи в команді. Завдання лабораторної розбивається на підзадачі, які рівномірно розподіляються між студентами. Захист лабораторної роботи передбачає презентацію роботи свого проекту з усною доповіддю. Максимальна оцінка за лабораторну №9 становить 6 балів: виконане завдання - 1 бал, оцінка за роботу у команді - 2 бали, презентація проекту - 1 бал, відповіді на запитання викладача та інших студентів - 2 бали. 4. Відповідальність за недотримання принципів академічної доброчесності під час виконання і захисту лабораторних робіт: якщо при захисті лабораторної роботи викладачем було виявлено прояви порушення академічної доброчесності, робота не зараховується, студент отримує новий варіант завдання і може повторно захищати лабораторну. Бали за таку роботу виставляються згідно балів по графіку, поділених на два.
Рекомендована література: 1)Операційні системи [Електронний ресурс] : електронний навчально-методичний комплекс. Укладачі: Грицай О. Д., Яковина В. С. - Національний університет "Львівська політехніка" , Львів, 2021. 2) Горбань Г. В. Операційна система Linux : навч. посіб. / Г. В. Горбань, І. О. Кандиба. – Миколаїв : Вид-во ЧНУ ім. Петра Могили, 2019. – 276 с 3) Шеховцов В.А. Операційні системи: підручник для студентів вищих навчальних закладів, які навчаються за напрямами «Комп’ютерні науки», «Комп’ютерні системи, автоматика і управління», «Комп’ютерна інженерія», «Прикладна математика». – К.: Вид. група BHV, 2005. – 576 с. 4) Silberschatz A., Galvin P. B., Gagne G. Operating system concepts. 10th edition. – NJ : Wiley, 2018. – 1278 с.
Уніфікований додаток: Національний університет «Львівська політехніка» забезпечує реалізацію права осіб з інвалідністю на здобуття вищої освіти. Інклюзивні освітні послуги надає Служба доступності до можливостей навчання «Без обмежень», метою діяльності якої є забезпечення постійного індивідуального супроводу навчального процесу студентів з інвалідністю та хронічними захворюваннями. Важливим інструментом імплементації інклюзивної освітньої політики в Університеті є Програма підвищення кваліфікації науково-педагогічних працівників та навчально-допоміжного персоналу у сфері соціальної інклюзії та інклюзивної освіти. Звертатися за адресою: вул. Карпінського, 2/4, І-й н.к., кімн. 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits https://lpnu.ua/integration
Академічна доброчесність: Політика щодо академічної доброчесності учасників освітнього процесу формується на основі дотримання принципів академічної доброчесності з урахуванням норм «Положення про академічну доброчесність у Національному університеті «Львівська політехніка» (затверджене вченою радою університету від 20.06.2017 р., протокол № 35).