
- •Введення
- •1. Структура та обсяг дисципліни
- •2. Основи програмування на мові с
- •2.1 Найпростіші конструкції мови
- •2.2 Типи даних
- •2.4 Операції мови с
- •2.5 Структура простої с програми
- •2.6 Організація введення-виведення
- •2.7 Компіляція в системі Linux
- •2.8 Організація розгалужень в програмі
- •2.9 Організація циклів
- •2.10 Оператор break
- •2.11 Оператор continue
- •2.11 Масиви
- •2.12 Функції
- •2.13 Вызов функции с переменным числом параметров
- •2.14 Рекурсивні функції
- •2.15 Читання і запис текстових файлів
- •2.16 Структури даних
- •2.17 Перелік|перерахування| (enumeration)
- •2.18 Об'єднання (union)
- •3. Операційні системи і системне програмування
- •3.1. Поняття операційної системи
- •4. Корисні команди Linux
- •4.1. Загальні|спільні| команди
- •4.1.1. Команда arch – виведення архітектури комп'ютера
- •4.1.2. Команда clear – очищення екрану
- •4.1.3. Команда date
- •4.1.9. Команда uptime – інформація про роботу системи
- •4.1.10. Команда users – інформація про користувачів
- •4.1.11. Команди w, who і whoami інформація про користувачів
- •4.1.12. Команда xf8config – настройка графічної підсистеми
- •4.2. Команди для роботи з текстом
- •4.2.1. Команди diff і cmp
- •4.2.2. Команди grep і egrep – текстовий фільтр
- •4.2.3. Команди more и less – посторінкове виведення
- •4.2.4. Команди head і tail – виведення начала і хвоста файлу
- •4.2.5. Команда wc – підрахунок слів у файлі
- •5. Захист інформації в інформаційних системах
- •5.1 Основні завдання забезпечення безпеки
- •5.2 Базові поняття криптографії
- •5.2.1 Поняття криптографічного алгоритму і протоколу
- •5.2.2 Криптосистеми з секретним ключем
- •5.2.3 Криптосистеми із відкритим ключем
- •5.2.4. Гибридні криптосистеми
- •5.2.5. Цифрові підписи
- •5.2.6. Сертифікати
- •5.3. Принципи аутентифіекації і керування доступом
- •5.3.1. Основи аутентифікації
- •5.3.2. Основи керування доступом
- •5.4. Аутентифікація та керування доступом в unix
- •5.4.1. Облікові записи користувачів
- •5.4.2. Аутентифікація
- •5.4.3. Керування доступом
- •6. Програмний інтерфейс unix. Системні виклики і функції стандартних бібліотек
- •6.1. Підтримка програмування в oc unix. Вивчення передачі інформації
- •6.2. Змінні оточення
- •6.3. Обробка помилок
- •6.4. Правила формування і засоби розбору командних рядків
- •7. Операції над файлами
- •7.1 Файлові операції posix
- •7.2. Збирання інформації про атрибути файла
- •7.3. Операції над каталогами
- •Література
Міністерство освіти і науки,
МОЛОДІ ТА СПОРТУ України
Швець Н.В., Чумаченко Д.О
Системне програмування і операційні системи
Конспект лекцій
Для студентів, що навчаються за фахом 6.080401 «Інформаційні управляючі системи» 6.080402 «Інформаційні технології проектування»
Одеса 2013
Укладачі: Швець Наталія Василівна, старший викладач кафедри Інформаційних технологій та кібербезпеки, Чумаченко Дар’я Олександрівна, асистент кафедри Інформаційних технологій та кібербезпеки
Методичні вказівки розглянуті і затверджені на засіданні кафедри Інформаційних технологій та кібербезпеки
Протокол №__ від “____” ___________2013 р.
Завідувач кафедри , д.т.н., професор. В.М. Плотніков
Затверджено методичною комісією напряму підготовки
0804 Комп’ютерні науки науково-методичної ради академії
Протокол №__ від “____”_____________2013 р.
Голова методичної комісії ФІТ, к.т.н., доц. Ю.К.Корнієнко
Зміст
Введення 5
1. Структура та обсяг дисципліни 7
2. Основи програмування на мові С 8
2.1 Найпростіші конструкції мови 8
2.2 Типи даних 10
2.3 Змінні 10
2.4 Операції мови С 13
2.5 Структура простої С програми 14
2.6 Організація введення-виведення 15
2.7 Компіляція в системі Linux 17
2.8 Організація розгалужень в програмі 19
2.9 Організація циклів 21
2.10 Оператор break 24
2.11 Оператор continue 24
2.11 Масиви 25
2.12 Функції 27
2.13 Вызов функции с переменным числом параметров 29
2.14 Рекурсивні функції 31
2.16 Структури даних 36
2.17 Перелік|перерахування| (enumeration) 40
2.18 Об'єднання (union) 41
3. Операційні системи і системне програмування 53
3.1. Поняття операційної системи 53
4. Корисні команди Linux 54
4.1. Загальні|спільні| команди 54
4.2. Команди для роботи з текстом 56
5. Захист інформації в інформаційних системах 62
5.1 Основні завдання забезпечення безпеки 62
5.2 Базові поняття криптографії 63
5.3. Принципи аутентифіекації і керування доступом 71
5.4. Аутентифікація та керування доступом в UNIX 79
6. Програмний інтерфейс UNIX. Системні виклики і функції стандартних бібліотек 88
6.1. Підтримка програмування в OC UNIX. Вивчення передачі інформації 89
6.2. Змінні оточення 94
6.3. Обробка помилок 95
6.4. Правила формування і засоби розбору командних рядків 98
7. Операції над файлами 101
7.1 Файлові операції POSIX 103
7.2. Збирання інформації про атрибути файла 107
7.3. Операції над каталогами 108
Література 111
Введення
Дисципліна «Системне програмування і операційні системи» орієнтована на вивчення основ системного програмування і надання загального уявлення про систему Linux,необхідного кожному програмісту. Викладання даного курсу студентам, які навчаються за фахом 6.080402 «Інформаційні технології проектування», фокусується на програмуванні системного рівня в призначеному для користувача просторі, тобто на всьому, що лежить вище за ядро. Що таке інтерфейс системного рівня, і як писати додатки системного рівня в Linux? Що саме надають ядро і бібліотека C? Як створювати програмне забезпечення під Linux, ефективно використовуючи можливості системи - функції ядра і базові бібліотеки?
Однією з цілей, які ставилися перед розробниками ОС UNIX, було створення зручного середовища програмування. Розробка програм неможлива без знання інтерфейсу системних викликів і без розуміння внутрішніх структур і функцій, що надаються операційною системою.
Результатом вивчення курсу повинне бути вміння користування стандартними системними засобами введення/виведення, працювати з дисковими файлами, каталогами, здійснювати захист інформації від несанкціонованого доступу. Студенти зможуть поліпшити свої програми, зробивши їх швидше, надійніше і безпечніше.
Системні виклики є основними будівельними блоками для операцій вищого рівня і тому вони низькорівневі за своєю природою. Це визначає використання мови програмування С: функції API були спроектовані для використання із С, і код, що пов'язує їх з мовами вищого рівня, також повинен бути написаний мовою С.
Системне програмування тримається на трьох наріжних каменях: системні виклики, бібліотека С компілятор С, тому у рамках даного курсу даються базові знання за найвідомішими стандартами POSIX, стандартами мови C, а також інтерфейсом прикладного програмування (API) UNIX-подібних операційних систем.
Для наведення прикладів стосовно генерації коду використовується мова програмування С.
1. Структура та обсяг дисципліни
Дисципліна «Системне програмування і операційні системи» викладається для студентів 2 курсу спеціальності 6.080402 «Інформаційні технології проектування» в обсязі 6 лекційних та 2 лабораторних робіт включно у 3 навчальному семестрі та 6 лекційних та 4 лабораторних робіт включно у 4 семестрі. В кожному семестрі виконується контрольна робота. Форма підсумкового контролю у 3 семестрі – залік, у 4 семестрі – екзамен.
2. Основи програмування на мові с
Мова С була створена в 1972 р. співробітником фірми Bell Laboratories Деннісом Рітчи (Dennis Ritchie), коли він і Кен Томпсон (Ken Thompson) займалися розробкою операційної системи UNIX. Мова С була створена як інструментальний засіб для розробки системного програмного забезпечення і прикладних програм.
Ми розглядатимемо процеси створення додатків на мові С і розроблених для ОС Linux. Linux - це популярна, безкоштовно поширювана версія операційної системи UNIX, яка може застосовуватися на різних платформах, включаючи IBM-сумісні комп'ютери і комп'ютери Macintosh. Оскільки об'єктом нашого обговорення є ОС Linux, а не сучасні засоби створення додатків, використовуватимемо безкоштовно поширюваний компілятор мови С під ім'ям gcc. Компілятори С не є частиною операційної системи, про їх установку потрібно подбати додатково.