Відмінності між версіями «MULTICS»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Рядок 1: Рядок 1:
 
''' УВАГА! ЗМІСТ ЦІЄЇ ВІКІ СТАТТІ МОЖЕ МІСТИТИ ГРАМАТИЧНІ (НЕ ЗМІСТОВІ!) ПОМИЛКИ. ЯКЩО ТАКІ Є, ТО ВОНИ БУДУТЬ ВИПРАВЛЕНІ НАЙБЛИЖЧИМ ЧАСОМ'''
 
''' УВАГА! ЗМІСТ ЦІЄЇ ВІКІ СТАТТІ МОЖЕ МІСТИТИ ГРАМАТИЧНІ (НЕ ЗМІСТОВІ!) ПОМИЛКИ. ЯКЩО ТАКІ Є, ТО ВОНИ БУДУТЬ ВИПРАВЛЕНІ НАЙБЛИЖЧИМ ЧАСОМ'''
 +
 +
'''Розробник''' - MIT, GE, Bell
 +
 +
'''Остання версія''' - MR 12.5 - 1992
 +
 +
'''Тип ядра''' - багаторівневе
 +
 +
'''Ліцензія''' - MIT License
  
 
''' Multics ''' (англ. Multiplexed Information and Computing Service ) - одна з перших операційних систем з поділом часу виконання програм (англ. time - sharing operating system ) .
 
''' Multics ''' (англ. Multiplexed Information and Computing Service ) - одна з перших операційних систем з поділом часу виконання програм (англ. time - sharing operating system ) .

Версія за 18:24, 30 листопада 2013

УВАГА! ЗМІСТ ЦІЄЇ ВІКІ СТАТТІ МОЖЕ МІСТИТИ ГРАМАТИЧНІ (НЕ ЗМІСТОВІ!) ПОМИЛКИ. ЯКЩО ТАКІ Є, ТО ВОНИ БУДУТЬ ВИПРАВЛЕНІ НАЙБЛИЖЧИМ ЧАСОМ

Розробник - 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 в основному оптимізували код за розміром , а не по ефективності використання центрального процесора , що було обгрунтовано прагненням до економії пам'яті в багатокористувацької системі .