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

Операционные среды, системы и оболочки. Основы структурной и функциональной организации

Покупка
Основная коллекция
Артикул: 613668.01.99
Учебное пособие содержит материал по всем аспектам построения современных операционных систем и сред, как отдельных компьютеров, так и корпоративных информационных систем, в том числе распределенных. Рассмотрены вопросы архитектуры современных ОС, организации мультипрограммных вычислительных процессов, распределения памяти, управления внешними устройствами и др. Уделено внимание вопросам администрирования, настройки и оптимизации операционных систем. Книга предназначена для студентов вузов экономического профиля, обучающихся по специальностям 351400 «Прикладная информатика в экономике», 080700 «Бизнес-информатика», 654600 «Информатика и вычислительная техника» и 010500 «Прикладная математика и информатика» в объеме, определенном Госстандартом на соответствующие учебные планы. Пособие будет также полезно студентам магистратуры, системным программистам и администраторам корпоративных информационных систем.
Назаров, С. В. Операционные среды, системы и оболочки. Основы структурной и функциональной организации : Учеб. пособие / С. В. Назаров. - Москва : КУДИЦ-ПРЕСС, 2007. - 504 с.: ил. - ISBN 978-5-91136-036-8. - Текст : электронный. - URL: https://znanium.com/catalog/product/369379 (дата обращения: 18.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
С. В. Назаров 

Операционные среды, системы 
и оболочки 

Основы структурной и функциональной организации 

Рекомендовано Учебно-методическим объединением 
по образованию в области экономики, менеджмента, 
логистики и бизнес-информатики в качестве учебного 
пособия для студентов высших учебный заведений 

КУДИЦ-ПРЕСС 
Москва • 2007 

УДК 681.3.066 
ББК 32.973-018.2 
Н19 

РЕЦЕНЗЕНТЫ: 

кафедра математического обеспечения и технологий программирования 
Московского государственного университета экономики, 
статистики и информатики (МЭСИ); 

профессор Московского государственного института 
электроники и математики 
д. т. н., Саксонов Е.А. 

Назаров С. В. 
Операционные среды, системы и оболочки. Основы структурной и функциональной организации: Учеб. пособие. - М.: КУДИЦ-ПРЕСС, 2007. - 504 е., илл. 

ISBN 978-5-91136-036-8 

Учебное пособие содержит материал по всем аспектам построения современных 
операционных систем и сред, как отдельных компьютеров, так и корпоративных информационных систем, в том числе распределенных. Рассмотрены вопросы архитектуры современных ОС, организации мультипрограммных вычислительных процессов, распределения памяти, управления внешними устройствами и др. Уделено внимание вопросам 
администрирования, настройки и оптимизации операционных систем. 

Книга предназначена для студентов вузов экономического профиля, обучающихся 
по специальностям 351400 «Прикладная информатика в экономике», 080700 «Бизнесинформатика», 654600 «Информатика и вычислительная техника» и 010500 «Прикладная математика и информатика» в объеме, определенном Госстандартом на соответствующие учебные планы. Пособие будет также полезно студентам магистратуры, системным программистам и администраторам корпоративных информационных систем. 

ООО «КУДИЦ-ПРЕСС» 
190068, С.-Петербург, Вознесенский пр-т, д. 55, литер А, пом. 44 
тел. (495) 333-82-11, ok@kudits.ru, http://books.kudits.ru 

Подписано в печать 21.03.2007 г. 
Формат 70x100/16. Бум. офс. Печать офс. 
Усл. печ. л. 40,64. Тираж 2000. Заказ 684 

Отпечатано в полном соответствии с качеством предоставленных диапозитивов 
в ППП «Типография «Наука» 
121099, Москва, Шубинский пер., 6 

ISBN 978-5-91136-036-8 
© Макет, обложка ООО «КУДИЦ-ПРЕСС», 
2007 

© Назаров С. В., 2007 

Введение 

Современный компьютер - сложнейшая аппаратно-программная комплексная 
система. Написание программ для компьютера, их отладка и последующее выполнение 
представляют собой сложную, трудоемкую задачу. Во многом это связано с тем, что 
существует огромная разница между тем, что удобно для людей, и тем, что удобно для 
компьютеров. Компьютер понимает только свой машинный язык (назовем его ЯО), для 
человека наиболее удобен - разговорный или хотя бы язык описания алгоритмов - алгоритмический язык. Проблему можно решить двумя способами. Оба способа связаны 
с разработкой команд, которые были бы более удобны для человека, чем встроенные 
машинные команды компьютера. Эти новые команды в совокупности формируют некоторый язык, который назовем Я1. 

Упомянутые два способа решения проблемы различаются тем, каким образом 
компьютер будет выполнять программы, написанные на языке Я1. Первый способ - замена каждой команды языка Я1 эквивалентным набором команд языка ЯО. В этом случае компьютер выполняет новую программу, написанную на языке ЯО, вместо программы, написанной на языке Я1. Эта технология называется трансляцией. 

Второй способ - написание программы на языке ЯО, которая берет программы, 
написанные на языке Я1, в качестве входных данных, рассматривает каждую команду 
по очереди и сразу выполняет эквивалентный набор команд языка ЯО. Эта технология 
не требует составления новой программы на ЯО. Она называется интерпретацией, 
а 
программа, которая осуществляет интерпретацию, называется интерпретатором. 

В подобной ситуации проще представить себе существование гипотетического 
компьютера или виртуальной машины, для которой машинным языком является язык 
Я1, чем думать о трансляции и интерпретации. Назовем такую виртуальную машину 
Ml, а виртуальную машину с языком ЯО - МО. Для виртуальных машин можно будет 
писать программы, как будто они действительно существуют. 

Очевидно, можно пойти дальше - создать еще набор команд, который в большей 
степени ориентирован на человека и в меньшей степени на компьютер, чем Я1. Этот набор формирует язык Я2 и соответственно виртуальную машину М2. Так можно продолжать до тех пор, пока не дойдем до подходящего нам языка уровня п. 

Большинство современных компьютеров состоит из двух и более уровней. Уровень 0 аппаратное обеспечение машины. Электронные схемы этого уровня выполняют программы, 
написанные на языке уровня 1. Следующий уровень - микроархитектурный уровень. 

На этом уровне можно видеть совокупности 8 или 32 (иногда и больше) регистров, 
которые формируют локальную память и АЛУ (арифметико-логическое устройство). 
Регистры вместе с АЛУ формируют тракт данных, по которому поступают данные. Основная операция этого тракта заключается в следующем: выбирается один или два регистра, АЛУ производит над ними какую-то операцию, а результат помещается в один 

Назаров С. В. «Операционные среды, системы и оболочки» 

из этих регистров. На некоторых машинах работа тракта контролируется особой программой, которая называется микропрограммой. В других машинах такой контроль выполняется аппаратным обеспечением. 

Следующий (второй) уровень составляет уровень архитектуры 
системы команд. 
Команды используют регистры и другие возможности аппаратуры. Команды формируют уровень ISA (Instruction Set Architecture), называемый машинным языком. Обычно 
машинный язык содержит от 50 до 300 команд, служащих преимущественно для перемещения данных по компьютеру, выполнения арифметических операций и сравнения 
величин. 

Следующий (третий) уровень обычно гибридный. Большинство команд в его языке 
есть также и на уровне архитектуры системы команд. У этого уровня есть некоторые 
дополнительные особенности: набор новых команд, другая организация памяти, способность выполнять две и более программ одновременно и некоторые другие. С течением времени набор таких команд существенно расширился. В нем появились так называемые макросы операционной системы или вызовы супервизора, называемые теперь 
системными вызовами. 

Новые средства, появившиеся на третьем уровне, выполняются интерпретатором, 
который работает на втором уровне. Этот интерпретатор был когда-то назван операционной системой. Команды третьего уровня, идентичные командам второго уровня, 
выполняются микропрограммой или аппаратным обеспечением, но не операционной 
системой. Иными словами, одна часть команд третьего уровня интерпретируется операционной системой, а другая часть - микропрограммой. Вот почему этот уровень операционной системы считается гибридным. 

Операционная система была создана для того, чтобы автоматизировать работу 
оператора (отсюда и этот термин) и скрыть от пользователя сложности общения с аппаратурой, предоставив ему более удобную систему команд. Нижние три уровня (с нулевого по второй) конструируются не для того, чтобы с ними работал обычный программист. Они изначально предназначены для работы интерпретаторов и трансляторов, 
поддерживающих более высокие уровни. Эти трансляторы и интерпретаторы составляются системными программистами, которые специализируются на разработке и построении новых виртуальных машин. 

Над операционной системой (ОС) расположены остальные системные программы. 
Здесь находятся интерпретатор команд (оболочка), компиляторы, редакторы и т.д. Подобные программы не являются частью ОС (иногда оболочку пользователи считают операционной системой). Под операционной системой обычно понимается то программное 
обеспечение, которое запускается в режиме ядра или, как еще его называют, режиме супервизора. Она защищена от вмешательства пользователя с помощью специальных аппаратных средств. 

Четвертый уровень представляет собой символическую форму одного из языков 
низкого уровня (обычно ассемблер). На этом уровне можно писать программы в приемлемой для человека форме. Эти программы сначала транслируются на язык уровней 1, 
2 или 3, а затем интерпретируются соответствующей виртуальной или фактически существующей (физической) машиной. 

Уровни с пятого и выше предназначены для прикладных программистов, решающих конкретные задачи на языках высокого уровня (С, С++, С#, VBA и др.) Компиляторы и редакторы этих уровней запускаются 
в пользовательском режиме. Еще на 
более высоких уровнях располагаются прикладные программы пользователей. 

Введение 
5 

Большинство пользователей компьютеров имеют опыт общения с операционной 
системой, по крайней мере в той степени, чтобы эффективно выполнять свои текущие 
задачи. Однако они испытывают затруднения при попытке дать определение операционной системе. В известной степени проблема связана с тем, что операционные системы 
выполняют две основные, но практически не связанные между собой функции: расширение возможностей компьютера и управление его ресурсами. 

С точки зрения пользователя, ОС выполняет функцию расширенной машины или 
виртуальной машины, в которой легче программировать и легче работать, чем непосредственно с аппаратным обеспечением, составляющим реальный компьютер. Операционная система не только устраняет необходимость работы непосредственно с дисками и предоставляет простой, ориентированный на работу с файлами интерфейс, но и 
скрывает множество неприятной работы с прерываниями, счетчиками времени, организацией памяти и другими компонентами низкого уровня. 

Однако концепция, рассматривающая операционную систему прежде всего как удобный интерфейс пользователя, - это взгляд сверху вниз. Альтернативный взгляд, снизу 
вверх, дает представление об операционной системе как о механизме, присутствующем в 
компьютере для управления всеми компонентами этой сложнейшей системы. В соответствии с этим подходом работа операционной системы заключается в обеспечении организованного и контролируемого распределения процессоров, памяти, дисков, принтеров, устройств ввода-вывода, датчиков времени и т.п. между различными программами, 
конкурирующими за право их использовать. 

Знание основ организации операционных систем, принципов их функционирования, 
анализа, настройки и оптимизации позволяет использовать компьютеры более эффективно. Глубокое изучение операционных систем позволяет применить эти знания прежде всего при создании программного обеспечения. Если, к большому сожалению, в нашей 
стране в последние годы практически не создаются новые операционные системы, то 
разработка сложных корпоративных информационных систем, комплексов программ и 
отдельных приложений, предназначенных для работы в широко распространенных операционных системах, ведется достаточно интенсивно большим числом организаций. И 
здесь знание операционных систем является просто необходимым. 

Настоящее учебное пособие предназначено студентам, изучающим одноименную 
дисциплину, предусмотренную 
Государственным образовательным стандартом по 
специальности 351400 «Прикладная информатика в экономике (менеджменте)» и направлениям 080700 «Бизнес-информатика», 654600 «Информатика и вычислительная 
техника», 010500 «Прикладная информатика и математика». Однако книга может быть 
полезна студентам других специальностей, изучающим информатику и вычислительную технику, а также подготовленным пользователям, желающим углубить свои знания в области операционных систем. 

Учебное пособие «Операционные среды, системы и оболочки» издается в двух 
частях: Часть 1. Основы структурной и функциональной организации 
и Часть 2. 
Практикум. 

Первая часть книги содержит полный и достаточно глубокий материал по всем 
аспектам построения современных операционных систем и сред как отдельных компьютеров, так и корпоративных информационных систем, в том числе распределенных. 
Рассмотрены вопросы архитектуры современных ОС, организации мультипрограммных 
вычислительных процессов, распределения памяти, управления внешними устройствами 
и др. Уделено внимание вопросам администрирования, настройки и оптимизации опера
Назаров С. В. «Операционные среды, системы и оболочки» 

ционных систем. Теоретический материал учебного пособия подкрепляется конкретными 
иллюстрациями практических решений, нашедших применение в широко известных 
современных операционных системах, таких как Windows, UNIX, Linux. 

Вторая часть пособия представляет собой развернутый практикум, позволяющий 
обучаемым получить достаточно глубокие навыки по практическому использованию, 
инсталляции, настройке, администрированию, моделированию и оптимизации современных операционных систем. Книга содержит большой набор тестов, домашних и 
курсовых заданий, задач, заданий на курсовое проектирование, а также тем рефератов и 
актуальных студенческих (а может быть, и не только студенческих) научно-исследовательских работ. 

Настоящее пособие (часть 1) содержит введение, 9 глав, завершающихся контрольными вопросами, предметный указатель и список литературы. 

Первая глава посвящена обсуждению вопросов назначения, выполняемых функций 
и архитектуры операционных систем. Рассматриваются место ОС в архитектуре 
компьютера, функции операционных систем, их эволюция, классификация операционных систем по режимам работы, месту использования, аппаратной платформе и др. Приводятся основные типы архитектур операционных систем с указанием их достоинств и недостатков. Даются понятия свойств и эффективности операционных систем. Подробно рассматриваются вопросы совместимости систем и организации множественных прикладных 
сред. 

Особое внимание уделяется вопросам организации систем виртуальных машин как 
современному подходу к реализации множественных прикладных сред. Этот материал 
главы при первом чтении у неподготовленного читателя может вызвать затруднения, 
его можно пропустить и вернуться к нему после изучения первых пяти глав. 

Во второй главе рассматриваются вопросы организации вычислительного процесса, в том числе концепция процессов и потоков, внешние и внутренние единицы работы операционной системы (задания, процессы, потоки, волокна), основные функции 
управления процессами и потоками, формы многопрограммной 
работы, роль процессов, 
потоков и волокон в мультипрограммировании. Подробно освещены вопросы планирования и диспетчирования заданий, процессов и потоков, в том числе виды и алгоритмы 
планирования. Обсуждены важнейшие проблемы взаимодействия и синхронизации процессов и потоков: способы взаимодействия процессов (потоков), конкуренция процессов в борьбе за ресурсы, методы и алгоритмы взаимоисключений и взаимоблокировок, 
их аппаратная поддержка, механизм семафоров и мониторов и др. 

В завершение главы рассмотрена архитектура современных микропроцессоров, 
оказывающая решающее влияние на организацию разработки как 
прикладного 
программного обеспечения, так и управляющих программ самих операционных систем. 

Важнейшие вопросы управления памятью, рассмотрение методов, алгоритмов и 
средств решения этих задач - тематика третьей главы пособия. Здесь даются логическая и физическая организация памяти современного компьютера, функции ОС по управлению памятью, в том числе виртуальной, методы и алгоритмы управления и способы повышения их эффективности. 

Четвертая глава посвящена изучению подсистемы ввода-вывода и файловых 
систем. Рассматривается широкий спектр вопросов - от назначения и задач подсистемы ввода-вывода до достаточно детального обсуждения отдельных сторон организации 
работы подсистемы ввода-вывода. Например, таких как организация параллельной работы устройств ввода-вывода и процессора, согласование скоростей обмена и кэширо
Введение 
7 

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

В пятой главе рассматриваются распределенные операционные системы и среды. Отмечаются недостатки сосредоточенных и изолированных систем компьютеров. Показываются 
преимущества объединения компьютеров в сети, даются терминология компьютерных сетей, архитектура сетевых операционных систем, сетевые службы и сетевые сервисы. Достаточно подробно рассмотрена служба каталогов сетевых серверных ОС на примере 
архитектуры Active Directory ОС Windows 2003. Даны основы концепции распределенной обработки в сетевых ОС, включающие модели распределенных приложений, передачу сообщений в распределенных системах, вызов удаленных процедур и сетевые файловые системы. 

Вопросы безопасности, диагностики и восстановления ОС после отказов обсуждаются в шестой главе. Сначала рассматриваются собственно понятие безопасности и требования безопасности. Затем подробно анализируются возможные угрозы безопасности, разрабатывается системный подход к обеспечению безопасности и на его основе - политика 
безопасности. Большое внимание уделено базовым технологиям безопасности: шифрованию, аутентификации и авторизации. 

В седьмой главе рассмотрены две основные, наиболее распространенные в настоящее время сетевые операционные системы: Windows и UNIX. Изложение материала 
дается в основном по характерным особенностям этих систем. В частности, это касается 
общей характеристики, интерфейсов, строения ядра, организации вычислительного 
процесса, управления процессами и потоками, виртуальной памятью и др. 

Восьмая глава не является обязательной для изучения, однако весьма полезна для 
углубления знаний по практической реализации некоторых компонентов операционных систем. В ней рассматриваются аппаратные и программные средства поддержки мультипрограммирования (система прерываний, таймеры), виртуальной памяти, кэширования, интерфейса прикладного программирования и других интерфейсов операционной 
системы. 
Изложение 
материала 
ведется 
на 
примере 
современного 
микропроцессора Pentium и операционной системы Windows 2000/2003. Особое внимание уделено рассмотрению процессов реализации системных вызовов. 

Заключительная, девятая глава содержит достаточно сложный материал, который 
выходит за рамки учебной программы. Он будет полезен читателям, желающим заняться вопросами оценки эффективности, мониторинга и оптимизации операционных систем. 
Здесь рассматриваются базовые понятия эффективности сложных систем вообще и 
эффективности операционных систем. Дается перечень различных показателей эффективности, которые могут использоваться в решении задач анализа функционирования 
операционных систем, их настройки и оптимизации. Приводится широкий набор инструментальных средств различных разработчиков, которые могут быть использованы 
для решения задач, связанных с настройкой операционных систем и повышением эффективности функционирования вычислительной системы в целом. 

Автор благодарит рецензентов за конструктивные замечания, способствовавшие 
улучшению книги, а также выражает благодарность к.т.н. доцентам Горелову С.В. и 
Гудыно Л.П. за участие в работе над книгой (глава 8). 

Назаров С. В. 

J 
i 

S 

! 

Глава 1 

Архитектура, назначение и функции 

операционных систем 

1.1. 
Понятие операционной системы, операционной 
среды и операционной оболочки 

Операционные системы (ОС) в современном их понимании (их назначении и 
сущности) появились значительно позже первых компьютеров (правда и, по всей видимости, исчезнут в этой сущности в компьютерах будущего). Прежде чем давать определение операционной системе, нужно рассмотреть предпосылки их появления. Почему и 
когда появились ОС? Считается, что первая цифровая вычислительная машина ENIAC 
(Electronic Numerical Integrator and Computer) была создана в 1946 году по проекту 
«Проект РХ» Министерства обороны США1. На реализацию проекта было затрачено 
500 тыс. долларов. Компьютер содержал 18000 электронных ламп, массу всякой электроники, имел 12 десятиразрядных сумматоров, а для ускорения некоторых арифметических операций имел умножитель и «делитель-извлекатель» квадратного корня. Программирование сводилось к связыванию различных блоков проводами. Конечно, никакого программного обеспечения и тем более операционных систем тогда еще не 
существовало [4, 37]. 

Интенсивное создание различных моделей ЭВМ относится к началу 50-х годов 
прошлого века. В эти годы одни и те же группы людей участвовали и в проектировании, 
и в создании, и в программировании, и в эксплуатации ЭВМ. Программирование осуществлялось исключительно на машинном языке (а затем на ассемблере), не было никакого системного программного обеспечения, кроме библиотек математических и служебных подпрограмм. Операционные системы еще не появились, а все задачи организации 
вычислительного 
процесса 
решались 
вручную 
каждым 
программистом 
с 
примитивного пульта управления ЭВМ. 

С 
появлением 
полупроводниковых 
элементов 
вычислительные 
возможности 
компьютеров существенно выросли. Наряду с этим заметно прогрессировали достижения 
в области автоматизации программирования и организации вычислительных работ. Появились алгоритмические языки (Алгол, Фортран, Кобол) и системное программное 

1 По другим сведениям, первый компьютер был создан в Англии в 1943 году для расшифровки 
кодов немецких подводных лодок. 

0 
Назаров С. В. «Операционные среды, системы и оболочки» 

обеспечение (трансляторы, редакторы связи, загрузчики и др.). Выполнение программ 
усложнилось и включало в себя следующие основные действия: 

• 
загрузка нужного транслятора (установка нужных МЛ и др.); 

• 
запуск транслятора и получение программы в машинных кодах; 

• 
связывание программы с биб лиотечными подпрограммами; 

• 
загрузка программы в оперативную память; 

• 
запуск программы; 

• 
вывод результатов работы программы на печатающее или другое периферийное 
устройство. 

Для организации эффективного использования всех средств компьютера в штат 
вычислительных центров ввели должность специально обученных операторов, профессионально выполняющих работу по организации вычислительного процесса для 
всех пользователей этого центра. Однако, как бы ни был подготовлен оператор, ему тяжело состязаться в производительности с работой устройств компьютера. И поэтому 
большую часть времени дорогостоящий процессор простаивал, а, следовательно, использование компьютеров не было эффективным. 

С целью исключения простоев были предприняты попытки разработки специальных программ - мониторов - прообразов первых операционных систем, которые осуществляли автоматический переход от задания к заданию. Считается, что первую операционную систему создала в 1952 году для своих компьютеров IBM-701 исследовательская лаборатория фирмы General Motors [8]. В 1955 году эта фирма и North American 
Aviation совместно разработали ОС для компьютера IBM-704. 

В конце 50-х годов прошлого века ведущие фирмы-изготовители поставляли 
операционные системы со следующими характеристиками: 

• 
пакетная обработка одного потока задач; 

• 
наличие стандартных программ ввода-вывода; 

• 
возможности автоматического перехода от программы к программе; 

• 
средства восстановления после ошибок, обеспечивающие автоматическую «очистку» компьютера в случае аварийного завершения очередной задачи и 
позволяющие запускать следующую задачу при минимальном вмешательстве 
оператора; 

• 
языки управления заданиями, предоставляющие пользователям возможность описывать свои задания и ресурсы, требуемые для их выполнения. 

Пакет представляет собой набор (колоду) перфокарт, организованную специальным образом (задание, программы, данные). Для ускорения работы он мог переноситься на магнитную ленту или диск. Это позволяло сократить простой дорогой аппаратуры. Надо сказать, что в настоящее время в связи с прогрессом микроэлектронных технологий и методологий программирования значительно снизилась стоимость аппаратных 
и программных средств компьютерной техники. Поэтому сейчас основное внимание 
уделяется тому, чтобы сделать работу пользователей и программистов более эффективной, поскольку затраты труда квалифицированных специалистов сейчас представляют 
собой гораздо большую долю общей стоимости вычислительных систем, чем аппаратные и программные средства компьютеров. 

Расположение операционной системы в иерархической структуре программного и 
аппаратного обеспечения компьютера можно представить, как показано на рис. 1.1. 

Самый нижний уровень содержит различные устройства компьютера, состоящие из 
микросхем, проводников, источников питания, электронно-лучевых трубок и т. и. Этот