UNIX: Основні поняття, Unix, Операційні системи, статті

На перший погляд UNIX виглядає невиправдано складною операційною системою. Але під уявною складністю ховається дуже проста і елегантна операційна система. Окремі деталі можуть бути складними, але загальні принципи – прості.

Одним з достоїнств ОС UNIX є те, що система базується на невеликому числі інтуїтивно ясних понять. Однак, незважаючи на простоту цих понять, до них потрібно звикнути. Без цього неможливо зрозуміти істота UNIX.


Користувач


З самого початку ОС UNIX замишлялася як інтерактивна система. Іншими словами, UNIX призначений для термінальної роботи. Щоб почати працювати, людина повинна “увійти” в систему, ввівши з вільного терміналу своє облікове ім’я (account name) і, можливо, пароль (password). Людина, зареєстрований в облікових файлах системи, і, отже, має облікове ім’я, називається зареєстрованим користувачем системи. Реєстрацію нових користувачів зазвичай виконує адміністратор системи. Користувач не може змінити своє облікове ім’я, але може встановити і / або змінити свій пароль. Паролі зберігаються в окремому файлі в закодованому вигляді.

Всі користувачі ОС UNIX явно чи неявно працюють з файлами. Файлова система ОС UNIX має деревоподібну структуру. Проміжними вузлами дерева є каталоги з посиланнями на інші каталоги або файли, а листя дерева відповідають файлам або порожнім каталогам. Кожному зареєстрованому користувачеві відповідає деякий каталог файлової системи, який називається “домашнім” (home) каталогом користувача. При вході в систему користувач одержує необмежений доступ до свого домашнього каталогу і всіх каталогів і файлів, що містяться в ньому. Потенційно можливий доступ і до всіх інших файлів, однак він може бути обмежений, якщо користувач не має достатніх привілеїв.


Інтерфейс користувача


Традиційний спосіб взаємодії користувача з системою UNIX грунтується на використанні командних мов (щоправда, в даний час все більшого поширення набувають графічні інтерфейси). Після входу користувача в систему для нього запускається один з командних інтерпретаторів (залежно від параметрів, які зберігаються в файлі / etc / passwd). Зазвичай в системі підтримується кілька командних інтерпретаторів з схожими, але які відрізняються своїми можливостями командними мовами. Загальна назва для будь-якого командного інтерпретатора ОС UNIX – shell (оболонка), оскільки будь-який інтерпретатор представляє зовнішнє оточення ядра системи.

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

Командні мови, що використовуються в ОС UNIX, досить прості, щоб нові користувачі могли швидко почати працювати, і досить потужні, щоб можна було використовувати їх для написання складних програм. Остання можливість спирається на механізм командних файлів (shell scripts), які можуть містити довільні послідовності командних рядків. При вказівці імені командного файлу замість чергової команди інтерпретатор читає файл рядок за рядком і послідовно інтерпретує команди.


Привілейований користувач


Ядро ОС UNIX ідентифікує кожного користувача за його ідентифікатором (UID – User Identifier), унікальному цілого значень, що присвоюються користувачеві при реєстрації в системі. Крім того, кожен користувач відноситься до певної групи користувачів, яка також ідентифікується деяким цілим значенням (GID – Group IDentifier). Значення UID і GID для кожного зареєстрованого користувача зберігаються в облікових файлах системи і приписуються процесу, в якому виконується командний інтерпретатор, запущений при вході користувача в систему. Ці значення успадковуються кожним новим процесом, запущеним від імені даного користувача, і використовуються ядром системи для контролю правомочності доступу до файлів, виконання програм і т.д.

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

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

Ще однією відмінністю суперкористувача від звичайного користувача ОС UNIX є те, що на суперкористувача не поширюються обмеження на використовувані ресурси. Для звичайних користувачів встановлюються такі обмеження як максимальний розмір файла, максимальне число сегментів розділяється пам’яті, максимально допустимий простір на диску і т.д. Суперкористувач може змінювати ці обмеження для інших користувачів, але на нього вони не діють.


Програми


ОС UNIX одночасно є операційним середовищем використання існуючих прикладних програм і середовищем розробки нових програм. Нові програми можуть писатися на різних мовах (Фортран, Паскаль, Модула, Ада та ін.) Однак стандартною мовою програмування в середовищі ОС UNIX є мова Сі (який останнім часом все більше замінюється на C + +). Це пояснюється тим, що, по-перше, сама система UNIX написана на мові Сі, а, по-друге, мова Сі є одним з найбільш якісно стандартизованих мов.

Тому програми, написані на мові Сі, при використанні правильного стилю програмування володіють досить високим рівнем мобільності, тобто їх можна досить просто переносити на інші апаратні платформи, що працюють як під управлінням ОС UNIX, так і під управлінням низки інших операційних систем (наприклад, DEC Open VMS або MS Windows NT).

Виконувана програма може бути запущена в інтерактивному режимі як команда shell або виконана в окремому процесі, утвореному вже запущеної програмою.


Команди


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

Процеси


Процес в ОС UNIX – це програма, яка виконується у власному віртуальному адресному просторі. Коли користувач входить в систему, автоматично створюється процес, в якому виконується програма командного інтерпретатора. Якщо командному інтерпретатору зустрічається команда, відповідна виконуваному файлу, то він створює новий процес і запускає в ньому відповідну програму, починаючи з функції main. Ця запущена програма, в свою чергу, може створити процес і запустити в ньому іншу програму (вона теж повинна містити функцію main) і т.д.

Перенаправлення вводу / виводу


Механізм перенаправлення вводу / виводу є одним з найбільш елегантних, потужних і водночас простих механізмів ОС UNIX. Мета, яка ставилася при розробці цього механізму, полягає в наступному. Оскільки UNIX – це інтерактивна система, то зазвичай програми вводять текстові рядки з терміналу і виводять результуючі текстові рядки на екран терміналу. Для того щоб забезпечити більш гнучке використання таких програм, бажано вміти забезпечити їм введення з файлу або з виведення інших програм і направити їх висновок у файл або на введення інших програм.

Реалізація механізму грунтується на наступних властивостях ОС UNIX. По-перше, будь-який введення / виведення трактується як введення з деякого файлу та виведення в деякий файл. Клавіатура і екран терміналу теж інтерпретуються як файли (перший можна тільки читати, а в другій можна тільки писати). По-друге, доступ до будь-якого файлу проводиться через його дескриптор (позитивне ціле число). Фіксуються три значення дескрипторів файлів. Файл з дескриптором 1 називається файлом стандартного вводу (stdin), файл з дескриптором 2 – файлом стандартного виводу (stdout), і файл з дескриптором 3 – файлом стандартного виводу діагностичних повідомлень (stderr). По-третє, програма, запущена в деякому процесі, “успадковує” від породив процесу всі дескриптори відкритих файлів.

В головному процесі інтерпретатора командного мови файлом стандартного введення є клавіатура терміналу користувача, а файлами стандартного виводу і виводу діагностичних повідомлень – екран терміналу. Однак при запуску будь-якої команди можна повідомити інтерпретатору (засобами відповідного командного мови), який файл або вивід якої програми повинен служити файлом стандартного вводу для запускається програми і який файл або введення якої програми повинен служити файлом стандартного виводу або виведення діагностичних повідомлень для запускається програми. Тоді інтерпретатор перед виконанням системного виклику exec відкриває вказані файли, підміняючи зміст дескрипторів 1, 2 і 3.

Звичайно, те ж саме може зробити і будь-яка інша програма, що запускає третю програму в спеціально створеному процесі. Отже, все, що потрібно для нормального функціонування механізму перенаправлення вводу / виводу – це дотримуватися при програмуванні угоди про використання дескрипторів stdin, stdout і stderr. Це не дуже важко, оскільки в найбільш поширених функціях бібліотеки введення / виводу printf, scanf і error взагалі не потрібно вказувати дескриптор файлу. Функція printf неявно використовує stdout, функція scanf – stdin, а функція error – stderr.

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

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


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*