Uploaded by danya.mikhailov_2003

Операционные системы и стреды лекции

advertisement
Бордюгова Т.Н.
Операционные системы и среды
1.Назначение и функции ОС. Характеристики современных ОС.
Операционная система компьютера представляет собой комплекс взаимосвязанных
программ, который действует как интерфейс между приложениями и пользователями с
одной стороны, и аппаратурой с другой стороны.
Основные функции (простейшие ОС):

Загрузка приложений в оперативную память и их выполнение;

Стандартизованный доступ к периферийным устройствам (устройства вводавывода);

Управление оперативной памятью (распределение между процессами, виртуальная
память);

Управление доступом к данным на энергонезависимых носителях (таких как
Жёсткий диск, Компакт-диск и т. д.), как правило с помощью файловой системы;

Пользовательский интерфейс;

Сетевые операции, поддержка стека протоколов
Дополнительные функции:

Параллельное или псевдопараллельное выполнение задач (многозадачность);

Взаимодействие между процессами;

Защита самой системы, а также пользовательских данных и программ от
злонамеренных действий пользователей или приложений;

Разграничение прав доступа и многопользовательский режим работы
(аутентификация, авторизация).
Существуют две группы определений ОС: «совокупность программ, управляющих
оборудованием» и «совокупность программ, управляющих другими программами». Обе
они имеют свой точный технический смысл, который, однако, становится ясен только при
более детальном рассмотрении вопроса о том, зачем вообще нужны операционные
системы.
Есть приложения вычислительной техники, для которых ОС излишни. Напр.,
встроенные микрокомпьютеры содержатся сегодня во многих бытовых приборах,
автомобилях (иногда по десятку в каждом), сотовых телефонах и т. п. Зачастую такой
компьютер постоянно исполняет лишь одну программу, запускающуюся по включении. И
простые игровые приставки — также представляющие собой специализированные
микрокомпьютеры — могут обходиться без ОС, запуская при включении программу,
Обзорные лекции
1
Бордюгова Т.Н.
записанную на вставленном в устройство «картридже» или компакт-диске. Операционные
системы, в свою очередь, нужны, если:
-вычислительная система используется для различных задач, причём программы,
исполняющие эти задачи, нуждаются в сохранении данных и обмене ими. Из этого следует
необходимость универсального механизма сохранения данных; в подавляющем
большинстве случаев ОС отвечает на неё реализацией файловой системы. Современные ОС,
кроме того, предоставляют возможность непосредственно «связать» вывод одной
программы с вводом другой, минуя относительно медленные дисковые операции;
- различные программы нуждаются в выполнении одних и тех же рутинных
действий. Напр., простой ввод символа с клавиатуры и отображение его на экране может
потребовать исполнения сотен машинных команд, а дисковая операция — тысяч. Чтобы не
программировать их каждый раз заново, ОС предоставляют системные библиотеки часто
используемых подпрограмм (функций);
- между программами и пользователями системы необходимо распределять
полномочия, чтобы пользователи могли защищать свои данные от чужого взора, а
возможная ошибка в программе не вызывала тотальных неприятностей;
- необходима возможность имитации «одновременного» исполнения нескольких
программ на одном компьютере (даже содержащем лишь один процессор), осуществляемой
с помощью приёма, известного как «разделение времени». При этом специальный
компонент, называемый планировщиком, «нарезает» процессорное время на короткие
отрезки и предоставляет их поочередно различным исполняющимся программам
(процессам);
- наконец, оператор должен иметь возможность, так или иначе, управлять
процессами выполнения отдельных программ. Для этого служат операционные среды, одна
из которых — оболочка и набор стандартных утилит — является частью ОС (прочие, такие,
как графическая операционная среда, образуют независимые от ОС прикладные
платформы).
Таким образом, современные универсальные ОС можно охарактеризовать прежде
всего как
1.
использующие файловые системы (с универсальным механизмом доступа к
данным),
2.
многопользовательские (с разделением полномочий),
3.
многозадачные (с разделением времени).
Многозадачность и распределение полномочий требуют определённой иерархии
привилегий компонентов самой ОС. В составе ОС различают три группы компонентов:
Обзорные лекции
2
Бордюгова Т.Н.
1.ядро, содержащее планировщик; драйверы устройств, непосредственно
управляющие оборудованием; сетевую подсистему, файловую систему;
2.системные библиотеки
3. оболочку с утилитами.
Ут́илита (англ. utility или tool) — программный продукт, предназначенный не для
решения какой-либо прикладной задачи, а для решения вспомогательных задач.
Оболочка операционной системы (от англ. shell — оболочка) — интерпретатор команд
операционной
системы
(ОС),
обеспечивающий
интерфейс
для
взаимодействия
пользователя с функциями системы.
Ядро́ — центральная часть операционной системы, обеспечивающая приложениям
координированный доступ к ресурсам компьютера, таким как процессорное время,
оперативная память, внешнее оборудование.
Обзорные лекции
3
Бордюгова Т.Н.
2. Принципы построения ОС. Ядро. Микроядерная архитектура.
Основные принципы построения ОС
1.
2.
3.
принцип модульности. Модуль – функционально законченный элемент, выполняемый в соответствии с принятым межмодуль
интерфейсом. Модуль выделяется по функциональному признаку. Модульная организация позволяет легко (из)заменять непр
работающие модули в ОС. Чаще всего используются реентерабельные и привилегированные модули.
принцип функциональной избирательности. Для организации эффективной работы ОС, необходимо выделить некоторые мо
хранить их в ОЗУ. Эти модули составляют ядро ОС. Ядро:
1. Модули по управлению системы прерываний;
2. Средство управления выполнения программ (загрузка, приостановка, остановка);
3. Модули по управлению процессом (распределение процессорного времени), т.е. диспетчеры программ;
4. Модули по управлению выделения памяти. В зависимости от ОС в ядро могут ещё входить другие модули;
5. Транзитные модули (загружаются в ОЗУ по мере необходимости, при нехватке ОЗУ могут быть выгружены из памяти
принцип генерируемости ОС. Подразумевает собой возможность генерации ОС в зависимости от аппаратного обеспечения. П
генерации обычно производится один раз, перед достаточно долгим режимом эксплуатации. Для генерации необходимо налич
нескольких компонентов:
1. Исходный код ОС;
2. Компилятор с языка программирования на котором система написана;
3. Специальная программа и входной язык для неё, который позволяет управлять процессом генерации.
ОС с открытым системным кодом – Linux (UNIX), есть возможность тонкой настройки ядра для конкретного процессора.
принцип функциональной избыточности. В состав ОС должно входит несколько типов ПО для выполнения одинаковых функц
(поддержка разных файловых систем).
5. принцип виртуализации. Позволяет представить ресурсы ОС в виде определённого набора планировщиков и мониторов и ис
единую схему распределения ресурсов. Наибольшее проявление – концепция виртуальной машины (воспроизводит архитекту
машины, но может обладать произвольными характеристиками).
6. принцип независимости программ от внешних устройств. Связь программ с конкретным внешним устройством производитс
трансляции, а на этапе выполнения программы. Получается выгода: не нужна лишняя «перекомпиляция».
7. принцип совместимости. Способность выполнять программы для другой ОС или даже для другой аппаратной платформы.
2 уровня совместимости:
a. по выполняемому коду (бинарная). Условия совместимости:
1. На уровне команд процессора (одна и та же платформа);
2. Совместимость на уровне системных вызовов;
3. Совместимость на уровне библиотечных вызовов, если являются динамично связываемыми.
b. 2. по исходному коду. Требуется выполнение следующих условий:
1. Наличие компилятора платформы, на котором написана программа;
2. Совместимость на уровне системных вызовов;
3. Совместимость на уровне библиотечных вызовов.
8. принцип открытой наращиваемой ОС (открыт исходный код). Целостность ОС сохраняется (UNIX).
9. принцип мобильности (переносимости). ОС должна легко переноситься на другую аппаратную платформу. Правила создания
ОС:
0. ОС должна быть написана на языке высокого уровня, для которой существует компилятор на аппаратной платформе
современные ОС пишут на Си.
1. Необходимо избегать кода, который непосредственно работает с аппаратным обеспечением.
10. принцип обеспечения безопасности и защиты:
0. Защита системы от пользователя;
1. Защита от несанкционированного доступа.
4.
В 1983 г. придуманы критерии оценки надёжности ОС. Существуют 4 класса безопасности:
Класс D. Относятся системы, не удовлетворяющие системам предыдущих классов (небезопасный);
Класс C. Обеспечение защиты данных от ошибок пользователя. ОС должна иметь следующие средства:
1.
2.
3.
4.
Средства секретного входа;
Обязательно наличие избирательного контроля доступа;
Средства учёта и наблюдения (аудит);
Необходима инициализация памяти при её освобождении. Современные ОС относятся к этому классу.
Класс B. Основаны на помеченных данных и есть наличие распределения пользователей по категориям, любой пользователь
доступа к данным.
Класс A. Самый высокий уровень безопасности. Необходимо, чтобы имелось формальное (математическое) доказательство
ОС. Примерно 90% процессорного времени тратится на систему безопасности. В наше время используются классы B и C.
Наиболее общим подходом к структуризации является разделение всех ее модулей на две
группы: ядро и вспомогательные модули.
Ядро включает модули, выполняющие основные функции ОС:
Обзорные лекции
4
Бордюгова Т.Н.




управление процессами
управление памятью
управление вводом-выводом и файловая система
прочие
Модули, выполняющие вспомогательные функции:

Утилиты (Сжатие, архивирование, проверка, дефрагментация и пр.)

Системные обрабатывающие программы (редакторы, отладчики, компиляторы и
пр.)

Программы дополнительных услуг (игры, калькулятор и пр.)

Библиотеки процедур (математических функций и пр.)

Вспомогательные модули ОС загружаются в оперативную память только на
время выполнения (транзитные модули)
Ядро́ — центральная часть операционной системы, обеспечивающая приложениям
координированный доступ к ресурсам компьютера, таким как процессорное время,
оперативная память, внешнее оборудование. Обычно предоставляет сервисы файловой
системы.
Функции ядра, которые могут вызываться приложениями, образуют интерфейс
прикладного программирования API(Application Program Interface) Ядро работает в
привилегированном режиме, и большая часть его модулей постоянно находится в памяти
(резидентные). Разделение ОС на ядро и вспомогательные модули облегчает ее
расширяемость
Типы архитектур ядер операционных систем
1.Монолитное ядро предоставляет богатый набор абстракций оборудования.
Таким образом, монолитное ядро (monolithic kernel) — это такая схема операционной
системы, при которой все ее компоненты являются составными частями одной
программы, используют общие структуры данных и взаимодействуют друг с другом
путем непосредственного вызова процедур.
Все части монолитного ядра работают в одном адресном пространстве.
Достоинства: Скорость работы, упрощённая разработка модулей.
Недостатки: Поскольку всё ядро работает в одном адресном пространстве, сбой в одном
из компонентов может нарушить работоспособность всей системы.
Монолитное ядро представляет собой набор процедур, каждая из которых может
вызвать каждую. Все процедуры работают в привилегированном режиме.
Монолитное ядро — старейший способ организации операционных систем. Для
монолитной операционной системы ядро совпадает со всей системой. Во многих
операционных системах с монолитным ядром сборка ядра, то есть его компиляция,
осуществляется отдельно для каждого компьютера, на который устанавливается
операционная система. При этом можно выбрать список оборудования и программных
протоколов, поддержка которых будет включена в ядро. Так как ядро является единой
программой, перекомпиляция — это единственный способ добавить в него новые
компоненты или исключить неиспользуемые. Следует отметить, что присутствие в ядре
лишних компонентов крайне нежелательно, так как ядро всегда полностью располагается
Обзорные лекции
5
Бордюгова Т.Н.
в оперативной памяти. Кроме того, исключение ненужных компонентов повышает
надежность операционной системы в целом.
Примером систем с монолитным ядром является большинство Unix-систем.
2. Модульное ядро — современная, усовершенствованная модификация архитектуры
монолитных ядер операционных систем компьютеров.
Модульные ядра предоставляют тот или иной механизм подгрузки модулей ядра,
поддерживающих то или иное аппаратное обеспечение (например, драйверов). При этом
подгрузка модулей может быть как динамической (выполняемой «на лету», без
перезагрузки ОС, в работающей системе), так и статической (выполняемой при
перезагрузке ОС после переконфигурирования системы на загрузку тех или иных
модулей).
Все модули ядра работают в адресном пространстве ядра и могут пользоваться всеми
функциями, предоставляемыми ядром. Поэтому модульные ядра продолжают оставаться
монолитными.
Модульные ядра предоставляют особый программный интерфейс (API) для связывания
модулей с ядром, для обеспечения динамической подгрузки и выгрузки модулей. Кроме
того, модули ядра обязаны экспортировать определённые функции, нужные ядру для
правильного подключения и распознавания модуля, для его корректной инициализации
при загрузке и корректного завершения при выгрузке, для регистрации модуля в таблице
модулей ядра и для обращения из ядра к сервисам, предоставляемым модулем.
Ядро «Linux» в настоящее время модульную архитектуру.
3. Микроядерная архитектура(microkernel architecture)
Микроядро предоставляет только элементарные функции управления процессами и
минимальный набор абстракций для работы с оборудованием. Бо́льшая часть работы
осуществляется с помощью специальных пользовательских процессов, называемых
сервисами.
Достоинства: Устойчивость к сбоям оборудования, ошибкам в компонентах системы.
Недостатки: Передача данных между процессами требует накладных расходов.
В этом случае взаимодействие между ними обеспечивает специальный модуль ядра,
называемый микроядром. Микроядро работает в привилегированном режиме и
обеспечивает взаимодействие между программами, планирование использования
процессора, первичную обработку прерываний, операции ввода-вывода и базовое
управление памятью.
Остальные компоненты системы взаимодействуют друг с другом путем передачи
сообщений через микроядро.
Основное достоинство микроядерной архитектуры — высокая степень модульности ядра
операционной системы. Это существенно упрощает добавление в него новых
компонентов. В микроядерной операционной системе можно, не прерывая ее работы,
загружать и выгружать новые драйверы, файловые системы и т. д. Существенно
упрощается процесс отладки компонентов ядра, так как новая версия драйвера может
Обзорные лекции
6
Бордюгова Т.Н.
загружаться
без
перезапуска
всей
операционной
системы.
Компоненты
ядра
операционной системы ничем принципиально не отличаются от пользовательских
программ, поэтому для их отладки можно применять обычные средства. Микроядерная
архитектура повышает надежность системы, поскольку ошибка на уровне
непривилегированной программы менее опасна, чем отказ на уровне режима ядра.
И чтобы добавить в ОС с микроядром драйвер того или иного устройства, не надо
перекомпилировать всё ядро, а надо лишь отдельно откомпилировать этот драйвер и
запустить его в пользовательском пространстве.
В то же время микроядерная архитектура операционной системы вносит дополнительные
накладные расходы, связанные с передачей сообщений, что отрицательно влияет на
производительность. Для того чтобы микроядерная операционная система по скорости не
уступала операционным системам на базе монолитного ядра, требуется очень аккуратно
проектировать разбиение системы на компоненты, стараясь минимизировать
взаимодействие между ними.
Клаcсическим пpимером микpоядерной cистемы являeтся Symbian OS
4.Экзоядро — ядро операционной системы компьютеров, предоставляющее лишь
функции для взаимодействия между процессами и безопасного выделения и
освобождения ресурсов.
5.Наноядро — архитектура ядра операционной системы компьютеров, в рамках которой
крайне упрощённое и минималистичное ядро выполняет лишь одну задачу — обработку
аппаратных прерываний, генерируемых устройствами компьютера. После обработки
прерываний от аппаратуры наноядро, в свою очередь, посылает информацию о
результатах обработки (например, полученные с клавиатуры символы) вышележащему
программному обеспечению при помощи того же механизма прерываний. Примером
является KeyKOS - самая первая ОС на наноядре.
6.Гибридные ядра это модифицированные микроядра, позволяющие для ускорения
работы запускать «несущественные» части в пространстве ядра.
Таким образом, Windows NT можно с полным правом назвать гибридной операционной
системой.
Смешанное ядро, в принципе, должно объединять преимущества монолитного ядра и
микроядра: казалось бы, микроядро и монолитное ядро — крайности, а смешанное —
золотая середина. В них возможно добавлять драйвера устройств двумя способами: и
внутрь ядра, и в пользовательское пространство. Но на практике концепция смешанного
ядра часто подчёркивает не только достоинства, но и недостатки обоих типов ядер.
3.Многозадачность и многопроцессорность ОС
Мультипрограммирование
Обзорные лекции
7
Бордюгова Т.Н.
Мультипрограммирование, или многозадачность (multitasking), - это способ организации
вычислительного процесса, при котором на одном процессоре попеременно выполняются
сразу несколько задач (программ).
Общие критерии эффективности мультипрограммирования:

пропускная способность

удобство работы пользователей

реактивность системы (заданные интервалы времени)
В зависимости от критерия различают:

системы пакетной обработки,

разделения времени

системы реального времени
1.Мультипрограммирование в системах пакетной обработки
Главная цель: минимизация простоев всех устройств компьютера. Это, как правило,
задачи вычислительного характера. Оператор формирует пакет заданий и вводит его тем
или иным способом во внешнюю память. ОС выбирает из пакета мультипрограммную
смесь из программ, таким образом, чтобы максимально загрузить систему.
В этом режиме невозможно гарантировать выполнение задачи в течении определенного
времени. Мультипрограммирование организованно за счет параллельной работы канала
или контроллера и процессора.
Переключение процессора с одной задачи на другую - инициатива самой задачи.
2.Мультипрограммирование в системах разделения времени
Основной критерий систем разделения времени - повышение удобств и эффективности
работы пользователей. Такие ОС позволяют организовать интерактивную работу
пользователей с несколькими приложениями.
Мультипрограммирование организуется путем выделения каждой задаче некоторого,
достаточно
небольшого
отрезка
времени
-
кванта.
Задача
принудительно
приостанавливаются по завершению кванта и в соответствии с заложенным алгоритмом,
выбирается на выполнение новая задача.
Системы разделения времени имеют меньшую пропускную способность по сравнению с
системами пакетной обработки при прочих равных условиях. Это обусловлено потерей
времени на переключение процессора с задачи на задачу.
3.Мультипрограммирование в системах реального времени
ОС реального времени используются при управлении техническими объектами или
технологическими процессами
Обзорные лекции
8
Бордюгова Т.Н.
Особенность: наличие предельного времени в течении которого должна быть выполнена
та или иная задача (реактивность системы)
Мультипрограммная смесь (т.е. набор задач, одновременно выполняемых) представляет
собой: фиксированный набор заранее разработанных программ, а выбор на выполнение по прерываниям (или по расписанию).
Для систем реального времени важна скорость обработки прерываний. Задача
максимальной загрузки устройств - не актуальна.
Мультипроцессорная обработка
Мультипроцессорная обработка - это способ организации вычислительного процесса в
системах с несколькими процессорами. мультипроцессорная обработка предполагает
действительно одновременное выполнение нескольких процессов. Это приводит к
усложнению всех алгоритмов ОС.
Симметричная
архитектура
предполагает
однородность
всех
процессоров
и
единообразное их включение в общую схему. Традиционно все процессоры при этом
разделяют одну память и как следствие находятся в одном корпусе. Для симметричной
архитектуры вычислительный процесс может строится симметричным образом (все
процессоры равноправны) или асимметричным (процессоры различаются функционально)
При асимметричной архитектуре процессоры могут отличаться своими техническими
характеристиками и функциональной ролью. Требование единого корпуса отсутствует.
Система может состоять из нескольких корпусов (в каждом может быть один или
несколько процессоров). Такие устройства называются кластерами.
Для асимметричной архитектуры возможен только асимметричный способ организации.
4.Понятие процесса и потока. Планирование и диспетчеризация потоков.
Алгоритмы планирования.
Обзорные лекции
9
Бордюгова Т.Н.
Процессы и потоки
Под процессом понимается программа в стадии выполнения. Процесс можно
рассматривать также как единицу работы для процессора. Для современных типов
процессоров существует и более мелкая единица работы поток или нить.
Процесс рассматривается ОС, как заявка на все виды ресурсов (память, файлы и пр.),
кроме одного - процессорного времени.
Поток - это заявка на процессорное время.
В дальнейшем в качестве единицы работы ОС будут использоваться понятия процесс и
поток. В тех же случаях, когда это не играет существенной роли, они будут называться
задача.
Планирование процессов и потоков
Планирование означает определение момента: когда прервать
выполнение активного потока и какой поток активизировать.
Планирование
выполняется
на
основе
описателей
потоков.
Планирование процессов и потоков включает:






Создание-уничтожение процессов
Взаимодействие между процессами
распределение процессорного времени
Обеспечение процессов необходимыми ресурсами (единолично, совместно)
Синхронизация (контроль за возникновением «гонок», блокировок)
После завершения процесса - «зачистка», т.е. удаление следов пребывания в
системе
Диспетчеризация: реализация результатов планирования. Включает в себя:




переключение потоков
сохранение контекста текущего потока
загрузка контекста нового потока
запуск нового потока
алгоритмы планирования
Невытесняющие (non-preemptive) - поток выполняется, пока по собственной инициативе
не отдаст управление ОС для активизации другого потока
Вытесняющие (preemptive) - решение о переключении принимается ОС
Вытесняющие алгоритмы планирования делятся на алгоритмы, основанные на:



квантовании
приоритетах
смешанные
1.Вытесняющие алгоритмы планирования, основанные на квантовании
Каждому потоку выделяется отрезок времени квант
Обзорные лекции
10
Бордюгова Т.Н.
Смена активного потока происходит, в случае:




поток завершился
произошла ошибка
поток перешел в состояние ожидания
исчерпан квант
Грубо величина кванта должна составлять менее 20млс.
Кванты, выделяемые потоку, могут быть фиксированной величины, а могут меняться со
временем. Современные ОС используют кванты переменной величины.
2.Вытесняющие алгоритмы планирования, основанные на приоритетах
В основе этих алгоритмов лежат принципы приоритетного обслуживания
Каждый поток имеет приоритет, число характеризующее степень привилегированности
при использовании ресурсов
Приоритет потока связан с приоритетом процесса, который назначается при создании
процесса
Значение зависит от того, является процесс системным или пользовательским, каков
статус запустившего процесс. Существуют две разновидности приоритетного
планирования: обслуживание с относительными и абсолютными приоритетами. В обоих
случаях выбор потока на выполнение из очереди готовых, осуществляется одинаково:
выбирается поток с наивысшим приоритетом. Однако проблема определения момента
смены активного потока решается по-разному.
В системах с относительными приоритетами активный поток выполняется до тех пор пока
сам не покинет процессор.
В системах с абсолютными приоритетами активный поток дополнительно к сказанному,
может покинуть процессор в том случае, если в очереди готовых потоков появился поток
с более высоким приоритетом.
3.Смешанные алгоритмы планирования
В современных ОС планирование основано на квантовании и приоритетном алгоритмах
(Windows NT/2000/XP, Unix)
На выполнение выбирается поток с наивысшим приоритетом, которому выделяется квант.
Если появляется поток с более высоким приоритетом, то текущий вытесняется
Приоритет потока повышается, если поток не использовал квант (например, при
выполнении ввода-вывода).
5.Назначение и типы прерываний.
Обзорные лекции
11
Бордюгова Т.Н.



Прерывание – это способ переключения процессора на выполнение потока
команд, отличного от того который выполнялся, с последующим возвратом.
Различают следующие типы прерываний:
внешние (аппаратные),
внутренние (исключения -exception),
программные
Внешние прерывания происходят асинхронно, т.е. происходят в случайный
момент времени в процессе выполнения программы (например, от внешних
устройств), внутренние – синхронно, т.е. возникают по конкретной причине
и можно предугадать возникновение такого прерывания (например, при
делении на ноль).
Программные прерывания не являются "истинными" прерываниями. Они
возникают при выполнении определенной команды процессора и
применяются в том случае, когда необходимо выполнить некоторые
привилегированные действия (например обратится к порту компьютера).
Прерываниям равного значения приписываются уровни приоритетов (уровни
- IRQ)
Каждое из прерываний обслуживается обработчиком прерываний (Interrupt
Service Routine).
Внешние – обрабатываются драйверами, внутренние – модулями ядра,
программные – процедурами из API
Механизм прерываний
Механизм прерываний поддерживается аппаратными и программными
средствами ОС
Различают векторный (vectored) и опрашиваемый (polled) типы прерываний.
В обоих способах процессору передается информация об уровне приоритета.
При векторном типе прерывания в процессор передается также адрес
обработчика прерывания
Для векторного типа схема обработки такова: электрический сигнал - запрос
на подтверждение - вектор - обработчик (например, для шины VMEbus)
Для опрашиваемого схема обработки такова: сигнал - запрос на
подтверждение - уровень приоритета (например, шина ISA). Каждый уровень
связан с несколькими устройствами. Вызываются все обработчики данного
уровня. Один опознает свое устройство. (Примеры шин: ISA, EISA, MCA,
PCi, SBus)
Приоритеты обслуживания могут быть: относительные (обработка
прерывания не прекращается при появлении более приоритетного
прерывания) и абсолютные.
6.Алгоритмы распределения памяти.
Обзорные лекции
12
Бордюгова Т.Н.
Все алгоритмы распределения памяти могут быть разделены на два класса: методы,
которые используют перемещение процессов между оперативной памятью и диском, и
методы, которые не делают этого .
1. Алгоритмы распределения памяти без использования внешней
памяти
1.1. Самым простым способом управления оперативной памятью является разделение ее
на несколько разделов фиксированной величины. Это может быть выполнено вручную
оператором во время старта системы или во время ее генерации. Очередная задача,
поступившая на выполнение, помещается либо в общую очередь (рисунок 1,а), либо в
очередь к некоторому разделу (рисунок 1,б).
Рис. Распределение памяти фиксированными разделами:
а - с общей очередью; б - с отдельными очередями
Подсистема управления памятью в этом случае выполняет следующие задачи:


сравнивая размер программы, поступившей на выполнение, и свободных разделов,
выбирает подходящий раздел,
осуществляет загрузку программы и настройку адресов.
Обзорные лекции
13
Бордюгова Т.Н.
При очевидном преимуществе - простоте реализации - данный метод имеет существенный
недостаток - жесткость. Так как в каждом разделе может выполняться только одна
программа, то уровень мультипрограммирования заранее ограничен числом разделов не
зависимо от того, какой размер имеют программы. Даже если программа имеет
небольшой объем, она будет занимать весь раздел, что приводит к неэффективному
использованию памяти. С другой стороны, даже если объем оперативной памяти машины
позволяет выполнить некоторую программу, разбиение памяти на разделы не позволяет
сделать этого.
1.2.Распределение памяти динамическими разделами
При использовании данного метода память в начальный момент времени считается
свободной (за исключением памяти отведенной под ОС). Каждому процессу отводится вся
необходимая память. Если ее не хватает, то процесс не создается. В произвольный момент
времени память представляет собой случайную последовательность занятых и свободных
участков.
Функции ОС:




Ведение таблиц свободных и занятых участков
Поиск участка
Загрузка и корректировка таблиц
После завершения процесса корректировка таблиц
Достоинство: большая гибкость, по сравнению с методом распределения
фиксированными разделами. Недостаток – высокий уровень фрагментации.
1.3.Распределение памяти перемещаемыми разделами
В этом методе разработчики попытались учесть достоинства и недостатки предыдущего.
Один из способов борьбы с фрагментацией – сжатие, таким образом, чтобы вся свободная
память образовала непрерывную область – дефрагментация. Такой метод был применен в
ранних версиях OS/2.
Недостаток этого метода – низкая производительность.
2.Алгоритмы распределения памяти с использованием внешней памяти
Для полной загрузки процессора могут понадобиться иногда сотни интерактивных задач.
Все они должны быть размещены в памяти, большая часть которых находится в состоянии
ожидания. Логично было бы на время ожидания, в случае нехватки физической памяти,
вытеснять их на диск, а когда необходимо, возвращать в память. Такая подмена
(виртуализация) оперативной памяти дисковой памятью существенно повышает уровень
мультипрограммирования. Важно, что все действия по перемещению происходят
автоматически, без участия программиста.
Для виртуализации применяются два основных подхода:
Свопинг – образ процесса выгружается на диск и возвращается в память целиком. Часто
Обзорные лекции
14
Бордюгова Т.Н.
называется подкачкой.
Виртуальная память – образ процесса выгружается на диск и возвращается в память
частями (сегментами, страницами...)
Реализация виртуальной памяти, представлена тремя классами: страничное
распределение, сегментное, сегментно-страничное распределение
2.1.Страничное распределение
При страничном распределении виртуальная память делится на части одинакового и
фиксированного для данной системы размера, называемыми виртуальными страницами.
Вся оперативная память также делится на части такого же размера, называемые
физическими страницами. Размер страницы выбирается равным степени двойки: 512,
1024, 4096 и т.д.
Адрес страницы входит в контекст процесса. Таблица страниц состоит из дескрипторов.
Каждый дескриптор включает:




Номер физической таблицы
Признак присутствия в ОЗУ (формируется аппаратно)
Признак модификации (формируется аппаратно)
Признак обращения (формируется аппаратно)
Виртуальный адрес, который представлен парой (p, sv) преобразуется в (n, sf).
Объем страницы равен степени 2k, тогда смещение (s) можно получить отделением к
разрядов
Аппаратно, из регистра извлекается адрес таблицы страниц. На основании номера
страницы Р и длины записи L, определяется адрес дескриптора (A=AT+P*L).
Из таблицы извлекается номер физической страницы N. К номеру N присоединяется
смещение S.
Размер страниц, (часто 4096) влияет на размер таблиц, а это в свою очередь отражается на
производительности. для устранения этого недостатка ВАП может делится на разделы, а в
каждом разделе формируется своя таблица страниц. Этот вариант ускоряет поиск.
2.2.Сегментное распределение
При страничном распределении виртуальное адресное пространство делится на равные
части механически, без учета смыслового значения данных. В одной странице могут
одновременно оказаться код программы и исходные данные. Такой подход не позволяет
обеспечить раздельную обработку, например защиту, совместный доступ и т.д.
Разбиение адресного пространства на "осмысленные" части устраняет эти недостатки и
называется сегментным распределением. Примеры сегментов: код программы, массив
исходных данных и пр.
Обзорные лекции
15
Бордюгова Т.Н.
На этапе создания процесса, ОС создает таблицу сегментов процесса, аналогичную
таблице страниц.
К недостаткам сегментного распределения можно отнести следующие:


Использование операции сложения при формировании физического адреса
приводит к понижению производительности
Избыточность. Т.к. сегмент в общем случае может быть больше страницы, то
следовательно единица обмена между ОЗУ и диском более крупная, что приводит к
замедлению работы.
2.3.Сегментное - страничное распределение
Данный метод представляет собой комбинацию страничного и сегментного механизмов
управления памятью и направлен на реализацию достоинств обоих подходов.
Виртуальная память делится на сегменты, а каждый сегмент - на страницы.
Все современные ОС используют именно такой способ организации.
Обзорные лекции
16
Бордюгова Т.Н.
7. Файлы, типы файлов, атрибуты файлов.
Файловая система - это часть операционной системы, назначение которой состоит в том,
чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися
на диске, и обеспечить совместное использование файлов несколькими пользователями и
процессами.
В широком смысле понятие "файловая система" включает:



совокупность всех файлов на диске,
наборы структур данных, используемых для управления файлами, такие, например,
как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и
занятого пространства на диске,
комплекс системных программных средств, реализующих управление файлами, в
частности: создание, уничтожение, чтение, запись, именование, поиск и другие
операции над файлами.
Типы файлов
Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.
Обычные файлы в свою очередь подразделяются на текстовые и двоичные. Текстовые
файлы состоят из строк символов, представленных в ASCII-коде. Это могут быть
документы, исходные тексты программ и т.п. Текстовые файлы можно прочитать на
экране и распечатать на принтере. Двоичные файлы не используют ASCII-коды, они часто
имеют сложную внутреннюю структуру, например, объектный код программы или
архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип
файлов - их собственные исполняемые файлы.
Специальные файлы - это файлы, ассоциированные с устройствами ввода-вывода, которые
позволяют пользователю выполнять операции ввода-вывода, используя обычные команды
записи в файл или чтения из файла. Эти команды обрабатываются вначале программами
файловой системы, а затем на некотором этапе выполнения запроса преобразуются ОС в
команды управления соответствующим устройством. Специальные файлы, так же как и
устройства ввода-вывода, делятся на блок-ориентированные и байт-ориентированные.
Каталог - это, с одной стороны, группа файлов, объединенных пользователем исходя из
некоторых соображений (например, файлы, содержащие программы игр, или файлы,
составляющие один программный пакет), а с другой стороны - это файл, содержащий
системную информацию о группе файлов, его составляющих. В каталоге содержится
список файлов, входящих в него, и устанавливается соответствие между файлами и их
характеристиками (атрибутами).
В разных файловых системах могут использоваться в качестве атрибутов разные
характеристики, например:






информация о разрешенном доступе,
пароль для доступа к файлу,
владелец файла,
создатель файла,
признак "только для чтения",
признак "скрытый файл",
Обзорные лекции
17
Бордюгова Т.Н.











признак "системный файл",
признак "архивный файл",
признак "двоичный/символьный",
признак "временный" (удалить после завершения процесса),
признак блокировки,
длина записи,
указатель на ключевое поле в записи,
длина ключа,
времена создания, последнего доступа и последнего изменения,
текущий размер файла,
максимальный размер файла.
Обзорные лекции
18
Бордюгова Т.Н.
8.Логическая и физическая организация файловой системы.
Логическая организация файла
Программист имеет дело с логической организацией файла, представляя файл в виде
определенным образом организованных логических записей. Логическая запись - это
наименьший элемент данных, которым может оперировать программист при обмене с
внешним устройством. Даже если физический обмен с устройством осуществляется
большими единицами, операционная система обеспечивает программисту доступ к
отдельной логической записи.
Записи могут быть фиксированной длины или переменной длины. Записи могут быть
расположены в файле последовательно (последовательная организация) или в более
сложном порядке, с использованием так называемых индексных таблиц, позволяющих
обеспечить быстрый доступ к отдельной логической записи (индексно-последовательная
организация). Для идентификации записи может быть использовано специальное поле
записи, называемое ключом. В файловых системах ОС UNIX и MS-DOS файл имеет
простейшую логическую структуру - последовательность однобайтовых записей.
Физическая организация
Физическая организация файла описывает правила расположения файла на устройстве
внешней памяти, в частности на диске. Файл состоит из физических записей - блоков.
Блок - наименьшая единица данных, которой внешнее устройство обменивается с
оперативной памятью.
Непрерывное размещение - простейший вариант физической организации , при котором
файлу предоставляется последовательность блоков диска, образующих единый сплошной
участок дисковой памяти. Для задания адреса файла в этом случае достаточно указать
только номер начального блока. Другое достоинство этого метода - простота. Но имеются
и два существенных недостатка. Во-первых, во время создания файла заранее не известна
его длина, а значит не известно, сколько памяти надо зарезервировать для этого файла, вовторых, при таком порядке размещения неизбежно возникает фрагментация, и
пространство на диске используется не эффективно, так как отдельные участки
маленького размера (минимально 1 блок) могут остаться не используемыми.
Следующий способ физической организации - размещение в виде связанного списка
блоков дисковой памяти. При таком способе в начале каждого блока содержится
указатель на следующий блок. В этом случае адрес файла также может быть задан одним
числом - номером первого блока. В отличие от предыдущего способа, каждый блок может
быть присоединен в цепочку какого-либо файла, следовательно фрагментация
отсутствует. Файл может изменяться во время своего существования, наращивая число
блоков. Недостатком является сложность реализации доступа к произвольно заданному
месту файла: для того, чтобы прочитать пятый по порядку блок файла, необходимо
последовательно прочитать четыре первых блока, прослеживая цепочку номеров блоков.
Кроме того, при этом способе количество данных файла, содержащихся в одном блоке, не
равно степени двойки (одно слово израсходовано на номер следующего блока), а многие
программы читают данные блоками, размер которых равен степени двойки.
Популярным способом, используемым, например, в файловой системе FAT операционной
системы MS-DOS, является использование связанного списка индексов. С каждым
блоком связывается некоторый элемент - индекс. Индексы располагаются в отдельной
Обзорные лекции
19
Бордюгова Т.Н.
области диска (в MS-DOS это таблица FAT). Если некоторый блок распределен
некоторому файлу, то индекс этого блока содержит номер следующего блока данного
файла. При такой физической организации сохраняются все достоинства предыдущего
способа, но снимаются оба отмеченных недостатка: во-первых, для доступа к
произвольному месту файла достаточно прочитать только блок индексов, отсчитать
нужное количество блоков файла по цепочке и определить номер нужного блока, и, вовторых, данные файла занимают блок целиком, а значит имеют объем, равный степени
двойки.
Обзорные лекции
20
Download