ЗМІСТ:
Linux – це сучасна POSIX-Сумісна й Unix-подібна операційна система для персональних комп'ютерів і робочих станцій.
Це багатокористувальницька мережна операційна система з мережною віконною графічною системою X Window System. ОС Linux підтримує стандарти відкритих систем і протоколи мережі Internet і сумісна із системами Unix, DOS, MS Windows. Всі компоненти системи, включаючи вихідні тексти, поширюються з ліцензією на вільне копіювання й установку для необмеженого числа користувачів.
Розробка ОС Linux виконана Лінусом Торвалдсом з університету Хельсінкі.
Система UNIX була описана в 1974 році у статті Кена Томпсона й Деніса Річі в журналі "Communications of the ACM". Із цього часу вона одержала широке поширення і завоювала широку популярність серед виробників комп’ютерної техніки, які всі частіше стали оснащувати нею свої машини. Особливою популярністю вона користується в університетах, де досить часто бере участь у дослідницькому й навчальному процесі.
Характерні риси Linux:
багатозадачність;
багатокористувальницький режим;
захищений режим процесора (386 protected mode);
захист пам'яті процесу, збій програми не може викликати зависання системи;
ощадливе завантаження: Linux зчитує з диска тільки ті частини програми, які дійсно використовуються для виконання;
поділ сторінок за записами між екземплярами виконуваної програми. Це значить, що процеси-екземпляри програми можуть використовувати при виконанні ту саму пам'ять. Ця властивість збільшує швидкодію й заощаджує пам'ять;
віртуальна пам'ять зі сторінковою організацією (тобто на диск із пам'яті витісняється не весь неактивний процес, а тільки необхідна сторінка);
обсяг віртуальної пам'яті до 2 Гб, зміна розміру віртуальної пам'яті під час виконання програм;
загальна пам'ять програм і дискового кешу: вся вільна пам'ять використовується для буферізації обміну з диском;
динамічні бібліотеки;
наявність вихідного тексту всіх програм, включаючи тексти ядра, драйверів, засобів розробки й додатків. Ці тексти вільно поширюються. У цей час деякими фірмами для Linux поставляється ряд комерційних програм без вихідних текстів, але все, що було вільним так і залишається вільним;
підтримка національних алфавітів і угод, можливість додавати нові;
множинні віртуальні консолі: на одному дисплеї відображаються кілька одночасних незалежних сеансів роботи, перемикання між якими здійснюється із клавіатури;
підтримка ряду розповсюджених файлових систем (MINIX, Xenix, файлові системи System V) та наявність власної передової файлової системи обсягом до 4 Тб і з іменами файлів до 255 знаків;
прозорий доступ до розділів DOS (або OS/2 FAT): розділ DOS виглядає як частина файлової системи Linux;
підтримка всіх стандартних форматів CD ROM;
підтримка мережі TCP/IP, включаючи ftp, telnet, NFS і т.д.
Переваги ОС Linux:
дає можливість безкоштовно й легально мати сучасну ОС;
має високу швидкодію;
працює надійно, стійко, зовсім без зависань;
не піддається вірусам;
дозволяє використовувати повністю можливості сучасних ПК, знімаючи обмеження по використанню пам'яті й ресурсів процесора;
ефективно управляє багатозадачністю й пріоритетами, фонові завдання не заважають інтерактивній роботі;
дозволяє легко інтегрувати комп'ютер у локальні й глобальні мережі;
дозволяє виконувати прикладні програми інших ОС;
використання великої кількості програмних пакетів для Unix, що вільно розповсюджуються разом з вихідними текстами;
надає великий набір інструментальних засобів для розробки прикладних програм будь-якого ступеня складності як в Linux, так і в інших ОС.
Хоча операційна система й більшість команд написані на мові С, система UNIX підтримує ряд інших мов, таких як Фортран, Бейсик, Паскаль, Ада, Кобол, Лісп і Пролог. Система UNIX може підтримувати будь-яку мову програмування, для якої є компілятор або інтерпретатор, і забезпечувати системний інтерфейс.
Однією з переваг ОС UNIX є те, що система базується на невеликому числі інтуїтивно зрозумілих понять.
Інтерфейс користувача – традиційний спосіб взаємодії користувача із системою UNIX ґрунтується на використанні командних мов (на сьогодні все більше поширення одержують графічні інтерфейси). Після входу користувача в систему для нього запускається один з командних інтерпретаторів (залежно від параметрів, що зберігаються у файлі /etc/passwd). В системі підтримується кілька командних інтерпретаторів зі схожими можливостями, що розрізняються командними мовами. Загальна назва для будь-якого командного інтерпретатора ОС UNIX – shell (оболонка), оскільки будь-який інтерпретатор представляє зовнішнє оточення ядра системи.
Користувач. UNIX призначений для термінальної роботи. Щоб почати працювати, користувач повинен "увійти" у систему, увівши з вільного термінала свій логін і пароль. Користувач, що зареєстрований в облікових файлах системи, і має обліковий запис, називається зареєстрованим користувачем системи. Реєстрацію нових користувачів виконує адміністратор системи. Користувач не може змінити своє облікове ім'я, але може встановити й/або змінити свій пароль. Паролі зберігаються в окремому файлі в закодованому виді. Не забувайте свій пароль, відновити його не допоможе навіть адміністратор!
Привілейований користувач. Ядро ОС UNIX ідентифікує кожного користувача за його ідентифікатором (UID – User Identifier), унікальному цілому значенню, що привласнюється користувачеві при реєстрації в системі. Крім того, кожного користувача відносять до певної групи користувачів, що також ідентифікується значенням GID (Group IDentifier). Адміністратор системи теж є зареєстрованим користувачем, але має більші можливості. В ОС UNIX це завдання вирішується шляхом виділення одного значення UID (нульового). Користувач із таким UID називається суперкористувачем (superuser) або root. Він має необмежені права на доступ до будь-якого файлу й на виконання будь-якої програми. Крім того, такий користувач має можливість повного контролю над системою. Він може зупинити її й навіть зруйнувати.
Програми. ОС UNIX одночасно є операційною системою та середовищем розробки нових додатків. Нові програми можуть писатися на різних мовах (Фортран, Паскаль, Ада й ін.). Однак стандартною мовою програмування в середовищі ОС UNIX є мова С (частіше С++). Це пояснюється тим, що сама система UNIX написана мовою С.
Команди. Будь-яка командна мова фактично складається із трьох частин:
службових конструкцій, що дозволяють маніпулювати з текстовими рядками й будувати складні команди на основі простих команд;
вбудованих команд, що виконуються безпосередньо інтерпретатором командної мови;
команд, що представляються окремими виконуваними файлами.
Процеси. Процес в ОС UNIX – це програма, що виконується у власному віртуальному адресному просторі. Коли користувач входить у систему, автоматично створюється процес, у якому виконується програма командного інтерпретатора. Якщо командному інтерпретаторові зустрічається команда, що відповідає виконуваному файлу, то він створює новий процес і запускає в ньому відповідну програму. Ця запущена програма, у свою чергу, може створити процес і запустити в ньому іншу програму.
Перенаправлення введення/виводу. Механізм перенаправлення введення/виводу є одним з найбільш потужних і одночасно простих механізмів ОС UNIX. Ціль, що ставилася при розробці цього механізму, полягає в наступному. Оскільки UNIX – це інтерактивна система, то програми вводять текстові рядки з термінала й виводять результуючі текстові рядки на екран термінала. Для того, щоб забезпечити більш гнучке використання таких програм, їм забезпечують введення з файлу або з інших програм.
Для входу в систему необхідно ввести логін і пароль. Завантаження виконується в графічному режим. В будь-який UNIX-системі враховується регістр символів. Тому вводити всі команди та їхні параметри треба враховуючи регістр.
Вимикання ПК відбувається за допомогою команди shutdown, що має наступний синтаксис:
shutdown <options> <time> < warning-massage>
З опцій програми shutdown найбільше часто використовуються дві:
-h – повна зупинка системи (комп'ютер буде виключений);
-r – перезавантажити систему.
Параметр time вказує час, коли повинна бути виконана команда (не обов'язково виконувати її негайно). Час можна вказати у формі затримки від поточного моменту. Наприклад, якщо потрібно, що б система зупинилася через 5 хвилин:
shutdown -r +5
що буде означати "зупинити систему через 5 хвилин і перезавантажитися після того, як робота буде коректно завершена''.
shutdown -h 0
вимкнення комп'ютера. Еквівалентом даної команди є команда halt.
Команда, про яку потрібно знати кожному користувачеві UNIX-системи – це команда man. Команда man – це система вбудованої допомоги системи Linux. Вводити її треба з параметром – ім'ям іншої команди або ключовим словом, наприклад:
man passwd
У відповідь отримаємо опис відповідної команди або інформацію з теми, позначеної ключовим словом. Оскільки інформація звичайно не міститься на одному екрані, при перегляді можна користуватися клавішами <PageUp> і <PageDown>, а також клавішею пробілу. Натискання клавіші <Q> у будь-який момент приводить до виходу з режиму перегляду й поверненню в режим уведення команд.
Найпростіші команди, перераховані в табл.1.
Таблиця 1. Найпростіші команди Linux
Альтернативою команді man є команда info. Для одержання інформації з окремої команди треба задати в командному рядку info з параметром – ім'ям команди:
[user]$ info man
Інформація у більшості випадків трохи відрізняється від тої, котру дає команда man. Істотна відмінність полягає у тому, що інформація представлена у гіпертекстовому форматі. Тому є можливість переглядати різні розділи допомоги, не виходячи з оболонки info.
Процес – поняття сукупності програмного коду й даних. Процес це не запущена програма (додаток) або команда, тому що додаток може створювати кілька процесів одночасно. Код процесу не обов'язково повинен виконуватися в сучасний момент часу, тому що процес може перебувати в стані очікування. У цьому випадку виконання коду такого процесу припинено. Існує всього 3 стани, у яких може перебувати процес:
працюючий процес – у цей момент код цього процесу виконується.
сплячий процес – у цей момент код процесу не виконується, а знаходиться в очікуванні події (натискання клавіші на клавіатурі, надходження даних з мережі й т.д.)
процес-Зомбі – сам процес уже не існує, його код і дані вивантажені з оперативної пам'яті, але запис в таблиці процесів залишився.
Кожному процесу в системі призначаються числові ідентифікатори (особисті номери) у діапазоні від 1 до 65535 (PID – Process Identifier) та ідентифікатори батьківського процесу (PPID – Parent Process Identifier).
PID є ім'ям процесу, по якому можна адресувати процес в операційній системі при використанні засобів перегляду й керування процесами.
PPID визначає родинні відносини між процесами, які в значній мірі визначають його властивості й можливості.
Інші параметри, які необхідні для роботи програми, називають “оточення процесу”.
Процеси, не прив'язані до якогось конкретного термінала називаються “демонами” (daemons). Такі процеси, будучи запущеними користувачем, не завершують свою роботу при закінченні сеансу, а продовжують працювати, тому що вони не зв'язані з поточним сеансом і не можуть бути автоматично завершені. Як правило, за допомогою демонів реалізуються серверні служби, так наприклад сервер друку реалізований процесом-демоном cupsd, а сервер введення журналу – syslogd.
Для перегляду списку процесів в Linux існує команда ps.
ps [PID] options – перегляд списку процесів. Без параметрів ps показує всі процеси, які були запущені протягом поточної сесії, за винятком демонів. Options може приймати одне з наступних значень або їхньої комбінації:
-A або -e – показати всі процеси
-f – відсортувати за алфавітом
-w – показати повні рядки опису процесів.
Команда ps –ef виведе всі процеси, відсортовані за алфавітом
Процеси в ОС Linux мають ті ж права, якими володіє користувач, від якого був запущений процес.
Насправді операційна система сприймає працюючого в ній користувача як набір запущених від його ім'я процесів. Адже й сам сеанс користувача відкривається в командній оболонці від імені користувача. Тому коли ми говоримо “права доступу користувача до файлу” те маємо на увазі “права доступу процесів, запущених від імені користувача до файлу”.
Для визначення ім'я користувача, що запустив процес, операційна система використовує реальні ідентифікатори користувача і його групи.
Сигнал – це здатність процесів обмінюватися стандартними короткими повідомленнями безпосередньо за допомогою системи. Повідомлення-сигнал не містить ніякої інформації, крім номера сигналу. Для того щоб передати сигнал, процесу потрібно задіяти системний виклик kill(), а для того щоб прийняти сигнал, не потрібно нічого. Якщо процесу необхідно якось по-особливому реагувати на сигнал, він може зареєструвати оброблювач. Оброблювач сигналу запускається асинхронно, негайно після одержання сигналу. Якщо процес не обробляє сигнал самостійно, це робить система.
Два сигнали – 9 (KILL) і 19 (STOP) – завжди обробляє система. Перший з них потрібний для того, щоб убити процес. Сигнал STOP припиняє процес: у такому стані процес не видаляється із таблиці процесів, але й не виконується доти, поки не одержить сигнал 18 (CONT) – після чого продовжить роботу.
Графічний інтерфейс в Linux будується на основі стандарту X Window System або просто "X", перший варіант якого був розроблений в 1987 році в Масачусетському технологічному інституті.
Система X Window побудована на основі моделі "клієнт/сервер". X сервер працює на комп'ютері користувача й забезпечує вивід зображення на екран монітора. X-сервер працює безпосередньо із "залізом": відеосистемою, пристроями уведення й динаміком. Але сам X-сервер зображення не формує, він тільки "доставляє" графіку відео-драйверу. Щоб одержати на екрані зображення, одного X-сервера недостатньо, треба запустити менеджер вікон і хоча б одну програму-клієнт, що буде формувати зображення. Наприклад, графічний редактор GIMP, текстовий редактор з пакета Open Office і т.д.
Між клієнтами й сервером знаходяться ще два дуже важливих компоненти графічного інтерфейсу: бібліотека графічних функцій X-lib та менеджер вікон. X-Lib містить графічні функції, які забезпечують виконання низькорівневих операцій із графічними образами. Менеджер вікон викликає функції з X-Lib для керування дисплеєм і виконання будь-яких перетворень зображень у вікнах.
Коли X-додаток запускається, він передає керування менеджерові вікон. Менеджер вікон забезпечує виконання всіх операцій з вікнами: промальовування рамок, меню, іконок, смуг прокручування й інших елементів вікна, а також надає можливість змінювати вид і положення вікна в процесі роботи відповідно до потреб користувача. Менеджер вікон також викликає відповідні функції для програм-клієнтів у тих випадках, коли користувач взаємодіє з додатком за допомогою клавіатури й миші.
Оскільки клієнт і сервер є окремими процесами, вони можуть працювати на різних комп'ютерах, а взаємодіяти по мережі. Додаток можна запустити, наприклад, на мейнфреймі, а зображення буде виводитися на екран персонального комп'ютера. Ця дуже потужна особливість системи X Window є однією з основних відмінностей її від ОС Windows.
Різні менеджери вікон можуть забезпечувати різний вид вікон за рахунок використання різних рамок і віконних меню. Але всі вони використають ту саму базову графічну утиліту X Window – X сервер.
Також розроблені (і включені практично в усі дистрибутиви) так звані інтегровані графічні середовища. Найбільш відомими представниками таких середовищ є KDE.
KDE – це інтегрована графічна оболонка для Linux (і інших версій UNIX), що у цей час містить у собі більше 500 графічних додатків і підтримує більше 120 різних мов. Вона розробляється в рамках руху Open Source, тобто поширюється з відкритим вихідним кодом. KDE дозволяє сполучити сучасну функціональність, зручність використання й відмінний дизайн із технологічними перевагами операційної системи класу UNIX.
Робочий екран оболонки можна умовно розділити на дві частини (рис. 1). Панель у нижній частині екрана служить для запуску додатків і перемикання між робочими столами. Серед інших на ній розташований значок із спеціальним зображенням, яке залежить від дистрибутиву Linux (В Fedora Linux – це символ f) . Цей значок (аналог кнопки Start в Windows) служить для виклику ієрархічного меню, через яке можна запустити будь-який стандартний додаток (рис. 2).
Рис.1.Робочий екран оболонки KDE
Рис.2. Головне меню KDE
Робочий стіл (Desktop) – це вся поверхня екрану, на якій розташовуються іконки для запуску відповідних їм додатків. KDE підтримує кілька робочих столів, перемикатися між якими можна за допомогою пронумерованих клавіш, розташованих на панелі.
Праворуч перемикача робочих столів розташовується поле, що називається панеллю завдань (taskbar). Вона використовується для відображення запущених у цей момент додатків і перемикання між ними.
Головне меню складається з вкладок, що містять об'єкти для керування робочим столом:
улюблене – меню з програм, що застосовуються найчастіше; • програми – ієрархічне меню програм;
комп'ютер – перелік основних каталогів користувача;
недавно вжиті – перелік програм, що недавно використовувались; • вихід – команди для завершення сеансу роботи.
у верхній частині меню знаходиться рядок пошуку.
Вкладка “Програми” містить перелік стандартних програм, розбитих на категорії. Орієнтовний перелік категорій, призначення яких легко визначається за назвою:
Адміністрування; Графіка;
Мультімедіа;
Офіс;
Розробка; Система; Установки;
Утіліти;
Ігри;
Інтернет.
Налаштування KDE виконується за допомогою контрольної панелі (рис. 3). Всі параметри розбиті на наступні категорії:
Вигляд і поведінка – оформлення вікон, поведінка вікон при максимізації/мінімізації, режим передачі фокусу вводу, параметри столу, графічні спецефекти;
Особисті параметри – параметри користувача, такі як: країна, мова інтерфейсу, додаткова інформація про користувача, список програм, що найчастіше використовуються користувачем;
Мережа і з'єднання – параметри комп'ютерної мережі;
Адміністрування комп'ютера – команди для налаштування параметрів комп'ютера.
Рис.3 Контрольна панель KDE
Будь-який дистрибутив Linux містить велику кількість прикладних програм. У табл.2 наведені деякі з них з розбиттям по категоріям. Для порівняння також в таблиці вказані відповідні Windows-програми.
Таблиця 2. Прикладні програми в Linux
Таким чином, дистрибутиви Linux містять велику кількість програм майже будь-якого призначення.
Після основних утиліт для роботи з файлами й текстом перша програма, що знадобиться будь-якому користувачеві Linux – це текстовий редактор.
Текстовий редактор буде потрібно користувачеві Linux у першу чергу для того, щоб змінити налаштування системи або свого оточення. При цьому потрібно буде редагувати конфігураційні файли, які завжди представлені в текстовому форматі. Але й власні завдання користувача можуть зажадати редагування текстових файлів: наприклад, сценарії й програми, електронні листи – все це дані в текстовому форматі. Текстові дані, отримані за допомогою стандартних утиліт, теж буває зручно зберігати у файлах і редагувати.
Не варто плутати текстові редактори й текстові процесори. Текстові процесори, наприклад OpenOffice Writer або Microsoft Word, призначені для створення документів, у яких, крім властиво тексту, міститься й різна метаінформація (інформація про оформлення): розміщення тексту на сторінці, шрифт і т.п. Оскільки в текстовому форматі не передбачено засобів для збереження інформації про оформлення (там є тільки символи й рядки), текстові процесори використовують власні формати для зберігання даних. Текст, у якому немає ніякої метаінформації про оформлення, називають "plain text" (тільки текст, простий текст).
За допомогою текстових редакторів можна працювати не тільки з форматом plain text. Різна метаінформація (про оформлення, спосіб використання тексту, наприклад, як посилання та ін.) може бути записана й у вигляді звичайних символів (тобто в текстовому форматі), але зі спеціальною угодою, що ці символи потрібно інтерпретувати спеціальним чином: як інструкції з обробки тексту, а не як текст. Такі інструкції називаються розміткою. Так працює, наприклад, формат HTML.
Найважливіша умова для текстового редактора в Linux – можливість працювати в терміналі, тому що це основний спосіб керування системою. Тому введення даних і редагування повинні повністю здійснюватися засобами терміналу, тобто алфавітно-цифровими й функціональними клавішами. Основні текстові редактори Linux:
Vi;
Emacs.
У Linux широко використовуються біля десятка текстових редакторів. Але найбільше популярними є редактори vi і emacs.
Редактор vi – один з найстарших і наймогутніших редакторів в Linux. Сучасний варіант цього редактора називається vim (Vi IMproved – поліпшений vi). vim має багато додаткових можливостей, таких як:
багаторівневий процес скасування раніше виконаних дій (undo);
використання декількох вікон редагування;
редагування командного рядка;
вбудована довідкова система (команда :help) і багато чого іншого.
Під ім'ям Vi, насправді, може ховатися кілька різних програм: з моменту появи Vim в операційній системі UNIX (а це відбулося близько 30 років тому) цей редактор став стандартом. На сьогодні існує ряд програм, які повторюють вид і функціональність "класичного" Vi (наприклад, nvi), або дуже схожі, але з розширеними можливостями (Vim, elvis).
Коли користувач Linux набирає в командному рядку Vim, швидше за все, буде запущена "полегшена" версія Vi.
Популярність Vi не випадкова: цей текстовий редактор дозволяє не тільки робити прості операції редагування текстових файлів – він добре пристосований і для максимально швидкого й ефективного рішення ряду суміжних з редагуванням завдань. Серед найважливіших його можливостей – інструменти для роботи з текстами на різних мовах програмування й у різних форматах розмітки. Крім того, у Vim є спеціальні засоби для компіляції програм.
Редактор Vi завжди починає роботу в командному режимі. У цьому режимі є два способи віддавати команди редактору. При натисканні на клавіші вводяться команди, які не відображаються – вони просто виконуються.
Питання для перевірки:
Розкажіть про основні функції операційних систем.
Назвіть три основні різновиди сучасних ОС.
Охарактеризуйте таку властивість операційної системи як багатозадачність.
Назвіть відомі вам версії ОС Linux.
Опишіть недоліки і переваги застосування ОС Linux.
Охарактеризуйте операції, які можна виконувати в операційної системи Linux.
Охарактеризуйте вимоги до імен файлів в ОС Linux.
Охарактеризуйте структуру каталогів ОС Linux.
Назвіть основні команди, які використовуються для роботи з файлами в ОС Linux.
Яка команда використовується для створення каталогу?
Яка команда використовується для зміни поточного каталогу?
Опишіть правила надання прав доступу до файлів та папок в ОС Linux.