Cc -o average main.с average.с

Лабораторна робота №1

Ознайомлення з операційною системою QNX RTP 6.3

Мета роботи: отримати загальні відомості про операційну систему

отримати практичні навики роботи з операційною системою QNX RTP 6.3

Операційна система (ОС) QNX RTP 6.3 є операційною системою реального часу. Система орієнтована на вбудоване устаткування (промислові контролери).

1. Завантаження операційної системи

Хід завантаження операційної системи відображається на екрані в текстовому режимі. Після закінчення завантаження перед користувачем з'являється графічний інтерфейс Photon.

Інтерфейс, що надається графічною оболонкою Photon, багато в чому схожий з інтерфейсом операційної системи Windows:

· запуск програм здійснюється по натисненню лівої кнопки миші

· виклик контекстного меню здійснюється по натисненню правої кнопки миші

· вікна програм мають схожу структуру і принципи управління, в точність співпадаючу з тими, які застосовуються в Windows

В лівому нижньому кутку екрану знаходиться кнопка Launch. Після натиснення на неї «випадає» меню, що містить основні пункти настройки системи і доступні до виконання програми.

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

Для редагування або створення файлів рекомендується застосовувати програму Editor, запустити яку можна клацанням лівої кнопки миші на відповідній кнопці панелі швидкого запуску.

Програма володіє зручним графічним інтерфейсом з можливістю форматування тексту. По можливостях ця програма близька до програми WordPad, що входить до складу Windows.

Як файловий браузера можна застосовувати програму File Manager, розташовану на панелі швидкого запуску. Програма має графічний звичний для користувачів Windows інтерфейс.

Переміщатися по структурі каталогів можна також за допомогою програми Terminal. Ця програма не володіє інтерфейсом, надаючи користувачу лише запрошення командного інтерпретатора. В той же час дана програма рекомендується для виконання компіляції програм, написаних в ході лабораторних робіт.

2. Поняття про файлову систему і огляд основних команд і утиліт системи QNX RTP 6.3

Файлова система є ієрархічною структурою з пойменованими вузлами. Кожний каталог містить імена файлів і каталогів нижнього рівня. На структуру файлу не накладається ніяких обмежень; кожний файл складається просто з послідовності символів Системі відомий формат файлів що містять виконувані програми (файли типу а.out).

Робота з файлами.

Повне (або складове) ім'я файлу записується у вигляді послідовності простих імен, розділених косими рисами. Складове ім'я /home/srb/mbox починається з каталога /, який називається кореневим каталогом, і містить каталог home. Каталог /homeмістить каталог srb, а усередині цього каталогу знаходиться файл mbox. В наведеному приклад є три каталоги: / /home і /home/srb кожний з яких, за виключенням /, міститься в попередньому (батьківському) каталозі. Довжина кожного з простих імен, розділених косими рисами, не може перевищувати 14 символів. Прості імена не повинні містити /і не слід починати з таких символів, як мінус, оскільки це може привести до неправильної інтерпретації опцій і імен файлів в командах.

Каталоги використовуються для об'єднання в групи файлів, що мають загального власника або зв'язаних загальною тематикою.

Спочатку адміністратор системи створює для кожного користувача реєстраційний каталог. Користувач rhm звичайно одержує каталог /home/rhm.

Кожний працюючий в системі користувач має поточний (робітник) каталог. Команда

Pwd -видає повне ім'я поточного каталогу. Відразу після входу в систему поточним стає реєстраційний каталог користувача.

Для завдання нового поточного каталогу використовується команда cd(змінити каталог). Імена файлів можна задавати відносно поточного каталогу. Наприклад, після виконання команди

сd /home/srb/unix

поточним каталогом стане каталог /home/srb/unix, і на файл /home/srb/unix/ch1, що знаходиться в цьому каталозі, можна буде посилатися, указуючи тільки ім'я сh1

Приклади:

cd - перехід в головний каталог

cd /home - перехід в каталог home

cd /home/rva - перехід в каталог rva

Команда cat (конкатенація) - одна з найпростіших команд копіювання файлів. Вона копіює вміст заданих файлів в стандартний файл висновку. За умовчанням, стандартний вивід відбувається на термінал, хоча його можна направити і на інший пристрій.

Команда catзвичайно використовується для висновку вмісту файлу на термінал. Так, команда

cat /etc/motdвиводить файл /etc/motd.

Для копіювання вмісту одного файлу в іншій звичайно використовується команда ср (копіювання). Вона має вигляд

Ср from to

Параметри from (звідки) і tо (куди), задаючі імена файлів, обов'язкові. Дві команди

Cаt file

ср file /dev/tty

еквівалентні, оскільки /dev/tty - це ім'я файлу, відповідного терміналу

Виконання команд срісаt можна використовувати для створення нових файлів. Файли можна також перейменовувати і знищувати.

Команда rm виключає ім'я файлу з каталогу і знищує вміст файлу. Наприклад, команда

rm junkзнищить файл junk в поточному каталозі.

Команда mv переміщає (або перейменовує) файли. На­приклад, команда

Mv oldname newname

перейменує файл oldname (старе ім'я) у файл newname (нове ім'я). Ім'я файлу змінюється, а вміст залишається.

Якщо файл з ім'ям newname вже існує, то команда mv замінить його. Якщо при цьому користувач не має повноважень на запис в цей файл, система попросить його підтвердити свій намір знищити файл і, якщо у відповідь буде введена буква у (тобто «так»), файл знищується. Команди rm і mv слідує використовувати обережно, оскільки вони можуть привести до втрати інформації.

Робота з каталогами

Файли можна створювати, знищувати і перейменовувати. Такі ж операції можуть застосовуватися і до каталогів. Проте для каталогів ці операції є привілейованими і можуть бути виконаний тільки за допомогою команд:

mkdir Створити каталог.

rmdir Знищити порожній каталог.

mv Перейменувати каталог.

Якщо поточним каталогом є /home/mdm, то команда

mkdir tmgстворить каталог /home/mdm/tmg, а команда

rmdir tmgзнищить його. Команда rmdir знищує тільки порожні каталоги, які до того ж не є поточними.

При створенні каталогу в ньому для зручності автоматично створюються два стандартні елементи з іменами « . » і « . . »

Ім'я « . » по­значае сам цей каталог, а ім'я « . . » - попередній каталог.

Якщо /home/mdm/tmg - поточний каталог, то після виконання команди сd .. новим поточним каталогом стане батьківський каталог /usr/mdm.

За допомогою команд mv і ср можна переносити або копіювати групи файлів в заданий каталог. Як команда

mv файл; файл ... каталог

так і ср файл; файл ... каталог

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

При перенесенні або копіюванні файлів в інший каталог слід бути особливо уважним і переконатися в тому, що останнім параметром дійсно є каталог, оскільки команда mv також і знищує файли. Наприклад, команди

Mv х d

Mv у d

Mv z d

перейменують файли х, у і z у файли d/х, d/у і d/z відповідно, якщо d - каталог. В іншому випадку файл х перейменовується в d, потім файл у перейменовується в d, затираючи при цьому попередній файл. Нарешті, файл z також буде перейменований в d.

Оболонка

Найпростіші команди складаються з послідовності слів, розділених пропусками. Першим словом є ім'я команди, яку потрібно виконати. Вся решта слів передається команді, що викликається, як параметри. Наприклад, команда

Ls -l

видає список імен файлів в поточному каталозі. Параметр -l (від слова long - довгий) означає, що команда ls повинна надрукувати для кожного файлу дату останнього обігу, розмір і статус. Імена файлів в списку упорядковуються за абеткою.

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

print file &

запускає команду друку print з параметром file (ім'я файлу) як фонову. Літера & є металітерой, интерпретируючою оболонкою, і не передається команді print як параметр. Для того, щоб дати можливість користувачу стежити за ходом виконання команди, оболонка після створення фонового процесу повідомляє його номер. Список активних в даний момент процесів можна отримати за допомогою команди рs.

Для кожного процесу в системі міститься набір дескрип­торів файлів з номерами 0, 1 .... які використовуються про­цесором і операційною системою у всіх операціях вводу-виводу. Файл з дескриптором 0 називається стандартним файлом введення, а файл з дескриптором 1 - стандартним файлом виводу. При виконанні більшості команд результати передаються в стандартний файл виводу, який спочатку (відразу після входу в систему) пов'язаний з терміналом. Є також стандартний файл діагностики, який звичайно використовується для виводу повідомлень про помилки. На час виконання команди стандартний файл виводу можна підмінити (перепризначувати), наприклад:

ls -l > файл

Запис > файл інтерпретується оболонкою і не передається команді ls як параметр. Якщо вказаний файл не існує, оболонка створює його. В іншому випадку початковий вміст цього файлу заміниться виводом команди ls. Для дозапису в кінець файлу використовується позначення >>, наприклад:

ls -l >> файл

Аналогічно стандартним файлом введення замість терміналу можна зробити звичайний файл, наприклад:

wc < файл

Команда wc друкує число літер, слів і рядків в стандартномуфайлі введення.

Транспортери і фільтри

Стандартний вивід однієї команди можна пов'язати із стандартним введенням іншої команди за допомогою транспортера - опе­ратора . Наприклад:

ls -l | wc

Дві команди, сполучені таким чином, утворюють конвейєр, дія якого еквівалентно:

ls -l > файл

wc <файл

за винятком того, що в цьому випадку не використовується проміжний файл. Натомість два процеси зв'язуються транспортером, який створюється шляхом звернення до системи. Транспортери дозволяють передавати дані тільки в одному на­прямку. Синхронізація здійснюється шляхом припинення виконання команди wc, коли нічого читати, і припинення виконання команди lsпри переповнюванні транспортера. синхронизацію здійснює операційна система, а не оболонка.

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

ls | grep old

роздрукує з виводу команди ls тільки ті рядки, які містять ланцюжок літер old (якщо такі є). Інший фільтр – це команда сортування sort. Наприклад

who | sort

роздрукує впорядкований за абеткою список користувачів, що працюють в даний момент в системі. Конвейєр може складатися більш ніж з двох команд. Наприклад

ls | grep old | wc -l

надрукує кількість файлів в поточному каталозі, імена ко­торых містять ланцюжок літер old.

Породження імен файлів

В багатьох командах параметрами є імена файлів. На­приклад, команда

ls -l main.cроздрукує інформацію про файл main.с.

Оболонка надає засоби для породження списку імен файлів по заданому зразку. Наприклад, команда

ls -l *.спороджує список параметрів, що містить всі імена файлів з поточного каталогу, що закінчуються на .с. Літера *є зразком, який зіставляється з будь-яким ланцюжком, вклю­чаючи і порожню. В загальному випадку зразки в командах задаються за допомогою наступних металітер:

* Зіставляється з будь-яким ланцюжком літер, включаючи і порожнію.

? Зіставляється з будь-якою одиночною літерою.

[. . .] Зіставляється з будь-якою з літер, укладених в дужки. Пара літер, розділених знаком мінус, задає діапазон літер.

Наприклад, зразку

[а - r]*відповідають всі імена з поточного каталогу, що починаються з однією з букв від а до r, а зразку

/home/fred/epns/?*відповідають всі імена з каталог /home/fred/epns/, що складаються хоча б з однієї літери. Якщо не виявиться жодного імені файлу, відповідного заданому зразку, як пара­метра передається сам цей зразок.

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

echo /home/fred/*/соге

шукає і видає імена всіх файлів соге в підкаталогах каталогу /home/fred/. (Команда есhо - це стандартна команда, яка виводить список своїх параметрів, розділених пропусками.)

Існує одне виключення із загальних правил для зразків. Символ « . » на початку імені файлу повинно указуватися явно. Тому команда

есhо *

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

есhо .*

роздрукує всі ті імена файлів з поточного каталогу, які починаються з крапки. Це дозволяє уникнути випадкового зіставлення з іменами « . » і « . . », позначаючими відповідно поточний і батьківський каталог. (Команда ls не виводить ін­формацію про файли . і .. .)

Слід бути обережним при використовуванні команди rm із зразками. Легко можна знищити більше файлів, ніж було задумане.

2.4. Зміна повноважень файлу

Повноваження файлу можуть бути змінений його власником за допомогою команди chmod. В ранніх версіях цієї команди повно­важення задавалися тільки в абсолютному вісімковому вигляді. Наприклад, в результаті виконання команди

chmod 751 runповноваження файлу run матимуть вигляд

Rwxr-x--x

тобто власник матиме всі права доступу, тоді як члени групи зможуть тільки читати і виконувати, а інші користувачі - тільки виконувати цей файл.

В команді chmod повноваження можуть задаватися як в абсолютному, так і у відносному вигляді. Приклади:

u - r Відмінити право на читання для власника файлу.

g + w Додати право на запис для членів групи.

о = хВстановити для інших користувачів право на виконання.

Щоб зробити файл run здійснимим для всіх користувачів, достатньо виконати команду

chmod +x run

Файл run в даному прикладі можна було б замінити списком файлів - тоді здійснимими стали б всі ці файли. Повноваження файлу встановлюються при створенні і згодом можуть бути змінений його власником.

2.5. Компіляція програм

Компіляція С-програм виконується за допомогою команди cc. Команда

cc average.с компілює програму average.с і розміщує готову програму в здійснимий файл а.out. Команда

Cc -о average average

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

cc -o average main.с average.с

Щоб не виконувати компіляцію обох файлів main.с і average.с при зміні в одній з них, можна ввести проміжний крок. Він полягає в збереженні об'єктних файлів main.о і average.о, отриманих в результаті виконання команди

Cc -с main.с average.с

Готову програму average у такому разі можна отримати, виконавши команду

Наши рекомендации