Що таке Unix (для початківців), Unix, Операційні системи, статті

Дмитро Ю. Карпов

Про що це я?

Цей опус не претендує на повноту опису. Більш того, з метою спрощення свідомо опущені деякі подробиці. Спочатку цикл замислювався як FAQ (Запитання – часто задаються), але мабуть вийде “Курс молодого бійця” або “сержантська школа”.

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

Не чекаючи викриття з боку досвідчених Unix’оідов, роблю добровільне визнання – я не можу претендувати на роль великого знавця Unix, а мої знання в основному навколо FreeBSD. Сподіваюся, це не завадить.

Цей файл ще довго буде перебувати в стані “under construction”. 🙂

Що таке Unix?

Unix – повноцінна, спочатку розрахована на багато користувачів, багатозадачна і Багатотермінальна операційна система. Точніше, це ціле сімейство систем, майже повністю сумісних один з одним на рівні вихідних текстів програм.

Які бувають Unix’и і на яких машинах вони запускаються?

Unix платформа
SCO Unix (Santa Cruz Operation) i*86
Novell UnixWare (куплена SCO) i*86
Interactive Unix (куплений Sun) i*86
Linux i*86, Motorolla 680*0, DEC Alpha, IBM POWER-PC, Sun Sparc, ???
Сімейство BSD: BSDI, FreeBSD, NetBSD, OpenBSD i*86, Acorn ARM, Sun Sparc, ???
Solaris Sun Sparc, i*86
AIX IBM RS/6000 і AS/400 на POWER-PC
IRIX SGI MIPS
Digital Unix (раніше Unix OSF / 1) DEC Alpha
HP-UX Hewlett-Packard PA-RISC

Цей список не претендує на повноту, бо окрім перерахованих є ще безліч менш поширених Unix’ов і Unix-подібних систем, не кажучи вже про стародавні Unix’ах для застарілих машин.

Умовно можна виділити сімейства System V і Berkeley. System V (читається “System Five”) має кілька варіантів, останній за моїми відомостями System V Release 4. Університет Berkeley славний не тільки розробкою BSD, але і більшості протоколів Internet. Втім, багато Unix’и поєднують властивості обох систем.

Де взяти безкоштовний Unix?

  • Сімейство BSD: FreeBSD, NetBSD, OpenBSD.
  • Сімейство Linux: RedHat, SlackWare, Debian, Caldera,
  • SCO і Solaris доступні безкоштовно для некомерційного використання (в основному – для навчальних закладів).

    Які основні відмінності Unix від інших OS?

    Unix складається з ядра з включеними в нього драйверами і з утиліт (зовнішніх по відношенню до ядра програм). Якщо треба змінити конфігурацію (додати пристрій, змінити порт або переривання), то ядро ​​пересобірают (Перелінковивают) з об’єктно модулів або (напр., під FreeBSD) з вихідного. / * Це не зовсім вірно. Деякі параметри можна поправити без перезбирання. Існують також loadable kernel modules. * /

    На противагу Unix’у Windows (якщо не уточнюється, яка, то маються на увазі 3.11, 95 і NT) і OS / 2 при завантаженні фактично на ходу прілінковивают драйвери. При цьому компактність зібраного ядра і повторне використання загального коду на порядок нижче, ніж у Unix. Крім того, при незмінній конфігурації системи ядро ​​Unix без переробки (буде потрібно змінити тільки стартову частину BIOS) може бути записаний в ПЗУ і виконуватися _не_загружаясь_ в ОЗУ. Компактність коду особливо важлива, тому що ядро і драйвери ніколи не покидають фізичну оперативну пам’ять, не своп на диск.

    Unix – сама багатоплатформенна OS. WindowsNT намагається наслідувати його, але поки це погано вдається – після відмови від MIPS і POWER-PC, W’NT залишилися всього на двох платформи – традиційна i * 86 і DEC Alpha. Зрозуміло, переносимість програм з однієї версії Unix на іншу обмежена. Неакуратно написана програма, не враховує відмінностей в реалізаціях Unix, що робить необгрунтовані припущення типу ‘мінлива integer повинна займати чотири байти ‘, може вимагати серйозної переробки. Але все одно це на багато порядків легше, ніж наприклад пернесті з OS / 2 на NT.

    Чому Unix?

    Unix використовується як у якості як сервера, так і робочої станції. У номінації серверів з ним конкурують MS WindowsNT, Novell Netware, IBM OS / 2 Warp Connect, DEC VMS та операційні системи мейнфреймів. Кожна система має свою область застосування, в якій вона краще за інших.

  • WindowsNT – для адміністраторів, які віддають перевагу звичний інтерфейс економного витрачання ресурсів і високої продуктивності.
  • Netware – для мереж, де потрібна висока продуктивність файлового і принтерного сервісу і не настільки важливі інші сервіси. Головний недолік – на сервері Netware важко запускати додатки.
  • OS / 2 хороша там, де потрібен “легкий” сервер додатків. Ресурсів вимагає менше ніж NT, в управлінні гнучкіше (хоча в налагодженні може і складніше), а багатозадачність дуже хороша. Авторизація і розмежування прав доступу не реалізовані на рівні ОС, що з лишком окупається реалізацією на рівні додатків-серверів. (Втім, часто інші OS роблять те ж саме). Багато станції FIDOnet і BBS зроблені на базі OS / 2.
  • VMS – потужний, нічим не поступається Unix’ам (а багато в чому і перевершує його) сервер додатків, але тільки для платформ VAX і Alpha фірми DEC.
  • Мейнфрейми – для обслуговування дуже великої кількості користувачів (порядку декількох тисяч). Але робота цих користувачів як правило організована у вигляді не клієнт-серверного взаємодії, а у вигляді хост-термінального. Термінал ж у цій парі скоріше не клієнт, а сервер (Світ Internet, N3 за 1996-й рік). До переваг мейнфреймів треба віднести більш високу захищеність і стійкість до збоїв, а до недоліків – відповідну цим якостям ціну.

    Unix хороший для кваліфікованого (або бажає стати таким) адміністратора, тому що вимагає знання принципів функціонування відбуваються в ньому. Реальна багатозадачність і жорстке розділення пам’яті забезпечують високу надійність функціонування системи, хоча в продуктивності файл-і принт-сервісів Unix’и поступаються Netware.

    Недостатня гнучкість надання прав доступу користувачів до файлів в порівнянні з WindowsNT ускладнює організацію _на_уровне_файловой_сістеми_ групового доступу до даних (точніше, до файлів), що на мій погляд компенсується простотою реалізації, а значить меншими вимогами до апаратури. Втім, такі програми, як SQL-сервер вирішують проблему групового доступу до даних своїми силами, так що відсутня в Unix можливість заборонити доступ до _файлу_ конкретному користувачеві на мій погляд є явно надмірною.

    Практично всі протоколи, на яких заснований Internet, були розроблені під Unix, зокрема стек протоколів TCP / IP придуманий в університеті Berkeley.

    Захищеність Unix при правильному адмініструванні (а коли це не так?) Ні в чому не поступається ні Novell, ні WindowsNT.

    Важливою властивістю Unix, що наближає його до мейнфреймів, є його багатотермінальних, багато користувачів можуть одночасно запускати програми на одній Unix-машині. Якщо не потрібно використовувати графіком, можна обійтися дешевими текстовими терміналами (спеціалізованими або на базі дешевих PC), підключеними по повільних лініях. У цьому з ним конкурує тільки VMS. Можна використовувати і графічні X-термінали, коли на одному екрані присутні вікна процесів, що виконуються на різних машинах.

    У номінації робочих станцій з Unix конкурують MS Windows *, IBM OS / 2, Macintosh і Acorn RISC-OS.

  • Windows – для тих, хто цінує сумісність більше ефективності; для тих, хто готовий купити велику кількість пам’яті, дискового простору і мегагерц; для тих, хто любить не вникаючи в суть, клацати мишкою по кнопках у віконці. Правда, рано чи пізно все одно доведеться вивчити принципи роботи системи і протоколів, але тоді вже буде пізно – вибір зроблено. Важливою перевагою Windows треба визнати також можливість вкрасти купу програмного забезпечення.
  • OS / 2 – для любителів OS / 2. 🙂 Хоча за деякими відомостями OS / 2 краще за інших взаємодіє з мейнфреймами та мережами IBM.
  • Macintosh – для графічних, видавничих і музичних робіт, а також для тих, хто любить зрозумілий, красивий інтерфейс і не хоче (не може) розбиратися в подробицях функціонування системи.
  • RISC-OS, прошита в ПЗП, дозволяє не витрачати час на інсталяцію операційної системи і відновлення її після збоїв. Крім того, практично всі програми під нею дуже економно витрачають ресурси, завдяки чому не потребують свопінг і працюють дуже швидко.

    Unix функціонує як на PC, так і на потужних робочих станціях з RISC-процесорами, під Unix написані дійсно потужні САПР та геоінформаційні системи. Своєю масштабованістю Unix через його багатоплатформності на порядок перевершує будь-яку іншу операційну систему з відомих мені.

    Основні поняття Unix

    Unix базується на двох основних поняттях: “процес” і “файл”. Процеси являють собою динамічну сторону системи, це суб’єкти, а файли – статичну, це об’єкти дії процесів. Майже весь інтерфейс взаємодії процесів з ядром і один з одним виглядає як запис / читання файлів. / * Хоча треба додати такі речі, як сигнали, Колективна пам’ять і семафори. * /

    Процеси не можна плутати з програмами – одна програма (як правило з різними даними) може виконуватися в різних процесах. Процеси можна досить умовно розділити на два типи – завдання і демони. Завдання – Це процес, який виконує свою роботу, прагнучи швидше закінчити її і завершитися. Демон чекає подій, які він повинен обробити, обробляє події, що відбулися і знову чекає; завершується він як правило за наказом іншого процесу, найчастіше його вбиває користувач, давши команду “kill номер_процесса”. / * У цьому сенсі виходить, що інтерактивна завдання, обробна введення користувача, скоріше схожа на демона, ніж на задачу. 🙂 * /

    Файлова система

    У старих Unix’ах відводилося 14 букв на ім’я, в нових це обмеження зняте. У директорії крім імені файлу знаходиться його ідентефікатора inode – ціле число, що визначає номер блоку, в якому записані атрибути файлу. Серед них: номер користувача – господаря файлу; номер групи; кількість посилань на файл (см.далее) дати і час створення, останньої модифікації і останнього звернення до файлу; атрибути доступу. Атрибути доступу містять тип файлу (см.далее), атрибути зміни прав при запуску (см.далее) і права доступу до нього для господаря, одногрупника і інших на читання, запис і виконання. Право на стирання файлу визначається правом запису в вищерозміщених директорію.

    Кожен файл (але не директорія) може бути відомий під кількома іменами, але обов’язково лежать на одному розділі. Всі номери файл рівноправні; файл стирається, коли видаляється остання посилання на файл. Якщо файл відкрито (для читання та / або запису), то число посилань на нього збільшується ще на одиницю; так багато програм, що відкривають тимчасовий файл, відразу видаляють його, щоб при аварійному завершенні, коли операційна система закриває відкриті процесом файли, цей тимчасовий файл був видалений операційною системою.

    Є ще одна цікава особливість файлової системи: якщо після створення файлу запис у нього йшла не підряд, а з великими інтервалами, то для цих інтервалів місце на диску не виділяється. Таким чином сумарний об’єм файлів в розділі може бути більше обсягу розділу, а при видаленні такого файлу звільняється менше місця, ніж його розмір.

    Файли бувають наступних типів:

    • звичайний файл прямого доступу;
    • директорія (файл, що містить імена і ідентефікатора інших файлів);
    • символьний лінк (рядок з ім’ям іншого файлу);
    • блоковий пристрій (диск або магнітна стрічка);
    • послідовне пристрій (термінали, послідовні і паралельні порти; диски та магнітні стрічки теж мають інтерфейс послідовного пристрою)
    • пойменований канал.

    Спеціальні файли, призначені для роботи з пристроями, як правило, зосереджені в директорії “/dev“. Ось деякі з них (в номінації FreeBSD):

    • tty * – термінали, в т.ч.:
      • ttyv<Цифра> – Віртуальна консоль;
      • ttyd<Цифра> – DialIn термінал (зазвичай послідовний порт);
      • cuaa<Цифра> – DialOut лінія
      • ttyp<Цифра> – Мережевий псевдо-термінал;
      • tty – термінал, з яким асоційована завдання;
    • wd * – жорсткі диски та їх підрозділи, в т.ч.:
      • wd<Цифра> – Жорсткий диск;
      • wd<Цифра>s<Цифра> – Партиція цього диска (іменована тут “slice”);
      • wd<Цифра>s<Цифра><Буква> – Розділ партіціі;
    • fd<Цифра>[<Буква>] – Floppy-диск;
    • rwd *, rfd * – те ж саме, що wd * і fd *, але з послідовним доступом;

    Іноді потрібно, щоб програма, запущена користувачем, мала не права запустив її користувача, а якісь інші. У цьому випадку встановлюється атрибут зміни прав на права користувача – господаря програми. (Як приклад приведу програму, яка читає файл з питаннями і відповідями і на підставі прочитаного тестує запустив цю програму студента. Програма повинна мати право читати файл з відповідями, а запустив її студент – ні.) Так, наприклад, працює програма passwd, за допомогою якої користувач може ізсменіть свій пароль. Юзер може запустити програму passwd, вона може призвести зміни в системній базі даних – а користувач не може.

    На відміну від DOS, в якому повне ім’я файлу виглядає як “диск: \ шлях \ ім’я”, і RISC-OS, в якій воно виглядає “-файлова_система-диск: $. Путь.імя” (що взагалі кажучи має свої переваги) , Unix використовує прозору нотацію у вигляді “/ шлях / ім’я”. Корінь відраховується від розділу, з якого було додано ядро ​​Unix. Якщо ми збираємося використовувати інший розділ (а на завантажувальному розділі як правило знаходиться тільки найнеобхідніше для завантаження), використовується команда `mount / dev / файл_раздела директорія`. При цьому файли і піддиректорії, що раніше знаходилися в цій директорії, стають недоступними, поки не розділ не буде демонтувати (природно, всі нормальні люди використовують для монтування розділів порожні директорії). Виробляти монтування та Демонтується має право тільки супервізор.

    При запуску кожен процес може розраховувати, що для нього вже відкриті три файли, які йому відомі як стандартний ввід stdin по дескриптору 0; стандартний висновок stdout по дескриптору 1; і стандартний висновок stderr по дескриптору 2. При реєстрації в системі, коли користувач вводить ім’я і пароль, а йому запускається shell, всі троє направлені на / dev / tty; пізніше будь-який з них може бути перенаправлений в будь-який файл.

    Комадно інтерпретатор

    В Unix практично завжди входять два командних інтерпретатора – sh (shell) і csh (C-подібний shell). Крім них ще бувають bash (Bourne), ksh (Korn), та інші. Не вдаючись в подробиці, приведу загальні принципи:

    Усі команди, крім зміни поточної директорії, установки змінних оточення (environment) та операторів структурного програмування – зовнішні програми. Програми ці як правило розташовуються в каталогах / Bin та / usr / bin. Програми системного адміністрування – в каталогах / sbin та / usr / sbin.

    Команда складається з імені запускається програми і аргументів. Аргументи відокремлюються від імені команди і один від одного пробелаім і табуляції. Деякі спецсимволи інтерпретуються самим shell’ом. Спецсимволами є “‘` \! $ ^ *? < > | &; (Ще які?).

    В одній командному рядку можна дати декілька команд. Команди можуть бути розділені; (послідовне виконання команд), & (асинхронне одночасне виконання команд), | (синхронне виконання, стандартний висновок stdout першої команди буде поданий на стандартний ввід stdin другий).

    Крім того, можна брати стандартне введення з файлу, включивши в якості одного з аргументів “<файл" (без лапок); можна направити стандартний вивід в файл, використовуючи "> файл” (файл буде обнулений) або “>> файл” (запис буде зроблена в кінець файлу). Сама програма не отримає цього аргументу; щоб дізнатися, що введення або виведення перепризначені, програма повинна сама зробити деякі вельми нетривіальні рухи тіла.

    Керівництва – man

    Якщо треба отримати інформацію з будь-якої команді, дайте команду “man імя_команди”. На екран це буде видаватися через програму “more” – подивіться, як з нею управлятися на вашому Unix’е командою `man more`.

    Додаткова документація

    CitForum

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


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

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

    Ваш отзыв

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

    *

    *