WWW.BOOK.LIB-I.RU
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - Электронные ресурсы
 


«Ю. В. Улихина Н. К. Токжигитова ЦИОННЫЕ А СИСТЕМЫ Учебное пособие Павлодар Министерство образования и науки Республики Казахстан * Павлодарский государственный университет им. С. Торайгырова ...»

Ю. В. Улихина

Н. К. Токжигитова

ЦИОННЫЕ

А

СИСТЕМЫ

Учебное пособие

Павлодар

Министерство образования и науки Республики Казахстан *

Павлодарский государственный университет

им. С. Торайгырова

Ю. В. Улихина

Н. К. Тоюкигитова

I

ОПЕРАЦИОННЫЕ СИСТЕМЫ

Учебное пособие

ПЩПЭЛЛР - IX Т. -г,.. ^г.."...r - ~,

І,f ‘ ‘ ' I А7ЫНДЛГМ f Ы ПЫМ М ^ІТДГЛ/ - '• * WН І ; 'Ш Н К Ж І |В В Ж ФФОДвНЫ* ~АЯ НА*ЧЧ\Е *ЗБЛ{*0Т«*Л if* с. БЕЙСЕЭД5 «-Ь.' И Павлодар I Кереку УДК 004.451(075,8) ББК 32.973-018.2я73 У48 Рекомендовано к изданию Учебно-методическим советом Павлодарского государственного университета им. С. Торайгырова

Рецензенты:

М. Серік - доктор педагогических наук, профессор Евразийского национального университета им. JI. Н. Гумилева;

Г. М. Абильдинова - кандидат педагогических наук, доцент Евразийского национального университета им. Л. Н. Гумилева;

А. Ж. Асаинова - кандидат педагогических наук, профессор, Павлодарского государственного университета им. С.Торайгырова.

Улихина Ю. В., Токжигитова Н. К.

У48 Операционные системы : учебное пособие / Ю. В. Улихина, Н. К. Токжигитова. - Павлодар : Кереку, 2015. —70 с.

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

Учебное пособие рекомендуется студентам специальности 5В060200 - Информатика высших учебных заведений 1е ик с Е ей сем баеі '1 УДК 004.451(075.8) ' Н V * j - i; ’ ББК 32.973-018.2*73 © Улихина Ю. В., Токжигитова Н. К., 2015 О 111 У им. С. Торайгырова, 2015 За достоверность материалов, грамматические и орфографические ошибки ответственность несут авторы и составители Введение На современном этапе развития информационных технологий пользователь персонального компьютера не мыслит работу без привычного и понятного интерфейса и управления компьютером без операционной системы, которая включает в себя эти и многие другие функции. Еще несколько десятков лет назад программист задавал все операции для выполнения программ вручную и так же отслеживал их выполнение.

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

1 История развития операционных систем

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





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

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

Первый период (1 9 4 5 - 1955). В середине 40-х были созданы первые ламповые вычислительные устройства. В то время одна и та же группа людей участвовала и в проектировании, и в эксплуатации, и в программировании вычислительной машины. Это была скорее научно-исследовательская работа в области вычислительной техники, а не использование компьютеров в качестве инструмента решения каких-либо практических задач из других прикладных областей.

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

Второй период (1 9 5 5 - 1965). С середины 50-х годов начался новый период в развитии вычислительной техники, связанный с появлением новой технической базы - полупроводниковых элементов. Компьютеры второго поколения стали более надежными, теперь они смогли непрерывно работать настолько долго, чтобы на них можно было возложить выполнение действительно практически важных задач. Именно в этот период произошло разделение персонала на программистов и операторов, эксплуатационников и разработчиков вычислительных машин.

В эти годы появились первые алгоритмические языки, а следовательно и первые системные программы - компиляторы.

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

Третий период (1 9 6 5 - 1980). Следующий важный период развития вычислительных машин относится к 1965 - 1980 годам. В это время в технической базе произошел переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам, что дало гораздо большие возможности новому, третьему поколению компьютеров.

Для этого периода характерно также создание семейств программно-совместимых машин. Первым семейством программно* совместимых машин, построенных на интегральных микросхемах, явилась серия машин ІВМ/360. Построенное в начале 60-х годов это семейство значительно превосходило машины второго поколения по критерию «цена-производительность». Вскоре идея программно­ совместимых машин стала общепризнанной.

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

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

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

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

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

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

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

Компьютеры стали широко использоваться неспециалистами, что потребовало разработки «дружественного» (понятного) программного обеспечения.

На рынке операционных систем доминировали две системы: MSDOS и UNIX. Однопрограммная однопользовательская ОС MS-DOS широко использовалась для компьютеров, построенных на базе микропроцессоров Intel 8088, а затем 80286, 80386 и 80486.

Мультипрограммная многопользовательская ОС UNIX доминировала в среде «неинтеловских» компьютеров, особенно построенных на базе высокопроизводительных RISC-процессоров [2].

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

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

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

Контрольные вопросы

1. Какие события в развитии технической базы вычислительных машин стали этапами развития в истории операционных систем?

2. Может ли компьютер работать без операционной системы?

3. Какое влияние на развитие ОС оказал Интернет?

4. Период для которого характерно создание семейств программно-совместимых машин?

5. Сколько всего различаю этапов развития операционных систем?

6. Что собой представляет мультипрограммирование?

7. Что такое спулинг?

2 Назначение и типы операционных систем

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

Следовательно очень важно выделить те функции, которые присущи всем операционным системам.

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

ОС выполняет две группы функций:

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

- управление ресурсами компьютера с целью повышения эффективности его использования.

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

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

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

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

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

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

Управление ресурсами включает решение двух общих, не зависящих от типа ресурса задач:

- планирование ресурса - то есть определение, кому, когда, а для делимых ресурсов и в каком количестве, необходимо выделить данный ресурс;

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

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

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

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

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

23 Поддержка многозадачности По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:

- однозадачные (например, MS-DOS, MSX);

- многозадачные (ОС ЕС, OS/2, UNIX, Windows 95, Windows NT).

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

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

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

- однопользовательские (MS-DOS, ранние версии OS/2);

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

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

2.5 Серверные операционные системы Назначение серверной операционной системы - эго управление приложениями, обслуживающими всех пользователей корпоративной сети, а нередко и внешних пользователей. К таким приложениям относятся современные системы управления базами данных, средства управления сетями и анализа событий в сети, службы каталогов, средства обмена сообщениями и групповой работы, Web-серверы, почтовые серверы, корпоративные брандмауэры, серверы приложений самого разнообразного назначения, серверные части бизнесприложений. Требования к производительности и надежности указанных операционных систем очень высоки; нередко сюда входят и поддержка кластеров (набора ряда однотипных компьютеров, выполняющих одну и ту же задачу и делящих между собой нагрузку), и возможности дублирования и резервирования, и переконфигурации программного и аппаратного обеспечения без перезагрузки операционной системы [2].

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

Серверные версии операционной системы Windows сегодня применяются довольно широко — благодаря удобству администрирования и невысокой совокупной стоимости владения.

2.6 Примеры серверных операционных систем:

Windows NT, первая полностью 32-разрядная операционная система этого семейства, появилась вскоре после выпуска Windows

95. Самой популярной стала версия Windows NT Server 4.0, существовавшая в варианте не только для Ітеі-совместимых компьютеров, но и для RISC-систем. Данная операционная система обладала привычным пользовательским интерфейсом Windows 95, удобными средствами администрирования, встроенным Webсервером, средствами диагностики сети, управления процессами и задачами, интеграции с другими операционными системами (например, с Novell NetWare), а также утилитами и службами управления рабочими станциями.

Windows на данный момент является самой популярной операционной системой Microsoft в корпоративном секторе. К серверным операционным системам этого семейства относятся Windows 2000 Server - универсальная сетевая операционная система для серверов рабочих групп и отделов, Windows 2000 Advanced Server

- операционная система для эксплуатации бизнес-приложений и приложений для электронной коммерции и Windows 2000 Datacenter Server-О С для наиболее ответственных приложений, осуществляющих обработку данных.

Создание семейства Windows Server 2003 стало следующим шагом в развитии операционных систем Windows 2000. Основными особенностями данного семейства операционных систем являются наличие в их составе платформы Microsoft.NET Framework, а также поддержка Web-сервисов XML (вплоть до наличия в составе операционной системы UDDI-сервера).

Windows Server 2003 существует в четырех редакциях:

- Windows Server 2003 Web Edition - операционная система для развертывания и обслуживания Web-приложений и Web-сервисов, включая приложения ASP.NET;

- Windows Server 2003 Standard Edition - сетевая операционная система для выполнения серверной части бизнес-решений и рассчитанная на применение в небольших компаниях и подразделениях.

- Windows Server 2003 Enterprise Edition - ОС, которая прежде всего предназначена для средних и крупных компаний. Она поддерживает серверы на базе 64-разрядных процессоров (до восьми штук) и объем оперативной памяти до 64 Гбайт и выпускается в версиях для 32- и 64-разрядных платформ;

- Windows Server 2003 Datacenter Edition - операционная система, которая служит для создания критически важных технических решений с высокими требованиями к масштабируемости и доступности.

Операционная система UNIX относится к «долгожителям» рынка серверных операционных систем - она была создана в конце 60-х годов в Bell Laboratories фирмы AT&T. Отличительной особенностью этой ОС, обусловившей ее «живучесть» и популярность, было то, что ядро операционной системы, написанной на ассемблере, было невелико, тогда как вся оставшаяся часть операционной системы была написана на языке С. Такой подход делал легко переносимой на самые разнообразные аппаратные платформы и саму операционную систему, и созданные для нее приложения. Важным достоинством UNIX стала ее открытость, позволившая одновременно существовать как коммерческим, так и некоммерческим версиям UNIX.

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

Операционная система Sun Solaris сегодня входит в число самых известных коммерческих версий UNIX. Эта ОС обладает развитыми средствами поддержки сетевого взаимодействия и представляет собой одну из самых популярных плагформ для разработки корпоративных решений - для нее существует около 12 тыс. различных приложений, в том числе серверов приложений и СУБД почти от всех ведущих производителей.

Операционная система Linux — это некоммерческий продукт категории Open Source для платформы Intel, который в течение десяти лет создавали тысячи энтузиастов. Список серверных продуктов для Linux, пожалуй, не менее внушителен, чем для Solaris, HP-UX и АIX, и включает такие популярные продукты, как Web-cepeep Apache, серверные СУБД и серверы приложений практически от всех производителей.

Одним из серьезных преимуществ Linux является низкая стоимость ее приобретения (хотя сама операционная система является некоммерческим продуктом, сертифицированные дистрибутивы Linux

- обычно продукты коммерческие).

Операционная система Mac OS X, созданная компанией Apple совместно с рядом университетских ученых, основана на BSD UNIX.

В 1999 году версия Mac OS X Server была выпущена в виде продукта Open Source, что позволило разработчикам адаптировать Mac OS X для конкретных заказчиков, а также привлечь их к дальнейшему развитию этой операционной системы.

Mac OS X характеризуется наличием менеджера виртуальной памяти, возможностью полной изоляции приложений друг от друга, поддержкой многозадачности, сравнимой с аналогичной поддержкой в Windows.

В Mac OS X имеются эмулятор предыдущих версий Mac OS, средства редактирования графических изображений, встроенная поддержка OpenGL, почтовый клиент, средства управления паролями для доступа к Web-pecypcaM [4].

2.7 Особенности операционных систем реального времени Операционные системы реального времени (ОСРВ) предназначены для обеспечения интерфейса к ресурсам критических по времени систем реального времени. Основной задачей в таких системах является своевременность выполнения обработки данных.

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

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

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

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

Контрольные вопросы

1. Что представляет собой операционная система компьютера?

2. Какие группы функций ОС выполняет?

3. Какой принцип работы присущ ОС как виртуальной машине?

4. Как организована ОС как система управления ресурсами?

5. Какие задачи решает ОС как система управления ресурсами?

6. От чего зависит эффективность ОС?

7. На какие ОС делятся по числу одновременно выполняемых задач?

8. На какие ОС делятся по числу одновременно работающих пользователей?

9. Каково назначение серверной ОС?

10. Назовите примеры серверных ОС?

11. Особенности ОС реального времени?

12. Каково особое требование предъявляемое к ОСРВ?

13. На какие системы разделяются ОСРВ?

3 Архитектура операционных систем

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

К таким базовым концепциям относятся:

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

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

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

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

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

3 Наличие нескольких прикладных сред дает возможность в рамках одной ОС одновременно выполнять приложения, разработанные для нескольких ОС. Многие современные операционные системы поддерживают одновременно прикладные среды MS-DOS, Windows, UNIX (POSIX), OS/2 или хотя бы некоторого подмножества из этого популярного набора. Концепция множественных прикладных сред наиоолее просто реализуется в ОС на базе микроядра, над которым работают различные серверы, часть которых реализуют прикладную среду той или иной операционной системы.

4 Распределенная организация операционной системы позволяет упростить работу пользователей и программистов в сетевых средах. В распределенной ОС реализованы механизмы, которые дают возможность пользователю представлять и воспринимать сеть в виде традиционного однопроцессорного компьютера. Характерными признаками распределенной организации ОС являются: наличие единой справочной службы разделяемых ресурсов, единой службы времени, использование механизма вызова удаленных процедур (RPC) для прозрачного распределения программных процедур по машинам, многонитевой обработки, позволяющей распараллеливать вычисления в рамках одной задачи и выполнять эту задачу сразу на нескольких компьютерах сети, а также наличие других распределенных служб [2].

3.2 Структуры операционных систем Среди однопользовательских ОС наибольшее распространение получили MS-DOS и ранние версии OS/2, которые широко использовалась для компьютеров, построенных на базе микропроцессоров Intel 8088, а затем 80286, 80386 и 80486 и т.д.

Основное отличие операционных систем MS DOS и OS/2 состоит в поддержке многозадачного режима и выполнение всех функций, связанных с диспетчеризацией последней ОС. Ниже на примере указанных ОС рассмотрены особенности построения и использования однозадачных и многозадачных однопользовательских операционных систем.

Структура однопользовательской однозадачной операционной системы (на примере MS DOS) приведена на рисунке 1.

Модуль «Базовая система ввода-вывода» индивидуален для каждой вычислительной системы и поставляется ее изготовителем. В этом модуле содержатся аппаратно-зависимые драйверы таких устройств как дисплей, клавиатура, последовательный канал связи и т.д. Ядро ОС взаимодействует с драйверами устройств с помощью пакетов запросов, драйверы переводят эти запросы в различные команды для аппаратных контроллеров.

–  –  –

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

К ним относятся следующие функции:

- управление файлами и записями;

- управление памятью;

- символьно-ориентированное устройство ввода-вывода;

- доступ к часам реального времени;

- порождение других задач.

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

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

Структура однопользовательской многозадачной операционной системы (на примере OS/2) приведена на рисунке 2.

–  –  –

Рисунок 2 — Структура однопользовательской многозадачной операционной системы Основные функции системы, необходимые всем программам, находятся в ядре: управление памятью, диспетчеризация, управление устройствами. Поддержка работы аппаратуры содержится в драйверах устройств. Средства высокого уровня выделены в подсистемы. Доступ ко всем функциям ОС осуществляется через программируемый интерфейс прикладных программ (API) [3].

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

–  –  –

Рисунок 3 - Структура сетевой ОС В сетевой операционной системе отдельной машины можно выделить несколько частей:

- Средства управления локальными ресурсами компьютера:

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

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

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

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

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

Рисунок 4 - Взаимодействие компонентов операционной системы при взаимодействии компьютеров На рисунке 4 показано взаимодействие сетевых компонентов.

Компьютер 1 выполняет роль «чистого» клиента, а компьютер 2 роль «чистого» сервера, соответственно на первой машине отсутствует серверная часть, а на второй - клиентская. На рисунке отдельно показан компонент клиентской части —редиректор. Именно редиректор перехватывает все запросы, поступающие от приложений, и анализирует их. Если выдан запрос к ресурсу данного компьютера, то он переадресовывается соответствующей подсистеме локальной ОС, если же это запрос к удаленному ресурсу, то он переправляется в сеть. При этом клиентская часть преобразует запрос из локальной формы в сетевой формат и передает его транспортной подсистеме, которая отвечает за доставку сообщений указанному серверу.

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

На практике сложилось несколько подходов к построению сетевых операционных систем (рисунок 5).

–  –  –

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

Однако более эффективным представляется путь разработки операционных систем, изначально предназначенных для работы в сети. Сетевые функции у ОС такого типа глубоко встроены в основные модули системы, что обеспечивает их логическую стройность, простоту эксплуатации и модификации, а также высокую производительность. Примером такой ОС является система Windows NT фирмы Microsoft, которая за счет встроенности сетевых средств обеспечивает более высокие показатели производительности и защищенности информации по сравнению с сетевой ОС LAN Manager той же фирмы (совместная разработка с IBM), являющейся надстройкой над локальной операционной системой OS/2.

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

–  –  –

Рисунок 6 - Классы сетевых операционных систем Если компьютер предоставляет свои ресурсы другим пользователям сети, то он играет роль сервера. При этом компьютер, обращающийся к ресурсам другой машины, является клиентом. Как уже было сказано, компьютер, работают»*"* ; сети, может выполнять функции либо клиента, либо сервера, либо совмещать обе эти функции.

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

Очевидно, что на выделенных серверах желательно устанавливать ОС, специально оптимизированные для выполнения тех или иных серверных функций. Поэтому в сетях с выделенными серверами чаще всего используются сетевые операционные системы, в состав которых входит несколько вариантов ОС, отличающихся возможностями серверных частей. Например, сетевая ОС Novell NetWare имеет серверный вариант, оптимизированный для работы в качестве файл-сервера, а также варианты оболочек для рабочих станций с различными локальными ОС, причем эти оболочки выполняют исключительно функции клиента. Другим примером ОС, ориентированной на построение сети с выделенным сервером, является операционная система Windows NT. В отличие от NetWare, оба варианта данной сетевой ОС - Windows NT Server (для выделенного сервера) и Windows NT Workstation (для рабочей станции) - могут поддерживать функции и клиента и сервера. Но серверный вариант Windows NT имеет больше возможностей для предоставления ресурсов своего компьютера другим пользователям сети, так как может выполнять более широкий набор функций, поддерживает большее количество одновременных соединений с клиентами, реализует централизованное управление сетью, имеет более развитые средства защиты.

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

В одноранговых сетях все компьютеры равны в правах доступа к ресурсам друг друга. Каждый пользователь может по своему желанию объявить какой-либо ресурс своего компьютера разделяемым, после чего другие пользователи могут его эксплуатировать. В таких сетях на всех компьютерах устанавливается одна и та же ОС, которая предоставляет всем компьютерам в сети потенциально равные возможности. Одноранговые сети могут быть построены, например, на базе ОС LANtastic, Personal Ware, Windows for Workgroup, Windows NT Workstation.

%

Контрольные вопросы

1. Каковы базовые концепции ОС?

2. Каковы способы построение ядер ОС?

3. Что представляет ОС на базе объектно-ориентированного подхода?

4. Какова концепция множественных прикладных сред?

5. Каковы механизмы реализованные в распределенной ОС?

6. Какова структура однопользовательской ОС?

7. Каковы системные функции в однозадачных ОС?

8. Как организован доступ ко всем функциям однопользовательской многозадачной ОС?

9. Структура сетевой ОС?

10. Какие части выделяют в сетевой ОС отдельной машины?

11. Каковы подходы к построению сетевой ОС?

12. На какие два класса делятся сетевые ОС?

13. Что представляют одноранговые сетевые ОС и с выделенным сервером?

14. Каковы функции сервера и клиента?

4 Процессы и потоки в операционных системах

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

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

4.2 Состояние процессов В многозадачной (многопроцессной) системе процесс может находиться в одном из трех основных состояний:

Выполнение - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

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

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

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

В состоянии «выполнение» в однопроцессорной системе может находиться только один процесс, а в каждом из состояний «ожидание»

и «готовность» - несколько процессов, эти процессы образуют очереди соответственно ожидающих и готовых процессов.

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

Рисунок 7 - Граф состояний процесса в многозадачной среде

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

Кроме этого, операционной системе для реализации планирования процессов требуется дополнительная информация:

идентификатор процесса, состояние процесса, данные о степени привилегированности процесса и другая информация. В некоторых ОС (например, в ОС UNIX) информацию такого рода, используемую ОС для планирования процессов, называют дескриптором процесса.

Дескриптор процесса по сравнению с контекстом содержит более оперативную информацию, которая должна быть легко доступна подсистеме планирования процессов. Контекст процесса содержит менее актуальную информацию и используется операционной системой только после того, как принято решение о возобновлении прерванного процесса [5].

4.3 Алгоритмы планирования процессов Планирование процессов включает в себя решение следующих задач:

- определение момента времени для смены выполняемого процесса;

- выбор процесса на выполнение из очереди готовых процессов;

- переключение контекстов «старого» и «нового» процессов.

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

В соответствии с алгоритмами, основанными на квантовании, смена активного процесса происходит, если:

- процесс завершился и покинул систему;

- произошла ошибка;

- процесс перешел в состояние «ожидание»;

- исчерпан квант процессорного времени, отведенный данному процессу.

Процесс, который исчерпал свой квант, переводится в состояние «готовность» и ожидает, когда ему будет предоставлен новый квант процессорного времени, а на выполнение в соответствии с определенным правилом выбирается новый процесс из очереди готовых. Таким образом, ни один процесс не занимает процессор надолго, поэтому квантование широко используется в системах разделения времени. Очередь готовых процессов может быть организована: циклически, по правилу «первый пришел - первый обслужился» (FIFO) или по правилу «последний пришел - первый обслужился» (LIFO).

Другая группа алгоритмов использует понятие «приоритет»

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

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

–  –  –

Рисунок 8 - Граф состояний процесса в многозадачной среде Во многих операционных системах алгоритмы планирования построены с использованием, как квантования, так и приоритетов.

Например, в основе планирования лежит квантование, но величина кванта и/или порядок выбора процесса из очереди готовых определяется приоритетами процессов.

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

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

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

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

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

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

Почти во всех современных операционных системах, ориентированных на высокопроизводительное выполнение приложений (UNIX, Windows NT, OS/2, VAX/VMS), реализована вытесняющая многозадачность [5].

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

–  –  –

Рисунок 9 - Пример необходимости синхронизации Рассмотрим, например (рисунок 9), программу печати файлов (принт-сервер). Эта программа печатает по очереди все файлы, имена которых последовательно в порядке поступления записывают в специальный общедоступный файл «заказов» другие программы.

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

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

Критическая секция. Важным понятием синхронизации процессов является понятие «критическая секция» программы.

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

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

Другим способом является использование блокирующих переменных. С каждым разделяемым ресурсом связывается двоичная переменная, которая принимает значение 1, если ресурс свободен, и значение 0, если ресурс занят. На рисунке 10 показан фрагмент алгоритма процесса, использующего для реализации взаимного исключения доступа к разделяемому ресурсу D блокирующую переменную F(D). Перед входом в критическую секцию процесс проверяет, свободен ли ресурс D. Если он занят, то проверка циклически повторяется, если свободен, то значение переменной F(D) устанавливается в 0, и процесс входит в критическую секцию. После того, как процесс выполнит все действия с разделяемым ресурсом D, значение переменной F(D) снова устанавливается равным 1.

–  –  –

Рисунок 10 - Реализация критических секций с использованием блокирующих переменных Если все процессы написаны с использованием вышеописанных соглашений, то взаимное исключение гарантируется.

Реализация критических секций с использованием блокирующих переменных имеет существенный недостаток: в течение времени, когда один процесс находится в критической секции, другой процесс, которому требуется тот же ресурс, будет выполнять рутинные действия по опросу блокирующей переменной, бесполезно тратя процессорное время. Для устранения таких ситуаций может быть использован так называемый аппарат событий. С помощью этого средства могут решаться не только проблемы взаимного исключения, но и более общие задачи синхронизации процессов. В разных операционных системах аппарат событий реализуется по своему, но в любом случае используются системные функции аналогичного назначения, которые условно назовем WAIT(x) и POST(x), где х идентификатор некоторого события. На рисунке 11 показан фрагмент алгоритма процесса, использующего эти функции. Если ресурс занят, то процесс не выполняет циклический опрос, а вызывает системную функцию WAIT(D), здесь D обозначает событие, заключающееся в освобождении ресурса D. Функция WAIT(D) переводит активный процесс в состояние «ожидание» и делает отметку в его дескрипторе о том, что процесс ожидает события D. Процесс, который в это время использует ресурс D, после выхода из критической секции выполняет системную функцию POST(D), в результате чего операционная система просматривает очередь ожидающих процессов и переводит процесс, ожидающий события D, в состояние «готовность». В этом случае блокирующая переменная является частным случаем семафоров (в общем случае семафор может принимать не только значения 0 или 1).

–  –  –

Рисунок 11 - Реализация критической секции с использованием системных функций WAIT(D) и POST(D) Достоинство синхронизации на основе семафорных операций отсутствие активного ожидания представления ресурса.

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

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

Монитор - это набор процедур, переменных и структур данных.

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

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

Для этих целей современные ОС предлагают использовать сравнительно новый механизм многонитевой обработки (multithreading). При этом вводится новое понятие «нить» (thread), а понятие «процесс» в значительной степени меняет смысл.

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

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

Контрольные вопросы

1. Что такое процесс?

2. Что выполняет подсистема управления процессами?

3. Сколько и какие различают состояния процессов?

4. Что называют контекстом процесса?

5. Что называют дескриптором процесса?

6. Какова разница между контекстом и дескриптором процесса?

7. Каковы задачи планирования процессов?

8. Каковы наиболее часто встречающиеся алгоритмы планирования процессов?

9. Что такое невытесняющая и вытесняющая многозадачность и каково различие между ними?

10. Как решается проблема синхронизации процессов?

11. Что такое критическая секция?

12. Что представляет собой прием, называемый взаимным исключением?

13. Как работает способ блокирующих переменных?

14. Что такое монитор?

15. Что представляет собой термин «нить» и механизм многонитиевой обработки?

5 Управление памятью в операционных системах

Память является важнейшим ресурсом, требующим тщательного управления со стороны мультипрограммной операционной системы.

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

5.1 Типы адресов Для идентификации переменных и команд используются символьные имена (метки), виртуальные адреса и физические адреса (рисунок 12).

Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.

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

–  –  –

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

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

Второй способ является более гибким, он допускает перемещение программы во время ее выполнения, в то время как перемещающий загрузчик жестко привязывает программу к первоначально выделенному ей участку памяти. Вместе с тем использование перемещающего загрузчика уменьшает накладные расходы, так как преобразование каждого виртуального адреса происходит только один раз во время загрузки, а во втором случае — каждый раз при обращении по данному адресу [5].

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

–  –  –

Рисунок 13 - Классификация методов распределения памяти

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

Подсистема управления памятью в этом случае выполняет следующие задачи:

- сравнивая размер программы, поступившей на выполнение, и свободных разделов, выбирает подходящий раздел;

- осуществляет загрузку программы и настройку адресов.

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

–  –  –

Рисунок 14 - Распределение памяти фиксированными разделами

5.4 Распределение памяти разделами переменной величины В этом случае память машины не делится заранее на разделы.

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

Задачами операционной системы при реализации данного метода управления памятью является:

- ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти;

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

- загрузка задачи в выделенный ей раздел и корректировка таблиц свободных и занятых областей;

- после завершения задачи корректировка таблиц свободных и занятых областей.

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

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

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

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

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

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

Хотя процедура сжатия и приводит к более эффективному использованию памяти, она может потребовать значительного времени, что часто перевешивает преимущества данного метода [2].

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

Когда он заканчивал свое выполнение, он вызывал другой оверлей.

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

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

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

- размещает данные в запоминающих устройствах разного типа, например, часть программы в оперативной памяти, а часть на диске;

- перемещает по мере необходимости данные между запоминающими устройствами разного типа, например, подгружает нужную часть программы с диска в оперативную память;

- преобразует виртуальные адреса в физические.

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

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

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

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

Размер страницы обычно выбирается равным степени двойки:

512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.

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

Виртуальное адресное пространство

–  –  –

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

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

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

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

- дольше всего не использовавшаяся страница;

- первая попавшаяся страница;

- страница, к которой в последнее время было меньше всего обращений.

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

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

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

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

При каждом обращении к оперативной памяти аппаратными средствами выполняются следующие действия:

- на основании начального адреса таблицы страниц (содержимое регистра адреса таблицы страниц), номера виртуальной страницы (старшие разряды виртуального адреса) и длины записи в таблице страниц (системная константа) определяется адрес нужной записи в таблице;

- из этой записи извлекается номер физической страницы;

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

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

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

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

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

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

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

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

–  –  –

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

Кроме того, при обращении к памяти проверяется, разрешен ли доступ требуемого типа к данному сегменту.

Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g —номер сегмента, a s - смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.

Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.

%

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

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

5.9 Свопинг Разновидностью виртуальной памяти является свопинг.

На рисунке 17 показан график зависимости коэффициента загрузки процессора в зависимости от числа одновременно выполняемых процессов и доли времени, проводимого этими процессами в состоянии ожидания ввода-вывода.

–  –  –

Рисунок 17 —Зависимость загрузки процессора от числа задач и интенсивности ввода-вывода Из рисунка видно, что для загрузки процессора на 90% достаточно всего трех счетных задач. Однако для того, чтобы обеспечить такую же загрузку интерактивными задачами, выполняющими интенсивный ввод-вывод, потребуются десятки таких задач. Необходимым условием для выполнения задачи является загрузка ее в оперативную память, объем которой ограничен. В этих условиях был предложен метод организации вычислительного процесса, называемый свопингом. В соответствии с этим методом некоторые процессы (обычно находящиеся в состоянии ожидания) временно выгружаются на диск. Планировщик операционной системы не исключает их из своего рассмотрения, и при наступлении условий активизации некоторого процесса, находящегося в области свопинга на диске, этот процесс перемещается в оперативную память. Если свободного места в оперативной памяти не хватает, то выгружается другой процесс.

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

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

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

–  –  –

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

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

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

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

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

Временная локальность. Если произошло обращение по некоторому адресу, то следующее обращение по этому же адресу с большой вероятностью произойдет в ближайшее время.

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

Контрольные вопросы

1. Что является важнейшим ресурсом, требующим управления со стороны мультипрограммной ОС?

2. Какая память подлежит распределению?

3. Каковы функции ОС по управлению памятью?

4. Что называется виртуальным адресным пространством?

5. Какие действия выполняет специальная программа «перемещающий загрузчик»?

6. Каковы методы управления памятью?

7. Каковы задачи и недостатки метода распределения память фиксированными разделами?

8. каковы задачи ОС при распределении памяти разделами переменной величины?

9. Что такое фрагментация памяти и в чем ее недостатки?

10. Что выполняет процедура «сжатия» памяти?

11. Что такое оверлеи?

12. Чем характерна виртуальная память и какие задачи она решает?

13. Каковы наиболее распространенные реализации виртуальной памяти?

14. Как принцип работы страничного распределения памяти?

15. Каковы наиболее популярные критерии выбора страниц выгрузки из оперативной памяти?

16. Какие действия выполняются аппаратными средствами при обращении к операционной системе при страничном распределении памяти?

17. Что представляет собой сегментное распределение памяти, его преимущества и недостатки?

18. Каковы достоинства странично-сегментного распределения памяти?

\ 19. Что такое свопинг?

20. Какова иерархия запоминающих устройств?

21. Что такое кэш-память и каков ее принцип действия?

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

В широком смысле понятие «файловая система» включает:

- совокупность всех файлов на диске;

- наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске;

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

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

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

6.2 Типы файлов Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.

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

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

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

В разных файловых системах могут использоваться в качестве атрибутов разные характеристики, например:

- информация о разрешенном доступе;

- пароль для доступа к файлу;

- владелец файла;

- создатель файла;

- признак «только для чтения»;

- признак «скрытый файл»;

- признак «системный файл»;

- признак «архивный файл»;

I признак «двоичный/символьный»;

- признак «временный» (удалить после завершения процесса);

- признак блокировки;

- длина записи; І

- указатель на ключевое поле в записи;

- длина ключа;

- времена создания, последнего доступа и последнего изменения;

- текущий размер файла;

- максимальный размер файла.

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

S 3 1

–  –  –

(• ____________| 14

–  –  –

а - одноуровневая; б - иерархическая (дерево); в - иерархическая (сеть) Рисунок 20 - Логическая организация файловой системы Иерархия каталогов может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог, и сеть - если файл может входить сразу в несколько каталогов. В MS-DOS каталоги образуют древовидную структуру, а в UNIX'e - сетевую. Как и любой другой файл, каталог имеет символьное имя и однозначно идентифицируется составным именем, содержащим цепочку символьных имен всех каталогов, через которые проходит путь от корня до данного каталога.

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

На рисунке 21 показаны несколько схем логической организации файла.

Последовательность логических записей фиксированной длины

–  –  –

Рисунок 21 - Способы логической организации файлов Записи могут быть фиксированной длины или переменной длины. Записи могут быть расположены в файле последовательно (последовательная организация) или в более сложном порядке, с использованием так называемых индексных таблиц, позволяющих обеспечить быстрый доступ к отдельной логической записи (индексно-последовательная организация). Для идентификации записи может быть использовано специальное поле записи, называемое ключом. В файловых системах ОС UNIX и MS-DOS файл имеет простейшую логическую структуру - последовательность однобайтовых записей [4].

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

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

Такая организация имеет два существенных недостатка:

- во время создания файла заранее не известна его длина, а значит не известно, сколько памяти надо зарезервировать для этого файла;

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

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

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

–  –  –

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

Следующий способ физической организации состоит в простом перечислении номеров блоков, занимаемых этим файлом. ОС UNIX использует вариант данного способа, позволяющий обеспечить фиксированную длину адреса, независимо от размера файла. Для хранения адреса файла выделено 13 полей. Если размер файла меньше или равен 10 блокам, то номера этих блоков непосредственно перечислены в первых десяти полях адреса. Если размер файла больше 10 блоков, то следующее 11 -е поле содержит адрес блока, в котором могут быть расположены еще 128 номеров следующих блоков файла. Если файл больше, чем 10+128 блоков, то используется 12-е поле, в котором находится номер блока, содержащего 128 номеров блоков, которые содержат по 128 номеров блоков данного файла. И, если файл больше 10+128+128(128, то используется последнее 13-е поле для тройной косвенной адресации, что позволяет задать адрес файла, имеющего размер максимум 10+ 128 + 128(128 + 128(128(128).

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

- создание файла;

- уничтожение файла;

- открытие файла;

- закрытие файла;

- чтение файла;

- запись в файл;

- дополнение файла;

- поиск в файле;

- получение атрибутов файла;

- установление новых значений атрибутов;

- переименование;

- выполнение файла;

- чтение каталога;

- и другие операции с файлами и каталогами.

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

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

Различают два основных подхода к определению прав доступа:

- избирательный доступ, когда для каждого файла и каждого пользователя сам владелец может определить допустимые операции;

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

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

–  –  –

Задачей символьного уровня является определение по символьному имени файла его уникального имени. В файловых системах, в которых каждый файл может иметь только одно символьное имя (например, MS-DOS), этот уровень отсутствует, так как символьное имя, присвоенное файлу пользователем, является одновременно уникальным и может быть использовано операционной системой. В других файловых системах, в которых один и тот же файл может иметь несколько символьных имен, на данном уровне просматривается цепочка каталогов для определения уникального имени файла. В файловой системе UNIX, например, уникальным именем является номер индексного дескриптора файла (i-node).

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

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

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

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

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

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

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

Новая файловая система имеет многоуровневую структуру (рисунок 24), на верхнем уровне которой располагается так называемый переключатель файловых систем (в Windows 95, например, такой переключатель называется устанавливаемым диспетчером файловой системы — installable filesystem manager, IFS).

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

–  –  –

Рисунок 24 - Архитектура современной файловой системы Каждый компонент уровня файловых систем выполнен в виде драйвера соответствующей файловой системы и поддерживает определенную организацию файловой системы.

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

Контрольные вопросы

1. Что представляет собой файловая система?

2. Каковы имена и типы файлов и их характеристики?

3. Чем может быть представлена иерархия каталогов?

4. Что такое логическая запись?

5. Как могут быть организованы записи в файле?

6. Что применяют для идентификации записи?

7. Что представляет собой блок и какова разница между ним и записью?

8. Каковы недостатки непрерывного размещения блоков?

9. В чем суть способа размещения в виде связанного списка блоков дисковой памяти, его недостатки?

10. Каковы достоинства и недостатки связанного списка индексов?

11. Каков способ перечисления номеров блоков?

12. Как и какие определяются права доступа к файлу?

13. На какие группы подразделяются пользователи по правам доступа к файлу?

14. Каковы подходы к определению прав доступа?

15. Каковы уровни файловой модели системы и их задачи?

16. Чем представлена архитектура современной файловой системы?

7 Управление вводом ьыводом в операционных системах

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

7.1 Физическая организация устройств ввода-вывода Устройства ввода-вывода делятся на два типа: блокориентированные устройства и байт-ориентированные устройства.

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

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

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

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

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

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

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

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

Наличие выделенных устройств создает для операционной системы некоторые проблемы.

Для решения поставленных проблем целесообразно разделить программное обеспечение ввода-вывода на четыре слоя (рисунок 25):

- обработка прерываний;

- драйверы устройств;

- независимый от устройств слой операционной системы;

- пользовательский слой программного обеспечения.

–  –  –

Рисунок 25 — Многоуровневая организация подсистемы вводавывода

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

Драйверы устройств. Весь зависимый от устройства код помещается в драйвер устройства. Каждый драйвер управляет устройствами одного типа или, может быть, одного класса.

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

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

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

Типичными функциями для независимого от устройств слоя являются:

- обеспечение общего интерфейса к драйверам устройств;

- именование устройств;

- защита устройств;

- обеспечение независимого размера блока;

- буферизация;

- распределение памяти на блок-ориентированных устройствах;

- распределение и освобождение выделенных устройств;

- уведомление об ошибках.

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

В современных ОС обеспечением ввода-вывода занимается подсистема спулинга (spooling). Спулинг - это способ работы с выделенными устройствами в мультипрограммной системе.

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

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

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

–  –  –

1. Какова одна из главных функций ОС связанная с вводомвыводом?

2. На какие типы делятся устройства ввода-вывода?

3. В чем различия блок-ориентированных устройств от байториентированных? Назовите примеры этих устройств?

4. Каковы функции контроллера?

5. В чем состоит основная идея организации программного обеспечения ввода-вывода?

6. Каковы вопросы программного обеспечения ввода-вывода?

7. Что представляют собой разделяемые и выделенные устройства?

8. На какие слои разделяют программное обеспечение вводавывода? ‘* V

9. Каковы функции драйвера устройств?

10. Каковы функции независимого от устройств слоя?

11. Что такое спулинг и какие функции он выполняет?




Похожие работы:

«PEMPAL Казначейское сообщество Тематическая группа по консолидации Методические рекомендации по руководству по консолидации ПРОЕКТ Сентябрь 2014 КС PEMPAL – Методические рекомендации по консолидации Содержание Contents 1 ДЛЯ КОГО ПРЕДНАЗНАЧЕНЫ ДАННЫЕ МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ (ЦЕ...»

«Методические рекомендации по использованию ЭФУ в общеобразовательных организациях в Московской области 1. Общие положения 3 2. Цели и задачи использование электронных форм учебников (ЭФУ) в образовательном процессе 4 2.1. Модель предоставления доступа к ЭФУ в Московской области 5 2.2. Новые требования к электронн...»

«ОСНОВНЫЕ ПОЛОЖЕНИЯ О СДЕЛКАХ С НЕДВИЖИМОСТЬЮ С ОСНОВАМИ НАСЛЕДСТВЕННОГО ПРАВА Методические указания для самостоятельной работы студентов бакалавриата направления 120700 САНКТ-ПЕТЕРБУРГ Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образова...»

«12+ УДК 373.167.1:004 ББК 32.81я72 Л54 Модульный курс "Я сдам ЕГЭ!" создан авторским коллективом из числа членов Федеральной комиссии по разработке контрольных измерительных материалов и экспертов ЕГЭ. Он включает методическое пособие "Методика подготовки. Ключи и ответы" и уч...»








 
2017 www.book.lib-i.ru - «Бесплатная электронная библиотека - электронные ресурсы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.