Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MetLab_SPO_2011.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
651.26 Кб
Скачать

Міністерство освіти і науки, молоді та спорту України

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

Швець Н.В.

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

Посібник до виконання лабораторних робіт

Одеса 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

Виводить інформацію про вільне і використовуване місце на дисках.

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

  1. Які стандартні потоки підтримуються в UNIX?

  2. Для чого використовується перенаправлення потоків, яким чином вказується в команді?

  3. Що таке фільтр?

  4. Як перенаправити повідомлення про помилку у файл?

  5. Що таке конвейєр? Для чого він призначений?

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