Операційна система Unix 3

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст
Введення
Що таке Unix?
Де взяти безкоштовний Unix?
Які основні відмінності Unix від інших OS?
Чому Unix?
Основні поняття Unix
Файлова система
Комадно інтерпретатор
Керівництва - man

Введення

Писати про ОС Unix надзвичайно важко. По-перше, тому, що про цю систему написано дуже багато. По-друге, тому, що ідеї та рішення Unix зробили і роблять величезний вплив на розвиток усіх сучасних ОС, і багато з цих ідей вже описані в цій книзі. По-третє, тому що Unix - не одна ОС, а ціле сімейство систем, і не завжди можна "відстежити" їх спорідненість між собою, а вже описати всі ОС, що входять у це сімейство просто неможливо. Тим не менш, ми, ні в якій мірі не претендуючи на повноту, спробуємо дати побіжний огляд "світу Unix" в тих його областях, які представляються нам цікавими для цілей нашого навчального курсу.
Народження ОС Unix відноситься до кінця 60-х років, і ця історія вже обросла "легендами", які часом по-різному оповідають про деталі цієї події. ОС Unix народилася в дослідницькому центрі Bell Telephone Laboratories (Bell Labs), що входить до складу корпорації AT & T. Спочатку цей ініціативний проект для ЕОМ PDP-7 (згодом - для PDP-11) являв собою чи то з файлову систему, чи то комп'ютерну гру, чи то систему підготовки текстів, чи то й те, і інше, і третє. Важливо, однак, те, що з самого початку проект, що перетворився в результаті в ОС, замислювався як програмне середовище колективного користування. Автором першої версії Unix є Кен Томпсон, проте в обговоренні проекту, а згодом - і в його реалізації брав участь великий колектив співробітників (Д. Рітчі, Б. Керніган, Р. Пайк та інші). На наш погляд, кілька щасливих обставин народження Unix визначили успіх цієї системи на багато років вперед.
Для більшості співробітників того колективу, в якому народилася ОС Unix, ця ОС була "третьої системою". Існує думка (див., наприклад [1]), що системний програміст досягає високої кваліфікації тільки при виконанні третього свого проекти: перший проект виходить ще "учнівським", у другій розробник намагається включити все, що не вийшло в першому, і в підсумку він виходить занадто громіздким, і тільки в третьому досягається необхідний баланс бажань і можливостей. Відомо, що до народження Unix колектив Bell Labs брав участь (разом з низкою інших фірм) у розробці ОС MULTICS. Кінцевий продукт MULTICS (Bell Labs не брала участі в останніх стадіях розробки) носить всі ознаки "другої системи" і не одержав широкого поширення. Слід, однак, зауважити, що в цьому проекті були народжені багато принципово важливі ідеї та рішення, і деякі концепції, які багато хто вважає народженими в Unix, насправді має своїм джерелом проект MULTICS.
ОС Unix була системою, яка робилася "для себе і для своїх друзів". Перед Unix не ставилося завдання захоплення ринку і конкуренції з будь-якими продуктами. Самі розробники ОС Unix були і її користувачами, і самі оцінювали відповідність системи своїм потребам. Без тиску ринкової кон'юнктури така оцінка могла бути гранично об'єктивною.
ОС Unix стала системою, яка зроблена програмістами і для програмістів. Це визначило витонченість і концептуальну стрункість системи - з одного боку, а з іншого - необхідність розуміння системи для користувача Unix і почуття професійної відповідальності для програміста, що розробляє програмне забезпечення для Unix. І ніякі подальші намагання зробити "Unix для чайників" не змогли позбавити ОС Unix від цієї вартості.
У 1972-73 рр.. Кен Томпсон і Денніс Рітчі написали нову версію Unix. Спеціально для цієї мети Д. Рітчі створив мову програмування C, представляти який тепер вже немає необхідності. Більше 90% програмного коду Unix написано на цій мові, і мова стала невід'ємною частиною ОС. Те, що основна частина ОС написана мовою високого рівня, забезпечує можливість її перекомпіляції в коди будь-апаратної платформи і є обставиною, що визначила широке розповсюдження Unix.
У період створення Unix антимонопольне законодавство США не давало корпорації AT & T можливості виходити на ринок програмних продуктів. Тому ОС Unix була некомерційного та вільно поширювалася, перш за все - в університетах. Там її розвиток тривав, і найбільш активно воно велося в Каліфорнійському університеті в м. Берклі. При цьому університеті була створена група Berkeley Software Distribution, яка займалася розвитком окремої гілки ОС - BSD Unix. Протягом усієї подальшої історії основна гілка Unix і BSD Unix розвивалися паралельно, неодноразово взаємно збагачуючи один одного.
У міру розповсюдження ОС Unix став все більше зростатиме інтерес до неї комерційних фірм, які стали випускати власні комерційні версії цієї ОС. З часом стала комерційною і "основна" гілка Unix від AT & T, для її просування була створена дочірня фірма Unix System Laboratory. Гілка BSD Unix у свою чергу розгалузилася на комерційну BSD і Free BSD [18]. Різні комерційні та вільно поширювані Unix-подібні системи будувалися на базі ядра AT & T Unix, однак у них включалися і властивості, заімствуемие з BSD Unix, а також і оригінальні властивості. Незважаючи на загальне джерело, відмінності між членами родини Unix накопичувалися і у результаті привели до того, що перенесення додатків з однієї Unix-подібної ОС в іншу став надзвичайно утруднений. За ініціативою користувачів Unix виник рух за стандартизацію API Unix. Це рух був підтриманий Міжнародною організацією стандартів ISO і призвело до виникнення стандарту POSIX (Portable Operation System Interface eXecution), який розвивається і в даний час і є найавторитетнішим стандартом для ОС. Однак, оформлення специфікацій POSIX як офіційного стандарту - процес досить повільний, і він не може задовольняти потреб виробників програмного забезпечення, що призвело до виникнення альтернативних промислових стандартів.
З переходом AT & T Unix до компанії Nowell назва цієї ОС змінилося на Unixware, а права на торговельну марку Unix перейшли до консорціуму X / Open. Цей консорціум (на даний час - Open Group) розробив свої (більш широкі, ніж POSIX) специфікації системи, відомі як Single Unix Specification. Нещодавно вийшла друга редакція цього стандарту, значно краще узгоджена з POSIX.
Нарешті, ряд фірм - виробників власних версій Unix утворив консорціуму Open Software Foundation (OSF), який випустив власну версію Unix - OSF / 1, зроблену на базі мікроядра Mach. OSF також випустив специфікації системи OSF / 1, на основі якої фірми-члени OSF стали випускати власні Unix-системи. Серед таких систем: SunOS фірми Sun Microsystems, AIX фірми IBM, HP / UX фірми Hewlett-Packard, DIGITAL UNIX фірми Compaq та інші.
Спочатку Unix-системи цих фірм більшою мірою базувалися на BSD Unix, але зараз більша частина сучасних промислових Unix-систем будуються на базі використанні (за ліцензією) ядра AT & T Unix System V Release 4 (S5R4), хоча успадковують і деякі властивості BSD Unix. Ми не беремо на себе відповідальність порівнювати комерційні Unix-системи, так як періодично з'являються у пресі порівняння такого роду часто представляють зовсім протилежні результати.
Компанія Nowell продала Unix компанії Santa Crouse Operations, яка випускала власний Unix-продукт - SCO Open Server. SCO Open Server [16] базувався на більш ранній версії ядра (System V Release 3), але був чудово налагоджений і відрізнявся високою стабільністю. Фірма Santa Crouse Operations інтегрувала свій продукт з AT & T Unix і випустила Open Unix 8 [30], однак потім продала Unix фірмі Caldera, яка і є власником "класичної" ОС Unix сьогодні (в кінці 2001 р).
Фірма Sun Microsystems почала своє представництво в світі Unix системою SunOS, створеної на основі ядра BSD. Однак згодом замінила її системою Solaris на основі S5R4 [34]. В даний час поширюється версія 8 цієї ОС (існує також v.9-бета). Solaris працює на платформі SPARC (RISC-процесори, виготовлені по специфікаціях Sun) і Intel-Pentium.
Фірма Hewlett-Packard пропонує ОС HP-UX. v.11 на платформі PA-RISC [22]. HP-UX базується на S5R4, але містить багато властивостей, "видають" її походження від BSD Unix. Звичайно ж, HP-UX буде доступна і на платформі Intel-Itanium.
Фірма IBM виступає з ОС AIX, остання на сьогоднішній день версія - 5L (про неї ще піде мова попереду) [12]. IBM не оголошувала "родовід" AIX, це в основному оригінальна розробка, але перші версії носили ознаки походження від FreeBSD Unix. Зараз, однак, AIX більше схожа на S5R4. Спочатку ОС AIX була доступна і на платформі Intel-Pentium, але згодом (відповідно до загальної політикою IBM) перестала підтримуватися на цій платформі. В даний час AIX працює на серверах IBM RS/6000 і в інших обчислювальних платформах на базі процесорів PowerPC (у тому числі і на суперкомп'ютерах IBM).
ОС DIGITAL UNIX фірми DEC була єдиною промислової реалізацій системи OSF / 1. ОС DIGITAL UNIX працювала на RISC-серверах Alpha фірми DEC. Коли в 1998 р. фірма DEC була поглинена фірмою Compaq, у фірму Compaq перейшли і сервери Alpha, і DIGITAL UNIX. Фірма Compaq має намір відновити присутність на ринку серверів Alpha і у зв'язку з цим інтенсивно розвиває і ОС для них. Нинішня назва цієї ОС - Tru64 Unix (поточна версія - 5.1A), вона продовжує базуватися на ядрі OSF / 1 і несе в собі багато ознак BSD Unix [37].
Незважаючи на те, що більшість комерційних Unix-систем базується на одному ядрі і задовольняє вимогам POSIX, кожна з них має власний діалект API, і відмінності між діалектами накопичуються. Це призводить до того, що перенесення промислових додатків з одного Unix-системи на іншу ускладнюється і вимагає, як мінімум, перекомпіляції, а часто - і коригування вихідного коду. Спроба подолати "розбрід" і зробити єдину для всіх ОС Unix була зроблена в 1998 р. альянсом фірм SCO, IBM і Sequent. Ці фірми об'єдналися в проекті Monterey з метою створення єдиної ОС на базі Unixware, власником якої в той час була SCO, IBM AIX і ОС DYNIX фірми Sequent. (Фірма Sequent займає лідируючі позиції у виробництві ЕОМ архітектури NUMA - несиметричною багатопроцесорної - і DYNIX - це Unix для таких ЕОМ). ОС Monterey повинна була працювати на 32-розрядної платформі Intel-Pentium, 64-розрядної платформі PowerPC і на новій 64-розрядної платформі Intel-Itanium. Про підтримку проекту заявили майже всі лідери виробництва апаратних засобів і проміжного програмного забезпечення. Навіть фірми, що мають власні клони Unix (крім Sun Microsystems), оголосили, що на платформах Intel вони будуть підтримувати тільки Monterey. Робота над проектом просувалася, мабуть, успішно. ОС Monterey була в числі перших, які довели свою працездатність на Intel-Itanium (поряд з Windows NT і Linux) і єдиною, яка при цьому не вдавалася до емуляції 32-розрядної архітектури Intel-Pentium. Однак у фінальній стадії проекту відбулося фатальне подія: SCO продала свій Unix-відділення. Ще раніше фірма Sequent увійшла до складу IBM. "Спадкоємцем" всіх властивостей ОС Monterey стала ОС IBM AIX v.5L. Проте, не зовсім всіх. Платформа Intel-Pentium не є для IBM стратегічним напрямком, і на цій платформі ОС AIX недоступна. А оскільки інші лідери комп'ютерної індустрії не поділяють (або не зовсім поділяють) таку позицію IBM, ідея загальної ОС Unix так і не реалізувалася.
Нарешті, не можна не сказати і про некомерційні ОС, які в тій чи іншій мірі можуть вважатися відносяться до сімейства Unix. Про FreeBSD ми вже згадували. Це, мабуть, найкращий з некомерційних продуктів, і ця ОС вже давно знайшла собі застосування в промисловій обробці даних.
Останні роки відзначені галасливої ​​експансією ОС Linux [9, 26]. Ядро цієї ОС було розроблено в 1991 Лінус Торвальдс (Фінляндія) перш за все "для особистого користування". Торвальдс зробив вихідний код своєї ОС відкритим. При фіксованому ядрі будь-який програміст може написати власні сервіси ОС Linux і опублікувати їх через Internet. Важко сказати, що послужило причиною такої популярності ОС Linux. Вона не є ні унікальною, ні кращою ні як вільно поширювана, ні як відкрита, ні як Unix для комп'ютерів невеликої обчислювальної потужності. Мабуть, цей феномен пояснюється деяким збігом об'єктивних і суб'єктивних чинників, аналіз яких не входить в наші цілі.
До 1997 р. ОС Linux була популярна майже виключно в університетському середовищі. Проте в 1997 р. ряд фірм оголосив про випуск власних версій Linux. Деякі з цих версій (наприклад, Red Hat) залишилися безкоштовними, деякі (наприклад, Caldera) стали комерційними. Принципово важливим є те, що у Linux з'явилися "господарі", які несли відповідальність (в тому числі і комерційну) за супровід ОС. Це викликало стрімке зростання інтересу до Linux користувачів, які вирішують завдання промислової обробки інформації. Такий інтерес пояснюється, з одного боку, бажанням мати "майже справжнє" ОС Unix зі значно меншими видатками, з іншого, небажанням потрапляти в повну залежність від Microsoft. Фірми-лідери інформаційних технологій не могли ігнорувати настрої ринку і оголосили або про випуск власних версій Linux (наприклад, Hewlett-Packard), або про підтримку певних версій Linux на своїх апаратних платформах і в своєму проміжному програмному забезпеченні (наприклад, IBM). Цікаво, що ці фірми є виробником власних комерційних версій ОС Unix. В останніх версіях всіх комерційних ОС Unix, розглянутих вище, в API ОС внесені системні виклики, що забезпечують можливість виконання в них додатків, написаних для Linux. Поки, мабуть, гранди інформаційних технологій не бачать в Linux серйозного конкурента для своїх ОС у сфері промислової обробки даних і систем високої готовності і передбачають перенесення інформаційних систем з Linux на комерційні Unix при досягненні ними певного ступеня зрілості. Не без допомоги "грандів" досягнуть перенесення Linux на велику кількість платформ - від вбудованих обчислювальних пристроїв до мейнфреймів і суперкомп'ютерів. Можливо, з досягненням Linux промислового рівня, в цій ОС зможе втілитися ідея, не вдала в проекті Monterey - єдина ОС Unix для всіх.
Слід відзначити ще одну цікаву сферу застосування Linux. Ряд країн (наприклад, Китай, Росія) оголосив про прийняття в якості базової ОС для інформаційних системах у своїх силових структурах ОС, "виготовляється на основі Linux". Основну роль тут відіграє відкритість вихідного коду. Доступність вихідного коду Linux дозволяє урядовим фахівцям цих держав, з одного боку переконатися у відсутності в ОС "закладок", що займаються "електронним шпигунством", а з іншого - провести вичерпну верифікацію ОС і домогтися її високої надійності і безпеки.
У наступному викладі ми орієнтуємося перш за все на "класичну" ОС Unix, провідну свій родовід від Bell Labs, і її останню на сьогоднішній день версію - Open Unix 8, але розглядаємо також і деякі особливості інших комерційних і некомерційних ОС сімейства Unix.

Що таке 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?

FreeBSD База - www.freebsd.org;
є також на ftp. kiae. su / FreeBSD / *- RELEASE / і ще в безлічі місць
OpenBSD ftp. openbsd.org
Linuxftp. cs. msu. su/pub/Os/Linux/Slachware_3.1 /
SCOПо моїми відомостями, в Internet недоступний, але можна отримати ліцензію на безкоштовне використання. Зверніться на www.sco.com

Які основні відмінності 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 ".
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
62.8кб. | скачати


Схожі роботи:
Операційна система Unix
Операційна система Unix 2
Основні роботи операційної системи UNIX Підтримка мережі UNIX
Файлова система Unix
Файлова система UNIX
Операційна система OS 2 Warp
Операційна система NetWare
Операційна система Windows-95
Операційна система Windows 2
© Усі права захищені
написати до нас