MULTICS

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Розробник - MIT, GE, Bell

Остання версія - MR 12.5 - 1992

Тип ядра - багаторівневе

Ліцензія - MIT License

Multics (англ. Multiplexed Information and Computing Service ) - одна з перших операційних систем з поділом часу виконання програм (англ. time - sharing operating system ) .

Опис

Multics PC

Розробка операційної системи 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 ) між директоріями .

Також в Multics був вперше реалізований (тепер уже стандартний ) підхід використання стеків для кожного обчислювального процесу в ядрі системи , з окремим стеком для кожного рівня безпеки навколо ядра. Multics також з'явилася однією з перших операційних систем , написаних мовою високого рівня PL / I ( найпершою такою системою була MCP для комп'ютерів Burroughs B5000 , яка використовувала діалект Алгола ) .

Історія проекту

Спочатку 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 для вироблення більш простого і працездатного підходу .

Компанія Honeywell викупила комп'ютерний підрозділ компанії GE і продовжувала розробку системи Multics до 1985 року. Близько 80 багатомільйонних установок було поставлено в університетські , індустріальні та державні обчислювальні центри.

Також на початку 80 -х у Франції в декількох університетах були встановлені комп'ютери з системою Multics .

Після того як компанія Honeywell припинила підтримку системи Multics , користувачі мігрували на інші системи , в тому числі і на системи UNIX. Остання машина з Multics була зупинена 31 жовтня 2000 -го року в канадському Міністерстві Оборони .

У 2007 році вихідний код і документація Multics були передані компанією BULL Массачусетського технологічного інституту і опубліковані на сайті MIT .

Дивно , що ядро системи Multics , що знаходилося постійно в пам'яті комп'ютера і в ті далекі роки часто висміюване за свій розмір і складність , займало всього 135 Кілобайт коду. Перші комп'ютери GE- 645 мали пам'ять розміром 512 * 1024 32 -х бітних слів (або 2 Мегабайта за сьогоднішніми мірками) , тому ядро ​​системи займало не так вже й багато місця.

Варто також зауважити , що вся операційна система , включаючи складний компілятор мови PL / I , для користувача команди і додаткові бібліотеки , складалася з приблизно півтора тисяч вихідних файлів , кожен з яких містив приблизно по 200 рядків коду. У скомпільованому вигляді весь цей код займав близько 4,5 Мегабайт , що було величезним розміром на ті часи.

Компілятори Multics в основному оптимізували код за розміром , а не по ефективності використання центрального процесора , що було обгрунтовано прагненням до економії пам'яті багатокористувацької системі .