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

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



НазваниеЛекция операционная система
страница1/9
Дата конвертации25.05.2013
Размер1.58 Mb.
ТипЛекция
источник
  1   2   3   4   5   6   7   8   9





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


ЛЕКЦИЯ 1. ОПЕРАЦИОННАЯ СИСТЕМА


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


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

Из чего состоит любая вычислительная система?

1. hardware (техническое обеспечение): процессор, память, монитор, дисковые устройства и т.д., объединенные магистральным соединением, которое называется шиной.

2. software (программное обеспечение).

Все программное обеспечение (ПО) принято делить на 2 части: прикладное и системное.

Прикладное: разнообразные банковские и прочие бизнес-программы, игры, текстовые процессоры и т.п.

Системное: программы, способствующие функционированию и разработке прикладных программ.

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



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


^ ЧТО ТАКОЕ ОС?

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

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

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

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

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

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

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

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

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

Т.о., существует много точек зрения на то, что такое ОС. Невозможно дать ей строгое определение.


^ КРАТКАЯ ИСТОРИЯ ЭВОЛЮЦИИ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ

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

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

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

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

- в 1951–1952 гг. возникают прообразы первых компиляторов с символических языков (Fortran и др.),

- в 1954 г. Nat Rochester разрабатывает Ассемблер для IBM-701.

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

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

В середине 50-х годов появились полупроводниковые элементы (транзисторы).

- применение транзисторов вместо часто перегоравших электронных ламп привело к повышению на-дежности компьютеров. Теперь машины могут непрерывно работать достаточно долго и на них можно возло-жить выполнение важных задач.

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

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

- бурное развитие алгоритмических языков (LISP, COBOL, ALGOL-60, PL-1 и т.д.). Появляются первые настоящие компиляторы, редакторы связей, библиотеки математических и служебных подпрограмм. Упроща-ется процесс программирования.

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

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

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

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

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

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

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

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

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

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

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

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

  • Развитие параллелизма в архитектуре. Прямой доступ к памяти и организация каналов ввода-вывода позволили освободить центральный процессор от рутинных операций.

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

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

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

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

  • Поскольку память является ограниченным ресурсом, нужны стратегии управления памятью, т.е. тре-буется упорядочить процессы размещения, замещения и выборки информации из памяти.

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

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

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

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

Появление электронно-лучевых дисплеев и переосмысление возможностей применения клавиатур пос-тавили на очередь решение этой проблемы. Логическим расширением систем мультипрограммирования стали time-sharing системы, или системы разделения времени. В них процессор переключается между задачами не только на время операций ввода-вывода, но и просто по прошествии определенного времени. Эти переключе-ния происходят так часто, что пользователи могут взаимодействовать со своими программами во время их вы-полнения, т. е. интерактивно. В результате появляется возможность одновременной работы нескольких поль-зователей на одной компьютерной системе. У каждого пользователя для этого должна быть хотя бы одна про-грамма в памяти. Чтобы уменьшить ограничения на количество работающих пользователей, была внедрена идея неполного нахождения исполняемой программы в оперативной памяти. Основная часть программы нахо-дится на диске, и фрагмент, который необходимо в данный момент выполнять, может быть загружен в опера-тивную память, а ненужный – выкачан обратно на диск. Это реализуется с помощью механизма виртуальной памяти. Достоинство это механизма - создание иллюзии неограниченной оперативной памяти ЭВМ.

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

Параллельно внутренней эволюции ВС происходила и внешняя их эволюция. До начала этого периода вычислительные комплексы были, как правило, несовместимы. Каждый имел собственную ОС, свою систему команд и т. д. В результате программу, успешно работающую на одном типе машин, необходимо было пол-ностью переписывать и заново отлаживать для выполнения на компьютерах другого типа. В начале 3-го пери-ода появилась идея создания семейств программно совместимых машин, работающих под управлением одной и той же ОС. 1-м семейством программно совместимых компьютеров, построенных на интегральных микро-схемах, стала серия машин IBM/360. Разработанное в начале 60-х годов, это семейство значительно превосхо-дило машины 2-го поколения по критерию цена/производительность. За ним последовала линия компьютеров PDP, несовместимых с линией IBM, и лучшей моделью в ней стала PDP-11.

Сила "одной семьи" была одновременно и ее слабостью. Широкие возможности этой концепции (нали-чие всех моделей: от мини-компьютеров до гигантских машин; обилие разнообразной периферии; различное окружение; различные пользователи) порождали сложную и громоздкую ОС. Миллионы строчек Ассемблера, написанные тысячами программистов, содержали множество ошибок, что вызывало непрерывный поток пу-бликаций о них и попыток исправления. Только в OS/360 содержалось более 1000 известных ошибок. Тем не менее идея стандартизации ОС была широко внедрена в сознание пользователей и в дальнейшем получила активное развитие.

^ 4-ый период (с 1980 г. по настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы

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

Компьютеры стали использоваться не только специалистами, что потребовало разработки "дружествен-ного" ПО.

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

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

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

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

В дальнейшем автономные ОС будем называть классическими ^ ОС.

Т.о., выделим шесть основных функций, которые выполняли классические ОС в процессе эволюции:

  • Планирование заданий и использования процессора.

  • Обеспечение программ средствами коммуникации и синхронизации.

  • Управление памятью.

  • Управление файловой системой.

  • Управление вводом-выводом.

  • Обеспечение безопасности

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


^ ЛЕКЦИЯ 2.ПРИНЦИПЫ СОЗДАНИЯ ОС


Системные вызовы (system calls) – это интерфейс между ОС и пользовательской программой. Они соз-дают, удаляют и используют различные объекты, главные из которых – процессы и файлы. Пользовательская программа запрашивает сервис у ОС, осуществляя системный вызов. Имеются библиотеки процедур, которые загружают машинные регистры определенными параметрами и осуществляют прерывание процессора, после чего управление передается обработчику данного вызова, входящему в ядро ОС. Цель таких библиотек – сделать системный вызов похожим на обычный вызов подпрограммы.

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

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

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

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

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

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

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


^ АРХИТЕКТУРНЫЕ ОСОБЕННОСТИ ОС

Монолитное ядро

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

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

^ Монолитное ядро – старейший способ организации ОС. Примером систем с монолитным ядром явля-ется большинство Unix-систем.

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

^ Многоуровневые системы (Layered systems)

Продолжая структуризацию, можно разбить всю ВС на ряд более мелких уровней с хорошо определен-ными связями между ними, чтобы объекты уровня N могли вызывать только объекты уровня N-1. Нижним уровнем в таких системах является hardware, верхним уровнем – интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindho-ven) Дейкс-трой (Dijkstra) и его студентами в 1968 г. Эта система имела следующие уровни:



Рис. 1.2.  Слоеная система THE

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

^ Виртуальные машины

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



Рис. 1.3.  Вариант виртуальной машины

Первой реальной системой такого рода была система CP/CMS (VM/370), для семейства машин IBM/370.

Недостаток: снижение эффективности виртуальных машин по сравнению с реальным компьютером, и громоздкость.

Преимущество: использование на одной ВС программ, написанных для разных ОС.

^ Микроядерная архитектура

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



Рис. 1.4.  Микроядерная архитектура операционной системы

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

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

В то же время микроядерная архитектура ОС вносит дополнительные накладные расходы, связанные с передачей сообщений, что существенно влияет на производительность. Для того чтобы микроядерная ОС по скорости не уступала ОС на базе монолитного ядра, требуется очень аккуратно проектировать разбиение сис-темы на компоненты, стараясь минимизировать взаимодействие между ними. Т. о., основная сложность при создании микроядерных ОС – необходимость очень аккуратного проектирования.

Смешанные системы

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

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

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

Т. о., Windows NT можно с полным правом назвать гибридной ОС.


^ ЛЕКЦИЯ 3. КЛАССИФИКАЦИЯ ОС


Существует несколько схем классификации ОС.

Реализация многозадачности

По числу одновременно выполняемых задач ОС можно разделить на 2 класса:

  • многозадачные (Unix, OS/2, Windows);

  • однозадачные (MS-DOS).

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

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

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

По приведенным примерам можно судить о приблизительности классификации. Так, в ^ ОС MS-DOS можно организовать запуск дочерней задачи и наличие в памяти 2-х и более задач одновременно. Однако эта ОС традиционно считается однозадачной, главным образом из-за отсутствия защитных механизмов и комму-никационных возможностей.

Поддержка многопользовательского режима

По числу одновременно работающих пользователей ОС можно разделить на:

  • однопользовательские (MS-DOS, Windows 3.x);

  • многопользовательские (Windows NT, Unix).

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

^ Многопроцессорная обработка

Вплоть до недавнего времени ВС имели один центральный процессор. В результате требований к повы-шению производительности появились многопроцессорные системы, состоящие из 2-х и более процессоров общего назначения, осуществляющих параллельное выполнение команд. Поддержка мультипроцессирования является важным свойством ОС и приводит к усложнению всех алгоритмов управления ресурсами. Многопро-цессорная обработка реализована в таких ОС, как Linux, Solaris, Windows NT, и ряде других.

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

В асимметричных ОС процессоры неравноправны. Обычно существует главный процессор (master) и подчиненные (slave), загрузку и характер работы которых определяет главный процессор.

^ Системы реального времени

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

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

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

^ Архитектура компьютера

Основными аппаратными компонентами компьютера являются: основная память, центральный процес-сор и периферийные устройства. Для обмена данными между собой эти компоненты соединены группой про-водов, называемой магистралью (рис.1.5).



Рис. 1.5.  Некоторые компоненты компьютера

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

Выполнение различных операций с данными осуществляется изолированной частью компьютера, назы-ваемой центральным процессором (ЦП). ЦП также имеет ячейки для запоминания информации, называемые регистрами. Их разделяют на регистры общего назначения и специализированные регистры. В современных компьютерах емкость регистра обычно составляет 4–8 байт. Регистры общего назначения используются для временного хранения данных и результатов операций. Для обработки информации обычно организовывается передача данных из ячеек памяти в регистры общего назначения, выполнение операции центральным процес-сором и передача результатов операции в основную память.

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

Программы хранятся в виде последовательности машинных команд, которые должен выполнять цен-тральный процессор. Каждая команда состоит из поля операции и полей операндов, т.е. тех данных, над которыми выполняется данная операция. Весь набор машинных команд называется машинным языком.

Выполнение программы осуществляется следующим образом. Машинная команда, на которую указы-вает программный счетчик, считывается из памяти и копируется в регистр команд. Здесь она декодируется, после чего исполняется. После выполнения команды программный счетчик указывает на следующую коман-ду. Эти действия, называемые машинным циклом, затем повторяются.

^ Взаимодействие с периферийными устройствами

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

Любая операция ввода-вывода предполагает диалог между ЦП и контроллером устройства. Когда про-цессору встречается команда, связанная с вводом-выводом, входящая в состав какой-либо программы, он вы-полняет ее, посылая сигналы контроллеру устройства. Это так называемый программируемый ввод-вывод.

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

В современных компьютерах также имеется возможность непосредственного взаимодействия между контроллером и основной памятью, минуя ЦП, – так называемый механизм прямого доступа к памяти.


^ ЛЕКЦИЯ 4. ПРОЦЕССЫ
  1   2   3   4   5   6   7   8   9




Похожие:

Лекция операционная система iconПрактическая работа №2-3-4 Теоретическая часть: Файловые системы
Операционная система Microsoft Windows xp в бета версиях, известная как Microsoft Codename Whistler, является продолжением линейки...
Лекция операционная система iconПрограмма Операционная система комплекс программ, обеспечивающих взаимодействие всех аппаратных и программных частей компьютера между собой и взаимодействие пользователя и компьютера
Пользователь может дать, например, команду выполнения какой-либо операции над файлами (копирование, удаление, переименование), команду...
Лекция операционная система iconПрограмма Операционная система комплекс программ, обеспечивающих взаимодействие всех аппаратных и программных частей компьютера между собой и взаимодействие пользователя и компьютера
Пользователь может дать, например, команду выполнения какой-либо операции над файлами (копирование, удаление, переименование), команду...
Лекция операционная система iconЧрезвычайно увлёкся идеей написать совместимое с unix ядро операционной системы для своего
Прототипом для будущего ядра стала операционная система minix: совместимая с unix операционная система для персональных компьютеров....
Лекция операционная система iconОперационная система ms dos windows

Лекция операционная система iconДокументи
1. /Курячий Операционная система Linux.pdf
Лекция операционная система iconДокументи
1. /Робачевский Операционная система UNIX.pdf
Лекция операционная система iconРеферат по информатике Операционные системы Майдуров Александр 14. 09. 2010
Прежде всего, стоит разобраться, что же из себя представляет операционная система (ОС)
Лекция операционная система iconТема: Операционная система: назначение и состав. Загрузка операционной системы. Прикладное программное обеспечение, рассмотреть приложения общего и специального назначения

Лекция операционная система iconМетодическое руководство: Операционная система windows
Изображение на экране можно настроить: яркость, четкость, сдвиг влево вправо, вверх-вниз
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©lib2.podelise.ru 2000-2013
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы