Единое окно доступа к образовательным ресурсам

Операционные системы. Теория и практика: Учебное пособие

Голосов: 2

В учебном пособии изложены особенности функционирования, назначения и архитектуры современных операционных систем (ОС). В работе отражены: понятие и эволюция операционных систем, архитектурные особенности и классификация ОС по различным критериям, особенности управления процессами и памятью, основы организации файловых систем и некоторые их конкретные примеры, рассмотрены консолидированные серверные системы хранения данных большого объема RAID. Для получения практических навыков работе в операционных системах (на примере систем семейства Unix-Linux) учебное пособие освещает вопросы разработки программных проектов с использованием специализированных утилит, а также по управлению процессами и потоками и средствами их синхронизации. Предназначено для студентов, обучающихся по направлению 230100 Информатика и вычислительная техника.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.
         Операционная система (ОС) – это программа, которая обеспечива-
ет возможность рационального использования оборудования компьюте-
ра удобным для пользователя образом.
     ОС – базовый комплекс компьютерных программ, обеспечивающий
управление аппаратными средствами компьютера, работу с файлами,
ввод и вывод данных, а также выполнение прикладных программ и ути-
лит.
     Кроме различных определений ОС, два из которых приведены вы-
ше, пользователи выделяют ряд различных «точек зрения» на ОС:
      ОС как виртуальная машина;
      ОС как система управления ресурсами;
      ОС как защитник пользователей и программ;
      ОС как постоянно функционирующее ядро.
     Для более полного представления об ОС рассмотрим основные
«точки зрения» пользователей более подробно.
     ОС как виртуальная машина. Использование архитектуры пер-
сонального компьютера на уровне машинных команд является крайне
неудобным для использования прикладными программами. Так, работа
с диском предполагает знание внутреннего устройства его электронного
компонента – контроллера для ввода команд вращения диска, поиска и
форматирования дорожек, чтения и записи секторов и т.д. Работа по ор-
ганизации прерываний, работы таймера, управления памятью и т. д.
также может требовать при программировании знания и учета большого
количества деталей.
     В связи с этим необходимо обеспечить интерфейс между пользова-
телем и компьютером, скрывая лишние подробности за счет использо-
вания относительно простых и высокоуровневых абстракций. Напри-
мер, представлять информационное пространство диска как набор фай-
лов, которые можно открывать для чтения или записи, использовать для
получения или сброса информации, а затем закрывать, создавать иллю-
зию неограниченного размера операционной памяти, числа процессоров
и прочее. Обеспечением такого высокоуровневого абстрагирования за-
нимается ОС, что позволяет представлять ее пользователю в виде вир-
туальной машины, с которой проще иметь дело, чем непосредственно с
оборудованием компьютера.
     ОС как система управления ресурсами. В случае, если несколько
программ, работающих на одном компьютере, будут пытаться одновре-
менно осуществлять вывод на принтер, то можно получить «мешанину»
строчек и страниц. ОС должна предотвращать такого рода хаос за счет
буферизации подобной информации и организации очереди на печать.


                                 11


Не менее актуальная проблема – проблема управления ресурсами для
многопользовательских компьютеров.
    Таким образом, ОС как менеджер ресурсов осуществляет упорядо-
ченное и контролируемое распределение процессоров, памяти и других
ресурсов между различными программами.
    ОС как защитник пользователей и программ. Если в вычисли-
тельной системе требуется обеспечение совместной работы нескольких
пользователей, то возникает проблема организации их безопасной дея-
тельности. Так, необходимо обеспечить:
     сохранность информации на диске, защиту от повреждения или
удаления файлов;
     разрешение программам одних пользователей произвольно вме-
шиваться в работу программ других пользователей;
     пресечение попыток несанкционированного использования вы-
числительной системы.
    Эти задачи, как правило, возложены на ОС как организатора без-
опасной работы пользователей и их программ.
    ОС как постоянно функционирующее ядро. Можно говорить об
ОС, как о программе (программах), постоянно работающей на компью-
тере и взаимодействующей с множеством прикладных программ. Оче-
видно, что такое определение верно лишь отчасти, т.к. во многих совре-
менных ОС постоянно работает на компьютере лишь часть ОС, которую
принято называть ее ядром.
    Учитывая рассмотренное многообразие точек зрения на ОС, целе-
сообразно выполнить обзор предназначений и функций ОС, для чего, в
свою очередь, стоит рассмотреть эволюцию развития вычислительных
систем в целом и операционных систем, в частности.

    1.2     Эволюция вычислительных и операционных си-
            стем
    1.2.1   История развития ОС
     Поколения ОС, так же как и аппаратные средства связаны с дости-
жениями в области создания электронных компонентов: ламп (1-е поко-
ление), транзисторов (2-е поколение), интегральных микросхем (ИС, 3-е
поколение), больших и сверхбольших интегральных схем (БИС и СБИС,
4-е и 5-е поколения). Рассмотрим эволюцию ОС более подробно.
     Первое поколение (1940-е – 50-е гг.). В эти годы ОС отсутствуют.
Первые шаги в области разработки электронных вычислительных ма-
шин были предприняты в конце Второй мировой войны. В середине 40-
х гг. были созданы первые ламповые вычислительные устройства и по-
явился принцип программы, хранящейся в памяти машины (John Von
                                  12


Neumann, июнь 1945 г.). В то время одна и та же группа людей участво-
вала и в проектировании, эксплуатации и в программировании вычисли-
тельной машины. Это была скорее научно-исследовательская работа в
области вычислительной техники, а не регулярное использование ком-
пьютеров в качестве инструмента решения каких-либо практических за-
дач из других прикладных областей. Программирование осуществлялось
исключительно на машинном языке. Об ОС не было и речи, все задачи
организации вычислительного процесса решались вручную каждым
программистом с пульта управления. За пультом мог находиться только
один пользователь. Программа загружалась в память машины в лучшем
случае с колоды перфокарт, а обычно с помощью панели переключате-
лей.
     Вычислительная система выполняла одновременно только одну
операцию (ввод-вывод или собственно вычисления). Отладка программ
велась с пульта управления с помощью изучения состояния памяти и ре-
гистров машины. В конце этого периода появляется первое системное
программное обеспечение: в 1951–1952 гг. возникают прообразы первых
компиляторов с символических языков (Fortran и др.), а в 1954 г. Nat
Rochester разрабатывает Ассемблер для IBM-701.
     Существенная часть времени уходила на подготовку запуска про-
граммы, а сами программы выполнялись строго последовательно. Такой
режим работы называется последовательной обработкой данных. В це-
лом первый период характеризуется крайне высокой стоимостью вы-
числительных систем, их малым количеством и низкой эффективностью
использования.
     Второе поколение (1950-е – 60-е гг.). С середины 50-х гг. начался
следующий период в эволюции вычислительной техники, связанный с
появлением новой технической базы – полупроводниковых элементов.
Применение транзисторов вместо часто перегоравших электронных
ламп привело к повышению надежности компьютеров. Теперь машины
непрерывно могут работать достаточно долго, чтобы на них можно было
возложить выполнение практически важных задач. Снижается потреб-
ление вычислительными машинами электроэнергии, совершенствуются
системы охлаждения. Размеры компьютеров уменьшились. Снизилась
стоимость эксплуатации и обслуживания вычислительной техники.
Началось использование ЭВМ коммерческими фирмами. Одновременно
наблюдается бурное развитие алгоритмических языков (LISP, COBOL,
ALGOL-60, PL-1 и т.д.). Появляются первые настоящие компиляторы,
редакторы связей, библиотеки математических и служебных подпро-
грамм. Упрощается процесс программирования. Пропадает необходи-
мость взваливать на одних и тех же людей весь процесс разработки и
использования компьютеров. Именно в этот период происходит разде-
                                  13


ление персонала на программистов и операторов, специалистов по экс-
плуатации и разработчиков вычислительных машин.
     Изменяется процесс отладки программ. Теперь пользователь при-
носит программу с входными данными в виде колоды перфокарт и ука-
зывает необходимые ресурсы. Такая колода получает название задания.
Оператор загружает задание в память машины и запускает его на испол-
нение. Полученные выходные данные печатаются на принтере, и поль-
зователь получает их обратно через некоторое (довольно продолжитель-
ное) время.
     Смена запрошенных ресурсов вызывает приостановку выполнения
программ, в результате процессор часто простаивает. Для повышения
эффективности использования компьютера задания с похожими ресур-
сами начинают собирать вместе, создавая пакет заданий.
     Появляются первые системы пакетной обработки, которые просто
автоматизируют запуск одной программы из пакета за другой и тем са-
мым увеличивают коэффициент загрузки процессора. При реализации
систем пакетной обработки был разработан формализованный язык
управления заданиями, с помощью которого программист сообщал си-
стеме и оператору, какую работу он хочет выполнить на вычислитель-
ной машине. Системы пакетной обработки стали прообразом современ-
ных ОС, они были первыми системными программами, предназначен-
ными для управления вычислительным процессом.
     Следует отметить основные недостатки, присущие вычислитель-
ным системам второго поколения:
     1. Использование части машинного времени (времени процессора)
на выполнение системной управляющей программы.
     2. Программа, получившая доступ к процессору, обслуживается до
ее завершения. При этом, если возникает потребность в передаче дан-
ных между внешними устройствами и памятью, то процессор простаи-
вает, ожидая завершения операции обмена. С другой стороны, при рабо-
те процессора простаивают внешние устройства. Для персонального
компьютера проявление фактора простоя процессора не столь суще-
ственно, так как стоимость его не велика, чего не скажешь о больших и
дорогих ЭВМ.
     Третий период развития вычислительных машин относится к
началу 1960 – 70 гг. В это время в технической базе произошел переход
от отдельных полупроводниковых элементов типа транзисторов к инте-
гральным микросхемам. Вычислительная техника становится более
надежной и дешевой. Растет сложность и количество задач, решаемых
компьютерами. Повышается производительность процессоров.
     Повышению эффективности использования процессорного времени
мешает низкая скорость работы механических устройств ввода-вывода.
                                 14


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

                                 15


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


     Для корректного обмена данными необходимо разрешать кон-
фликтные ситуации, возникающие при работе с различными ресурсами
и предусмотреть координацию программами своих действий, т.е. снаб-
дить систему средствами синхронизации.
    Мультипрограммные системы обеспечили возможность более эф-
фективного использования системных ресурсов (например, процессора,
памяти, периферийных устройств), но они еще долго оставались пакет-
ными. Пользователь не мог непосредственно взаимодействовать с зада-
нием и должен был предусмотреть с помощью управляющих карт все
возможные ситуации. Отладка программ по-прежнему занимала много
времени и требовала изучения многостраничных распечаток содержи-
мого памяти и регистров или использования отладочной печати.
    Параллельно внутренней эволюции вычислительных систем проис-
ходила и внешняя их эволюция. До начала этого периода вычислитель-
ные комплексы были, как правило, несовместимы. Каждый имел соб-
ственную ОС, свою систему команд и т.д. В результате программу,
успешно работающую на одном типе машин, необходимо было полно-
стью переписывать и заново отлаживать для выполнения на компьюте-
рах другого типа. В начале третьего периода появилась идея создания
семейств программно совместимых машин, работающих под управлени-
ем одной и той же ОС. Первым семейством программно совместимых
компьютеров, построенных на интегральных микросхемах, стала серия
больших машин IBM/360. Разработанное в начале 60-х годов, это семей-
ство значительно превосходило машины второго поколения по крите-
рию цена/производительность. За ним последовала линия мини компью-
теров PDP (несовместимых с линией IBM), и лучшей моделью в ней
стала PDP-11.
    Сила «одной семьи» была одновременно и ее слабостью. Широкие
возможности этой концепции (наличие всех моделей: от мини-
компьютеров до гигантских машин; обилие разнообразной периферии;
различное окружение; различные пользователи) порождали сложную и
громоздкую ОС. Миллионы строчек Ассемблера, написанные тысячами
программистов, содержали множество ошибок, что вызывало непрерыв-
ный поток публикаций о них и попыток исправления. Только в операци-
онной системе OS/360 содержалось более 1000 известных ошибок. Тем
не менее, идея стандартизации ОС была широко внедрена в сознание
пользователей и в дальнейшем получила активное развитие.
    К этому же периоду относится появление первых операционных си-
стем реального времени (ОСРВ), в которых ЭВМ применяется для
управления техническими объектами, такими, например, как станок,
спутник, научная экспериментальная установка, или технологическими
процессами, такими, как гальваническая линия, доменный процесс и т.п.
                                 17


Во всех этих случаях существует предельно допустимое время, в тече-
ние которого должна быть выполнена та или иная программа, управля-
ющая объектом. В противном случае может произойти авария: спутник
сойдет с орбиты, экспериментальные данные могут быть потеряны,
толщина гальванического покрытия не будет соответствовать норме и
т.п. Характерным для ОСРВ является обеспечение заранее заданных ин-
тервалов времени реакции на предусмотренные события для получения
управляющего воздействия – реактивность. Поскольку в технологиче-
ских процессах промедление может привести к нежелательным и даже
опасным последствиям, это реализовано за счет проектирования ОСРВ
для работы в наихудших условиях (например, при возникновении ава-
рийной ситуации, запускающей все оговоренные заранее программы).
     Системное программное обеспечение этого периода решало множе-
ство проблем, связанных с защитой результатов работы различных про-
грамм, защитой данных в оперативной памяти и других данных. Кроме
того, ОС должна управлять новыми устройствами, входящими в состав
аппаратного обеспечения. Для решения этих задач системное программ-
ное обеспечение сформировалось в сложную систему, требующую для
реализации своих возможностей значительных вычислительных ресур-
сов.
     ОС четвертого поколения (1970-80-е гг.) были многорежимными
системами, обеспечивающими пакетную обработку, разделение време-
ни, режим реального времени и мультипроцессорный режим. Они были
громоздкими и дорогостоящими (например, ОС OS/360 фирмы IBM).
Такие ОС, будучи прослойкой, между пользователем и аппаратурой
ЭВМ, привели к значительному усложнению вычислительной обстанов-
ки. Для выполнения простейшей программы необходимо было изучать
сложные языки управления заданием (Job Control Language – JCL). К
этому периоду относится появление вытесняющей многозадачности
(Preemptive scheduling) и использование концепции баз данных для хра-
нения больших объемов информации для организации распределенной
обработки. Программисты перестали использовать перфокарты и маг-
нитные ленты для хранения своих данных. Вводится приоритетное пла-
нирование (Prioritized scheduling) и выделение квот на использование
ограниченных ресурсов компьютеров (процессорного времени, диско-
вой памяти, физической (оперативной) памяти).
     Появление электронно-лучевых дисплеев и переосмысление воз-
можностей применения клавиатур поставили на очередь решение этой
проблемы. Логическим расширением систем мультипрограммирования
стали системы разделения времени (time-sharing системы). В них про-
цессор переключается между задачами не только на время операций
ввода-вывода, но и через определенные интервалы времени. Эти пере-
                                 18


ключения происходят так часто, что пользователи могут взаимодейство-
вать со своими программами во время их выполнения, то есть интерак-
тивно. В результате появляется возможность одновременной работы не-
скольких пользователей на одной компьютерной системе. У каждого
пользователя для этого должна быть хотя бы одна программа в памяти.
Чтобы уменьшить ограничения на количество работающих пользовате-
лей была внедрена идея неполного нахождения исполняемой программы
в оперативной памяти. Основная часть программы находится на диске, и
фрагмент, который необходимо в данный момент выполнять, может
быть загружен в оперативную память, а ненужный – выкачан обратно на
диск. Это реализуется с помощью механизма виртуальной памяти. Ос-
новным достоинством такого механизма является создание иллюзии не-
ограниченной оперативной памяти ЭВМ.
     В системах разделения времени пользователь получил возможность
эффективно производить отладку программы в интерактивном режиме и
записывать информацию на диск, не используя перфокарты, а непосред-
ственно с клавиатуры. Появление on-line-файлов привело к необходимо-
сти разработки развитых файловых систем.
     Пятое поколение (с середины 1980-х гг. по н.в.). Период характе-
ризуется уменьшением стоимости компьютеров и увеличением стоимо-
сти труда программиста. Появление персональных компьютеров позво-
лило установить компьютер практически каждому пользователю на ра-
бочем столе. Благодаря широкому распространению вычислительных
сетей и средств оперативной обработки (работающих в режиме on-line),
пользователи получают доступ к территориально распределенным ком-
пьютерам. Появились микропроцессоры, на основе которых создаются
все новые и новые персональные компьютеры, которые могут быть ис-
пользованы как автономно, так и в качестве терминалов более мощных
вычислительных систем. При передаче информации по линиям связи
усложняются проблемы защиты информации, шифрования данных.
Возникло понятие сетевого компьютера (Network computer), способного
получать все ресурсы через компьютерную сеть. Понятие файловой си-
стемы распространяется на данные, доступные по различным сетевым
протоколам.
     Число людей, пользующихся компьютером, значительно возросло,
что выдвигает требование наличия дружественного интерфейса пользо-
вателя, ориентации на неподготовленного пользователя. Появились си-
стемы с управлением с помощью меню и элементов графического ин-
терфейса. Начала широко распространяться концепция виртуальных
машин. Пользователь более не заботится о физических деталях построе-
ния ЭВМ или сетей. Он имеет дело с функциональным эквивалентом
компьютера, создаваемым для него операционной системой, представ-
                                 19


ляющим виртуальную машину. Таким образом, возникла концепция
виртуализации ресурсов ЭВМ – создание функциональных программно
моделируемых эквивалентов реального монопольного ресурса, допус-
кающих их совместное использование многими процессами. Например,
мультипрограммирование – виртуализация центрального процессора,
буферный ввод-вывод – виртуализация устройств ввода и вывода.
     Широкое внедрение получила концепция распределенной обработ-
ки данных. Развитием распределенной обработки данных стала техноло-
гия «клиент – сервер», в которой серверный процесс предоставляет воз-
можность использовать свои ресурсы клиентскому процессу по соответ-
ствующему протоколу взаимодействия. Название сервера отображает
вид ресурса, который предоставляется клиентским системам (сервер пе-
чати, сервер вычислений, сервер баз данных, сервер новостей, сервер
FTP, сервер WWW и т.д.).
    1.2.2   Основные функции ОС
    Обзор этапов развития вычислительных и операционных систем
позволяет все функции ОС условно разделить на две различные груп-
пы – интерфейсные и внутренние. К интерфейсным функциям ОС от-
носят:
     управление аппаратными средствами;
     управление устройствами ввода- вывода;
     поддержку файловой системы;
     поддержку многозадачности (разделение использования памяти,
времени выполнения);
     ограничение доступа, многопользовательский режим работы,
планирование доступа пользователей к общим ресурсам;
     интерфейс пользователя (команды в MS DOS, Unix; графический
интерфейс в ОС Windows);
     поддержка работы с общими данными в режиме коллективного
пользования;
     поддержка работы в локальных и глобальных сетях.
    К внутренним функциям ОС, которые выделились в процессе эво-
люции вычислительных и операционных систем, следует отнести:
     реализацию обработки прерываний;
     управление виртуальной памятью;
     планирование использования процессора;
     обслуживание драйверов устройств.




                                  20



    
Яндекс цитирования Яндекс.Метрика