ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 29.07.2021
Просмотров: 528
Скачиваний: 2
СОДЕРЖАНИЕ
Назначение и функции современных операционных систем [1, тема 1].
Архитектура операционных систем [1, тема 1].
Мультипрограммирование в современных операционных системах [1, тема 2].
Управление основной памятью в современных операционных системах. Виртуальная память [1, тема 2].
Классификация алгоритмов распределения памяти
Сегментное распределение памяти
Кэширование данных в современных операционных системах. Кэш-память [1, тема 2].
Организация внешней памяти на магнитных дисках [1, тема 2].
Современные файловые системы FAT и NTFS [1, тема 2].
Механизм контроля доступа к разделяемым ресурсам в локальной сети [1, тема 2].
Распределенная обработка данных в сетевых операционных системах [1, тема 3].
Механизм организации взаимодействия в распределенных системах
Назначение и принципы построения службы каталогов в компьютерных сетях [1, тема 3].
По дисциплине «Операционные системы, среды и оболочки»
Назначение и функции современных операционных систем [1, тема 1].
Операционная система – комплекс взаимосвязанных программ, который действует как интерфейс между приложениями и пользователями с одной стороны, и аппаратурой компьютера с другой стороны.
Отсюда две группы функций ОС, определяющих ее двухстороннее назначение:
-
Предоставление пользователю или программисту вместо реальной аппаратуры компьютера расширенной виртуальной машины, с которой удобнее работать и которую легче программировать. Программные модули ОС, формирующие человеко-машинный интерфейс, предназначены для повышения эффективности работы человека, которая достигается максимальным использованием всех его органов чувств при работе с компьютером.
-
Повышение эффективности использования компьютера путем рационального управления его ресурсами.
Первая группа функций операционной системы направлена на взаимодействие с пользователем ОС. При этом следует различать интерфейс прикладного программиста, создающий операционную среду, и пользовательский, человеко-машинный интерфейс.
Вторая группа функций ОС направлена на взаимодействие с аппаратурой компьютера. Рациональное управления ресурсами компьютера повышает эффективность его использования.
Архитектура операционных систем [1, тема 1].
Большинство современных операционных систем представляют собой хорошо структурированные программные модули системы, приспособленные к развитию, расширению и переносу на другие аппаратные платформы. Какой-либо единой архитектуры операционных систем не существует, но существуют универсальные подходы к структурированию ОС.
Есть ОС на ядре, а есть микроядерная.
При реализации этой архитектуры все программные модули ОС делятся на модули ядра и вспомогательные модули.
Ядро операционной системы образуют программные модули, решающие внутрисистемные задачи организации вычислительного процесса.
Кроме этого именно ядро содержит функции, образующие интерфейс прикладного программирования – API, через который приложения обращаются к операционной системе посредством системных вызовов.
Для обеспечения высокой скорости работы операционной системы все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными.
Формат программного модуля ядра обычно отличается от формата приложений.
Остальные модули операционной системы, выполняющие вспомогательные функции ОС, оформляются в виде приложений или в виде библиотек процедур. Вспомогательные модули для выполнения своих функций обращаются к функциям ядра, как и обычные приложения, посредством системных вызовов. Поэтому трудно провести четкую грань между операционной системой и приложениями (рис. 1.3).
Рис. 1.3. Нечеткость границы между операционной системой и приложениями
Вспомогательные модули операционной системы обычно загружаются в основную память только на время выполнения своих функций, то есть являются транзитными.
Вычислительную систему, работающую под управлением операционной системы на основе ядра, можно рассматривать как систему, состоящую из трех иерархически расположенных слоев:
Суть микроядерной архитектуры состоит в следующем – в привилегированном режиме остается работать толь очень небольшая часть операционной системы, называемая микроядром.
В состав микроядра входят машинно-зависимые модули, а также модули, выполняющие функции базовых механизмов обычного ядра:
-
по управлению процессами;
-
обработке прерываний;
-
управлению виртуальной памятью;
-
управлению устройствами ввода-вывода, связанными с загрузкой или чтением регистров устройств.
Все остальные функции ядра оформляются в виде приложений, работающих в пользовательском режиме.
В микроядерной архитектуре менеджеры ресурсов становятся серверами операционной системы, то есть модулями, основное назначение которых является обслуживание запросов локальных приложений и других модулей ОС.
Очевидно, что для реализации микроядерной архитектуры необходимым условием является наличие в ОС удобного и эффективного способа вызова процедур одного процесса из другого. Поддержка такого механизма и является одной из главных задач микроядра (рис. 1.5).
Рис.1.5. Иллюстрация системного вызова в микроядерной архитектуре
Преимущества микроядерной архитектуры:
-
Высокая степень переносимости, обусловленная тем, что весь машинно-зависимый код изолирован в микроядре, поэтому для переноса системы на новый процессор требуется меньше изменений и они все сгруппированы вместе.
-
Высокая расширяемость – добавление новой подсистемы требует разработки только нового приложения, что никак не затрагивает целостность микроядра.
-
Легкая конфигурируемость ОС – достаточно изменить файл с настройками начальной конфигурации системы или же остановить ненужные больше серверы (менеджеры ресурсов) в ходе работы системы обычными для остановки приложений средствами.
-
Повышенная надежность ОС – каждый сервер выполняется в виде отдельного процесса в своей собственной области памяти и таким образом защищен от других серверов ОС, что не наблюдается в традиционных ОС, где все модули ядра могут влиять друг на друга. Кроме этого, уменьшенный объем кода ядра снижает вероятность появления ошибок программирования.
-
Возможна поддержка распределенных вычислений, так как используются механизмы, аналогичные сетевым: взаимодействие клиентов и серверов путем обмена сообщениями. Серверы микроядра могут работать как на одном, так и на разных компьютерах.
Недостаток микроядерной архитектуры:
-
Более низкая производительность, чем при классической архитектуре – системный вызов сопровождается не двумя переключениями режима (пользовательского и привилегированного), а четырьмя (рис. 1.5 и 1.6).
Мультипрограммирование в современных операционных системах [1, тема 2].
Мультипрограммирование, или многозадачность – это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ, совместно использующих все ресурсы компьютера. Мультипрограммирование призвано повысить эффективность использования вычислительной системы.
В зависимости от выбранного критерия эффективности операционные системы делятся на системы пакетной обработки, системы разделения времени и системы реального времени.
В системах пакетной обработки критерий эффективности – максимальная пропускная способность компьютера, то есть решение максимального числа задач в единицу времени.
Достигается это за счет минимизация простоев всех устройств компьютера и прежде всего центрального процессора.
Для одновременного выполнения формируется пакет, в который выбираются задачи, предъявляющие разные требования к ресурсам, так, чтобы обеспечивалась сбалансированная загрузка всех устройств вычислительной системы. Выбор нового задания из пакета для его выполнения зависит от текущей ситуации в вычислительной системе, т. е. выбирается самое выгодное для системы задание, которому необходимы ресурсы, наиболее свободные в данный момент.
Переключение процессора с выполнения одной задачи на выполнение другой задачи происходит по инициативе самой активной задачи, например, когда она отказывается от процессора из-за необходимости выполнить операцию ввода-вывода. Поэтому существует высокая вероятность того, что одна задача может надолго занять процессор и выполнение интерактивных задач станет невозможным.
Операционные системы с пакетной обработкой используются в компьютерах типа мэйнфреймов, процессорное время которых относительно дорого. Работа таких ОС повышает эффективность функционирования аппаратуры, но снижает эффективность работы пользователей.
В системах разделения времени критерий эффективности – повышение удобства работы пользователей, которые могут интерактивно работать одновременно с несколькими приложениями на одной машине.
Для этого каждому приложению попеременно выделяется одинаковый квант времени. Таким образом, пользователи, запустившие программы на выполнение, получают возможность поддерживать с ними диалог. Если квант времени выбран небольшим, то у всех пользователей складывается впечатление, что каждый из них единолично использует машину.
Такие системы обладают меньшей пропускной способностью, чем системы с пакетной обработкой и применяются для многотерминальных или многооконных компьютеров, то есть в большинстве универсальных ОС.
В системах реального времени критерий эффективности – реактивность системы, то есть ее способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата.
В таких системах мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, а выбор программы на выполнение осуществляется по прерываниям или в соответствие с расписанием плановых работ.
Операционные системы реального времени применяются в специализированных компьютерах, например, управляющих каким-то технологическим процессом.
Управление основной памятью в современных операционных системах. Виртуальная память [1, тема 2].
Особая роль памяти объясняется тем, что процессор может выполнять инструкции программы только в том случае, если они находятся в оперативной памяти компьютера.
Для идентификации переменных и команд на различных этапах жизненного цикла программы используются символьные имена, виртуальные адреса и физические адреса ячеек памяти.
Символьные имена присваиваются пользователем при написании программы на алгоритмическом языке.
Виртуальные адреса, называемые иногда математическими, или логическими адресами, вырабатывает транслятор, переводящий программу на машинный язык. Поскольку во время трансляции не известно, в какое место памяти будет загружена программа, то транслятор присваивает переменным и командам виртуальные (условные) адреса, обычно считая по умолчанию, что начальным адресом программы будет нулевой адрес.
Физические адреса соответствуют номерам ячеек оперативной памяти, где в действительности расположены или будут расположены переменные и команды программы.
Существует два принципиально разных подхода к преобразованию виртуальных адресов в физические: статический и динамический.
При статическом подходе замена виртуальных адресов на физические выполняется один раз для каждого процесса во время начальной загрузки программы при помощи специального модуля – перемещающего загрузчика. При этом внутри программы меняются все адресно-зависимые указатели.
При динамическом подходе программа загружается в память в неизменном виде в виртуальных адресах, а при выполнении программы при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический на основании смещения адресов для данного процесса, хранящегося в специальном регистре операционной системы.
Совокупность виртуальных адресов процесса называется виртуальным адресным пространством, который одинаков у всех процессов системы.
Содержимое назначенного процессу виртуального адресного пространства, то есть коды команд, исходные и промежуточные данные, а также результаты вычислений, представляют собой образ процесса.
Обычно виртуальное адресное пространство процесса делится на две непрерывные части: системную, необходимую операционной системе, и пользовательскую. Системная часть виртуального адресного пространства является идентичной для всех процессов. Поэтому при смене активного процесса заменяется только пользовательская часть. Причем системная часть виртуальной памяти в ОС любого типа включает область, подвергаемую вытеснению на диск, и область, на которое вытеснение не распространяется.
Классификация алгоритмов распределения памяти
Рис. 2.2. Классификация алгоритмов распределения памяти
Распределение памяти фиксированными разделами.
При применении этого алгоритма память разбивается на несколько фиксированных (не одинаковых) областей, называемых разделами. Очередной процесс, поступивший на выполнение, помещается либо в общую очередь, либо в очередь к некоторому разделу, подходящему по размерам.
Распределение памяти динамическими разделами.
В этом алгоритме память заранее не делиться на разделы. Каждому вновь поступающему приложению на этапе создания процесса выделяется вся необходимая ему память непрерывным разделом. После завершения процесса выделенный ему раздел памяти освобождается, и на это место может быть загружен новый процесс.
Подмена оперативной памяти дисковой памятью позволяет повысить уровень мультипрограммирования – объем оперативной памяти теперь не столь жестко ограничивает количество одновременно выполняемых процессов. Суммарный объем памяти, занимаемой образами этих процессов, может существенно превосходить размер физической оперативной памяти компьютера.
Виртуальным называется ресурс, который пользователю или пользовательской программе представляется обладающим свойствами, которыми он в действительности не обладает.
Виртуализация памяти может быть осуществлена на основе двух различных подходов:
-
свопинг – образы процессов выгружаются на диск и возвращаются в оперативную память целиком, т. е. образы процессов в каждый момент времени существует в одном экземпляре – в оперативной памяти или на диске;
-
виртуальная память – между оперативной памятью и диском перемещаются части (сегменты, страницы и т. п.) образов процессов, т. е. на диске постоянно хранятся полные образы всех процессов, а в оперативной памяти – их части.
Сегментное распределение памяти
При этом методе виртуальное адресное пространства процесса делится на части – сегменты, размер которых определяется с учетом смыслового значения содержащейся в них информации. Отдельный сегмент может представлять собой подпрограмму, массив данных и т. п. «Осмысленность» сегментов упрощает их защиту.
Деление виртуального адресного пространства на сегменты осуществляется компилятором на основе указаний программиста или по умолчанию, в соответствие с принятыми в системе соглашениями.