Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PR_СП_лекции_укр.doc
Скачиваний:
6
Добавлен:
22.04.2019
Размер:
697.34 Кб
Скачать

Міністерство освіти і науки України

ОДЕСЬКА ДЕРЖАВНА АКАДЕМІЯ ХОЛОДУ

Жуковецька С.Л.

CИСТЕМНЕ

ПРОГРАМУВАННЯ

Навчальний посібник

Одеса 2008

Жуковецька С.Л. Системне програмування: навчальний посібник. Одеська державна академія холоду, 2008. – 97 с.

Посібник призначений для студентів, що навчаються за спеціальностями “Компьютерні системи та мережі” та «Спеціалізовані комп’ютерні системи».

Посібник містить теоретичні основи системного програмування в ОС UNIX. Розглянути питання маніпулювання файловою системою, процесами, взаємодія процесів, використання командного інтерпретатора.

Рецензент: Шпінарьова І.М., к. т. н., доцент кафедри МОКС ОНУ

ОДАХ, 2008

Анотація

Курс “Системне програмування” орієнтований на вивчення основних принципів створення системних програм. Завданням курсу є одержання теоретичних знань і практичних навичок у створенні й використанні компонент системного програмного забезпечення. Результатом вивчення курсу повинне бути вміння оперувати із простими й складними структурами даних, користуватися стандартними системними засобами введення й висновку, працювати з дисковими файлами, розробляти драйвери, управляти розподілом пам'яті, файлами, процесами, здійснювати захист інформації від несанкціонованого доступу.

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

У рамках даного курсу даються базові знання за найвідомішими стандартами POSIX, стандартам мови C, а також інтерфейсам прикладного програмування (API) UNIX-подібних систем. Приділяється увага прикладним інструментам розроблювача й базових методів керування програмним проектом. Окреме місце приділяється прийомам і методам міжпроцесної взаємодії, у тому числі й у розподілених структурах - мережах ЕОМ, а так само методам створення розподіленого програмного забезпечення.

Зміст

ОДЕСЬКА ДЕРЖАВНА АКАДЕМІЯ ХОЛОДУ 1

Навчальний посібник 1

Анотація 4

Зміст 5

Вступ 7

1 Середовище програмування ОС UNIX 9

1.1 Структура ОС UNIX 9

1.2 Створення програми 11

1.3 Формати об'єктних файлів 14

2 Використання файлової системи UNIX 22

2.1 Основні поняття 22

2.1.1 Типи та іменування файлів 22

2.1.2 Права доступу до файлів 23

2.1.3 Cистемные структури керування файлами 25

2.1.4 Системні виклики роботи з файлами 30

2.2 Створення та відкриття файлів 31

2.2.1 Системний виклик open 31

2.2.2 Системний виклик create 37

2.2.3 Системний виклик close 37

2.3 Читання та зипис в файл 38

2.3.1 Системний виклик read 38

2.3.2 Системний виклик write 39

2.4 Позіціонування у файлі 41

2.4.1 Системний виклик lseek 41

2.4.2 Системні виклики pread і pwrite 44

2.4.3 Системні виклики readv і writev 45

2.5 Контрольні операції над файлами 46

2.5.1 Системні виклики stat, fstat і lstat 46

2.5.2 Контроль прав доступу до файлу 52

2.5.3 Функція fcntl 54

2.5.4 Системні виклики truncate і ftruncate 59

2.6 Управління каталогами 59

2.6.1 Створення і видалення 59

2.6.2 Читання каталога 60

2.6.3 Зміна каталога 63

2.7 Управління посиланнями 64

2.7.1 Управління жорсткими посиланнями 64

2.7.2 Управління символічними посиланнями 65

2.7.3 Перейменування файлів і каталогів 67

3 Керування процесами ОС UNIX 70

3.1 Процеси ОС UNIX 70

3.2 Сисвизови створення процесів 70

3.2.1 fork(2) 71

3.2.2 Еxec(2) 73

3.3 Завершення процесу 76

3.4 Взаємодія процесів в ОС UNIX 77

3.5 Сигнали 79

3.5.1 Поняття сигналу 79

3.5.2 Розробка оброблювачів сигналів 81

3.5.3 Генерація сигналів 84

3.5.4 Посилка сигналів іншим процесам 84

3.5.5 Блокування сигналів 86

3.5.6 Очікування сигналу 89

3.6 Трасування процесу. 90

3.7 Канали й FIFO-Файли 91

3.7.1 Поняття 91

3.7.2 Створення каналу 91

3.7.3 Створення FIFO-Файлів 93

3.8 Семафори 94

3.9 Повідомлення. 95

3.10 Поділювана пам'ять. 96

Література 98

Навчальний посібник 99

Вступ

Системне програмування (або програмування систем) - рід діяльності, що полягає в роботі над системним програмним забезпеченням.

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

Можна виділити кілька напрямків роботи системних програмістів.

  • розробка мов програмування й трансляторів

  • створення операційних систем

  • розробкою протоколів.

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

Робота системного програміста має такі характерні риси:

  • програміст повинен ураховувати специфіку апаратної частини й інші властивості системи, у якій функціонує програма,

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

  • дозволяє функціонування в оточенні з обмеженим набором системних ресурсів

  • працює максимально ефективно й має мінімальне запізнювання за часом завершення

  • має маленьку бібліотеку часу виконання (RTL) або не має взагалі її

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

  • дозволяє робити ассемблерні вставки в код

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

  • для системного програмування доступний обмежений набір засобів. Використання автоматичного складання сміття досить рідке явище. Бібліотека часу виконання, при її наявності, часто менш здатна й робить меншу кількість перевірок.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]