[неперевірена версія][перевірена версія]
Вилучено вміст Додано вміст
IvanBot (обговорення | внесок)
м →‎Опис: replaced: в світі → у світі
 
(Не показано 24 проміжні версії 17 користувачів)
Рядок 8:
|programmed_in = [[PL/1]], [[мова асемблера]]
|family =
|working_state =
|source_model =
|released = 1969
Рядок 30 ⟶ 29:
}}
 
'''Multics''' ('''Mult'''iplexed '''I'''nformation and '''C'''omputing '''S'''ervice) одна з перших [[Операційна система|операційних систем]] з [[Розподіл часу|поділом часу]] виконання програм (time-sharing operating system).
 
== Опис ==
Розробка операційної системи Multics була розпочата в [[1964]] році. Спочатку в цьому проекті були зайняті [[Массачусетський технологічний інститут]] (MIT), а також компанії [[General Electric]] (GE) і [[Bell Labs]]. Компанія Bell Labs вийшла з проекту в 1969 році, а в 1970 році комп'ютерний бізнес компанії General Electric (разом з Multics) відійшов до компанії [[Honeywell]], яка продала його BULL ([[en:Groupe Bull]]). Multics був задуманий компанією General Electric як комерційний продукт, і став таким вже під керівництвом компанії Honeywell, хоча так ніколи і не знайшов успіху на комп'ютерному ринку.
 
Як би там не було, система Multics зробилазначно дуже великий впливвплинула на комп'ютерну індустрію завдяки багатьом новаторським і цінним ідеям, закладеним ву неї. Хоча система і піддавалася численним глузуванням з боку критиків, вона все ж показала, що закладені в неї концепції мають право на довгострокове життя у світі операційних систем.
 
Система Multics мала безліч характерних особливостей, що забезпечували її безвідмовність і високу продуктивність. Наприклад, додатково до підтримки модульності програмного забезпечення, система також була орієнтована на модульну підтримку використовуваних в її роботі електронних пристроїв, що дозволило нарощувати обчислювальні можливості системи простою заміною її модулів: [[Центральний процесор|центрального процесора]], пам'яті, дискового простору, і т. д. Окремі для кожного користувача списки доступу до файлів забезпечили досить гнучкий механізм колективного використання інформації в системі, що гарантуєгарантувало також забезпечення повної конфіденційності інформації, що зберігається та використовується користувачами. Також система Multics мала ряднизку стандартних механізмів, які давали можливість інженерам аналізувати обчислювальні потужності системи, а також наборомнабір механізмів, що забезпечували оптимізацію роботи самої операційної системи.
 
== Інноваційні ідеї ==
Multics була однією з перших операційних систем, що реалізувала плоску модель зберігання даних, чітко розділяла концепції [[файл]]ів (званих в системі Multics сегментами) і пам'яті обчислювальних процесів. Пам'ять обчислювальних процесів складалася із сегментів, кожен з яких володів своїм адресним простором. Для читання чи запису в сегменти обчислювальний процес використовував інструкції центрального процесора системи, а операційна система брала на себе всю турботу щодозабезпечувала збереження змінених даних на пристрої зовнішньої пам'яті комп'ютера.
 
Таким чином, в Multics була спроектована і реалізована повністю централізована [[файлова система]], в якій файли, фізично розташовані на різних фізичних пристроях зовнішньої пам'яті, логічно об'єднуються в один централізований архів або деревоподібну ієрархічну структуру, проміжними вузлами якої є іменовані директорії (або каталоги), а в листі містяться файли.
 
У Multics була також спроектована і реалізована велика сегментно-сторінкова віртуальна пам'ять, яка дозволила використовувати відображення файлів в сегменти віртуальної пам'яті. Іншими словами, при відкритті файлу у віртуальній пам'яті відповідного процесу утворювався сегмент, до якого повністю відображався файл, розташований у зовнішній пам'яті (слід зазначити, що у файловій системі Multics на базовому рівні підтримувалися файли зі сторінковою структурою. Більш складніСкладніші організації були надбудовою). Подальша робота з файлом відбувалася на основі загального механізму управління віртуальною пам'яттю.
 
Однією з головних незручностей такого підходу (що з'явився в основному через відмінності електронних архітектур обчислювальних машин, на яких система працювала), було обмеження розміру сегмента до 256*1024 32-[[біт]]них слів, що дорівнює 1 [[мегабайт]]у. Тому для роботи з файлами, більшимизабільшими за розміром, ніж встановлений ліміт, мав використовуватися додатковий код у виконуваних програмах. Самі файли, за розміром більші, ніж 256*1024 32-бітних слів, представлялися системою у вигляді ряду з'єднаних воєдино сегментів.
 
Слід також сказати, що до появи великих баз даних і графічних даних величезних обсягів дане обмеження за розміром файлів порушувалося вкрай рідко.
 
В системі Multics була вперше реалізована і інша інноваційна ідея - — [[Виклик віддалених процедур#Динамічне зв'язування|динамічне зв'язування]] (dynamic linking) виконуваної програми з бібліотеками коду. Завдяки динамічному зв'язуванні виконуваний процес міг запитувати у системи про підключення додаткових сегментів до власного адресного простору, а саме сегментів, що містять корисний код для виконуваної програми.
 
Таким чином програми змогли автоматично використовувати зовнішні бібліотеки коду, що зберігаються в окремих сегментах, створюючи при цьому динамічні зв'язку з функціями, збереженими в цих бібліотеках. Динамічний зв'язок із зовнішнім виконуваним кодом створювався лише один раз, під час першого виклику функції з бібліотеки, і надалі міг бути використаний повторно. Оскільки кожному користувачеві в системі відповідали окремі процеси, то різні зовнішні бібліотеки можуть бути залученими до однієї і тієї ж програми, залежно від потреб користувача.
 
Важливим було і те, що з правильним налаштуванням системи безпеки в Multics код з одного сегмента міг отримувати доступ до структур даних, ініціалізованимрозташованих в зовсім іншому процесі. Для такої взаємодії між призначеними для користувача і окремими [[Демон (програма)|daemon]]-процесами процес користувача повинен був динамічно підключити сегмент коду, асоційований з цим процесом і викликати методи якыякі там знаходяться . Код, що знаходиться в підключеному сегменті, міг напряму працювати з використовуваними в демона структурами даних. Коли викликаний код з підключеного сегмента закінчував роботу, виконання поверталося в користувацький процес через звичайну процедуру повернення з викликаного методу.
 
Варто зауважити, що дві наведені вище ідеї так досі і не були реалізовані в повній мірі на сьогоднішніх найбільш поширенихнайпоширеніших операційних системах, незважаючи на великий розвиток комп'ютерної техніки, що почався в 60-х роках; хоча в своїй нинішній реалізації ці ідеї формують те, що ми називаємо динамічнимидинамічним зв'язкамиязуванням (dynamic linking) в комп'ютерних системах.
 
Окремо варто згадати про те, що система Multics підтримувала досить агресивну переконфігурацію всієї системи «на ходу», дозволяючи підключати, відключати та настроювати центральні процесори, блоки пам'яті, жорсткі диски та інші пристрої, не зупиняючи при цьому всю систему. Наприклад в [[MIT]] під час профілактики системи Multics було звичайною практикою розділяти систему - — яка була мультипроцесорною - — на дві, поступово конфігуруючи комп'ютерні пристрої для створення двох незалежних одна від одної систем. Одна з систем продовжувала обслуговувати всіх підключених користувачів, а інша дозволяла проводити профілактику, встановлення нових пристроїв або оновлення [[Програмне забезпечення|програмного забезпечення]]. Коли всі необхідні заходи завершувалися, систему знову збирали в єдине ціле без всяких перезавантажень.
 
Як уже було згадано, система Multics могла працювати на багатопроцесорних комп'ютерах, по суті будучи однією з найперших мультипроцесорних операційних систем.
 
Multics була також однією з перших систем, в якій велика увага приділялася безпеці взаємодії між програмами та користувачами. Більше того, Multics, можливо, була найпершою операційною системою, задуманою спочатку і реалізованої як безпечна, попри те, що ранні версії системи Multics все-таки неодноразово зламувалися хакерами. Зломи системи призводили до доопрацюванням системи безпеки, які в кінцевому рахунку визначили широко поширені підходи до архітектури безпеки в операційних системах, і зробили саму систему Multics більш безпечноюбезпечнішою. Як тільки в систему було встановлено електронне обладнання другого покоління з вбудованою підтримкою привілеїв користувачів (визначають права користувача на доступ до даних і програм), зломи системи Multics стали дуже рідкісним явищем.
 
Додатково до того, що в Multics однією з перших була реалізована ієрархічна файлова система, імена файлів могли бути практично довільної довжини і містити будь-які символи. Файл або директорія могли мати кілька імен (коротке і довге); також були доступні для використання символьні посилання (symlink) між директоріями.
Рядок 68 ⟶ 67:
Також в Multics був вперше реалізований (тепер вже стандартний) підхід використання стеків для кожного обчислювального процесу в ядрі системи, з окремим стеком для кожного рівня безпеки навколо ядра.
 
Multics також стала однією з перших операційних систем, написаних [[Мова програмування#Мови програмування високого рівня|мовою високого рівня]] [[PL/I]] (найпершою такою системою була [[Burroughs MCP]] для комп'ютерів серії [[Burroughs B5000|B5000]], якащо використовувала діалект [[ALGOLАЛГОЛ]]`у).
 
== Історія проекту ==
Спочатку Multics була розроблена для 36-бітових мейнфреймів [[GE-645]], а пізніше - і для машин серії [[Honeywell 6180]].
 
Компанія [[Bell Labs]] вийшла з проекту в 1969-му році. Кілька людей, які розробляли систему Multics в цій компанії, перейшли до створення системи [[UNIX]]. Пізніше створена система UNIX показала зовнішню схожість з системою Multics, у тому числі в назвах використовуваних команд. Однак, філософія дизайну UNIX була зовсім іншою, орієнтованої на створення системи якомога менших розмірів, і настільки простою, наскільки це буде можливо, в чому і булобула її основна відмінність від системи Multics.
 
Назва «UNIX» (спочатку «Unics») було утворено від «Multics». Буква U в назві UNIX означала «Uniplexed» («односкладова») на противагу слову «Multiplexed» («комплексна»), що лежав в основі назви системи Multics, для того, щоб підкреслити спробу творців UNIX-а відійти від складнощів системи Multics для вироблення простішого і працездатного підходу.
Рядок 85 ⟶ 84:
Остання машина з Multics була зупинена [[31 жовтня]] [[2000]]-го року в канадському Міністерстві Оборони.
 
У 2007 році вихідний[[початковий код]] і документація Multics були передані компанією BULL Массачусетському технологічному інституту і опубліковані на сайті MIT.
 
== Додаткові зауваження ==
Рядок 94 ⟶ 93:
Варто також зауважити, що вся операційна система, включаючи складний [[компілятор]] мови [[PL/I]], призначені для користувача команди і додаткові бібліотеки, складалася з приблизно півтора тисяч вихідних файлів, кожен з яких містив приблизно по 200 рядків коду. У скомпільованому вигляді весь цей код займав близько 4,5 Мегабайт, що було величезним розміром на ті часи.
 
Компілятори Multics в основному оптимізували код за розміром, а не за ефективністю використання центрального процесора, що було обгрунтованообґрунтовано прагненням до економії пам'яті у багатьох користувачів.
 
== ДивітьсяДив. також ==
* [[Compatible Time-Sharing System]]
* [[Unix]]
 
== Посилання ==
{{Compu-stub}}
* [http://www.multicians.org/ Сайт, присвячений системі Multics] {{Webarchive|url=https://web.archive.org/web/20191030094546/https://www.multicians.org/ |date=30 жовтня 2019 }}
{{Wikify}}
* [http://web.mit.edu/multics-history/ Код системи Multics] {{Webarchive|url=https://web.archive.org/web/20140210164025/http://web.mit.edu/multics-history/ |date=10 лютого 2014 }}
{{без джерел}}
 
{{Compu-OS-stub}}
[[Категорія:Вільні операційні системи]]
{{Вікіфікувати|дата=жовтень 2011}}
{{Бібліоінформація}}
{{Honeywell}}
{{Портали|Інформаційні технології|Вільне програмне забезпечення|США}}
 
[[Категорія:Вільні операційні системи]]
[[ar:مولتكس]]
[[ca:Multics]]
[[cs:Multics]]
[[da:MULTICS]]
[[de:Multics]]
[[en:Multics]]
[[es:Multics]]
[[fi:Multics]]
[[fr:Multics]]
[[hu:Multics]]
[[ilo:Multics]]
[[it:Multics]]
[[ja:Multics]]
[[ko:멀틱스]]
[[nl:Multics]]
[[no:Multics]]
[[pl:MULTICS]]
[[pt:Multics]]
[[ru:Multics]]
[[sr:Multics]]
[[sv:Multics]]
[[zh:Multics]]