Loading AI tools
базовий комплекс програм, що виконує керування апаратною складовою комп'ютера або віртуальної машини З Вікіпедії, вільної енциклопедії
Операці́йна систе́ма, скорочено ОС (англ. operating system, OS) — це базовий комплекс програм, що виконує керування апаратною складовою комп'ютера або віртуальної машини; забезпечує керування обчислювальним процесом і організовує взаємодію з користувачем.
Ця стаття має кілька недоліків. Будь ласка, допоможіть удосконалити її або обговоріть ці проблеми на сторінці обговорення.
|
Операційна система звичайно складається з ядра операційної системи та базового набору прикладних програм.
Головні функції:
Поняття операційної системи напряму пов'язане з такими поняттями, як:
Відносно свого призначення, операційні системи бувають[1]:
Відносно способу встановлення (інсталяції) операційної системи, операційні системи бувають[джерело?]:
Відносно відповідності стандартам операційні системи бувають:
Відносно ліцензії, можливостей розширення та можливостей внесення змін до вихідного коду операційні системи бувають:
До складу операційної системи входять:
Ядро системи — це набір функцій, структур даних та окремих програмних модулів, які завантажуються в пам'ять комп'ютера при завантаженні операційної системи та забезпечують три типи системних сервісів:
Кожна з цих підсистем представлена відповідними функціями ядра системи.
Багатозадачні операційні системи також включають ще одну обов'язкову складову — механізм підтримки багатозадачності. Ця складова не надається як системний сервіс і тому не може бути віднесена до жодної з підсистем.
Існує три основних механізми забезпечення багатозадачності (планування задач):
У перших двох випадках на кожному з процесорів в окремо взятий момент часу обраховується лише одна задача, але за рахунок достатньо малого кванта часу (в межах мілісекунд), що почергово надається кожній з задач, виникає ілюзія одночасного виконання в системі багатьох задач.
В сучасних[коли?] системах, як правило комбінуються методи 2 і 3.[джерело?]
Окрема операційна система зазвичай може виконуватись на обмеженому переліку обладнання, яке забезпечує потрібні їй механізми. Сучасні універсальні (і не тільки) операційні системи зазвичай вимагають апаратної підтримки наступних механізмів:
Можуть існувати і інші вимоги.
Функції ядра операційної системи можуть бути виконані внаслідок виконання в прикладних програмах спеціальних функцій — системних викликів. Призначення системного виклику полягає в тому, що прикладні програми не в змозі самотужки визначити, за якими адресами знаходяться функції ядра.
Підсистема керування введенням-виведенням реалізує базові механізми обміну даними між пристроями введення-виведення та оперативною пам'яттю обчислювальної машини та забезпечує організацію файлів в файлові системи.
Операція введення виконується як читання даних з зовнішнього пристрою в оперативну пам'ять, операція виведення — як запис даних з оперативної пам'яті на зовнішній пристрій.
При роботі з файлами система введення-виведення впроваджує спеціальну абстракцію — потік вводу-виводу, що дозволяє програмам, які звертаються за сервісами введення-виведення, використовувати одноманітний перелік функцій роботи з файлами незалежно від типу пристрою, на якому знаходиться файл, та типу файлової системи, яка містить цей файл. Відмінності доступу до різних пристроїв та файлових систем забезпечуються додатковими програмними модулями — драйверами пристроїв та файлових систем.
В окремих операційних системах підсистема керування введенням-виведенням також може впроваджувати механізми, які призвані підвищити швидкість обміну даними між задачами та файлами. Найчастіше використовується механізм буферизації (кешування) даних, який полягає в тому, що при читанні даних з файлу підсистема намагається за одну операцію введення читати дані блоками зручного (звичайно досить великого) розміру, а не порціями, які запитує задача. Завдяки цьому за одну операцію введення в оперативну пам'ять потрапляють також додаткові дані, які зберігаються в кеші і надалі передаються в програму без додаткових звернень до пристрою. Подібним чином цей механізм працює і при виконанні операцій запису.
Будь-яка програма може виконуватись лише тоді, коли вона завантажена в оперативну пам'ять, так само, будь-які дані з файлів можуть оброблятись лише тоді, коли вони завантажені в оперативну пам'ять. Завантаження програми та даних в оперативну пам'ять призводить до того, що в оперативній пам'яті одночасно знаходяться одразу кілька компонентів: ядро операційної системи, командний інтерпретатор, програма, що виконується, та дані, що обробляються. Крім того, програма в процесі свого виконання може звертатись до підсистеми керування оперативною пам'яттю з запитами на виділення додаткової — динамічної — оперативної пам'яті.
В багатозадачних операційних системах кількість компонентів, що одночасно можуть знаходитись в оперативній пам'яті зростає пропорційно кількості задач і може сягати сотень.
Підсистема керування оперативною пам'яттю забезпечує розподіл оперативної пам'яті між різними компонентами, а також розподіляє пам'ять під кеш системи введення-виведення.
В окремих багатозадачних операційних системах підсистема керування оперативною пам'яттю також забезпечує віртуалізацію оперативної пам'яті, завдяки чому кожна задача (процес) отримує власну віртуальну пам'ять, причому таким чином, що нестача реальної (фізичної) пам'яті покривається за рахунок перерозподілу даних між оперативною пам'яттю та зовнішнім накопичувачем і переміщення даних між фізичною оперативною пам'яттю і зовнішнім накопичувачем приховується від задач. Це переміщення називається підкачуванням сторінок (англ. paging) або свопінгом (англ. swapping — обмін) — в залежності від термінології конкретної ОС.
Запровадження механізму віртуалізації оперативної пам'яті дозволяє отримати два корисних наслідки:
Віртуалізація оперативної пам'яті вимагає апаратної підтримки і звичайно забезпечується через спеціальну таблицю сторінок пам'яті, що містить відповідності між віртуальними та фізичними адресами.
Підсистема керування задачами (процесами) забезпечує створення задачі (процесу), завантаження програмного коду і його виконання та завершення задачі (процесу).
В багатозадачних системах підсистема керування задачами (процесами) також забезпечує механізми залежностей між задачами, в тому числі: синхронізацію задач та успадкування властивостей.
Взаємодія процесів дозволяє процесам синхронізувати свою роботу, сумісно і узгоджено використовувати спільні ресурси та спільно виконувати обробку даних.
Взаємодія процесів забезпечується всіма підсистемами ядра ОС: підсистема керування введенням-виведенням забезпечує передачу даних між процесами; підсистема керування оперативною пам'яттю розподіляє під процеси спільну оперативну пам'ять, підсистема керування процесами забезпечує синхронізацію виконання процесів та впроваджує механізм обміну сигналів, за допомогою якого процеси повідомляються про виникнення в системі надзвичайних подій.
Безпека ОС базується на двох ідеях:
Запити, в свою чергу, також діляться на два типи:
На додачу до моделі дозволити/заборонити системи з підвищеним рівнем безпеки також слідкують за діяльністю користувачів, що дозволяє пізніше дати відповідь на питання типу «Хто читав цей файл?»
Більшість сучасних операційних систем мають графічний інтерфейс користувача (ГІК, англ. graphical user interfaces, GUI, вимовляється як «гуі»). В деяких старіших ОС ГІК вбудований у ядро, як, наприклад, в оригінальних реалізаціях Microsoft Windows чи MacOS. Більшість сучасних ОС є модульними і графічна підсистема у них відділена від ядра (як, наприклад, у Лінукс, МакОС Х і частково у Віндовс).
Багато операційних систем дозволяють користувачеві встановити будь-який графічний інтерфейс на власний вибір. Типовим прикладом у більшості Unix-подібних систем (BSD, Linux, Minix) є віконна система Х у поєднанні з графічним менеджером KDE чи Gnome. Для Unix-подібних-систем графічний інтерфейс не є необхідним.
Графічний інтерфейс користувача невпинно розвивається. Наприклад, інтерфейс Windows модифікується щоразу при випуску нової основної версії, а ГІК MacOS було кардинально змінено після випуску Mac OS X у 2001 році.
Драйвери — це особливий тип комп'ютерних програм, розроблених для коректної взаємодії з пристроями. Вони представляють інтерфейс для взаємодії з пристроєм через певну шину комп'ютера, до котрої даний пристрій під'єднано, за допомогою ряду команд що відправляють та отримують дані з пристрою. Ці програми залежні як від пристрою так і від операційної системи, тобто кожен пристрій потребує свого драйвера під кожну ОС.
Ключовим моментом проєктування драйверів є абстрагування. Кожна модель пристрою (навіть якщо пристрої однакового класу) є унікальною. Новіші моделі часто працюють швидше чи продуктивніше і інакше контролюються. ОС не може знати, як контролювати кожен пристрій зараз і в майбутньому. Для вирішення цієї проблеми ОС лише задає правила поведінки класу пристроїв. Задачею драйвера є перетворення цих правил у специфічні для кожного пристрою команди керування.
В більшості сучасних ОС реалізовано підтримку стеку протоколів TCP/IP. Це означає що вони можуть взаємодіяти в мережі, доступаючись до ресурсів одне одного.
Багато ОС також підтримують один чи кілька специфічних протоколів, як, наприклад, SNA на системах від IBM, DECnet на системах від Digital Equipment Corporation, та Microsoft-специфічні протоколи для Windows. Для певних задач використовуються специфічні протоколи, як, наприклад, NFS для роботи з файлами через мережу.
Перші комп'ютери взагалі не мали ОС. На початку 1960-х вони лише комплектувались набором інструментів для розробки, планування та виконання завдань. Серед інших можна виділити системи від Remington Rand (UNIVAC) та Control Data Corporation.[2]
До кінця 1960-х, проте, було розроблено цілий ряд операційних систем, в котрих були реалізовані всі або більшість з вищеперелічених функцій. До них можна віднести «Atlas» (Манчестерський університет), «CTTS» та «ITSS» (Массачусетський технологічний інститут (MIT)), «THE» (Технічний університет Ейндговена), «RS4000» (Оргуський університет) та інші (на той момент їх налічувалось близько сотні).[3]
Найбільш розвинуті ОС того часу, такі як OS/360 (компанія IBM), SCOPE (компанія CDC) та завершений вже в 1970-х роках MULTICS (МТІ та компанія Bell Labs), передбачали можливість використання багатопроцесорних системи.
Спонтанний характер розробки ОС призвів до наростання кризових явищ, пов'язаних, перш за все, зі складністю та великими розмірами розроблюваних систем. ОС погано масштабувались (простіші не використовували всіх можливостей потужних обчислювальних машин; складніші неоптимально виконувались або взагалі не виконувались на менш потужних системах) і були повністю несумісними між собою.
У 1969 році співробітники МТІ Кен Томпсон, Деніс Рітчі та Браян Керніган з колегами розробили та реалізували ОС UNIX (первинно «UNICS», на противагу «MULTICS»). Нова ОС увібрала в себе багато рис попередниць, але на противагу їм мала цілий ряд переваг:
Завдяки зручності перш за все як інструментального середовища Unix дуже тепло зустріли в університетах, а потім і в галузі в цілому і незабаром вона стала прототипом єдиної ОС, котру можна було використовувати у найрізноманітніших обчислювальних системах, і — більше того — швидко та з мінімумом зусиль перенести на іншу апаратну архітектуру.
Наприкінці 1970-х років співробітники Каліфорнійського університету в Берклі внесли ряд суттєвих вдосконалень у джерельні коди Unix, включно з реалізацією стеку мережевих протоколів TCP/IP. Їх розробка стала відомою під іменем BSD (англ. Berkeley Software Distribution).
Через конфлікт з Bell Labs Річард Столмен поставив задачу реалізувати повністю незалежну від авторських прав ОС на основі ідей Unix, заснувавши проєкт GNU (рекурсивне скорочення англ. GNU's Not Unix)[3].
Незабаром Unix стала стандартом де-факто, а потім і юридичним — ISO/IEC 9945. ОС, що дотримувались цього стандарту чи опираються на нього, називають «відкритими» або «стандартними». До них належать системи, що базуються на останній версії Unix, випущеній Bell Labs (UNIX System V), на розробках Університету Берклі (FreeBSD, OpenBSD, NetBSD), а також ОС Linux, розроблена спільнотою на чолі з Лінусом Торвальдсом та в межах проєкту GNU (основні системні інструменти).
В 2023 році, з метою знизити залежність від технологій США, в Китаї було розроблено першу національну операційну систему з відкритим кодом, яка отримала назву OpenKylin. Згідно повідомлення агентства Reuters, нова операційна система заснована на Linux та підтримується спільнотою з 4000 розробників. ЇЇ можна використовувати на комп'ютерах та планшетах з архітектурами x86, ARM та RISC-V. Платформа використовуватиметься у китайській космічній програмі, а також у фінансовій та енергетичній галузях країни[4].
Сучасні операційні системи типово мають графічний інтерфейс користувача, котрий на додачу до клавіатури користується також вказівниковим пристроєм — мишею чи тачпадом. Старіші системи, та системи, що не призначені для частої безпосередньої взаємодії з користувачем (як, наприклад, сервери) типово використовують інтерфейс командного рядка. Обидва підходи так чи інакше реалізують оболонку, котра перетворює команди користувача — текстові з клавіатури, чи рухи мишки — на системні виклики.
При виборі ОС ключовим моментом є архітектура комп'ютера (зокрема центрального процесора), на котрій вона буде запускатись. На персональних комп'ютерах, сумісних з ІВМ РС, запускаються ОС сімейства Microsoft Windows, Linux, BSD, iOS. На мейнфреймах IBM Z основними ОС є z/OS і Linux. На вбудованих системах використовуються різноманітні вбудовані ОС, а також ОС реального часу, такі як QNX або VxWorks.
До Unix-подібних ОС відноситься велика кількість операційних систем, котрі можна умовно поділити на три категорії — System V, BSD та Linux. Сама назва «UNIX» є торговою маркою, що належить The Open Group[en], котра ліцензує кожну конкретну ОС на предмет того, чи відповідає вона стандарту. Тому через ліцензійні чи інші неузгодження деякі ОС, котрі фактично є Unix-подібними, не визнані такими офіційно.
Unix-подібні ОС запускаються на великій кількості процесорних архітектур. Вони широко використовуються як серверні системи у бізнесі, як стільничні системи в академічному та інженерному середовищі. Тут популярні Linux та BSD-системи; деякі варіанти Linux (такі, як Ubuntu, Red Hat Enterprise Linux та Suse) набувають широкого поширення в корпоративному середовищі. Linux також є популярною системою на стільницях розробників, системних адміністраторів та інших ІТ-спеціалістів.
Деякі варіанти Unix, як, наприклад, HP-UX компанії Hewlett-Packard та AIX від IBM, запускаються лише на апаратних системах своїх розробників. Інші, як, наприклад, Solaris, можуть запускатись на багатьох апаратних типах, включаючи сервери на базі x86 та ПК.
Спочатку родина ОС Microsoft Windows проєктувалась як графічна надбудова над старими середовищами DOS. Сучасні версії розроблені на базі нового ядра NT(англ. New Technology, нова технологія), яке з'явилось в OS/2, запозичене[джерело?] з VMS. Windows запускається на 32- та 64-бітних процесорах архітектур IA-32 та x86-64 (Intel та AMD); а також ARM. Попередні версії також могли запускатись на процесорах DEC Alpha, MIPS та PowerPC.
Станом на 2006 рік Windows утримує монопольне становище (близько 94 %) світового ринку настільних систем, дещо втрачаючи позиції через зростання популярності систем з відкритими джерельними кодами. Вона також використовується на малих та середніх серверах мереж та баз даних.
Станом на 27 червня 2008 року операційні системи сімейства Microsoft Windows займають 91 % частки світового ринку ОС[5]
У листопаді 2006 року, після більш ніж 5 років розробки, корпорація Microsoft випустила ОС Windows Vista, що містить велику кількість нововведень та архітектурних змін в порівнянні з попередніми версіями Windows. Серед інших можна виділити новий інтерфейс користувача, названий Windows Aero, ряд вдосконалень безпеки, як, наприклад, Контроль реєстраційного запису користувача (User Account Control) та нові програми для мультимедіа, як, наприклад, Windows DVD Maker.
Windows 8 представив користувацький інтерфейс Metro з підтримкою сенсорних екранів. Версія Windows 8.1 більш зручна для користувачів, які не мають сенсорного екрана[джерело?].
Дві найважливіші функції операційних систем Windows — це контроль за доступом до апаратних засобів і керування застосунками. Керування апаратними засобами здійснюється за допомогою драйверів пристроїв, які є або стандартними компонентами ОС, або присутні на носії, що постачається разом з апаратним пристроєм, або доступні на вебсайті виробника пристрою.
Сучасні версії Windows є багатозадачними і підтримують багатопроцесорність. Основним компонентом графічної підситеми є DirectX.[джерело?]
Mac OS X — це ряд графічних ОС, що розроблюються, реалізуються та підтримуються компанією Apple. Mac OS X — це наступниця оригінальної MacOS, що її розробляла Apple з 1984 року. На відміну від попередниці, Mac OS X є Юнікс-системою, що розроблена на основі NEXTSTEP, близької до гілки BSD.
Перші випуски Mac OS X були у 1999 році — Mac OS X Server 1.0, та в березні 2001 — Mac OS X 10.0. З того часу було випущено ще багато версій Mac OS X у варіантах «кінцевий користувач» та «сервер». Остання версія macOS Catalina (альтернативна назва: OS X 10.15)], випущена 7 жовтня 2019 року.
Серверна версія Mac OS X Server архітектурно ідентична версії для кінцевого користувача, але містить програми для керування робочими групами та адміністрування ключових мережевих служб, включаючи поштові служби, сервери каталогу, доступу до файлів, веб, календарів, вікі Samba, LDAP, DNS, Apache та ін. У версії 10.7 серверні компоненти встановлюються просто як додатковий набір програм в середовищі робочої станції.
Основна ідея такої системи — легкий перехід від одного комп'ютера до іншого.[джерело?]
Прикладом хмарної ОС є JoliOS (розробка припинена 2016 року)[6].
Цей розділ потребує доповнення. |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.