Похожие работы
|
Методичні вказівки до самостійної роботи студентів та виконання контрольної роботи - страница №1/6
![]() Трубіна, Наталія Федорівна. Методичні вказівки до самостійної роботи студентів та виконання контрольної роботи з дисципліни «Системне програмування» для студ. 3 курсу заоч. форми навчання «Комп’ютерна інженерія» / Н.Ф. Трубіна; ОНУ імені І.І. Мечникова, ІМЕМ, Кафедра математичного забезпечення комп'ютерних систем. – Одеса: Одеський нац. університет, 2010. – 78 с. –Бібліогр.: с. 57. МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
для студентів 3 курсу заочної форми навчання напрям підготовки – комп’ютерна інженерія Одеський національний університет імені І.І. Мечникова 2010 МЕТОДИЧНІ ВКАЗІВКИ до самостійної роботи студентів та виконанню контрольної роботи з дисципліни «Системне програмування» для студентів 3 курсу заочної форми навчання, напрям підготовки – комп’ютерна інженерія. Автор-укладач: Н.Ф. Трубіна, старший викладач кафедри математичного забезпечення комп'ютерних систем Рецензенти: Т.І. Петрушина, к.ф-м.н., завідувач кафедрою математичного забезпечення комп'ютерних систем Ю.Н. Крапівний, к.ф-м.н., доцент кафедри математичного забезпечення комп'ютерних систем Рекомендовано до видання Вченою Радою Інституту математики, економіки і механіки ОНУ імені І.І. Мечникова. Протокол № 1 від 9 жовтня 2009 року.
ПЕРЕДМОВА 5 1 ЗАГАЛЬНІ ВІДОМОСТІ ПРО ДИСЦИПЛІНУ 6 1.1 Мета дисципліни, її місце в навчальному процесі 6 1.2 Зміст дисципліни 7 1.3 Контролюючі заходи 8 2 ТЕОРЕТИЧНІ МАТЕРІАЛИ 9 2.1 Програмний інтерфейс UNIX 9 2.1.1 Системні виклики 9 2.1.2 Основні бібліотеки UNIX й їхні заголовні файли 9 2.1.3 Помилки системних викликів 12 2.1.4 Питання для самоперевірки 14
2.2.1 Список аргументів 14 2.2.2 Змінні оточення 15 2.2.3 Коди завершення програми 17 2.2.4 Правила формування і засоби розбору командних рядків 17 2.2.5 Питання для самоперевірки 18 2.3 Компілятори GCC 18 2.3.1 Робота з компілятором 18 2.3.2 Питання для самоперевірки 20
2.4.1 Основні поняття 21 2.4.2 Системні виклики. read і write 22 2.4.3 Відкриття, створення, закриття і знищення файлів 23 2.4.4 Довільний доступ - lseek 24 2.4.5 Питання для самоперевірки 25 2.5 Доступ до каталогів 26 2.5.1 Функції для роботи з каталогами 26 2.5.2 Питання для самоперевірки 27
2.6.1 Атрибути процесу 27 2.6.2 Створення процесу 29 2.6.3 Виконання файлів 31 2.6.4 Завершення процесу 32 2.6.5 Питання для самоперевірки 32 2.7 Сигнали 33 2.7.1 Типи сигналів 34 2.7.2 Обробка сигналів 35 2.7.3 Питання для самоперевірки 39 3 ПРИКЛАДИ РОЗВ’ЯЗАННЯ ЗАВДАНЬ 40 4 ВАРІАНТИ ЗАВДАНЬ 47 4.1 Завдання 1 47 4.2 Завдання 2 48 4.3 Завдання 3 49 4.4 Завдання 4 51 4.5 Завдання 5 52 5 ОРГАНІЗАЦІЯ КОНТРОЛЮ ЗНАНЬ ТА ВМІНЬ СТУДЕНТІВ 54 5.1 Система контролю знань та вмінь студентів 54 5.2 Форми контролю знань та вмінь студентів 55 ЛІТЕРАТУРА 56 ДОДАТОК А. СПИСОК ФУНКЦІЙ ПО КАТЕГОРІЯХ 57 Доступ до змінних оточення 57 Файлові атрибути 58 Файлове введення-виведення 60 Каталоги 63 Управління каталогами 64 Атрибути процесів 65 Управління процесами 66 Атрибути процесів 70 Ресурси процесів 71 Сигнали 72 Маски сигналів 74 ДОДАТОК Б. КОДИ ПОМИЛОК СИСТЕМНИХ ВИКЛИКІВ 76
ПЕРЕДМОВАМетодичні вказівки до самостійної роботи студента та виконанню контрольної роботи з дисципліни «Системне програмування» призначені для студентів 3 курсу напряму підготовки – комп’ютерна інженерія. Мета методичних вказівок – поглиблене вивчення та закріплення як теоретичних знань, так і практичних навичок в створенні та використанні компонент системного програмного забезпечення. Для підготовки дисципліни використана велика низка новітніх наукових та навчально-методичних робіт як зарубіжних так і вітчизняних фахівців у галузі системного програмування, тощо. В методичних вказівках розглядаються питання, які відповідають навчальній програмі дисципліни. Методичні вказівки містять основні відомості про навчальну дисципліну, короткий огляд теоретичного матеріалу, необхідного для виконання контрольної роботи, приклади розв’язання завдань та завдання до контрольної роботи. У додатках наведені прототипи системних викликів та коди помилок, що можуть виникати при їх виконанні. 1ЗАГАЛЬНІ ВІДОМОСТІ ПРО ДИСЦИПЛІНУ1.1Мета дисципліни, її місце в навчальному процесіНавчальна дисципліна „Системне програмування” належить до циклу підготовки бакалаврів з напряму «Комп’ютерна інженерія » 6.0904. Курс “Системне програмування” орієнтований на вивчення основних принципів створення системних програм. Мета курсу — отримання як теоретичних знань, так и практичних навичок в створенні та використанні компонент системного програмного забезпечення, що повинне забезпечити вміння оперувати з простими і складними структурами даних,користуватися стандартними системними засобами вводу та виводу, працювати з дисковими файлами, розробляти драйвери, управляти розподілом пам’яті, файлами, процесами, здійснювати захист інформації від несанкціонованого доступу. Загальний обсяг навчального часу, що припадає на вивчення дисципліни, дорівнює 122 години, з них: лекцій - 10, лабораторних занять – 6, самостійної роботи - 106. Дисципліна являє собою вступ до тематики створення програмного забезпечення. У дисципліні висвітлюються питання, зв'язані з загальною архітектурою системи й описом її різних компонентів як блоків єдиної конструкції. Лабораторні роботи виконуються в середовищі операційної системи UNIX, яка застосовується сьогодні практично в усіх сферах інформаційних систем. Студенти вивчать організацію файлової системи ОС UNIX і інформаційні структури й алгоритми, що використовуються файловою системою. Велика увага приділяється управлінню процесами, подаються загальні поняття системного програмування, поняття системного виклику як базового інтерфейсу з ядром операційної системи, обробку сигналів, принципи та методи побудови обробляючих програм в операційних системах, принципи визначення ефективності використання ЕОМ та побудови комфортного середовища для розробника системного програмного забезпечення. Курс „Системне програмування” є першим в логічній послідовності дисциплін, що присвячені програмному забезпеченню сучасних комп’ютерних систем, йому передує вивчення таких нормативних дисциплін як „Архітектура ЕОМ”, „Програмування”. 1.2Зміст дисципліни
1.3Контролюючі заходиВивчення дисципліни „Системне програмування” для студентів 6-го курсу заочної форми навчання складається з лекційних та лабораторних занять, самостійної роботи студента по засвоєнню теоретичного курсу, виконання контрольної роботи. Контроль самостійної роботи студента заочної форми навчання здійснюється шляхом перевірки контрольних робіт, опитів на лабораторних заняттях та на підсумковому іспиті. 2ТЕОРЕТИЧНІ МАТЕРІАЛИ2.1Програмний інтерфейс UNIX2.1.1Системні викликиВсі версії ОС UNIX надають строго обмежений набір входів у ядро операційної системи, через які прикладні програми мають можливість користуватися базовими послугами, що надаються ОС UNIX. Ці точки входу одержали назву системних викликів (system calls). Системний виклик, таким чином, визначає функцію, виконувану ядром ОС від імені процесу, і є інтерфейсом найнижчого рівня взаємодії прикладних програм з ядром. Системні виклики документовані в розділі 2 електронного довідника. (man 2 kill). У середовищі програмування UNIX вони визначаються як функції C, незалежно від фактичної реалізації виклику функції ядра ОС. В UNIX використаний підхід, при якому кожен системний виклик має функцію (функції) з тим же ім'ям, що зберігається в бібліотеці мови C. Ці функції виконують необхідне перетворення аргументів і викликають необхідну процедуру ядра. У цьому випадку бібліотечний код виконує тільки роль оболонки, у той час як фактичні команди, розташовані в ядрі ОС. Крім системних викликів програмістові пропонується великий набір функцій загального призначення. Вони не є точками входу в ядро ОС, хоча в ході виконання багато хто з них (але не все) виконують системні виклики. Ці функції зберігаються в системній бібліотеці С і поряд із системними викликами становлять середовище програмування ОС UNIX (документовані в розділі 2 електронного довідника). Прототипи необхідних функцій наведені у додатку А. 2.1.2Основні бібліотеки UNIX й їхні заголовні файлиВикористання системних функцій звичайно вимагає включення в текст програми файлів заголовків, що містять визначення функцій. Більшість системних файлів заголовків розташовані в каталогах /usr/include або /usr/include/sys. Файли заголовків включаються в програму за допомогою директиви #include. При цьому, якщо ім'я файлу укладене в кутові дужки, це означає, що пошук файлу буде здійснюватися в загальноприйнятих каталогах зберігання файлів заголовків. Якщо ж ім'я файлу заголовка укладено в лапки, то використається явно зазначене або відносне ім'я файлу. Середовище програмування UNIX визначається декількома стандартами й може незначно розрізнятися для різних версій системи. Зокрема стандарти ANSI З, POSIX.1 й XPG4 визначають назви й призначення файлів заголовків, наведених у таблиці 1. Таблиця 1 - Стандартні файли заголовків
2.1.3Помилки системних викликівВикористовуючи системні виклики для доступу до ресурсів, здійснення операцій введення-виведення або інших цілей, потрібно розуміти не тільки те, що саме відбувається при успішному завершенні виклику, але також при яких обставинах він може завершитися не успішно. Збої системних викликів відбуваються в найрізноманітніших ситуаціях.
У добре написаній програмі, що часто звертається до системних викликів, більша частина коду присвячена виявленню й обробці помилок, а не рішенню основного завдання. Більшість системних викликів у випадку збою повертає значення -1. (Іноді використаються інші угоди. Наприклад, функція malloc() при виникненні помилки повертає нульовий покажчик.) Зазвичай цієї інформації досить для того, щоб вирішити, чи варто продовжувати виконання програми. Але для більш спеціалізованої обробки помилок необхідні додаткові відомості. Практично всі системні виклики зберігають у спеціальної змінної errno розширену інформацію про помилку, що відбулася. У цю змінну записується число, що ідентифікує помилку. Оскільки всі системні виклики працюють із однією й тією ж змінною, необхідно відразу ж після завершення функції скопіювати значення змінної в інше місце. Змінна errno модифікується після кожного системного виклику. З метою забезпечення безпечної роботи потоків змінна errno реалізована у вигляді макросу, але до неї можна звертатися як до глобальної змінної. Коди помилок є цілими числами. Можливі значення задаються макроконстантами препроцесора, які, за існуючою згодою, записуються прописними буквами й починаються з літери "E", наприклад EACCES й EINVAL. При роботі зі значеннями змінної errno варто завжди використовувати макроконстанти, а не дійсні числові значення. Всі ці константи визначені у файлі У стандартній бібліотеці мови С є зручна функція strerror(), що повертає строковий еквівалент коду помилки. Ці рядки можна включати в повідомлення про помилки. Оголошення функції перебуває у файлі #include char *strerror(int errnum); Є також функція perror() (оголошена у файлі #include void perror(const char *s); У наступному фрагменті програми робиться спроба відкрити файл. Якщо це не виходить, виводиться повідомлення про помилку й програма завершує свою роботу. fd = open("inputfile.txt", O_RDONLY); if (fd == -1) { /* Відкрити файл не вдалося. Виведення повідомлення про помилку та завершення роботи. */ fprintf (stderr, "error opening file: %s\n", strerror(errno)); exit (1); } Залежно від особливостей програми й використовуваного системного виклику конкретні дії, що вживають у випадку помилки, можуть бути різними: висновок повідомлення про помилку, скасування операції, аварійне завершення програми, повторне виконання й навіть ігнорування помилки. Проте, важливо включити в програму код, що обробляє всі можливі варіанти помилок. 2.1.4Питання для самоперевірки
|
izumzum.ru |