
- •Анотація
- •Лабораторна робота № 1 Перенаправлення уведення-виведення в oc unix. Конвеєри
- •Лабораторна робота № 2 Командна мова ос unix shell
- •Лабораторна робота №3 Процеси в unix
- •Теоретичні відомості:
- •Команди управління процесами
- •Лабораторна робота № 4 Асинхронне видалення дочірніх процесів за допомогою сигналу sigchld. Потоки, що повертають значення
- •Лабораторна робота № 5 Розробка багатофайлових програм Використання утиліти make
- •Лабораторна робота № 6 Взаємодія процесів. Розподілювана пам’ять. Семафори
- •Лабораторна робота № 7 Взаємодія процесів. Програмні канали
- •Лабораторна робота № 8 Розробка графічного інтерфейсу за допомогою бібліотеки Qt3. Створення в kDevelop базової структури додатку
- •Література
Міністерство освіти і науки, молоді та спорту України
ОДЕСЬКА ДЕРЖАВНА АКАДЕМІЯ ХОЛОДУ
Швець Н.В.
системне програмне забезпечення
Посібник до виконання лабораторних робіт
Одеса 2011
Укладач: Швець Наталія Василівна, старший викладач кафедри Інформаційних технологій
Посібник розглянуто й рекомендовано до видання на засіданні кафедри Інформаційних технологій
Протокол № ___ від “___” ______________ 2011 р.
Завідувач кафедри ІТ, д.т.н., професор В. М. Плотніков
Затверджено методичною комісією Факультету інформаційних технологій
Протокол № ____ від “____” _____________ 2011 р.
Голова методичної комісії, к.т.н., доц. Ю.К.Корнієнко
.
Зміст
Анотація 5
Вступ 5
Лабораторна робота № 1 6
Перенаправлення уведення-виведення в OC UNIX. Конвеєри 6
Лабораторна робота № 2 9
Командна мова ОС UNIX SHELL 9
Лабораторна робота №3 15
Команди управління процесами 18
Лабораторна робота № 4 21
Асинхронне видалення дочірніх процесів за допомогою сигналу SIGCHLD. Потоки, що повертають значення 21
Лабораторна робота № 5 22
Розробка багатофайлових програм Використання утиліти make 22
Лабораторна робота № 6 25
Взаємодія процесів. Розподілювана пам’ять. Семафори 25
Лабораторна робота № 7 32
Взаємодія процесів. Програмні канали 32
Лабораторна робота № 8 34
Розробка графічного інтерфейсу за допомогою бібліотеки Qt3. Створення в KDevelop базової структури додатку 34
Література 36
Анотація
Посібник має метою забезпечити студентів методичними вказівками до виконання лабораторних робіт, які складають составну частину учбово-методичного комплексу з дисципліни «Системне програмне забезпечення». Дисципліна викладається на III курсі студентам напряму 0804 за спеціальностями 6.080401 «Інформаційні управляючі системи та технології» і 6.080402 «Інформаційні технології проектування» і сприяє підвищенню рівня знань і навчальних умінь студентів.
Вступ
Метою дисципліни є надання студентам систематизованого уявлення про принципи побудови, проектування и використання системного програмного забезпечення (СПЗ) для сучасних ПЕОМ та обчислювальних систем. У курсі викладаються основні принципи організації файлової системи, уведення-виведення, управління ресурсами і сінхронізацією процесів..
Завдання курсу - розглянути основні “активні” компоненти операційних систем: процеси і потоки, керування пам’яттю, файлові системи, засоби уведення-виведення.
Перелік тем лабораторних робіт, наданих у посібнику, базується на матеріалах учбової програми з дисципліни і відповідає виконанню умов щодо обсягу. Для наведення прикладів стосовно генерації коду використовується мова програмування С.
Виконання лабораторних робіт переслідує наступні цілі:
закріплення знань, які студенти придбали під час вивчення даної дисципліни;
придбання практичних навичок в розробці програм з використанням засобів взаємодії процесів, які надає ОС UINIX.
При виконанні лабораторних робіт студенти повинні:
знати:
основні теоретичні положення стосовно теми лабораторної роботи;
основи програмування мовою С.
вміти:
реалізувати поставленні завдання в операційному середовищі ОС Linux.
Лабораторна робота № 1 Перенаправлення уведення-виведення в oc unix. Конвеєри
Проведення заняття розраховано на 2 години
Мета роботи: отримати практичні навички по використанню можливостей введення-виведення і організації конвеєра.
Теоретичні відомості:
У ОС Linux існує три стандартних потоки:
• потік уведення – стандартне уведення (вхід) stdin здійснюється з клавіатури терміналу;
• потік виведення – стандартний вивод (вихід) stdout направлений на екран терміналу;
• потік стандартного протоколу (потік помилок) – стандартний файл діагностичних повідомлень stderr.
Перенаправлення потоків дозволяє змінити стандартне уведення-виведення і позначається таким чином:
< - зміна джерела стандартного введення;
> >> - зміна приймача стандартного виведення.
Команда, яка може працювати із стандартним входом і виходом, називається фільтром.
Наприклад:
$cat>filename
- це перенаправлення виведення програми cat у файл filename (якщо цей файл існує, то його колишній вміст буде загублено).
$cat>>filename
- додати вміст виведення програми cat до вмісту файлу filename.
$cat<filename
- сформувати стандартне введення програми cat з вмісту файлу filename.
Стандартні потоки мають фіксовану нумерацію:
• потік уведення – 0;
• потік виведення – 1;
• потік помилок – 2.
Ці номери дескрипторів можна використовувати в явному вигляді. Наприклад, запис
prog 1>file
еквівалентна запису
prog>file
Для того, щоб відрізнити ім'я потоку від імені файлу, перед номером потоку ставиться символ &.
prog >file 2> &1
Тут відбувається перенаправлення стандартного потоку виведення у файл file (>file). А крім того, повідомлення про помилки так само будуть перенаправлені в file: запис 2> &1 означає перенаправлення потоку помилок на стандартний потік виведення, який, у свою чергу, був перенаправлений у файл.
Аналіз команди здійснюється інтерпретатором справа наліво: спочатку відбувається злиття потоків (2> &1), а потім перенаправляється стандартний потік виведення (1) у файл file.
Засіб, об'єднуючий стандартний вихід однієї команди із стандартним входом іншої називається конвейєром (або каналом) і позначається вертикальною межею |.
Запуск процесів у вигляді
$ процесс_1| процесс_2| . | процесс_n
означає, що:
• стандартне виведення процесса_1 буде замкнуте на стандартне уведення процесса_2;
• стандартне виведення процесса_2 буде замкнуте на стандартне уведення процесса_3;
• і т.д.
При цьому спочатку створюється канал, а потім на виконання одночасно запускаються всі процеси, і загальний час їх виконання визначається повільнішим процесом.
Наприклад:
$ls|wc –l
Команда ls виводить на екран (стандартний потік виведення) список файлів поточного каталога, а команда wc –l рахує кількість рядків у вхідному потоці (у файлі, а якщо файл не зуказан – в стандартному вхідному потоці) .Таким чином, об'єднання цих двох команд програмним каналом дозволяє порахувати кількість файлів в поточному каталозі.
Ті ж дії можна організувати і так:
$ls>buffer
$wc –L<buffer
$rm –f buffer
Конвейєром можна об'єднувати і більше двох команд, коли всі вони, можливо окрім першої і останньої, фільтри.
Завдання 1: Використовуючи відповідні команди, отримати наступну інформацію:
Ім'я каталога, в якому знаходитеся в даний момент;
Хто працює в системі;
Поточні час і дату;
Відсоток зайнятості дискової пам'яті;
Завдання 2:
Створити календар на поточний день ;
Створити календар на рік і місяць вашого народження;
Об'єднати отримані файли і результат записати у файл.
Завдання 3:
У змісті поточного каталога пронумерувати рядки;
Відсортувати в зворотному порядку;
Переглянути і зберегти в результуючому файлі.
Завдання 4:
Продемонструвати перенаправлення потоку видачі діагностичних повідомлень у файл.
Рекомендації до виконання|:
Для роботи з вбудованим календарем можна використовувати команду: cal місяць рік За умовчанням береться поточний місяць і рік. Наприклад:
cal (швидкий перегляд календаря поточного місяця);
cal 2005 (виводить календар на 2005 рік);
cal 12 (виводить календар на грудень поточного року).
free виводить інформацію по пам'яті;
df –h
Виводить інформацію про вільне і використовуване місце на дисках.
Контрольні питання:
Які стандартні потоки підтримуються в UNIX?
Для чого використовується перенаправлення потоків, яким чином вказується в команді?
Що таке фільтр?
Як перенаправити повідомлення про помилку у файл?
Що таке конвейєр? Для чого він призначений?