Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Прикладное программное обеспечение ~ предназначено для решения повседневных задач пользователя

Работа добавлена на сайт samzan.net:


2/310

http://itt.bstu.by

http://stackoverflow

Э. Таненбаум

Л. Торвальдс – Just for fun

Олифер и Олифер – Современные (сетевые) операционные системы.

Введение

User

ПО

ППО

Пользовательское

пространство

СПО

СПО

ОС

Ядро

HW

ПО делится на 2 класса:

1) Прикладное программное обеспечение – предназначено для решения повседневных задач пользователя.

2) Системное программное обеспечение – предназначено для обеспечения функционирования ППО и вычислительной системы в целом.

Операционная система (ОС):

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

GUI – графический интерфейс пользователя.

CLI – Command Line Interface.

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

Классификация операционных систем:

1) Однопользовательские и многопользовательские

2) Однозадачные и многозадачные

Отличие в отсутствии/наличии защиты данных пользователей и процессов.

Классификация по критериям эффективности:

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

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

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

Степень мультипрограммирования – это максимальное число одновременно выполняющихся в сис-ме процессов.

Псевдо параллельное выполнение процессов – это последовательное выполнение команд нескольких процессов с поочередным выделением им процессорного времени. В один момент времени один процессор может выполнять только одну команду одного процесса.

Современные сис-мы разделения времени в основном ориентированы на взаимодействие с пользователем, поэтому называются интерактивными. Критерий эффективности интерактивных систем – это соответствие ожиданиям пользователя.

3) Системы реального времени – предназначены для управления объектами реального мира. Критерий эффективности – это способность выполнить определенную задачу к заранее заданному моменту времени.

Классы операционных систем:

а) жесткие системы – превышение dead line (время выполнения) недопустимо.

б) гибкие системы – превышение dead line не желательно, но возможно.

Классификация ОС по типам ядер:

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

    Недостатки:

- размер

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

2) Модульное ядро – это модификация монолитного ядра, предоставляющая                                                                                                                                                                    возможность добавление и удаления функциональности без перекомпиляции. Функциональные части ядра называются модули.

Достоинства: быстрое как монолитное.

Недостатки: большой размер.

3) Микроядро – имеет маленький размер, реализует функции управления памятью, процессами, межпроцессными коммуникациями и основные функция взаимодействия с аппаратурой.

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

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

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

Достоинства: минимальный объем позволяет использовать такие ядра во встраиваемых системах.

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

5) Гибридное ядро – это микро ядро с модульной архитектурой.

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

  1.  Расширяемость – это возможность увеличения функциональности ОС без нарушения её работоспособности.
  2.  Безопасность – это наличие в ОС средств защиты пользователей и процессов.
  3.  Переносимость – это возможность запуска ОС написанной в одной аппаратной платформе на другой аппаратной платформе.
  4.  Совместимость -  это возможность запуска программ написанных в одной ОС в другой ОС.

а) между версиями одной ОС

б) между разными ОС

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

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

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

Принципы построения ОС:

  1.  Модульности – ОС должна иметь возможность добавления и удаления функциональных частей.
  2.  Генерируемости. Генерация ОС – это настройка ОС на особенности вычислительной системы, т.е. установка.
  3.  Принцип «по умолчанию» - каждое настраиваемое значение в системе должно иметь значение по умолчанию.
  4.  Функциональной избыточности – когда ключевые функции системы можно реализовать несколькими способами (ls, dir делают одно и то же). Если сбой в одном способе, то работаю другие.
  5.  Функциональной избирательности – для часто используемых функций системы должны создаваться условия быстрого выполнения.
  6.  Защищенности – требования безопасности.
  7.  Независимости программ от внешних устройств – программы должны работать единообразно с аппаратурой различных производителей и моделей
  8.  Перемещаемости – программы должны работать независимо от того в какое место памяти они загружены
  9.  Открытости и наращиваемости.

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

ПРОЦЕССЫ

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

Классификация процессов:

  1.  По генеалогическим признакам:

- родительский (порождающий)

- дочерний (порожденный)

Единственный способ появления новых процессов в системе – это создание дочерней копии родительского процесса. У каждого процесса есть родитель.

  1.  По результативности:

- Два процесса преобразовывающие одинаковые входные данные в одинаковые выходные называются эквивалентными.

- Два эквивалентных процесса работающих по одинаковым программам тождественны.

- Два тождественных процесса, трассы которых совпадают, равны. Все остальные процессы различные.

Трасса процесса – это последовательный набор состояний которые проходит процесс в течение жизнедеятельности.

  1.  По связанности:

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

  1.  По временным характеристикам:

- параллельные – это те, у которых трассы параллельны.

- последовательные – трассы у которых не пересекаются.

- пересекающиеся – есть момент времени когда есть только один процесс (трасса) и есть момент времени когда есть оба процесса.

      5) По принадлежности к ЦП:

- внутренние – выполняются на ЦПУ

- внешние – на других процессных устройствах.

      6) По принадлежности к системе:

- системные

- пользовательские

Диаграмма состояний процессов:

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

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

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

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

 

Планирование и диспетчеризация

Уровни планирования:

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

Вынужденное и не вынужденное планирование.

Диспетчеризация производится в следующих ситуациях:

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

1) и 2) – вынужденное планирование.

3) и 4) – не вынужденное.

Не вытесняющее планирование – производится только в вынужденных ситуациях.

Вытесняющее производится в вынужденных и не вынужденных ситуациях.

Требования к алгоритмам планирования:

  1.  Справедливость – каждый процесс должен получить процессорное время после конечного времени ожидания в очереди готовности.
  2.  Минимизация среднего полного времени оборота процессов = Время ожидания + Время выполнения. Время выполнения программы зависит от её кода, следовательно, минимизируем за счет времени нахождения в очереди готовности.

Алгоритмы планирования для систем пакетной обработки:

1) FCFS (First come First served – первый пришел первый обслужился) – не вытесняющий алгоритм, согласно которому, процессы поступают на выполнение в порядке появления в очереди готовности. Из выполнения процессы могут только покинуть систему или перейти в состояние блокировки.

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

Достоинства – простота реализации.

2) SJN (Shortest job next – кратчайшая работа следующая) – не вытесняющий алгоритм, согласно которому на выполнение поступают сначала более короткие процессы, потом более длительные, т.е. чем меньше времени нужно процессу для выполнения тем раньше он будет выбран.

Достоинства – алгоритм минимизирует среднее полное время ожидания, явл. оптимальным.

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

3)SRT (Shortest Remain Time) – вытесняющая модификация SJN. При поступлении в систему процесса которому для выполнения нужно меньше времени чем осталось выполняться текущему, выполняющийся процесс прерывается и вытесняется в очередь готовности прибывшим процессом.

Достоинства – он (алгоритм) оптимальный среди вытесняющих.

Недостаток – не реализуем.

Алгоритмы планирования интерактивных систем:

1)RR(Round robin – карусель) – вытесняющий алгоритм, согласно которому, процессы поочередно получают процессорное время, а по окончанию выделенного кванта времени становятся в конец очереди.

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

2)Приоритетное планирование. Приоритет – это число определяющее степень привилегированности одного процесса перед другими.

Типы приоритетов:

1)Абсолютный

2)Относительный

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

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

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

АЛГОРИТМЫ ПЛАНИРОВАНИЯ СИСТЕМ РЕАЛЬНОГО ВРЕМЕНИ.

Условия планирования систем реального времени:

ti - время необходимое для обработки i-события.

Ti – периодичность происхождения i-события.

Система с n-периодическими событиями планируема если выполняется это условие.

1)RMS (Rate Monotonic Scheduling) – статический алгоритм используем только априорные знание о происхождении событий и не использует информацию о текущем состоянии системы. При одновременном поступлении нескольких событий, они обрабатываются в соответствии с приоритетом. Приоритет обратно пропорционален периодичности событий, т.е. чем чаще – тем более приоритетный и наоборот.

i

ti (такты)

Ti (периодичность поступления)

Vi (частота)

1

5

15

1/15

2

15

30

1/30

3

3

20

1/20

A

A1

A2

A3

A4

A5

A6

A7

A8

A9

B

B1

B2

B3

B4

B5

C

C1

C2

C3

C4

0

10

20

30

40

50

60

70

80

90

100

110

120

130

2)EDF (Earlier Deadline First – динамический алгоритм) – раньше обрабатывается то событие, у которого ближе deadline. Благодаря тому, что, динамический алгоритм полагается на текущие состояния системы, система будет планируемой при любой загрузке до единицы (напр. 0,983), даже если статический алгоритм вызывает в такой системе коллизии.

qnx – система реального времени.

УПРАВЛЕНИЕ ПАМЯТЬЮ

Структура памяти вычислительных систем:

Регистры процессора

КЭШ

Главная (оперативная, первичная) память

Скорость доступа к RAM быстрее всех

Вторичная память (жесткий диск)

Внешние запоминающие устройства (бесконечная память)

↓Чем ниже – увеличивается объем.

↑Снизу вверх – увеличивается скорость доступа к данным.

Чем выше уровень – больше стоимость 1бита информации.

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

  •  Физическая и логическая память:

Адресное пространство:

1) Физическое.

Физический (абсолютный) адрес – это номер ячейки памяти в массиве ячеек микросхемы памяти.

2) Логическое.

Логический (виртуальный или относительный) адрес – это адрес ячейки памяти внутри процесса.

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

Логические адреса используются в коде процесса.

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

Варианты трансляции адреса:

1) На этапе компиляции.

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

2) Связывание (ретрансляция) на этапе загрузки.

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

3) Связывание на этапе выполнения.

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

4) Статическое распределение памяти (как между процессам выделяется память).

а) Один процесс в памяти.

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

б) Разделы с фиксированными границами.

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

Недостатки:

- количество процессов = количеству разделов.

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

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

 в) Разделы с подвижными границами.

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

Достоинства:

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

Стратегии размещения нового процесса:

I) Best Fit – процесс размещается в разделе близкий по размеру с разделом, тем самым минимизируя оставшееся свободное место.

II) Worse Fit – процесс размещается в раздел, по размерам намного больший, чем у процесса. Остается большой участок свободного пространства, в который могут быть помещены ещё другие процессы.

III) First Fit (первый подходящий) – ставится в первый подходящий раздел. Отсутствует необходимость просмотра и сравнения всех свободных разделов, на это не тратится время => увеличивается производительность.

IV) Страничное распределение памяти

МНОГОПОТОЧНОСТЬ

Процесс А    Процесс В

(несколько

выполняющихся потоков)

Пространство пользователя

Ядро

Многопоточность – это квазимногозадачность в рамках одного процесса.

Достоинства многопоточности:

1) Несколько потоков одного процесса работают в одном контексте.

2) Имеют доступ к общим данным и ресурсам.

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

4) Создание/удаление потоков быстрее чем создание/удаление процессов.

Способы реализации потоков:

1) Потоки на уровне пользователя.

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

Достоинства:

а) Возможность реализации многопоточности на ядрах её не поддерживающих.

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

Недостатки:

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

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

2) Потоки на уровне ядра.

Ядро имеет таблицу потоков и управляет ими. Каждый поток имеет собственное состояние и планируется ядром наравне с другими потоками

Достоинства:

а) Каждый поток получает собственное процессорное время и не влияет на другие потоки этого же процесса.

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

Недостатки:

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

Смешанные реализации:

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

2) Мультиплексирование потоков.

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

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

Страничная память:

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

Логический адрес – это пара чисел: номер страницы и смещение внутри её.

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

Достоинства:

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

2) Потери на фрагментацию составляют минимум, есть только свободное пространство в странице каждого процесса (т.е. если процесс занимает 320, а страница равна 100, то останется пустое пространство равное 80).

Недостатки:

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

Сегментное распределение памяти:

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

Логический адрес – это пара чисел: номер сегмента и смещение внутри сегмента.

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

Достоинства:

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

Недостатки:

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

Сегментно-страничная:

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

Логический адрес – сегмент, страницы, смещение.

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

Достоинства:

1) Сочетание осмысленности и равенства свободных и занятых блоков.

Недостаток:

Усложнение реализации.

МЕХАНИЗМ СТРАНИЧНОЙ ТРАНСЛЯЦИИ

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

Резидентное множество процессов – это множество фреймов, выделенных процессу.

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

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

Рабочий набор – это набор страниц, к которому обращается процесс, на протяжении этого отрезка времени.

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

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

СТРАТЕГИИ УПРАВЛЕНИЯ ВИРТУАЛЬНОЙ ПАМЯТЬЮ

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

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

- Подкачка по запросу:

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

- Подкачка с упреждением:

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

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

Алгоритмы замещения страницы:
1) FIFO (First in, first out) – выгружается самая «старая» страница. Недостаток – самая старая – не значит самая ненужная, возможно, к этой странице происходит постоянные обращения и страничное нарушение произойдет в ближайшее время.

2) OPT (оптимальный) – выталкивается страница к которой дольше всего не было обращений. Недостаток – алгоритм нереализуем, т.к. не известно, когда и к какой странице будут обращения в будущем.

3) LRU (Least recently used) – выгружается страница, не использовавшаяся больше всего. Недостаток – ненужность в прошлом не означает ненужности в будущем.

4) NFU (Not frequently used) – выгружается страница, к которой было меньше всего обращений в течение последнего отрезка времени. Недостаток – ненужность в прошлом не означает ненужности в будущем.

5) SC (Second chance) Алгоритм второго шанса – модификация FIFO. Каждой странице ставятся флаги обращений. При обращении к странице этот флаг устанавливается в 1 (true). При страничном нарушении, просматриваются страницы, начиная с самой старой. Если у страницы установлен флаг обращения, то ей даётся второй шанс, т.е. она не выталкивается и флаг устанавливается в 0 (false). Если флаг старой страницы не установлен, то страница выталкивается.

Выталкивание страниц, не входящих в рабочий набор:

используется для слежения за рабочим набором, управления резидентным множеством и т.д. предназначены демоны (daemon) страниц.

ТАБЛИЦЫ СТРАНИЦ

Обычная таблица страниц:

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

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

Многоуровневые таблицы страниц:

Таблица страниц делится на части, более мелкие таблицы страниц, каждая из которых помещается в одну страницу. Все они нумеруются и адресуются в отдельной таблице страниц. Так для 32 битного адреса, 10 бит – это номер записи в таблице страниц первого уровня. Из этой записи получается номер фрейма, в котором находится (или отсутствует и должна быть подгружена) таблица страниц второго уровня. Вторые 10 бит адреса адресуют запись таблицы страниц второго уровня, из которой получается номер фрейма, содержащего искомую логическую страницу. Последние 12 бит адреса являются смещением внутри страницы. Таким образом, 12 битами смещения описывается страница размером 212 байт или 4килобайта, 10-ю битами номера записи таблицы первого уровня описывается 210 записей, следовательно, размер записи равен 4 байтам (всего может быть адресовано страниц 232 или 4 ГБ ОЗУ).

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

Инвертированная таблица страниц:

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

Достоинства: таблица одна на всю систему и размер её ограничен количеством фреймов.

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

ВВОД-ВЫВОД

Физические принципы ввода-вывода:

Локальная магистраль компьютера формируется шинами.

Шина – это набор линий одинакового назначения.

Линия – это электрическое соединение.

Количество линий в шине определяет её разрядность.

Все устройства системы подключены к локальной магистрали, включающей:

1) Шину данных – предназначена для передачи данных.

2) Шину адреса – предназначена для установки адреса ячейки или порта ввода-вывода.

3) Шину управления – предназначена для установки команды.

Запись процессору в ячейку памяти происходит следующим образом:

1) Процессор устанавливает на шине данных записываемое значение

2) Процессор устанавливает на шине адреса адрес ячейки, в которую надо писать.

3) Процессор устанавливает на шине управления команду «запись в память».

4) Увидев эту команду на шине управления, микросхема памяти помещает значение из шины данных в ячейку по адресу по шине адреса.

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

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

Вывод значения на устройство ввода-вывода:

1) Процессор в цикле опрашивает порт состояния контроллера, ожидая сброшенного бита занятости устройства.

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

2) Если бит занятости сброшен, то процессор устанавливает на шине адреса номер порта вывода контроллера устройства, на шине данных – выводимое значение, на шине управления – команду «вывод устройства ввода-вывода». Контроллер устройства, увидев команду и свой номер, считывает значение с шины данных и инициирует начало процесса вывода данного значения устройством. При этом устанавливает бит занятости устройства. Если процессор хочет проконтролировать результат вывода, то ему придется в цикле опрашивать бит занятости до его сброса, после чего проверить бит ошибки.

Главное отличие ввода-вывода устройства от ввода-вывода в память – длительность процесса.

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

это время может производить вычисления не связанные с памятью.

Структура системы ввода-вывода (см. рисунок у Миши):

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

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

- обработка ошибок.

- спулинг (организация очереди)

- буферизация и кэширование

- т.д.

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

Классификация устройств ввода-вывода:

I:

1) Устройства ввода

2) Устройства вывода

3) Устройства ввода-вывода

II: 

1) Разделяемые устройства

2) Устройства монопольного доступа

III:

1) Символьные (передают по 1 байту)

2) Блочные устройства (блоками байт)

IV:

1) Локальные

2) Сетевые

ОПЕРАЦИОННЫЕ СИСТЕМЫ В СЕТЕВОМ ВЗАИМОДЕЙСТВИИ

Мультипроцессоры, мультикомпьютеры и распределенные системы.

Мультипроцессор – это вычислительная система, содержащая большое количество CPU в аппаратном блоке.

Мультикомпьютеры (кластер) – несколько объединенных компьютеров, где у каждого свои CPU.

Мультипроцессоры

Мультикомпьютеры

Распределенные сис-мы

Узлы

1 узел это 1 CPU

1 узел – это CPU с памятью и дисками

1 узел – полноценная вычислительная система

Связи между узлами

Связь через общую ОЗУ

Связь через выделенные линии

Сеть общего назначения

Переферия

Общая

Общая

У каждого узла своя

Администрирование

Едино-централизованное

Едино-централизованное

Много админов

Расположение

Компактное

Локальное

Географически распределенное

ОС

одна общая

одинаковые на всех узлах

различные

1) Своя ОС каждому CPU.

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

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

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

2) Хозяин-подчиненный.

Код ОС выполняет центральный CPU-хозяин (первый), а остальные CPU-подчиненные выполняют процессы программ.

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

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

3) Симметричные мультипроцессоры (SMP).

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

СУПЕРКОМПЬЮТЕРЫ

Суперкомпьютер (экономическое) – вычислительная система, стоимостью более $1 млн.

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

СЕТЕВЫЕ и РАСПРЕДЕЛЕННЫЕ ОС

Классификация классов:

1) Сетевая ОС – это совокупность всех ОС локальной сети или операционная система, предоставляющая функции сетевого доступа.

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

Сетевые ОС:

1) Одноранговые – ОС узла одноранговой сети.

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

2) С выделенными серверами – в которой присутствуют клиентские узлы и серверные узлы со специальными серверами ОС.

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




1. Экология ~ылымыны~ даму тарихы
2. вариант Только тогда станешь человеком когда научишься видеть человека в другом А
3. первых пропала подруга Соня а вовторых ее завербовал полковник службы госбезопасности
4. Знакомство с В Шукшиным
5. европейская идея приобрела после окончания Первой мировой войны
6. Посланники во времени 3 2 Глава 2
7. Учет основных средств и их амортизации на базе хозяйства ОАО Ружаны-Агро Пружанского района
8. Витаминки. Автор- Мария Тюрина Некоторые учатся танцевать другие рождены для этого
9. I Olivi Jessic Tyler Friends cll me Liv
10. 1 Страховой продукт- понятие структура свойства
11. 931 19971998 гг Осаку А
12. Курсовая работа Разработка автоматизированной информационной системы
13. Адаптація першокласників до школи
14. Тема- Облік і звітність з податку на прибуток підприємств Час- 4 год
15. Правова організація працевлаштування громадян
16. І Загальна характеристика діяльності назва базового підприємства 35 стор Історія розвитку підприємс
17. Новогодние старты 7 декабря Фамилия И
18. а привязку геосферы камни литосферу и воду гидросфера
19. Художественный прием в Истории одного города
20. Основные направления развития машин и механизмов