Як працює система Unix або Linux? [зачинено]


37

Я хотів би знати, як працює ОС в двох словах :

  • Основні компоненти, на яких він побудований
  • Як ці компоненти працюють разом
  • Що робить unix UNIX
  • Чим він відрізняється від інших ОС, таких як Windows

3
ого, на це питання знадобиться стільки часу, щоб відповісти всебічно ... як кілька книг. Є дуже мало ОС (вбудований простір убік і Windows є помітним винятком), які не є Unix.
ксенотеррацид

2
не впевнений, плакати чи сміятися
zvolkov

27
Як працює система Unix або Linux? Дуже добре, дякую :-).
Гаурав

3
Любіть питання. Саме такий спосіб змушує досвідчених користувачів вербалізувати своє власне розуміння і дає нам усім шанс зрозуміти всесвіт Unix та Linux.
Stein Åsmul

5
Ну, фактично кажучи, у вас є оболонка, а під цим - ядро. Так працює і Unix.
Tom Zych

Відповіді:


74

Система UNIX складається з декількох частин або шарів, як я хотів би їх назвати.

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

Шарування

  1. Ядро. Це центральна програма, яку запускає завантажувач. Він здійснює основну апаратну взаємодію системи (диск, пам'ять, відео, звук) і пропонує віртуальне середовище, в якому вона може запускати програми. Ядро також доставляє всі драйвери, які працюють з усіма невеликими відмінностями між апаратними пристроями. Що стосується зовнішнього світу (вищих шарів), то кожен клас пристроїв поводиться точно так само, як послідовно - що, в свою чергу, програми можуть розвиватися.

  2. Фонові підсистеми. Є просто звичайні програми, які просто не заважають. Вони обробляють такі речі, як віддалений вхід, надають центральну шину повідомлень та виконують дії на основі апаратних / мережевих подій. Наприклад, виявлення Bluetooth, керування Wi-Fi тощо. Будь-які мережеві послуги (файловий сервер, сервер друку, веб-сервер) також працюють на цьому рівні. У системах UNIX це все просто звичайні програми.

  3. Інструменти командного рядка. Це все маленькі програми, за допомогою яких можна запустити такі речі, як редагування тексту, завантаження файлів або адміністрування системи. На даний момент система UNIX є повністю доступною для системних адміністраторів. У Windows цей шар насправді вже не існує.

  4. Графічний інтерфейс користувача. Це також просто програми, різниця лише в тому, що вони малюють вікна на екрані замість написання тексту. Це робить систему легшою у використанні для постійних користувачів.

Будь-яка служба чи подія проходитимуть знизу вгору.

Бібліотеки - спільна платформа

Програми роблять багато поширених речей, таких як показ вікна, малювання матеріалів на екрані або завантаження файлу. Ці речі однакові для декількох програм, отже, цей код поміщається в окремі "бібліотечні" файли ( .soфайли - це означає спільний об'єкт). Бібліотекою можна ділитися в усіх програмах.

Для кожної уявної речі є бібліотека. Є одна для читання / запису файлів PNG. Є один файл у форматі JPEG, для читання XML, для шифрування, для відтворення відео тощо.

У Linux спільні бібліотеки для розробників додатків - Qt та Gtk. Ці бібліотеки використовують бібліотеки нижчого рівня внутрішньо для своїх конкретних потреб, при цьому викриваючи їх функціональність приємно послідовно і стисло, розробники додатків ще швидше створюють додатки.

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

Деякі бібліотеки можна використовувати в різних операційних системах (наприклад, Qt є), а деякі дійсно спеціально пов'язані в одну операційну систему. Це обмежить вашу програму, щоб вона могла працювати лише на цій платформі.

Міжпроцесовий зв’язок

Третій кутовий фрагмент операційної системи - це спосіб спілкування програм один з одним. Це механізми міжпроцесорної комунікації (IPC). Вони існують у кількох варіантах, наприклад, фрагмент спільної пам'яті або невеликий канал, встановлений між двома програмами для обміну даними. Існує також центральна шина повідомлень, на якій кожна програма може розміщувати повідомлення та отримувати відповідь. Це використовується для глобальної комунікації, де невідомо, яка програма може відповісти.

Від бібліотек до операційних систем

Маючи бібліотеки, IPC та ядро, програмісти можуть створювати всі види програм для системних служб, адміністрації користувачів, конфігурації, адміністрування, офісних робіт, розваг тощо. Це формує повний набір, який початківці користувачі визнають "операційною системою" ".

У системах UNIX / Linux усі сервіси - це лише програми. Усі інструменти системного адміністратора - це лише програми. Всі вони роблять свою роботу, і їх можна прикувати разом. Я узагальнив багато основних програм на веб-сайті http://codingdomain.com/linux/sysadmin/


Відмінні частини Windows

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

Детально це принципи, які можна знайти в системах UNIX / Linux:

  • Є єдині способи доступу до інформації. ("Все - лише файл"). Ви можете відкрити файл, мережевий сокет, канал IPC, параметри ядра та блокувати пристрій як файл. Звідси поява віртуальних файлових систем у / dev, / sys та / proc. Єдиний API, який вам коли-небудь знадобиться open, readі close.

  • Основна система прозора. Кожна програма діє за одними і тими ж правилами. На відміну від Windows, між "консольною програмою", "програмою gui" або "фоновою службою" немає штучної різниці. Усі вони - просто програми, які, можливо, роблять різні речі. Їх також можна спостерігати, аналізувати та налагоджувати таким же чином.

  • Налаштування читаються, редагуються та можуть коментуватися коментарями. Зазвичай вони мають формат INI, але можуть використовувати користувацький формат для потреб цієї програми. Оскільки вони просто файли, їх можна копіювати в інші системи, архівувати або створювати резервні копії за допомогою стандартних інструментів.

  • Немає великих додатків "зроби все за один раз". Мантра - це "зроби одну справу, зроби це добре". Інструменти командного рядка можуть бути ланцюговими і разом бути потужними. Окремі сервіси (наприклад, SMTP, IMAP та POP та логін) - це окремі підпрограми, уникаючи складних переплетених кодів та проблем безпеки. Складні робочі середовища делегують важку роботу окремим програмам.

  • fork(). Нові програми ініціюються самим клонуванням існуючої програми. Клон налаштовує все (наприклад, ручки файлів) і необов'язково замінює себе новим програмним кодом. Це робить дійсно простим застосування тих же налаштувань безпеки та обмежень до нових програм, спільної пам'яті або налаштування механізму IPC. Вартість запуску процесу також дуже низька.

  • Файлова система - це одне дерево, в яке можуть бути змонтовані інші дискові розділи та мережеві спільні папки. Знову існує універсальний спосіб доступу до даних. Поширені системні місця (наприклад, їх /usrможна легко встановити як мережеву спільну доступність

  • Система побудована для низьких прав користувачів. Після входу в систему кожен користувач (крім root) обмежується власними ресурсами, лише запущеними програмами та файлами. Послуги мережі скорочують свої пільги якнайшвидше. Є єдиний зрозумілий спосіб отримати більше пільг або попросити когось виконати пільгову роботу від їх імені. Будь-який інший дзвінок обмежений обмеженнями та обмеженнями програми.

  • Кожна програма зберігає налаштування у прихованому файлі / папці домашнього каталогу користувача. Жодна програма ніколи не намагається написати файл глобальних налаштувань.

  • Прихильність до відкрито описаних механізмів комунікації над секретними механізмами або специфічними механізмами 1 на 1. Іншим постачальникам та розробникам програмного забезпечення рекомендується дотримуватися тієї ж специфікації, тому речі можна легко з'єднати, замінити і все-таки вільно з'єднати.


1
чудова відповідь, я знаю, що це справді важко пояснити коротко! Спасибі! ;-)
Sander Versluys

1
так, сер, молодець на цю відповідь.
Стефан

14
Де кнопка +10 ???
EricSchaefer

1
Дякую всім за коментарі та голоси! Приємно знати, що відповідь це добре оцінено!
vdboor

1
@faif, це цілком стандартно (навіть в операційних системах Microsoft це є), і краса приваблює погляд того, хто вважає. Справа в тому, що все - файл, навіть спеціальні.
psusi

11

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

Пишіть програми, які роблять одне і роблять це добре. Напишіть програми для спільної роботи. Напишіть програми для обробки текстових потоків, оскільки це універсальний інтерфейс.

Більше про філософію UNIX можна прочитати в ESRaymond "Мистецтво програмування UNIX".


2
+1 за "Мистецтво програмування UNIX". Однак, поки API визначений навколо C, немає технічної проблеми з реалізацією цілої системи в Haskell (з бітами складання;)) або щось подібне.
Мацей П'єхотка

3
Біти складання можуть бути записані і в Haskell. Подивіться на потенціал
Філ Міллер

10

Тут є кілька відмінних відповідей. Однак, я думаю, що залишилося осторонь - це те, чим * nix відрізняється від інших операційних систем, зокрема Microsoft Windows.

Вищеописана вище концепція "зроби одну справу, зроби це добре" настільки важлива для * nix операційних систем, що її іноді можна не помітити. Однак саме ця філософія дизайну робить Linux таким гнучким та потужним.

Наприклад, інтерфейс користувача Graphics (GUI) для MS Windows переплітається в ОС. Встановити операційну систему MS без GUI практично неможливо. В Linux ви можете легко створити сервер або вбудовану систему, яка взагалі не має графічної складової. Він може бути повністю керований командним рядком і все-таки бути повнофункціональним сервером.

Модульна конструкція Linux також дозволяє системному адміністратору знищити сервіс, оновити його та відновити його назад, не перезавантажуючи операційну систему. Насправді про єдиний раз, коли потрібно перезавантажити операційну систему Linux, це коли ядро ​​змінюється або модернізується.

Наприклад, ви можете встановити новий менеджер Windows (gnome, kde, залежно від того) в Linux, і користувач, який зараз увійшов у систему, може ніколи не знати.

У Windows часто найпростіші зміни системи вимагають перезавантаження, хоча іноді це швидше питання безпеки, ніж фактична технічна вимога. Я б зазначив, що це один із основних недоліків операційних систем MS. На Linux ви можете оновити багато драйверних модулів і мало чи не впливати на користувачів. У Windows вам може знадобитися перезавантажити все вікно, якщо ви просто встановите нову програму.

Ця модульна конструкція також надає Linux надзвичайну гнучкість. Кожна система Linux може бути налаштована під конкретні завдання, які потрібно виконати, з мінімальною витратою ресурсів. У Windows не можна вимкнути інтерфейс GUI для запуску простого HTTP-сервера. Існує пам'ять пам'яті, що Windows передбачає, що створює бар'єр, під яким ваше обладнання не може йти. Це основна причина того, що Linux став ОС для багатьох мобільних та вбудованих додатків.

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



2

Я рекомендую прочитати розширене програмування в Unix Environment 2e, щоб дізнатися багато про API Unix Standard (SUS) та POSIX, що дасть вам уявлення про те, що робить Unix Unix і як компоненти працюють, і працювати разом.

Однак це дуже важка книга С і більше довідник. Якщо у вас проблема з безсонням, просто візьміть її спати з собою. Це вбік, якщо ви програміст Unix C, це обов'язково.


2

У дусі попередніх двох книжкових рекомендацій я також рекомендував би

Інтерфейс програмування LINUX М. Керріска

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.