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

Файловий простір qnx

У QNX облік файлів організований у вигляді деревовидної структури (дерева), яку називають файловим простором. Коренем цього дерева є кореневий каталог, який має ім'я </>. Все доступне користувачам файловий простір об'єднує в єдине дерево каталогів, коренем якого є каталог з ім'ям </>. Тому повне (абсолютне) ім'я будь-якого файлу починається з </>. QNX в своєму арсеналі має засоби, що дозволяють об'єднувати різні файлові системи, що знаходяться на різних пристроях в єдиний файловий простір. Тому файловий простір в загальному випадку не є однорідним. Єдине дерево файлового простору, таке, яким його бачить користувач системи, може будуватися з окремих файлових систем в загальному випадку різних типів, які можуть розташовуватися на різних пристроях і мати різну внутрішню організацію.

Для кожного процесу ОС веде два атрибути, пов'язаних з файловою системою - атрибут, який вказує на каталог, який розглядається для процесу в якості кореневого, і атрибут, який вказує на каталог, який розглядається для процесу в якості поточного робочого. У зв'язку з цим процес може адресуватися до файлу по імені або в абсолютному, або у відносному форматі. Назва файлу складається з послідовності компонентів - локальних імен, розділених символами '/'. Каталог, що містить локальне ім'я, вважається батьківським каталогом цього імені.Послідовність імен каталогів, що передує останньому локальному імені в імені файлу, вважається префіксом імені файлу. Абсолютна ім'я файлу починається із символу "/", що позначає кореневий каталог. Наприклад, /user/bin/sh є абсолютним ім'ям файлу sh, а /user/bin/- його префікс. Якщо ім'я файлу не починається з символу '/', то воно означає шлях у файловій системі від поточного каталогу процесу до зазначеного файлу. Таке ім'я вважається відносним. Наприклад, вказавши ім'я файлу як mydir/test1.c, слід вважати, що в поточному каталозі процесу присутній каталог з ім'ям MyDir.

Базова структура файлового простору qnx

Спочатку файловий простір QNX не є порожнім (що складається з одного кореневого каталогу файлової системи QNX з ім'ям /) Файлова система QNX має базову структуру системних каталогів і файлів, що забезпечує роботу ОС і її адміністрування. Порушення цієї структури може привести до непрацездатності системи або окремих її компонентів. Типова базова структура файлової системи QNX включає в себе наступні каталоги:

Кореневий каталог

Кореневий каталог </> є основою файлової системи. Всі інші каталоги і файли розташовуються в структурі кореневого каталогу незалежно від їх фізичного місцезнаходження. Розглянемо основні системні каталоги, до яких належать такі каталоги:

/bin

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

/dev

Каталог /dev містить файли пристроїв. Каталог може містити підкаталоги, що групують файли пристроїв одного типу.

/etc

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

/lib

В каталозі /lib знаходяться бібліотечні файли мови С.

/root

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

/fs

Це стандартний каталог для монтування файлових систем фізичних пристроїв до структури кореневого каталогу для отримання єдиного дерева логічної файлової системи.

/home

Каталог спільного використання для розміщення домашніх каталогів користувачів при їх реєстрації в системі.

/usr

В цьому каталозі знаходяться підкаталоги різних сервісних підсистем, виконувані файли утиліт QNX, файли заголовків мови C і т.д.

/var

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

/tmp

Каталог зберігання тимчасових файлів, необхідних для роботи різних підсистем QNX, а також користувачів системи.

/X86

У структурі цього каталогу містяться засоби, що забезпечують розробку програм на мові С для виконання на базі платформи Intel. У ньому, зокрема, знаходиться утиліта-компілятор gcc.

Монтування файлових систем

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

При завантаженні QNX автоматично підключає файлові системи, що знаходяться в розділах НЖМД, поміщаючи їх в каталог /fs у вигляді підкаталогів з автоматично формованими іменами. Вхід в такий підкаталог призводить до потрапляння в корінь відповідної файлової системи. Однак перш ніж зможе відбутися робота з файлами на пристроях з мобільними носіями (CD-ROM, НГМД, флеш-пам'ять і т.д.), файлова система відповідного пристрою зі встановленим на ньому мобільним носієм повинна бути "вручну" підключена до дерева файлового простору QNX. Процедура підключення називається монтування файлової системи пристрою.

Монтування проводиться командою <mount>, де вказується тип файлової системи (зі списку типів файлових систем, відомих QNX: душ, QNX4, CD і т.д.), повне ім'я файлу пристрою (зареєстрованого в QNX) та повне ім'я формованого каталогу, асоційованого з монтує файлової системою. Наприклад, для монтування файлової системи типу DOS на НГМД (йому відповідає в QNX файл пристрої з ім'ям - /dev/fd0) необхідно виконати у вікні терміналу наступну команду shell:

# mount –t dos /dev/fd0 <повне ім'я каталогу>

Якщо необхідність в мобільному носії відпала, його можна демонтувати і відповідний каталог у файловому просторі буде анульовано. Наприклад, для демонтування НГМД потрібно виконати команду

# umount /dev/fd0

або

# umount /home/A:

Командний рядок

З командним інтерпретатором можна працювати як в "чорному екрані", так і в графічному середовищі. Для використання командного інтерпретатора в графічній оболонці Photon потрібно запустити псевдотермінал pterm. Командний інтерпретатор виведе на екран запрошення (для "простого" користувача - $, для суперкористувача - #). У відповідь на це запрошення можна надрукувати команду і натиснути клавішу Enter. Інтерпретатор виконає команду (або повідомить про помилку, якщо йому це не вдалося) і знову виведе запрошення для введення наступної команди. І так до тих пір, поки не отримає команду exit(вихід).

Командний інтерпретатор - це програма. Є кілька програм такого призначення:

□ Bourne Shell (sh) - інтерпретатор, стандартизований в рамках POSIX 1003.2;

□ Korn Shell (ksh) - розширення sh;

□ Bourne Again Shell (bash) - модернізований інтерпретатор sh;

□ C-Shell (csh) - інтерпретатор з "Сі"-подібним синтаксисом сценаріїв.

В ОС Linux, наприклад, інтерпретатором за умовчанням є bash, в QNX - ksh.Оскільки KSH повністю реалізує функціональні можливості sh, заради економії місця, з одного боку, і за традицією, з іншого, в QNX файл /bin/sh- символічне посилання на /bin/ksh. В одній системі можна одночасно використовувати будь-які інтерпретатори.

Буває, що використовувати інтерпретатор ksh в системах з обмеженими ресурсами - "дороге" задоволення. Тому в складі QNX є і "урізані" інтерпретатори:

esh - вбудований командний інтерпретатор (Embedded Shell). Надає множину функціональних можливостей ksh, при запуску виконує прості команди з файлу /etc/esh. Цей інтерпретатор не дозволяє писати програми з умовними операторами і т. п.

uesh-малий вбудований інтерпретатор (Micro-embedded Shell),отриманий в результаті урізання esh;

fesh, "жирний" вбудовується інтерпретатор (Fat embedded shell). На противагу uesh, fesh є розширенням esh. Цей варіант shell з'явився відносно недавно через те, що апаратура сучасних вбудованих систем досить продуктивна, щоб не використовувати настільки "кволі" інтерпретатори, як esh і uesh.

Команди командної стрічки

Подивимося, в якому місці файлової системи ми знаходимося, т. е. введемо команду PWD у відповідь на запрошення # і натиснемо клавішу <Enter>:

# pwd /root

У відповідь на екрані з'явиться ім'я каталогу, в якому він знаходиться (/root).

Файлова система операційних систем сімейства QNX має загальноприйняту для UNIX-подібних систем деревоподібну структуру. Коренем цього дерева є каталог, що позначається символом / (слеш) і називається"root".

Шляхове ім'я - це повне ім'я каталогу або файлу, однозначно вказує місце каталогу (файлу) в дереві файлової системи починаючи від каталогу "root". Ім'я можна вказувати і відносне, тобто щодо поточного каталогу. Якщо ім'я починається не з /, то Neutrino вважає, що зазначено відносне ім'я. Це означає, що якщо б ми в попередньому прикладі ввели таку команду cd tmp то операційна система вирішила б, що ми хочемо перейти до каталогу /root/ tmp.

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

Можна створювати свої каталоги, наприклад, створимо каталог /tmp/myfolder. Якщо ми знаходимося в каталозі /tmp, то досить вказати відносний шлях: mkdir myfolder

Значення всіх змінних оточення можна подивитися за допомогою команди set без аргументів.

Тепер створимо в новому каталозі файл MyFile. З каталогу /tmp це можна зробити так:

touch myfolder/myfile або виконати дві команди: cd myfolder touch myfile

Подивитися на вміст каталогу можна за допомогою команди ls,наприклад для перегляду каталогу /usr/bin потрібно виконати команду ls /usr/bin

Команди для роботи з каталогами та файлами

$ pwd - вивiд повного iменi каталога;

$ ls - вивiд бiжучого каталога;

$ ls -al - a(all) - всi файли та каталоги; - l(long) - повна iнформацiя;

$ ls / - вивiд кореневого каталога;

$ ls /dev - вивiд каталога драйверiв;

$ ls /users/user1 - вивiд каталога користувача 1;

$ cd /dev - (change directory) - перехiд у каталог dev;

$ cd - повернення до власного (home) каталога;

[$ cd;] $ mkdir pc pf - створення пiдкаталогiв pc та pf у власному каталозi;

$ cat /users/user1/file1 - вивiд файла file1;

$ cat file1 - вивiд файла file1 з власного каталога;

$ tail /file1 - вивiд кiнця файлу file1(10 останнiх стрiчок);

$ tail -7 /file1 - вивiд останнiх 7 стрiчок файлу file1;

$ tail +5 /file1 - вивiд решти стрiчок файлу file1, починаючи з п'ятої;

$ file /file1 - вивiд типу файлу file1;

$ cp [/users/user1/]prog1 [/users/user1/]prog2 - копiювання файлу prog1 в prog2;

$ mv prog1 user2/prog1 - перенос файла prog1 з бiжучого каталога в каталог user2 без перейменування;

$ mv prog1 prog2 - перейменування файла prog1 в prog2;

$ rm [-i] prog1 - видалення файла prog1 (-i -запит пiдтвердження);

$ rmdir user1 - видалення порожнього каталога user1;

Встановлення прав доступу до файлiв та каталогiв

Встановлено три категорiї користувачiв файлами та каталогами:

- власник (user - u);

- користувачi з групи власника (group - g);

- всi iншi (other - o).

Встановлено три рiвнi доступу до файлiв та каталогiв:

- тiльки читання файла чи каталога (read - r);

- читання та запис (write - w);

- виконання файла як команди (execute -x).

Встановленi три операцiї змiни режиму доступу:

- призначити (=);

- дозволити (+);

- заборонити (-).

Режим доступу встановлюється по категорiях користувачiв в такому порядку: власник- група-решта. Наприклад: власник - повний доступ, група - тiльки читання та виконання, iншi- тiльки читання.

$ chmod <режим> <файли> - встановлення режиму доступу;

$ chmod rwxr----- prog1 prog2;

$chmod u-w,g+x,o=r prog1 prog2 - змiна режиму доступу.