Спостереження за ресурсами, користувачами ОС UNIX.
Передача повідомлень. Управління ресурсами. H2>
Лабораторна робота № 3 p>
Виконали студенти 1 курсу групи ПІЕ-02-1 Ехлаков
Олег і Черепнина Василь p>
Липецький державний педагогічний університет p>
Липецьк 2003 p>
Користувач h2>
З
самого початку ОС UNIX замишлялася як інтерактивна система. Іншими словами,
UNIX призначений для термінальної роботи. Щоб почати працювати, людина
повинен "увійти" в систему, ввівши з вільного терміналу своє облікове
ім'я (account name) і, можливо, пароль (password). Людина, зареєстрований
в облікових файлах системи, і, отже, має облікове ім'я, називається
зареєстрованим користувачем системи. Реєстрацію нових користувачів
зазвичай виконує адміністратор системи. Користувач не може змінити своє
облікове ім'я, але може встановити та/або змінити свій пароль. Паролі зберігаються в
окремому файлі у закодованому вигляді. Не забувайте свій пароль, знову дізнатися
його не допоможе навіть адміністратор! p>
Всі
користувачі ОС UNIX явно чи неявно працюють з файлами. Файлова система ОС
UNIX має деревовидну структуру. Проміжними вузлами дерева є каталоги
з посиланнями на інші каталоги або файли, а листя дерева відповідають файлам
або порожнім каталогам. Кожному зареєстрованому користувачеві відповідає
деякий каталог файлової системи, який називається "домашнім"
(home) каталогом користувача. При вході в систему користувач одержує
необмежений доступ до свого домашнього каталогу і всіх каталогів і файлів,
що містяться в ньому. Користувач може створювати, видаляти і модифікувати
каталоги і файли, що містяться в домашньому каталозі. Потенційно можливий
доступ і до всіх інших файлів, однак він може бути обмежений, якщо
користувач не має достатніх привілеїв. p>
Інтерфейс користувача h2>
Традиційний
спосіб взаємодії користувача з системою UNIX грунтується на
використанні командних мов (щоправда, в даний час все більше
поширення набувають графічні інтерфейси). Після входу користувача в
систему для нього запускається один з командних інтерпретаторів (залежно
від параметрів, які зберігаються у файлі/etc/passwd). Зазвичай в системі
підтримується декілька командних інтерпретаторів з схожими, але
які відрізняються своїми можливостями командними мовами. Загальна назва для
будь-якого командного інтерпретатора ОС UNIX - shell (оболонка), оскільки будь-який
інтерпретатор представляє зовнішнє оточення ядра системи. p>
Викликаний
командний інтерпретатор видає запрошення на введення користувачем командного
рядка, який може містити просту команду, конвеєр команд або
послідовність команд. Після виконання черговий командного рядка і видачі
на екран терміналу або у файл відповідних результатів, shell знову видає
запрошення на введення командного рядка, і так до тих пір, поки користувач не
завершить свій сеанс роботи шляхом введення команди logout або натисканням комбінації
клавіш Ctrl-d. p>
Командні
мови, що використовуються в ОС UNIX, достатньо прості, щоб нові користувачі
могли швидко почати працювати, і досить потужні, щоб можна було використовувати
їх для написання складних програм. Остання можливість спирається на механізм
командних файлів (shell scripts), які можуть містити довільні
послідовності командних рядків. У назві командного файлу замість
чергової команди інтерпретатор читає файл рядок за рядком і послідовно
інтерпретує команди. p>
Привілейований користувач h2>
Ядро
ОС UNIX ідентифікує кожного користувача за його ідентифікатором (UID - User
Identifier), унікальному цілого значень, що присвоюються користувачеві при
реєстрації в системі. Крім того, кожен користувач відноситься до деякої
групі користувачів, яка також ідентифікується деяким цілим значенням
(GID - Group IDentifier). Значення UID і GID для кожного зареєстрованого
користувача зберігаються в облікових файлах системи і приписуються процесу, у
якому виконується командний інтерпретатор, запущений при вході користувача
в систему. Ці значення успадковуються кожним новим процесом, запущеним від імені
даного користувача, і використовуються ядром системи для контролю правомощності
доступу до файлів, виконання програм і т.д. p>
Зрозуміло,
що адміністратор системи, який, природно, теж є
зареєстрованим користувачем, повинен володіти великими можливостями, ніж
звичайні користувачі. В ОС UNIX це завдання вирішується шляхом виділення одного
значення UID (нульового). Користувач з таким UID називається суперкористувача
(superuser) або root. Він має необмежені права на доступ до будь-якого файлу і
на виконання будь-якої програми. Крім того, такий користувач має можливість
повного контролю над системою. p>
Ще
однією відмінністю суперкористувача від звичайного користувача ОС UNIX є те,
що на суперкористувача не поширюються обмеження на використовувані
ресурси. Звичайних Для користувачів встановлюються такі обмеження як
максимальний розмір файлу, максимальне число сегментів розділяється пам'яті,
Ви вичерпали простір на диску і т.д. Суперкористувач може
змінювати ці обмеження для інших користувачів, але на нього вони не діють.
p>
Програми h2>
ОС
UNIX одночасно є операційної середовищем використання існуючих
прикладних програм і середовищем розробки нових програм. Нові програми можуть
писатися на різних мовах (Фортран, Паскаль, Модула, Ада та ін.) Однак
стандартною мовою програмування в середовищі ОС UNIX є мова Сі (який в
Останнім часом все більше замінюється на Сі + +). p>
Виконувана
програма може бути запущена в інтерактивному режимі як команда shell або
виконана в окремому процесі, утворюється вже запущеної програмою. p>
Процеси p>
Процес
в ОС UNIX - це програма, яка виконується у власному віртуальному адресному
просторі. Коли користувач входить до системи, автоматично створюється
процес, в якому виконується програма командного інтерпретатора. Якщо
командному інтерпретатору зустрічається команда, відповідна виконуваному
файлу, то він створює новий процес і запускає в ньому відповідну програму,
починаючи з функції main. Ця запущена програма, в свою чергу, може створити
процес і запустити в ньому іншу програму (вона теж повинна містити функцію main)
і т.д. p>
Для
утворення нового процесу і запуску в ньому програми використовуються два
системних виклику (примітиву ядра ОС UNIX) - fork () і exec
(ім'я-виконуваного-файла). Системний виклик fork призводить до створення нового
адресного простору, стан якого абсолютно ідентично станом
адресного простору основного процесу (тобто в ньому містяться ті ж
програми та дані). p>
Управління пристроями h2>
Управління
зовнішніми пристроями - це одна з найважливіших функцій будь-якій операційній
системи. Система повинна забезпечувати ефективний і зручний доступ до
периферійних пристроїв, а також забезпечувати можливість уніфікованої
розробки програмного забезпечення для знову підключаються зовнішніх пристроїв.
Розглянемо, як ця проблема вирішується в ОС UNIX. p>
Пристрій
як спеціальний файл p>
Для
доступу до зовнішніх пристроїв в ОС UNIX використовується універсальна абстракція
файлу. Крім цих файлів (звичайних файлів або каталогів), які реально
займають пам'ять на магнітних дисках, файлова система містить так звані
спеціальні файли, для яких, як і для справжніх файлів, відводяться окремі
i-сайти, але яким насправді відповідають зовнішні пристрої. Це рішення
дозволяє природним чином працювати в одному і тому ж інтерфейсі з будь-яким
файлом або зовнішнім пристроєм. (Насправді, в деяких випадках
нестандартних зовнішніх пристроїв, доводиться виходити за межі стандартного
інтерфейсу). p>
Драйвери
пристроїв p>
Будь-якому
програмісту повинно бути ясно, що просте оголошення зовнішнього пристрою
спеціальним файлом не дасть можливості працювати з цим пристроєм, якщо не
створений і відповідним чином не підключений до системи спеціальний програмний
код, який відповідає специфіці даного пристрою. Як і в більшості
сучасних операційних систем, такого роду програмний код в ОС UNIX
називається драйвером пристрою (у цьому контексті слово драйвер найкраще
розуміти в значенні "керуючий"). p>
Для
професіоналів в області операційних систем драйвери ОС UNIX, по суті, не
представляють нічого нового. По-простому кажучи, в будь-якій системі драйвер
пристрою - це багатовхіді програмний модуль зі своїми статичними
даними, який вміє ініціювати роботу з пристроєм, виконувати
замовляються користувачем обміни (на введення або виведення даних), термініровать
роботу з пристроєм і обробляти переривання від пристрою. Однак, у будь -
операційній системі є своя технологія розробки драйверів. Зокрема,
в ОС UNIX розрізняються символьні, блокові і потокові драйвери. p>
Останній
момент, на який ми хочемо звернути увагу в цьому пункті, полягає в тому, що
(знову ж таки, як і в більшості розвинених операційних систем) в ОС UNIX можливі
два способи включення до складу драйвера ядра ОС. Перший спосіб полягає у повному
включення до складу драйвера ядра на стадії створення системи (тобто драйвер
статично оголошується частиною ядра системи). Другий спосіб дозволяє обійтися
мінімальною кількістю статичних оголошень на стадії створення ядра
(фактично, забезпечуються лише необхідні елементи статичних таблиць). У
будь-який момент роботи системи такий драйвер може бути динамічно завантажений в
ядро системи. Після появи (статичного чи динамічного) в ядрі ОС UNIX
драйвери всіх різновидів функціонують однаково. p>
Зовнішній
і внутрішній інтерфейси пристроїв p>
Незалежно
від типу файла (звичайний файл, каталог, зв'язок або спеціальний файл)
призначений для користувача процес може працювати з файлом через стандартний інтерфейс,
що включає системні виклики open, close, read і write. Ядро сама розпізнає,
чи потрібно звернутися до його стандартних функцій або викликати підпрограму
драйвера пристрою. Іншими словами, якщо процес користувача відкриває для
читання звичайний файл, то системні виклики open і read обробляються вбудованими
в ядро підпрограмами open і read відповідно. Однак, якщо файл є
спеціальним, то будуть викликані підпрограми open і read, визначені в
відповідному драйвері пристрою. p>
Розподілені
файлові системи p>
Основна
ідея розподіленої файлової системи полягає в тому, щоб забезпечити спільний
доступ до файлів локальної файлової системи для процесів, які, взагалі
кажучи, виконуються на інших комп'ютерах. Ця ідея може бути реалізована
багатьма різними способами, однак у середовищі ОС UNIX всі відомі підходи
грунтуються на монтуванні віддаленої файлової системи до одного з каталогів
локальної файлової системи. Після виконання цієї процедури файли, що зберігаються в
віддаленої файлової системи, доступні процесів локального комп'ютера точно
таким же чином, як якщо б вони зберігалися на локальному дисковому пристрої. p>
На
малюнку 1 наведено приклад, в якому дві підкаталогу віддаленої файлової
системи-сервера (share і X11) монтуються до двох (порожнім) каталогах файлової
системи-клієнта. p>
p>
Рис.
1. Схема монтування віддаленої файлової системи p>
В
принципі, така схема має і достоїнствами, і недоліками. Позитивні
звичайно, відноситься те, що при роботі в мережі можна економити дисковий
простір, підтримуючи спільно використовуються інформаційні ресурси тільки
в одному примірнику. Але, з іншого боку, користувачі віддаленої файлової
системи неминуче будуть працювати з віддаленими файлами істотно більше
повільніше, ніж з локальними. Крім того, реальна можливість доступу до
віддаленого файлу критично залежить від працездатності сервера та мережі.
Зауважимо, що розповсюджені у світі UNIX мережеві файлові системи NFS (Network
File System - мережева файлова система) і RFS (Remote File Sharing - спільне
використання віддалених файлів) є досить ретельно спроектованими
і розробленими продуктами, багато в чому згладжуючим зазначені недоліки. p>
Деякі
команд операційної системи Unix. p>
WHOAMI
- Ідентифікація користувача (інформація про поточний час). P>
ОС
Unix дозволяє маніпулювати файлами і директоріями різними способами.
Можна копіювати, знищувати, перейменовувати, записувати, роздруковувати і
розділяти файли в ЛОМ. Є також певна система прав доступу до файлів і
тек. p>
Як
файли так і директорії на сервері в ЛВС під управлінням ОС Unix мають атрибути.
Ці атрибути можуть скасовувати права, надані користувачам у ЛОМ. P>
CHMOD
- Зміна прав доступу користувачам, групам, всім іншим. 1 - r, 2 - w,
4 - x. Для вирішення різних дій, записується сума привласнених
атрибутами значень. Наприклад, команда chmod 777 Virt встановлює для всіх
повний доступ до директорії Virt. p>
MESG
Y - включає message. P>
WRITE
USER - відправляє повідомлення на вказаний термінал. P>
Список літератури h2>
Для
підготовки даної роботи були використані матеріали з сайту http://5ka.ru/
p>