Многопользовательские операционные системы
Покупка
Издательство:
Издательский Дом НИТУ «МИСиС»
Год издания: 2010
Кол-во страниц: 194
Дополнительно
Вид издания:
Монография
Уровень образования:
ВО - Магистратура
ISBN: 978-5-87623-374-5
Артикул: 753047.01.99
В монографии представлены основные понятия и положения теории операционных систем: определения и классификации, понятие интерфейса пользователя, организация вычислительного процесса в современных системах, вопросы управления памятью. Рассмотрены происхождение и этапы развития двух наиболее распространенных представителей этого класса программных систем: семейства UNIX/Linux и компании Microsoft, а также стандарты и лицензии на программные продукты. Издание расчитано, в первую очередь на специалистов, которые обслуживают и настраивают современные многопользовательские операционные системы, а также будет полезно студентам старших курсов разных специальностей, обучающихся по информационным технологиям.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
- 09.04.02: Информационные системы и технологии
- 09.04.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ «МИСиС» С.В. Назаров А.И. Широков Многопользовательские операционные системы Монография Под редакцией профессора С.В. Назарова Москва 2010
УДК 004.45 Н19 Р е ц е н з е н т к.т.н, с.н.с., доц. кафедры моделирования в экономике и управлении РГГУ В.В. Муромцев Назаров, С.В. Н19 Многопользовательские операционные системы : моногр. / С.В. Назаров, А.И. Широков ; под ред. С.В. Назарова. – М. : Изд. Дом МИСиС, 2010. – 194 с. ISBN 978-5-87623-374-5 В монографии представлены основные понятия и положения теории операционных систем: определения и классификации, понятие интерфейса пользователя, организация вычислительного процесса в современных системах, вопросы управления памятью. Рассмотрены происхождение и этапы развития двух наиболее распространенных представителей этого класса программных систем: семейства UNIX/Linux и компании Microsoft, а также стандарты и лицензии на программные продукты. Издание расчитано, в первую очередь на специалистов, которые обслуживают и настраивают современные многопользовательские операционные системы, а также будет полезно студентам старших курсов разных специальностей, обучающихся по информационным технологиям. УДК 004.45 ISBN 978-5-87623-374-5 © © С.В. Назаров (ВШЭ), 2010 А.И. Широков (МИСиС), 2010 2
ОГЛАВЛЕНИЕ Предисловие.......................................................................................................... 4 1. Архитектура, назначение и функции операционных систем....................... 5 1.1. Понятие операционной системы. Виртуальные машины ................................5 1.2. Операционная система, среда и операционная оболочка.................................8 1.3. Эволюция операционных систем........................................................................13 1.4. Назначение, состав и функции ОС......................................................................19 1.5. Архитектура операционной системы .................................................................27 1.6. Классификация операционных систем...............................................................38 1.7. Эффективность ОС и требования, предъявляемые к ним..............................41 1.8. Совместимость ОС и множественные прикладные среды.............................45 1.9. Виртуальные машины как современный подход к реализации множественных прикладных сред..............................................................................49 1.10. Эффекты виртуализации.....................................................................................54 2. Основные семейства операционных систем................................................ 59 2.1. История семейства операционных систем UNIX/Linux.................................59 2.2. Генеалогия семейства операционных систем и некоторые известные версии UNIX....................................................................................................................66 2.3. Операционные системы фирмы Microsoft.........................................................83 2.4. Отличия семейства UNIX/Linux от операционных систем Windows и MS DOS.......................................................................................................87 3. Стандарты и лицензии на программное обеспечение ................................ 90 3.1. Стандарты семейства UNIX..................................................................................90 3.2. Лицензии на программное обеспечение ............................................................97 4. Интерфейсы операционных систем............................................................ 102 4.1. Основные понятия, связанные с интерфейсом операционных систем........................................................................................................................... 102 4.2. Графический интерфейс пользователя в семействе UNIX/Linux.............. 112 5. Организация вычислительного процесса................................................... 122 5.1. Концепция процессов и потоков. Задание, процессы, потоки (нити), волокна............................................................................................... 122 5.2. Мультипрограммирование. Формы многопрограммной работы.............. 126 5.3. Управление процессами и потоками ............................................................... 130 5.4. Создание процессов и потоков. Модели процессов и потоков .................. 135 5.5. Планирование заданий, процессов и потоков................................................ 142 5.6. Взаимодействие и синхронизация процессов и потоков............................. 150 5.7. Методы взаимоисключений .............................................................................. 157 5.8. Семафоры и мониторы ....................................................................................... 163 5.9. Взаимоблокировки (тупики).............................................................................. 168 5.10. Синхронизирующие объекты ОС................................................................... 172 5.11. Аппаратно-программные средства поддержки мультипрограммирования......................................................................................... 175 5.12. Системные вызовы............................................................................................ 179 Библиографический список............................................................................. 182 Приложение 1. Основные события в истории семейства UNIX/Linux................. 187 Приложение 2. Первенство технологических достижений двух основных версий UNIX...................................................................................................................... 191 3
ПРЕДИСЛОВИЕ В данной монографии рассматриваются вопросы построения и функционирования сложных программных объектов – многопользовательских операционных систем. Их предшественниками были системы пакетной обработки и однозадачные операционные системы. Но развитие компьютерных технологий сформировало необходимость реализации новых возможностей, среди которых очень важными были разделение времени и многозадачность. Свое полное воплощение многопользовательские операционные системы получили в семействе UNIX. Представители этого семейства с первых версий поддерживали данные технологии. Другие программные комплексы, анализируемые в монографии (операционные системы фирмы Microsoft), не были в полной мере ориентированы на весь спектр возможностей многопользовательских операционных систем. Например, файловая система FAT не была построена в расчете на одновременную работу многих пользователей, тогда как идеи, заложенные в файловой системе первых версий UNIX, обеспечивали разные права доступа разным группам пользователей. В данном издании представлены основные определения, освещены вопросы истории развития семейств UNIX и Windows. Большая часть издания посвящена методам и средствам организация вычислительного процесса и управления памятью. В двух отдельных разделах рассматриваются вопросы реализации пользовательского интерфейса современных операционных систем и стандартов, а также лицензий на программное обеспечение. Технологии многопользовательских операционных систем, рассматриваемые в данной монографии, не охватывают всего их разнообразия. Предполагается сделать это в дальнейшем, а также рассмотреть архитектуры современных сетевых операционных систем, вопросы надежности, безопасности, защиты и восстановления их работоспособности. Будет также уделено внимание вопросам администрирования операционных систем. Работа над данной монографией распределилась следующим образом: главы 1 и 5 написаны С.В. Назаровым, главы 2–4 и приложения написаны А.И. Широковым. Общее редактирование книги выполнено С.В. Назаровым. 4
1. АРХИТЕКТУРА, НАЗНАЧЕНИЕ И ФУНКЦИИ ОПЕРАЦИОННЫХ СИСТЕМ 1.1. Понятие операционной системы. Виртуальные машины Современный компьютер – сложнейшая аппаратно-программная система. Процесс написания программ для компьютера, их отладки и последующего выполнения представляет собой сложную трудоемкую задачу. Во многом это обусловлено огромной разницей между тем, что удобно для людей, и тем, что удобно для компьютеров. Компьютер понимает только свой машинный язык (назовем его Я0), для человека наиболее удобен разговорный или хотя бы язык описания алгоритмов – алгоритмический язык. Проблему можно решить двумя способами. Оба способа связаны с разработкой команд, которые более удобны для человека, чем встроенные машинные команды компьютера. Эти новые команды в совокупности формируют некоторый язык, который назовем Я1. Упомянутые два способа решения проблемы различаются тем, каким образом компьютер будет выполнять программы, написанные на языке Я1. Первый способ – замена каждой команды языка Я1 на эквивалентный набор команд в языке Я0. В этом случае компьютер выполняет новую программу, написанную на языке Я0, вместо программы, написанной на языке Я1. Эта технология называется трансляцией. Второй способ – написание программы на языке Я0, которая «берет» программы, написанные на языке Я1, в качестве входных данных, рассматривает каждую команду по очереди и сразу выполняет эквивалентный набор команд языка Я0. Эта технология не требует составления новой программы на Я0. Она называется интерпретацией, а программа, которая осуществляет интерпретацию, называется интерпретатором. В подобной ситуации проще представить себе существование гипотетического компьютера или виртуальной машины, для которой машинным языком является язык Я1, чем думать о трансляции и интерпретации. Назовем такую виртуальную машину М1, а виртуальную машину с языком Я0 – М0. Для виртуальных машин можно будет писать программы, как будто они действительно существуют. 5
Очевидно, можно пойти дальше – создать еще набор команд, который в большей степени ориентирован на человека и в меньшей степени на компьютер, чем Я1. Этот набор формирует язык Я2 и соответственно виртуальную машину М2. Так можно продолжать до тех пор, пока не дойдем до подходящего нам языка уровня n. Большинство современных компьютеров состоит из двух и более уровней. Уровень 0 – аппаратное обеспечение машины. Электронными схемами этого уровня выполняются программы, написанные на языке уровня 1. Следующий уровень – микроархитектурный. На этом уровне можно видеть совокупности 8 или 32 (иногда и больше) регистров, которые формируют локальную память и АЛУ (арифметико-логическое устройство). Регистры вместе с АЛУ формируют тракт данных, по которому поступают данные. Основная операция этого тракта заключается в следующем. Выбирается один или два регистра, АЛУ производит над ними какую-то операцию, а результат помещается в один из этих регистров. На некоторых машинах работа тракта контролируется особой программой, которая называется микропрограммой. В других машинах такой контроль выполняется аппаратным обеспечением. Следующий (второй) уровень составляет уровень архитектуры системы команд. Команды используют регистры и другие возможности аппаратуры. Команды формируют уровень ISA (Instruction Set Architecture), называемый машинным языком. Обычно машинный язык содержит от 50 до 300 команд, служащих преимущественно для перемещения данных в компьютере, выполнения арифметических операций и сравнения величин. Следующий (третий) уровень обычно гибридный. Большинство команд в его языке есть также и на уровне архитектуры системы команд. У этого уровня есть некоторые дополнительные особенности: набор новых команд, другая организация памяти, способность выполнять две и более программ одновременно и некоторые другие. С течением времени набор таких команд существенно расширился. В нем появились так называемые макросы операционной системы, или вызовы супервизора, называемые теперь системными вызовами. Новые средства, появившиеся на третьем уровне, выполняются интерпретатором, который работает на втором уровне. Этот интерпретатор был когда-то назван операционной системой. Команды третьего уровня, идентичные командам второго уровня, выполняются микропрограммой или аппаратным обеспечением, но не операционной системой. Иными словами, одна часть команд третьего уровня 6
интерпретируется операционной системой, а другая часть – микропрограммой. Вот почему этот уровень операционной системы считается гибридным. Операционная система была создана для того, чтобы автоматизировать работу оператора и скрыть от пользователя сложности общения с аппаратурой, предоставив ему более удобную систему команд. Нижние три уровня (с нулевого по второй) конструируются не для того, чтобы с ними работал обычный программист. Они изначально предназначены для работы интерпретаторов и трансляторов, поддерживающих более высокие уровни. Эти трансляторы и интерпретаторы составляются системными программистами, которые специализируются на разработке и построении новых виртуальных машин. Над операционной системой (ОС) расположены остальные системные программы. Здесь находятся интерпретатор команд (оболочка), компиляторы, редакторы и т.д. Подобные программы не являются частью ОС (иногда оболочку пользователи считают операционной системой). Под операционной системой обычно понимается то программное обеспечение, которое запускается в режиме ядра или, как еще его называют, режиме супервизора. Она защищена от вмешательства пользователя с помощью специальных аппаратных средств. Четвертый уровень представляет собой символическую форму одного из языков низкого уровня (обычно это язык Ассемблер). На этом уровне можно писать программы в приемлемой для человека форме. Эти программы сначала транслируются на язык уровня 1, 2 или 3, а затем интерпретируются соответствующей виртуальной или фактически существующей (физической) машиной. Уровни с пятого и выше предназначены для прикладных программистов, решающих конкретные задачи на языках высокого уровня (C, C++, C#, VBA и др.). Компиляторы и редакторы этих уровней запускаются в пользовательском режиме. Еще на более высоких уровнях располагаются прикладные программы пользователей. Большинство пользователей компьютеров имеют опыт общения с операционной системой, по крайней мере, в такой степени, чтобы эффективно выполнять свои текущие задачи. Однако они испытывают затруднения при попытке дать определение операционной системе. В известной степени проблема связана с тем, что операционные системы выполняют две основные, но практически не связанные между собой функции: расширение возможностей компьютера и управление его ресурсами. 7
С точки зрения пользователя, ОС выполняет функцию расширенной машины, или виртуальной машины, с которой легче программировать и легче работать, чем непосредственно с аппаратным обеспечением, составляющим реальный компьютер. Операционная система не только устраняет необходимость работы непосредственно с дисками и предоставляет простой, ориентированный на работу с файлами интерфейс, но и исключает большой объем работы с прерываниями, счетчиками времени, организацией памяти и другими компонентами низкого уровня. Однако концепция, рассматривающая операционную систему прежде всего как удобный интерфейс пользователя, – это взгляд «сверху вниз». Альтернативный взгляд, «снизу вверх», дает представление об операционной системе как о механизме, присутствующем в компьютере для управления всеми компонентами этой сложнейшей системы. В соответствии с этим подходом работа операционной системы заключается в обеспечении организованного и контролируемого распределения процессоров, памяти, дисков, принтеров, устройств ввода-вывода, датчиков времени и т.п. между различными программами, конкурирующими за право их использовать. 1.2. Операционная система, среда и операционная оболочка Операционные системы в современном их понимании (назначение и сущность) появились значительно позже первых компьютеров (правда, по всей видимости, и исчезнут в этой сущности в компьютерах будущего). Почему и когда появились ОС? Считается, что первая цифровая вычислительная машина ENIAC (Electronic Numerical Integrator and Computer) была создана в 1946 году по проекту «Проект РХ» Министерства обороны США*. На реализацию проекта было затрачено 500 тыс. долл. Компьютер содержал 18 000 электронных ламп, массу всякой электроники, имел 12 десятиразрядных сумматоров, а для ускорения некоторых арифметических операций – умножитель и «делитель-извлекатель» квадратного корня. Программирование сводилось к связыванию различных блоков проводами. Конечно никакого программного обеспечения, и, тем более, операционных систем тогда еще не существовало [10, 13]. ––––––––– * По другим сведениям, первый компьютер был создан в Англии в 1943 году для расшифровки кодов радиосигналов немецких подводных лодок. 8
Период интенсивного создания различных моделей ЭВМ относится к началу 50-х годов прошлого века. В эти годы одни и те же группы людей участвовали и в проектировании, и в создании, и в программировании, и в эксплуатации ЭВМ. Программирование осуществлялось исключительно на машинном языке (а затем на языке Ассемблер), не было никакого системного программного обеспечения, кроме библиотек математических и служебных подпрограмм. Операционные системы еще не появились, а все задачи организации вычислительного процесса решались вручную каждым программистом с примитивного пульта управления ЭВМ. С появлением полупроводниковых элементов вычислительные возможности компьютеров существенно выросли. Наряду с этим заметно прогрессировали достижения в области автоматизации программирования и организации вычислительных работ. Появились алгоритмические языки (Фортран, Алгол, Кобол) и системное программное обеспечение (трансляторы, редакторы связи, загрузчики и др.). Выполнение программ усложнилось и включало в себя следующие основные действия: • загрузка нужного транслятора (установка нужных МЛ и др.); • запуск транслятора и получение программы в машинных кодах; • связывание программы с библиотечными подпрограммами; • загрузка программы в оперативную память; • запуск программы; • вывод результатов работы программы на печатающее или другое периферийное устройство. Для организации эффективного использования всех средств компьютера в штаты вычислительных центров ввели должности специально обученных операторов, профессионально выполнявших работу по организации вычислительного процесса для всех пользователей этого центра. Однако, как бы ни был подготовлен оператор, ему тяжело состязаться в производительности с устройствами компьютера. И поэтому большую часть времени дорогостоящий процессор простаивал, а следовательно, использование компьютеров не было эффективным. С целью исключения простоев были предприняты попытки разработки специальных программ – мониторов – прообразов первых операционных систем, которые осуществляли автоматический переход от задания к заданию. Считается, что первую операционную систему создала в 1952 году для своих компьютеров IBM-701 исследователь9
ская лаборатория фирмы General Motors [9]. В 1955 году эта фирма и North American Aviation совместно разработали ОС для компьютера IBM-704. В конце 50-х годов прошлого века ведущие фирмы-изготовители поставляли операционные системы со следующими характеристиками: • пакетная обработка одного потока задач; • наличие стандартных программ ввода-вывода; • возможности автоматического перехода от программы к программе; • средства восстановления после ошибок, обеспечивающие автоматическую «очистку» компьютера в случае аварийного завершения очередной задачи и позволяющие запускать следующую задачу при минимальном вмешательстве оператора; • языки управления заданиями, предоставляющие пользователям возможность описывать свои задания и ресурсы, требуемые для их выполнения. Пакет представляет собой набор (колоду) перфокарт, организованную специальным образом (задание, программы, данные). Для ускорения работы он мог переноситься на магнитную ленту или диск. Это позволяло сократить простой дорогой аппаратуры. Надо сказать, что в настоящее время в связи с прогрессом микроэлектронных технологий и методологий программирования значительно снизилась стоимость аппаратных и программных средств компьютерной техники. Поэтому сейчас основное внимание уделяется тому, чтобы сделать работу пользователей и программистов более эффективной, поскольку затраты труда квалифицированных специалистов сейчас составляют гораздо большую долю от общей стоимости вычислительных систем по сравнению с аппаратными и программными средствами компьютеров. Расположение операционной системы в иерархической структуре программного и аппаратного обеспечения компьютера представлено на рис. 1.1. Самый нижний уровень иерархической структуры содержит различные устройства компьютера, состоящие из микросхем, проводников, источников питания, электронно-лучевых трубок и т.п. Этот уровень можно разделить на подуровни, содержащие, например, контроллеры устройств, а затем и сами устройства. Возможно деление и на большее число уровней. Выше расположен микроархитектурный уровень, на котором физические устройства рассматриваются как отдельные функциональные единицы. 10