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

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

Покупка
Артикул: 056085.05.99
Доступ онлайн
1 000 ₽
В корзину
В курсе описаны фундаментальные принципы проектирования и реализации операционных систем. Курс базируется на семестровом курсе «Введение в операционные системы», читаемом авторами в МФТИ и может рассматриваться как учебник для студентов, специализирующихся в области информатики. Курс включает теоретические главы, а также обширный иллюстрационный материал, позволяющий ознакомиться с отдельными аспектами функционирования операционных систем на практике. Теоретическая часть состоит из 16 лекций. Она имеет традиционное построение и содержит следующие разделы: введение, понятие и реализация процессов, взаимодействие процессов, проблемы взаимоблокировок, организация памяти, структура файловой системы, описание системы ввода-вывода, сети и безопасность операционных систем. Большинство разделов состоит из нескольких тематически связанных глав. В курсе много иллюстраций. В конце каждой теоретической главы перечисляются наиболее важные концепции и идеи, приводятся наборы тестов, которые могут быть использованы для самоконтроля. Материалы практических занятий дополняют лекционный курс и используются для иллюстрации реализации теоретических положений на примере операционной системы UNIX. На практике рассматриваются организация процессов, различные способы их взаимодействия, устройство файловой системы, системы ввода-вывода, начала сетевого программирования. Текст, размещенный в практической части курса, содержит многочисленные ссылки на лекционный материал.
Коньков, К. А. Основы операционных систем : краткий курс / К. А. Коньков, В. А. Карпов. - Москва : ИНТУИТ, 2016. - 247 с. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2150598 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов

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

2-е издание, исправленное

Коньков К.А.
Карпов В.Е.

Национальный Открытый Университет “ИНТУИТ”
2016

2

Основы операционных систем/ К.А. Коньков, В.Е. Карпов - М.: Национальный Открытый
Университет “ИНТУИТ”, 2016

В курсе описаны фундаментальные принципы проектирования и реализации операционных систем.
Курс базируется на семестровом курсе «Введение в операционные системы», читаемом авторами в
МФТИ и может рассматриваться как учебник для студентов, специализирующихся в области
информатики. Курс включает теоретические главы, а также обширный иллюстрационный материал,
позволяющий ознакомиться с отдельными аспектами функционирования операционных систем на
практике. Теоретическая часть состоит из 16 лекций. Она имеет традиционное построение и
содержит следующие разделы: введение, понятие и реализация процессов, взаимодействие
процессов, проблемы взаимоблокировок, организация памяти, структура файловой системы,
описание системы ввода-вывода, сети и безопасность операционных систем. Большинство разделов
состоит из нескольких тематически связанных глав. В курсе много иллюстраций. В конце каждой
теоретической главы перечисляются наиболее важные концепции и идеи, приводятся наборы тестов,
которые могут быть использованы для самоконтроля. Материалы практических занятий дополняют
лекционный курс и используются для иллюстрации реализации теоретических положений на
примере операционной системы UNIX. На практике рассматриваются организация процессов,
различные способы их взаимодействия, устройство файловой системы, системы ввода-вывода,
начала сетевого программирования. Текст, размещенный в практической части курса, содержит
многочисленные ссылки на лекционный материал.

(c) ООО “ИНТУИТ.РУ”, 2004-2016
(c) Коньков К.А., Карпов В.Е., 2004-2016

3

Введение

В данной лекции вводится понятие операционной системы; рассматривается эволюция
развития операционных систем; описываются функции операционных систем и
подходы к построению операционных систем.

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

Что такое операционная система

Структура вычислительной системы

Из чего состоит любая вычислительная система? Во-первых, из того, что в
англоязычных странах принято называть словом hardware, или техническое
обеспечение: процессор, память, монитор, дисковые устройства и т.д., объединенные
магистральным соединением, которое называется шиной. Некоторые сведения об
архитектуре компьютера имеются в приложении 1 к настоящей лекции.

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

4

Рис. 1.1.  Слои программного обеспечения компьютерной системы

Что такое ОС

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

Операционная система как виртуальная машина

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

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

5

проще иметь дело, чем непосредственно с оборудованием компьютера.

Операционная система как менеджер ресурсов

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

Операционная система как защитник пользователей и программ

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

Операционная система как постоянно функционирующее ядро

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

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

Краткая история эволюции вычислительных систем

6

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

Первый период (1945–1955 гг.). Ламповые машины. Операционных систем нет

Мы начнем исследование развития компьютерных комплексов с появления
электронных вычислительных систем (опуская историю механических и
электромеханических устройств).

Первые шаги в области разработки электронных вычислительных машин были
предприняты в конце Второй мировой войны. В середине 40-х были созданы первые
ламповые вычислительные устройства и появился принцип программы, хранящейся в
памяти машины (John Von Neumann, июнь 1945 г.). В то время одна и та же группа
людей участвовала и в проектировании, и в эксплуатации, и в программировании
вычислительной машины. Это была скорее научно-исследовательская работа в области
вычислительной техники, а не регулярное использование компьютеров в качестве
инструмента решения каких-либо практических задач из других прикладных областей.
Программирование осуществлялось исключительно на машинном языке. Об
операционных системах не было и речи, все задачи организации вычислительного
процесса решались вручную каждым программистом с пульта управления. За пультом
мог находиться только один пользователь. Программа загружалась в память машины в
лучшем случае с колоды перфокарт, а обычно с помощью панели переключателей.

Вычислительная система выполняла одновременно только одну операцию (ввод-вывод
или собственно вычисления). Отладка программ велась с пульта управления с
помощью изучения состояния памяти и регистров машины. В конце этого периода
появляется первое системное программное обеспечение: в 1951–1952 гг. возникают
прообразы первых компиляторов с символических языков (Fortran и др.), а в 1954 г. Nat
Rochester разрабатывает Ассемблер для IBM-701.

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

Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные
операционные системы

С середины 50-х годов начался следующий период в эволюции вычислительной

7

техники, связанный с появлением новой технической базы – полупроводниковых
элементов. Применение транзисторов вместо часто перегоравших электронных ламп
привело к повышению надежности компьютеров. Теперь машины могут непрерывно
работать достаточно долго, чтобы на них можно было возложить выполнение
практически важных задач. Снижается потребление вычислительными машинами
электроэнергии, совершенствуются системы охлаждения. Размеры компьютеров
уменьшились. Снизилась стоимость эксплуатации и обслуживания вычислительной
техники. Началось использование ЭВМ коммерческими фирмами. Одновременно
наблюдается бурное развитие алгоритмических языков (LISP, COBOL, ALGOL-60, PL1 и т.д.). Появляются первые настоящие компиляторы, редакторы связей, библиотеки
математических и служебных подпрограмм. Упрощается процесс программирования.
Пропадает необходимость взваливать на одних и тех же людей весь процесс
разработки и использования компьютеров. Именно в этот период происходит
разделение персонала на программистов и операторов, специалистов по эксплуатации
и разработчиков вычислительных машин.

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

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

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

Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных
микросхем. Первые многозадачные ОС

Следующий важный период развития вычислительных машин относится к началу 60-х
– 1980 г. В это время в технической базе произошел переход от отдельных
полупроводниковых элементов типа транзисторов к интегральным микросхемам.
Вычислительная техника становится более надежной и дешевой. Растет сложность и
количество задач, решаемых компьютерами. Повышается производительность
процессоров.

8

Повышению эффективности использования процессорного времени мешает низкая
скорость работы механических устройств ввода-вывода (быстрый считыватель
перфокарт мог обработать 1200 перфокарт в минуту, принтеры печатали до 600 строк в
минуту). Вместо непосредственного чтения пакета заданий с перфокарт в память
начинают использовать его предварительную запись, сначала на магнитную ленту, а
затем и на диск. Когда в процессе выполнения задания требуется ввод данных, они
читаются с диска. Точно так же выходная информация сначала копируется в
системный буфер и записывается на ленту или диск, а печатается только после
завершения задания. Вначале действительные операции ввода-вывода осуществлялись
в режиме off-line, то есть с использованием других, более простых, отдельно стоящих
компьютеров. В дальнейшем они начинают выполняться на том же компьютере,
который производит вычисления, то есть в режиме on-line. Такой прием получает
название spooling (сокращение от Simultaneous Peripheral Operation On Line) или
подкачки-откачки данных. Введение техники подкачки-откачки в пакетные системы
позволило совместить реальные операции ввода-вывода одного задания с выполнением
другого задания, но потребовало разработки аппарата прерываний для извещения
процессора об окончании этих операций.

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

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

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

9

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

Не менее важна в организации мультипрограммирования роль операционной системы.
Она отвечает за следующие операции.

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

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

10

Доступ онлайн
1 000 ₽
В корзину