Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції_СПр.docx
Скачиваний:
37
Добавлен:
21.08.2019
Размер:
947.09 Кб
Скачать

Лекція 1 «Базові поняття Системного програмування та СПЗ»

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

  2. Системне програмне забезпечення.

  3. Основні аспекти створення системних програм.

  4. Класифікація системного програмного забезпечення.

Навчальна мета: Засвоїти основні поняття системного програмування та системного програмного забезпечення, забезпечити студентам розуміння основних аспектів створення системних програм, дати базову класифікацію системного програмного забезпечення.

Виховна мета: Допомогти студентам усвідомити вагому роль системного програмування та системного програмного забезпечення у сучасних інформаційних технологіях розробки ПЗ, привити розуміння основних аспектів створення системних програм, дати базову класифікацію системного програмного забезпечення.

Актуальність: Донести до відома студентів, що на сьогоднішній розуміння основних понять системного програмного забезпечення та системного програмування є головними аспектами становлення програміста.

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

Системне програмування. Системне програмне забезпечення (1)

Дисципліна “системне програмування” зазвичай викладається в технічних вузах як курс якоїсь окремої мови програмування, частіше всього - це асемблер або С/C++. Насправді ж ця дисципліна не є черговим курсом з методики створення програм, а є курсом з тонкощів операційної системи, які можна використовувати в будь-якій мові програмування, де є можливість підключення або зовнішніх модулів або асемблерних вставок безпосередньо до програмного коду.

Отже, сформулюємо чітке визначення курсу:

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

Історично склалось так, що існують дві мови, які використовуються для роботи на рівні операційної системи – асемблер та С. Перша мова бере свій початок від найпершого компілятора – Автокоду (1952), розробленого Аліком Гленні для комп'ютера Манчестер Марко I. Цей компілятор вперше використовував мнемонічне (у вигляді команд та відповідних операндів) позначення основних операцій, які здатна виконувати машина, які потім перетворювались на коди, зрозумілі машині. Цей процес був названий трансляцією. А мови, похідні від Автокоду, були названі асемблерами (від слова assembly – “збирати”, адже програми збирались з окремих “цеглинок”, мнемонічних команд). Ці мови працювали фактично на найнижчому рівні, на рівні процесора та його функцій, а пізніше – на рівні функцій операційної системи.

Саме тоді було закладено основи дисципліни системного програмування і закладено основні задачі, які і нині розв'язуються за допомогою його методів. Це насамперед керування процесором та керування периферійними пристроями, які під’єднані до загальної шини, і керуються цим процесором. З винайденням операційної системи, на яку покладалися загальні задачі обміну даними між процесором, пам'яттю та периферійними пристроями, основна задача системного програмування змінилась – оскільки керування обміну даними між периферійними пристроями перебрала на себе операційна система, до задач системного програмування увійшло завдання керування ресурсами, які контролює операційна система. Саме такою основна задача системного програмування є і по сьогодні.

Отже, сформулюємо основну задачу системного програмування: створення програм для керування безпосередньо процесором та ресурсами операційної системи (пам'яттю та периферійними пристроями).

Системне програмування. Системне програмне забезпечення. (2)

Систе́мне програмува́ння (або програмування систем) - це вид програмування, який полягає в роботі з системним програмним забезпеченням. Головною відмінністю системного програмування в порівнянні з прикладним програмуванням є те, що прикладне програмне забезпечення призначене випускати (створювати і оновлювати) програми для користувачів (напр., текстові процесори), тоді як системне програмування призначене випускати програми, які обслуговують апаратне забезпечення (напр., дефрагментація диска) що обумовлює значну залежності такого типу ПЗ від апаратної частини. Також для системного програмування характерне:

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

  • зазвичай використовуються низькорівневі мови програмування або діалекти які:

    • можуть працювати у ресурсно-обмеженому середовищі

    • максимально раціональні та мають мінімальні затримки за часом виконання

    • мають малі бібліотеки бібліотеки періоду виконання (RTL), або взагалі їх не мають

    • дозволють прямий доступ до пам'яті та керуючої логіки

    • дозволяють програмісту писати частини програми на асемблері

  • налагодження може бути складним, якщо неможливо запустити програму у режимі налагодження через обмеження у ресурсах. Виконання програми у імітованому середовищі може зняти цю проблему.

Системне програмне забезпечення (англ. system software) — більш відоме, як операційна система, це будь-яке програмне забезпечення, що забезпечує інфраструктуру, на якій можуть працювати прикладні програми, тобто воно керує і контролює комп'ютерним обладнанням, для можливості виконання прикладних програм. Операційні системи, такі як Microsoft Windows, Mac OS X та Linux є яскравими прикладами системного програмного забезпечення.

Системне програмне забезпечення — це ПЗ, що в принципі забезпечує роботу комп'ютера. Крім операційних систем, іншими прикладами є антивірусні програми, комунікаційні програми та драйвери принтерів. Без системного програмного забезпечення комп'ютер працювати не буде.

На відміну від системного програмного забезпечення, програмні засоби, які дозволяють вам робити щось на штиб створення текстових документів, грати в ігри, слухати музику або переглядати веб називаються прикладними.

В цілому прикладні програмні засоби — це програми, що дозволяють кінцевому користувачу виконання конкретних функцій, таких як обробляння текстів або редагування зображень. Системні програмні засоби виконують такі завдання, як передача даних з пам’яті довільного доступу на диск, або відтворення тексту на дисплеї.

Системне програмування суттєво відрізняється від прикладного програмування, що змушує програмістів спеціалізуватися у одній з цих галузей. Для системного програмування часто доступна тільки обмежена кількість інструментів. Налагодження інколи виявляється дуже складним. Бібліотеки періоду виконання, якщо взагалі доступні, мають набагато менші можливості, і роблять менше перевірок на помилки. Через ці обмеження, часто використовуються моніторинг та реєстрація даних; операційні системи мають бути забезпечені дуже якісними підсистемами реєстрації даних.

Основні аспекти створення системних програм. (3)

Перед тим, як ввести поняття системної програми, розглянемо спрощену архітектуру комп’ютерної системи:

На рівні мікрокоду як правило, працюють прошиті в мікросхемі програми, наприклад, MMX (MultiMedia Extended Set) чи SSE (Sequenced and Structured Extensions/Поширення для роботи з послідовностями та структурами), які фактично є програмами, зашитими в процесор. Ними системне програмування майже не займається, хоч може використовувати їх ресурси, чи викликати такі програми.

На рівні команд процесора працюють такі базові пакети, як BIOS та операційна система. Загалом, системне програмування займається написанням і того, і іншого, але останнім часом у світі існує тенденція щодо виділення їх в окремі наукові дисципліни. На рівні команд процесора також працюють так звані програми нульового рівня, тобто такі програми, які реалізовують основні функції операційної системи – обробники переривання, драйвери тощо.

На рівні операційної системи працює більшість користувацьких програм. Коди програм базуються на використанні переривань, драйверів, функцій операційної системи, написаних рівнем нижче. Слід розрізняти інтерфейс програміста та функції операційної системи. Перше – це набір вже написаних програм на певній мові програмування, і сформованих у так звану бібліотеку, якою може користуватись програміст. Друге – це прошитий у ядро операційної системи програмний код, який виконується в залежності від того, які переривання були збуджені, і які значення регістрів при цьому були. Інтерфейс програміста прийнято називати рівнем користувача, а функції операційної системи – рівнем операційної системи.

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

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

Класифікація системного програмного забезпечення. (4)

  • Завантажувачі

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

  • Драйвери,

  • Компонувальник

  • Утиліти

Контрольні запитання:

  1. Поняття Системне програмування. Системне програмне забезпечення

  2. Системні програмні засоби

  3. Основні аспекти створення системних програм.

  4. Класифікація системного програмного забезпечення.

Лекція 2 «Завантажувачі ОС»

  1. Завантажувачі операційної системи.

  2. Типи завантаження.

  3. Завантажувальні пристрої.

Навчальна мета: Засвоїти основні поняття завантажувачів операційних систем.

Виховна мета: Допомогти студентам усвідомити вагому роль завантажувачів у процесі завантаження та роботи операційної системи.

Актуальність: Сучасні операційні системи, так само, як і перші операційні системи використовують завантажувачі. І розуміння їх роботи – це завжди актуальне пиання.

Мотивація: Для розуміння роботи операційної системи з точки зору професіонала необхідно розуміти принципи роботи завантажувачів та вміти з ними працювати.

Завантаження операційної системи (англ. booting) зветься багатокроковий процес запуску комп'ютера. Заванта́жувач операційної системи (англ. bootloader) це програма, яку запускає BIOS для виконання завантаження операційної системи. Заванта́жувач операційної системи звичайно знаходиться у секторі завантажування. Послідовність завантаження (англ. boot sequence) це початковий набір дій, що при цьому виконується комп’ютером.

Типи завантаження

  • Початкове завантаження (англ. booting up) - Завантажування після того, як комп'ютер увімкнено користувачем.

  • Перезавантаження (англ. reboot) .

Жорстке перезавантаження. Жорстке перезавантаження (англ. hard reboot) відбувається, коли на короткий час зникає живлення комп’ютера, або коли на процесор надсилається спеціальний сигнал (найчастіше така кнопка міститься на передній панелі комп’ютера). Це початкове завантаження без попереднього виконання завершальних процедур операційної системи. Для багатьох операційних систем, особливо тих що використовують дисковий кеш, після жорсткого перезавантаження файлова система може містити неузгодженості через незавершеність дискових операцій вводу-виводу; щоб виправити ці помилки запускається процедура сканування файлової системи на цілісність структури ще до того, як матиме місце нормальне завантаження.

М’яке перезавантаження. М’яким (англ. soft reboot) перезавантаження називається тоді, коли воно відбувається під контролем програмного забезпечення, без порушень в електроживленні і натискання кнопки перезавантаження на передній панелі. Як правило, але не завжди, це означає звичайне штатне завершення роботи машини і наступне перезавантаження. Комбінація клавіш клавіатури Control-Alt-Delete на оригінальному комп'ютері IBM PC була назначена для виконання м’якого перезавантаження для скорішого і зручнішого (і, дехто стверджує, менш стресового для компонентів системи) рестарту, порівняно із тим, коли вимикається живлення комп’ютера.

Завантажувальні пристрої.

Завантажувальний пристрій — з якого вантажиться операційна система. BIOS сучасних комп’ютерів підтримує завантаження з різних пристроїв, зазвичай це локальний жорсткий диск (або одна з частин розбиття на кожному диску), пристрій читання оптичних дисків, USB-диск (у варіантах флеш-диску, зовнішнього жорсткого, магнитооптичного чи оптичного диску, тощо), або інтерфейсна мережна карта (з використанням PXE).

Звичайно, BIOS дозволяє користувачу обрати і впорядкувати спосіб завантаження. Якщо порядок завантаження встановлено так «по-перше, DVD-дисковод; по-друге, жорсткий диск», тоді BIOS намагатиметься завантажити систему з DVD, і якщо спроба виявиться неуспішною (наприклад, у дисководі відсутній диск), тоді відбудеться наступна спроба завантажитися з жорсткого диску.

Се́ктор заванта́ження (boot sector) — особливий сектор на диску, дискеті чи іншому дисковому пристрої збереження інформації, що містить інформацію про файлову систему розміщену на носії і невелику програму в машинному коді, що завантажує операційну систему. (для дискети це перший фізичний сектор, для диску — перший фізичний сектор для кожного розділу).

Контрольні запитання:

    1. Завантаження операційної системи.

    2. Типи завантаження.

    3. Завантажувальні пристрої.

    4. Се́ктор заванта́ження (boot sector)

Лекція 3 «Операційні системи»

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

  2. Типи ОС.

  3. Складові частини ОС.

Навчальна мета: Вивчити основні поняття операційних систем, вивчити види операційних систем та визначити її основні складові частини.

Виховна мета: Знання особливостей ОС відокремлюють користувачів та професіоналів.

Актуальність: На ринку праці роботодавців цікавить системний програміст, що знає «нуторощі» операційної системи та принципи роботи з ними на професійному рівні.

Мотивація: Мотивацією вивчати даний напрямок у курсі ситемного програмування може стати бажання отримати позицію системного програміста.

Операці́йна систе́ма — це базовий комплекс програмного забезпечення, що виконує управління апаратним забезпеченням комп'ютера або віртуальної машини; забезпечує керування обчислювальним процесом і організує взаємодію з користувачем.

Операційна система звичайно складається з ядра операційної системи та базового набору прикладного програмного забезпечення.

Базові відомості

Поняття операційної системи напряму пов'язане з такими поняттями, як:

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

Файлова система - набір файлів (можливо порожній), організованих за наперед визначеними правилами. Якщо організація файлів в файлову систему відбувається з використанням каталогів, то така файлова система називається ієрархічною.

Програма - файл, що містить набір інструкцій для виконання. В якості виконавця інструкцій програми можуть виступати:

центральний процесор - якщо програма містить машинний код (звичайно отримують шляхом компідяції вихідного текста програми, написаного однією з компільованих мов);

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

Задача - програма в процесі виконання (в термінології операційних систем UNIX використовують термін "процес").

Команда - ім'я, яке використовує користувач ОС або інша програма для виконання вказаної програми (може співпадати з іменем файла з програмою) або поіменованої дії (вбудованої команди).

Командний інтерпретатор - середовище, яке забезпечує інтерфейс з користувачем і виконання команд.

Типи операційних систем

Відповідно до свого призначення, операційні системи бувають:

  • універсальні (для широкого використання), спеціальні (для розв'язання спеціальних задач) та спеціалізовані (виконуються на спеціальному обладнанні);

  • одно-задачні (в окремий момент часу можуть виконувати лише одну задачу) та багато-задачні (в окремий момент часу здатні виконувати більше однієї задачі);

  • одно-користувацькі (в системі відсутні механізми обмеження доступу до файлів та на використання ресурсів системи) та багато-користувацькі (система впроваджує поняття "власник файлу" та забезпечує механізми обмеження на використання ресурсів системи (квоти)), всі багато-користувацькі операційні системи також є багато-задачними;

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

Відповідно до способу встановлення (інсталяції) операційної системи, операційні системи бувають:

  • вбудовані (такі, що зберігаються в енергонезалежній пам'яті обчислювальної машини або пристрою без можливості заміни в процесі експлуатації обладнання);

  • невбудовані (?) (такі, що інсталюються на один з пристроїв зберігання інформації обчислювальної машини з можливістю подальшої заміни в процесі експлуатації).

  • Відповідно до відповідності стандартам операційні системи бувають:

  • стандартні (відповідають одному з загальноприйнятих відкритих стандартів, найчастіше POSIX);

  • нестандартні (в тому числі такі, що розробляються відповідно до корпоративних стандартів).

Відповідно до можливостей розширення операційні системи бувають:

  • закриті (не дозволяють розширення функціональності ОС);

  • відкриті (будуються за технологіями, що забезпечують можливості розширення функціональності ОС).

Відповідно до можливостей доступу до вихідного коду операційні системи бувають:

  • вільні (з відкритим програмним кодом);

  • пропрієтарні (комерційні з закритим кодом).

Складові ОС

  • Ядро операційної системи, що забезпечує розподіл і управління ресурсами обчислювальної системи;

  • базовий набір прикладного програмного забезпечення, системні бібліотеки та програми обслуговування.

Ядро́ (англ. Kernel) — базова компонента операційної системи, що реалізує інтерфейс між прикладними процесами та обладнанням комп'ютера. Завантажується в оперативну пам'ять комп'ютера і безпосередньо взаємодіє з апаратурою, забезпечуючи керування апаратними засобами (при цьому використовуються драйвери (модулі ядра) підключеного в систему обладнання), підтримку одночасної роботи багатьох користувачів (багатокористувацький режим), підтримку паралельного виконання багатьох процесів в системі (багатозадачність).

Контрольні запитання:

  1. Базові поняття ОС. Поняття ОС. Поняття файлу.

  2. Поняття файлової системи, програми.

  3. Поняття центрального процесора, командного інтерпретатора, команди.

  4. Типи ОС. Складові ОС. Ядро ОС.

Лекція 4 «Операційні системи сімейства Unix, MacOs, Windows»

  1. Unix - подібні ОС.

  2. Сімейство Microsoft Windows.

  3. Mac OS X.

Навчальна мета: Ввичити основні принципи побудови таких сучасних операційних систем, як Unix, Mac, Windows.

Виховна мета: Допомогти студентам усвідомити вагому роль знання різних операційних ситем.

Актуальність: Донести до відома студентів, що на сьогоднішній день більшість роботодавців шукають персонал, незалежний від операційного середовища.

Мотивація: Мотивацією вивчати даний напрямок у курсі ситемного програмування може стати бажання отримати перевагу перед конкурентами у процесіі працевлаштування шляхом демонстрації навичок роботи та зання принципів організації різних ОС.

Unix - подібні ОС.

Файлова структура Unix характеризується такими властивостями:

  • Чітка побудова;

  • Звернення до даних файлу без суперечностей;

  • Захист даних файлу;

Цей стандарт вимагає, щоб операційна система, яка працюватиме з  узгодженою файловою системою, підтримуватиме ці базові риси надійності, які є в більшості файлових систем Unix. Цей стандарт не намагається узгоджуватися з кожним можливим аспектом в усіх конкретних реалізаціях Unix-систем. Проте, багато аспектів цього стандарту базується на ідеях, що є в Unix та інших Unix подібних системах:

  • Традиційна та добре сприйнята практика в Unix-подібних системах;

  • Впровадження побудов інших файлових структур;

  • Застосовні стандарти;

Визначається дві незалежні категорії файлів: загальні (shareable) на противагу приватним (unshareable) та змінні на противагу постійним.

Загальні данні це ті, що можуть бути спільними для декількох головних машин; Приватні данні мають бути специфічними для кожного головного комп'ютера.

Постійні файли - двійкові, бібліотеки, документація та все інше, що має змінюватися тільки адміністиратором системи; Змінні - все, що може бути змінено без втручання адміністратора системи.

Для полегшення резервування, керування та спільного використання файлів в мішаних мережах з машин із різними архітектурами та операційними системами, бажано щоб було просто та легко розуміти зв'язки між каталогами (певні каталоги розглядаються як потенційні точки монтування) та типом даних, що вони містять.

Сімейство Microsoft Windows.

Зазвичай всі версії Windows поділяють на декілька «груп».

Графічні інтерфейси та розширення для DOS Эти версии Windows не были полноценными операционными системами, а являлись надстройками к операционной системе MS-DOS и были по сути многофункциональным расширением, добавляя поддержку новых режимов работы процессора, поддержку многозадачности, обеспечивая стандартизацію интерфейсов аппаратного обеспечения и единообразие для пользовательских интерфейсов программ. Предоставляли встроенные средства (GDI и USER, первые версии Windows вообще состояли из трех модулей — KERNEL, GDI и USER, первый из них предоставлял вызовы управления памятью, запуском EXE файлов и загрузкой DLL файлов, второй — графику, третий — окна) для созданияграфического интерфейса пользователя. Они работали с процессорами начиная с Intel 8086.

Сімейство Windows 9x Включает в себя Windows 95, Windows 98 и Windows Me.

Windows 95 была выпущена в 1995 году. Её отличительными особенностями являются новый пользовательский интерфейс, поддержка длинных имён файлов, автоматическое определение и конфигурация периферийных устройств Plug and Play, способность исполнять 32-битные приложения и наличие поддержки TCP/IP прямо в системе. Windows 95 использует вытесняющую многозадачность и выполняет каждое 32-битное приложение в своём адресном пространстве.

Сімейство Windows NT Операционные системы этого семейства в настоящее время работают на процессорах с архитектурами x86, x64, и Itanium, ARM. Все операционные системы этого семейства являются полностью 32- или 64- битными операционными системами, и не нуждаются в MS-DOS даже для загрузки.

Только в этом семействе представлены операционные системы для серверов. До версии Windows 2000 включительно они выпускались под тем же названием, что и аналогичная версия для рабочих станций, но с добавлением суффикса, например «Windows NT 4.0 Server» и «Windows 2000 Datacenter Server».

В основу семейства Windows NT положено разделение адресных пространств между процессами. Каждый процесс имеет возможность работать с выделенной ему памятью. Однако он не имеет прав для записи в память других процессов, драйверов и системного кода.

Семейство Windows NT относится к операционным системам с вытесняющей многозадачностью. Разделение процессорного времени между потоками происходит по принципу «карусели». Ядро операционной системы выделяет квант времени (в Windows 2000 квант равен примерно 20 мс) каждому из потоков по очереди при условии, что все потоки имеют одинаковый приоритет. Поток может отказаться от выделенного ему кванта времени.

В этом случае система перехватывает у него управление (даже если выделенный квант времени не закончен) и передаёт управление другому потоку. При передаче управления другому потоку система сохраняет состояние всех регистров процессора в особой структуре в оперативной памяти. Эта структура называется контекстом потока. Сохранение контекста потока достаточно для последующего возобновления его работы.

Mac OS X.

Архитектуры Mac OS модульно-иерархическая.

.Архитектура Mac OS

Систему можно разделить на несколько подсистем, каждая из которых выполняет управление определенным видом ресурсов (памятью, задачами, файлами, средствами коммуникаций и т.д.). Подсистема состоит из нескольких Менеджеров, каждый их которых обеспечивает более высокий уровень абстракции ресурсов. Менеджеры более высокого уровня используют средства Менеджеров низкого уровня своей подсистемы, а также и других подсистем. API (application programming interfaces) же системы предоставляет доступа к возможностям практически любого уровня абстракции.

Контрольні запитання:

  1. Поняття Unix - подібні ОС.

  2. Поняття загальних та приватних даних.

  3. Сімейство Microsoft Windows.

  4. Архітектура Mac OS.

Лекція 5 «Ядро операційної системи. Підсистеми ядра»

  1. Підсистеми ядра операційної системи.

  2. Інтерфейс ядра, управління введенням-виведенням.

  3. Підсистеми управління оперативною пам’яттю та задачами.

Навчальна мета: Засвоїти основні поняття ядра оперраціної системи, вивчити інтерфейс ядра ОС, систему введення-виведення та підсистеми управління оперативною пам’яттю та задачами.

Виховна мета: Допомогти студентам усвідомити вагому роль розуміння принципів роботи ядра операційної системи.

Актуальність: Донести до відома студентів, що на сьогоднішній день більшість системних програмістів працюють з ядром операційної системи.

Мотивація: Мотивацією вивчати даний напрямок у курсі ситемного програмування може стати бажання стати професіоналом в галузі керування системним програмним забезпепеченням.