Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Многопользовательские операционные системы

Покупка
Артикул: 753047.01.99
Доступ онлайн
2 000 ₽
В корзину
В монографии представлены основные понятия и положения теории операционных систем: определения и классификации, понятие интерфейса пользователя, организация вычислительного процесса в современных системах, вопросы управления памятью. Рассмотрены происхождение и этапы развития двух наиболее распространенных представителей этого класса программных систем: семейства UNIX/Linux и компании Microsoft, а также стандарты и лицензии на программные продукты. Издание расчитано, в первую очередь на специалистов, которые обслуживают и настраивают современные многопользовательские операционные системы, а также будет полезно студентам старших курсов разных специальностей, обучающихся по информационным технологиям.
Назаров, С. В. Многопользовательские операционные системы : монография / С. В. Назаров, А. И. Широков ; под. ред. С. В. Назарова. - Москва : Изд. Дом МИСиС, 2010. - 194 с. - ISBN 978-5-87623-374-5. - Текст : электронный. - URL: https://znanium.com/catalog/product/1232399 (дата обращения: 06.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ 
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ  
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ  
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ «МИСиС» 
 
 
 
 
 
 
 
 
 
 
С.В. Назаров 
А.И. Широков 
Многопользовательские
операционные системы 
 
Монография 
Под редакцией профессора С.В. Назарова 
Москва 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 
ОГЛАВЛЕНИЕ 
Предисловие.......................................................................................................... 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 
 
ПРЕДИСЛОВИЕ 
В данной монографии рассматриваются вопросы построения и 
функционирования сложных программных объектов – многопользо-
вательских операционных систем. Их предшественниками были сис-
темы пакетной обработки и однозадачные операционные системы. 
Но развитие компьютерных технологий сформировало необходи-
мость реализации новых возможностей, среди которых очень важ-
ными были разделение времени и многозадачность. Свое полное во-
площение многопользовательские операционные системы получили 
в семействе UNIX. Представители этого семейства с первых версий 
поддерживали данные технологии. Другие программные комплексы, 
анализируемые в монографии (операционные системы фирмы Micro-
soft), не были в полной мере ориентированы на весь спектр возмож-
ностей многопользовательских операционных систем. Например, 
файловая система FAT не была построена в расчете на одновремен-
ную работу многих пользователей, тогда как идеи, заложенные в 
файловой системе первых версий UNIX, обеспечивали разные права 
доступа разным группам пользователей.  
В данном издании представлены основные определения, освещены 
вопросы истории развития семейств UNIX и Windows. Большая 
часть издания посвящена методам и средствам организация вычислительного 
процесса и управления памятью. В двух отдельных разделах 
рассматриваются вопросы реализации пользовательского интерфейса 
современных операционных систем и стандартов, а также 
лицензий на программное обеспечение.  
Технологии многопользовательских операционных систем, рассматриваемые 
в данной монографии, не охватывают всего их разнообразия. 
Предполагается сделать это в дальнейшем, а также рассмотреть 
архитектуры современных сетевых операционных систем, вопросы 
надежности, безопасности, защиты и восстановления их работоспособности. 
Будет также уделено внимание вопросам администрирования 
операционных систем. 
Работа над данной монографией распределилась следующим образом: 
главы 1 и 5 написаны С.В. Назаровым, главы 2–4 и приложения 
написаны А.И. Широковым. Общее редактирование книги вы-
полнено С.В. Назаровым. 
1. АРХИТЕКТУРА, НАЗНАЧЕНИЕ 
И ФУНКЦИИ ОПЕРАЦИОННЫХ СИСТЕМ 
1.1. Понятие операционной системы. 
Виртуальные машины 
Современный компьютер – сложнейшая аппаратно-программная 
система. Процесс написания программ для компьютера, их отладки и 
последующего выполнения представляет собой сложную трудоем-
кую задачу. Во многом это обусловлено огромной разницей между 
тем, что удобно для людей, и тем, что удобно для компьютеров. 
Компьютер понимает только свой машинный язык (назовем его Я0), 
для человека наиболее удобен разговорный или хотя бы язык описа-
ния алгоритмов – алгоритмический язык. Проблему можно решить 
двумя способами. Оба способа связаны с разработкой команд, кото-
рые более удобны для человека, чем встроенные машинные команды 
компьютера. Эти новые команды в совокупности формируют неко-
торый язык, который назовем Я1. 
Упомянутые два способа решения проблемы различаются тем, ка-
ким образом компьютер будет выполнять программы, написанные на 
языке Я1. 
Первый способ – замена каждой команды языка Я1 на эквива-
лентный набор команд в языке Я0. В этом случае компьютер выпол-
няет новую программу, написанную на языке Я0, вместо программы, 
написанной на языке Я1. Эта технология называется трансляцией.  
Второй способ – написание программы на языке Я0, которая «бе-
рет» программы, написанные на языке Я1, в качестве входных дан-
ных, рассматривает каждую команду по очереди и сразу выполняет 
эквивалентный набор команд языка Я0. Эта технология не требует 
составления новой программы на Я0. Она называется интерпрета-
цией, а программа, которая осуществляет интерпретацию, называется 
интерпретатором. 
В подобной ситуации проще представить себе существование ги-
потетического компьютера или виртуальной машины, для которой 
машинным языком является язык Я1, чем думать о трансляции и ин-
терпретации. Назовем такую виртуальную машину М1, а виртуаль-
ную машину с языком Я0 – М0. Для виртуальных машин можно бу-
дет писать программы, как будто они действительно существуют. 
Очевидно, можно пойти дальше – создать еще набор команд, ко-
торый в большей степени ориентирован на человека и в меньшей 
степени на компьютер, чем Я1. Этот набор формирует язык Я2 и со-
ответственно виртуальную машину М2. Так можно продолжать до 
тех пор, пока не дойдем до подходящего нам языка уровня n. 
Большинство современных компьютеров состоит из двух и более 
уровней. Уровень 0 – аппаратное обеспечение машины. Электронными 
схемами этого уровня выполняются программы, написанные 
на языке уровня 1. Следующий уровень – микроархитектурный.  
На этом уровне можно видеть совокупности 8 или 32 (иногда и 
больше) регистров, которые формируют локальную память и АЛУ 
(арифметико-логическое устройство). Регистры вместе с АЛУ формируют 
тракт данных, по которому поступают данные. Основная 
операция этого тракта заключается в следующем. Выбирается один 
или два регистра, АЛУ производит над ними какую-то операцию, а 
результат помещается в один из этих регистров. На некоторых машинах 
работа тракта контролируется особой программой, которая 
называется микропрограммой. В других машинах такой контроль 
выполняется аппаратным обеспечением.  
Следующий (второй) уровень составляет уровень архитектуры 
системы команд. Команды используют регистры и другие возможности 
аппаратуры. Команды формируют уровень ISA (Instruction Set 
Architecture), называемый машинным языком. Обычно машинный 
язык содержит от 50 до 300 команд, служащих преимущественно для 
перемещения данных в компьютере, выполнения арифметических 
операций и сравнения величин. 
Следующий (третий) уровень обычно гибридный. Большинство 
команд в его языке есть также и на уровне архитектуры системы команд. 
У этого уровня есть некоторые дополнительные особенности: 
набор новых команд, другая организация памяти, способность выполнять 
две и более программ одновременно и некоторые другие. С 
течением времени набор таких команд существенно расширился. В 
нем появились так называемые макросы операционной системы, или 
вызовы супервизора, называемые теперь системными вызовами. 
Новые средства, появившиеся на третьем уровне, выполняются 
интерпретатором, который работает на втором уровне. Этот интерпретатор 
был когда-то назван операционной системой. Команды 
третьего уровня, идентичные командам второго уровня, выполняются 
микропрограммой или аппаратным обеспечением, но не операционной 
системой. Иными словами, одна часть команд третьего уровня 
интерпретируется операционной системой, а другая часть – микро-
программой. Вот почему этот уровень операционной системы счита-
ется гибридным.  
Операционная система была создана для того, чтобы автомати-
зировать работу оператора и скрыть от пользователя сложности 
общения с аппаратурой, предоставив ему более удобную систему 
команд. Нижние три уровня (с нулевого по второй) конструиру-
ются не для того, чтобы с ними работал обычный программист. 
Они изначально предназначены для работы интерпретаторов и 
трансляторов, поддерживающих более высокие уровни. Эти 
трансляторы и интерпретаторы составляются системными про-
граммистами, которые специализируются на разработке и по-
строении новых виртуальных машин.  
Над операционной системой (ОС) расположены остальные сис-
темные программы. Здесь находятся интерпретатор команд (оболоч-
ка), компиляторы, редакторы и т.д. Подобные программы не являют-
ся частью ОС (иногда оболочку пользователи считают операционной 
системой). Под операционной системой обычно понимается то про-
граммное обеспечение, которое запускается в режиме ядра или, как 
еще его называют, режиме супервизора. Она защищена от вмеша-
тельства пользователя с помощью специальных аппаратных средств. 
Четвертый уровень представляет собой символическую форму 
одного из языков низкого уровня (обычно это язык Ассемблер). На 
этом уровне можно писать программы в приемлемой для человека 
форме. Эти программы сначала транслируются на язык уровня 1, 2 
или 3, а затем интерпретируются соответствующей виртуальной или 
фактически существующей (физической) машиной. 
 Уровни с пятого и выше предназначены для прикладных про-
граммистов, решающих конкретные задачи на языках высокого 
уровня (C, C++, C#, VBA и др.). Компиляторы и редакторы этих 
уровней запускаются в пользовательском режиме. Еще на более вы-
соких уровнях располагаются прикладные программы пользователей.  
Большинство пользователей компьютеров имеют опыт общения с 
операционной системой, по крайней мере, в такой степени, чтобы 
эффективно выполнять свои текущие задачи. Однако они испытыва-
ют затруднения при попытке дать определение операционной систе-
ме. В известной степени проблема связана с тем, что операционные 
системы выполняют две основные, но практически не связанные ме-
жду собой функции: расширение возможностей компьютера и управ-
ление его ресурсами. 
С точки зрения пользователя, ОС выполняет функцию расширен-
ной машины, или виртуальной машины, с которой легче программи-
ровать и легче работать, чем непосредственно с аппаратным обеспе-
чением, составляющим реальный компьютер. Операционная система 
не только устраняет необходимость работы непосредственно с дис-
ками и предоставляет простой, ориентированный на работу с файла-
ми интерфейс, но и исключает большой объем работы с прерыва-
ниями, счетчиками времени, организацией памяти и другими компо-
нентами низкого уровня. 
Однако концепция, рассматривающая операционную систему 
прежде всего как удобный интерфейс пользователя, – это взгляд 
«сверху вниз». Альтернативный взгляд, «снизу вверх», дает пред-
ставление об операционной системе как о механизме, присутствую-
щем в компьютере для управления всеми компонентами этой слож-
нейшей системы. В соответствии с этим подходом работа операци-
онной системы заключается в обеспечении организованного и кон-
тролируемого распределения процессоров, памяти, дисков, принте-
ров, устройств ввода-вывода, датчиков времени и т.п. между различ-
ными программами, конкурирующими за право их использовать. 
1.2. Операционная система, 
среда и операционная оболочка 
Операционные системы в современном их понимании (назначение 
и сущность) появились значительно позже первых компьютеров 
(правда, по всей видимости, и исчезнут в этой сущности в компьюте-
рах будущего). Почему и когда появились ОС? Считается, что первая 
цифровая вычислительная машина ENIAC (Electronic Numerical Inte-
grator and Computer) была создана в 1946 году по проекту «Проект 
РХ» Министерства обороны США*. На реализацию проекта было 
затрачено 500 тыс. долл. Компьютер содержал 18 000 электронных 
ламп, массу всякой электроники, имел 12 десятиразрядных суммато-
ров, а для ускорения некоторых арифметических операций – умно-
житель и «делитель-извлекатель» квадратного корня. Программиро-
вание сводилось к связыванию различных блоков проводами. Конеч-
но никакого программного обеспечения, и, тем более, операционных 
систем тогда еще не существовало [10, 13]. 
––––––––– 
* По другим сведениям, первый компьютер был создан в Англии в 1943 году для 
расшифровки кодов радиосигналов немецких подводных лодок. 
Период интенсивного создания различных моделей ЭВМ относится 
к началу 50-х годов прошлого века. В эти годы одни и те же 
группы людей участвовали и в проектировании, и в создании, и в 
программировании, и в эксплуатации ЭВМ. Программирование осуществлялось 
исключительно на машинном языке (а затем на языке 
Ассемблер), не было никакого системного программного обеспечения, 
кроме библиотек математических и служебных подпрограмм. 
Операционные системы еще не появились, а все задачи организации 
вычислительного процесса решались вручную каждым программистом 
с примитивного пульта управления ЭВМ. 
С появлением полупроводниковых элементов вычислительные 
возможности компьютеров существенно выросли. Наряду с этим заметно 
прогрессировали достижения в области автоматизации программирования 
и организации вычислительных работ. Появились 
алгоритмические языки (Фортран, Алгол, Кобол) и системное программное 
обеспечение (трансляторы, редакторы связи, загрузчики 
и др.). Выполнение программ усложнилось и включало в себя следующие 
основные действия: 
• загрузка нужного транслятора (установка нужных МЛ и др.); 
• запуск транслятора и получение программы в машинных кодах; 
• связывание программы с библиотечными подпрограммами; 
• загрузка программы в оперативную память; 
• запуск программы; 
• вывод результатов работы программы на печатающее или дру-
гое периферийное устройство. 
Для организации эффективного использования всех средств ком-
пьютера в штаты вычислительных центров ввели должности специ-
ально обученных операторов, профессионально выполнявших работу 
по организации вычислительного процесса для всех пользователей 
этого центра. Однако, как бы ни был подготовлен оператор, ему тя-
жело состязаться в производительности с устройствами компьютера. 
И поэтому большую часть времени дорогостоящий процессор про-
стаивал, а следовательно, использование компьютеров не было эф-
фективным. 
С целью исключения простоев были предприняты попытки разра-
ботки специальных программ – мониторов – прообразов первых опе-
рационных систем, которые осуществляли автоматический переход 
от задания к заданию. Считается, что первую операционную систему 
создала в 1952 году для своих компьютеров IBM-701 исследователь-
ская лаборатория фирмы General Motors [9]. В 1955 году эта фирма и 
North American Aviation совместно разработали ОС для компьютера 
IBM-704. 
В конце 50-х годов прошлого века ведущие фирмы-изготовители по-
ставляли операционные системы со следующими характеристиками: 
• пакетная обработка одного потока задач; 
• наличие стандартных программ ввода-вывода; 
• возможности автоматического перехода от программы к про-
грамме; 
• средства восстановления после ошибок, обеспечивающие авто-
матическую «очистку» компьютера в случае аварийного завершения 
очередной задачи и позволяющие запускать следующую задачу при 
минимальном вмешательстве оператора;  
• языки управления заданиями, предоставляющие пользователям 
возможность описывать свои задания и ресурсы, требуемые для их 
выполнения. 
Пакет представляет собой набор (колоду) перфокарт, организо-
ванную специальным образом (задание, программы, данные). Для 
ускорения работы он мог переноситься на магнитную ленту или 
диск. Это позволяло сократить простой дорогой аппаратуры. Надо 
сказать, что в настоящее время в связи с прогрессом микроэлектрон-
ных технологий и методологий программирования значительно сни-
зилась стоимость аппаратных и программных средств компьютерной 
техники. Поэтому сейчас основное внимание уделяется тому, чтобы 
сделать работу пользователей и программистов более эффективной, 
поскольку затраты труда квалифицированных специалистов сейчас 
составляют гораздо большую долю от общей стоимости вычисли-
тельных систем по сравнению с аппаратными и программными сред-
ствами компьютеров. 
Расположение операционной системы в иерархической структуре 
программного и аппаратного обеспечения компьютера представлено 
на рис. 1.1. 
Самый нижний уровень иерархической структуры содержит раз-
личные устройства компьютера, состоящие из микросхем, проводни-
ков, источников питания, электронно-лучевых трубок и т.п. Этот 
уровень можно разделить на подуровни, содержащие, например, 
контроллеры устройств, а затем и сами устройства. Возможно деле-
ние и на большее число уровней. Выше расположен микроархитек-
турный уровень, на котором физические устройства рассматривают-
ся как отдельные функциональные единицы.  
Рис. 1.1. Иерархическая структура программно-аппаратных средств 
компьютера 
На микроархитектурном уровне находятся внутренние регистры 
центрального процессора (их может быть несколько) и арифметико-
логические устройства со средствами управления ими. На этом уров-
не реализуется выполнение машинных команд. В процессе выполне-
ния команд используются регистры процессора и устройств, а также 
другие возможности аппаратуры. Команды, видимые для работаю-
щего на языке Ассемблер программиста, формируют уровень ISA 
(Instruction Set Architecture – архитектура системы команд), часто 
называемый машинном языком.  
 Операционная система предназначена для того, чтобы скрыть все эти 
сложности. Конечный пользователь обычно не интересуется деталями 
устройства аппаратного обеспечения компьютера. Компьютер ему пред-
ставляется как набор приложений. Приложение может быть написано 
программистом на каком-либо языке программирования. Для упрощения 
этой работы программист использует набор системных программ, неко-
торые из которых называются утилитами. С их помощью реализуются 
часто используемые функции, которые помогают работать с файлами, 
управлять устройствами ввода-вывода и т.п. Программист использует эти 
средства при разработке программ, а приложения во время выполнения 
обращаются к утилитам для выполнения определенных функций. Наибо-
лее важной из системных программ является операционная система, ко-
торая освобождает программиста от необходимости глубокого знания 
устройства компьютера и представляет ему удобный интерфейс для его 
использования. Операционная система выступает в роли посредника, об-
легчая программисту, пользователям и программным приложениям дос-
туп к различным службам и возможностям компьютера [10].  
Физические устройства (контроллеры, шины, монитор и т. д.)
 Микроархитектура (регистры ЦП, АЛУ) 
Утилиты 
Компиляторы Редакторы
Интерпретаторы 
команд 
Прикладные программы 
Конечный пользователь 
Программист
Машинный язык 
 
Операционная система 
Разработчик 
ОС
Доступ онлайн
2 000 ₽
В корзину