Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

Свадебная фотосессия в студии первая семейная фотосессия без лишней суеты в Санкт-Петербурге.

Сімейство Unix

Обширне сімейство Unix, що бурхливо розвивається, надав величезний ідейний вплив на розвиток операційних систем в 80-і і 90-і роки XX століття. Генеалогія систем сімейства опублікована на сайті [perso.wanadoo.fr] і дуже обширна для того, щоб її можна було повністю привести в книзі.
Вживання систем сімейства украй всілякі, починаючи від вбудовуваних додатків реального часу, включаючи графічні робочі станції для САПР і геоінформаційних систем, і закінчуючи серверами класу підприємства і масивно паралельними суперкомп'ютерами. Деякі важливі ринкові ніші, наприклад передачу пошти і інші структурні сервіси Internet, системи сімейства займають практично монопольно.
Родоначальником сімейства слідує, мабуть, рахувати не першу версію Unix, а Multics, що спільно розроблялася в 1965—1969 рр. General Electric і Bell Laboratories. За цей час General Electric виділило підрозділ, що займався роботами над Multics і апаратною платформою для неї (Ge-645), в окрему компанію Honeywell.
Multics була першою з промислових систем, що надавали:

  • створення процесів системним викликом fork;
  • сторінкову віртуальну пам'ять;
  • відображення файлів в адресний простір ОЗУ;
  • вкладені каталоги;
  • неструктуровані послідовні файли;
  • розрахований на багато користувачів доступ в режимі розділення часу;
  • управління доступом на основі обмежених ACL (кілець доступу).

Multics зробила величезний вплив не лише на розробників Unix — значні сліди ідейного впливу цієї системи просліджуються так само в Rsx-11 і Vax/vms фірми DEC. Останні Multics-системы були доступні в Internet в 1997 р.
У 1969 р. Bell Laboratories відмовилася від робіт над Multics і почала розробку власної ОС для внутрішньої нужди. Мабуть, основною причиною цього кроку було усвідомлення невідповідності між амбітними цілями проекту Multics (ОС була вельми вимоглива до ресурсів і могла працювати лише на великих комп'ютерах Honeywell), тоді як материнській компанії Bell Labs — American Telephone & Telegraph — була потрібна єдина операційна середа, здатна працювати на різних міникомпиотерах, використовуваних в підрозділах телефонної мережі США.
У Bell Laboratories був оголошений внутрішній конкурс на розробку переносимої ОС, здатної працювати на міникомпиотерах різних постачальників. До проекту були пред'явлені наступні основні вимоги:

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

Один з учасників робіт над Multics, До. Томпсон, розробив украй спрощене ядро ОС, назване UNIX, для мінікомп'ютера Pdp-7. До 1972 р. К. Томпсон і д. Рітчи переписали ядро системи в основному на мові З і продемонстрували можливість перенесення ОС на мінікомп'ютери Pdp-11. Це забезпечило виконання всіх вимог конкурсу, і UNIX була визнана основною платформою для обчислювальних систем, експлуатованих в At&t.
Легенди доносять до нас колоритніші деталі ранніх етапів історії нової системи. Так, одна з дуже популярних легенд, що викладається в тій або іншій формі декількома джерелами, стверджує, що історія UNIX почалася з розробленою для Multics ігрової програми під назвою Star Wars (зоряні війни — сама ця програма і навіть правила гри до нас не дійшли). Звільнений з групи розробників Multics за нехлюйство (ми приводимо тут найбільш радикальний варіант легенди, не піклуючись про його узгодження з історичними фактами), Томпсон зайнявся "пожвавленням" невживаної Pdp-7, що стояла в кутку машинного залу. Пожвавлення полягало в написанні ядра ОС, що реалізовує підмножину функціональності Multics, достатню, для того, щоб перенести і запустити його кохані Star Wars [Бах 1986].
Перші версії UNIX були розраховані на машини без диспетчера пам'яті. Процеси завантажувалися в єдиний адресний простір. Ядро системи розміщувалося в нижніх адресах ОЗУ, починаючи з адреси 0, і називалося сегментом реєнтерабельних процедур. Реєнтерабельність забезпечувалася переустановленням стека у момент системного виклику і забороною перемикання завдань на весь час виконання модулів ядра. На машинах з базовою адресацією виконувалося переміщення образів процесів по пам'яті і скидання образу процесу на диск (задачний своппінг).
У Multics і сучасних системах Unix fork реалізується за допомогою копіювання сторінок при модифікації. Ранні версії UNIX фізично копіювали образ процесу. Велика частина (по деяких оцінках, до 90%) fork негайно продовжується виконання системного виклику exec тому одній з перших оптимізацій, придуманих в університетських версіях системи, було введення системного виклику vfork. Породжений цим викликом процес виконувався на самому образі батька, а не на його копії. Створення нового образу процесу відбувалося лише при виконання exec. Для того, щоб уникнути можливих проблем того, що взаємовиключає (наприклад, при виклику нереєнтерабельних функцій стандартної бібліотеки), виконання батька припинялося до тих пір, поки нащадок не виконає exec або не завершиться.
Виділяють [Баурн 1986] наступні відмітні особливості системи.

  • Породження процесів системним викликом forkякий створює копію адресного простору в призначеній для користувача області процесу.
  • Результат завершення процесу зберігається в його дескрипторі і може бути лічений лише батьком. У списку процесів такий дескриптор виглядає як процес в спеціальному достатку, званому зомбі (zombie).
  • Процеси-сироти (що продовжують виконання після завершення батька) усиновляються процесом з ідентифікатором, рівним 1.
  • Процес з ідентифікатором 1 запускається при завантаженні системи (за умовчанням це /bin/ink) і запускає всі останні обов'язкові завдання в системі. Наявність такого процесу інколи оголошують необхідним і достатнім критерієм для прилічення тієї або іншої системи до сімейства Unix.
  • Деревовидна структура простору імен файлової системи: додаткові ФС вмонтовуються в ті або інші крапки кореневий ФС і ідентифікуються потім точкою монтування, а не ім'ям пристрою, на якому розташовані.
  • Файли розглядаються ОС як неструктуровані потоки байтів і не тіпізовани на рівні ОС (зокрема, на рівні ОС немає ділення файлів на записі).
  • Файлова система підтримує множинні імена файлів у вигляді жорстких і, в пізніших версій, символічних зв'язків.
  • Відкладене видалення файлів: якщо процес відкрив файл, а інший процес його видалив, то перший процес може продовжувати роботу з файлом, і фізичне видалення відбувається лише після того, як перший процес його закриє.
  • Гасло "все — файл", який, втім, послідовно реалізований лише в експериментальній системі Plan 9 — в реальних системах Unix практично завжди присутні об'єкти, до яких не застосовні файлові операції: змінна середа, структури даних ядра в ранніх версіях (пізніше вони були оформлені у вигляді псевдофайлової системи /ргос), об'єкти SYSV IPC і примітиви того, що взаємовиключає POSIX Thread Library в сучасних системах.
  • Своєрідна командна мова, заснована на широкому вживанні перепризначення введення-виводу і конвеєрів (послідовностей завдань, сполучених трубами).

Деякі з перерахованих особливостей були позаїмствовани іншими ОС. Так, перепризначення введення-виводу і конвеєри реалізуються командними процесорами ОС сімейства Ср/м, починаючи з MS DOS 3.30. cmd.exe — командний процесор Os/2 і Windows Nt/2000/xp — навіть правильно розуміє конструкцію cmdiine | more 2>&1. Стандартні командні процесори UNIX портіровани практично на всіх сучасних ОС. Функціональний аналог Korn Shell включений в стандартне постачання Windows 2000.
Жорсткі зв'язки файлів (проте, без відкладеного видалення) підтримуються Fcs2 (файловою системою Vax/vms), NTFS і jfs при використанні під Os/2. Точки монтування (підключення додаткових ФС в дерево каталогів тієї, що існує ФС) реалізовані в Windows 2000 і Toronto Virtual File System для Os/2.
Системний виклик Createprocess Windows Nt/2000/xp може імітувати семантику fork: для цього досить передати як ім'я програми для нового процесу порожній покажчик.
Бібліотека ЕМХ для Os/2 реалізує fork за допомогою власного обробника сторінкової відмови.

 

:: Реклама ::

курсы парикмахеров отзывы в Ивантеевка | Смотрите здесь рулонная печать.

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017