
- •Понятие операционной системы. Условия, при которых нужны ос
- •Базовые функции операционной системы
- •Основные характеристики ос
- •Определения операционной системы
- •Назначение операционной системы
- •Место ос в логической структуре вычислительной системы
- •Функции операционных систем
- •Состав и объекты операционной системы
- •Эволюция ос и основные идеи
- •Понятие расширенной машины
- •Ресурс. Классификация ресурсов
- •Операционная среда
- •Прикладная среда
- •Понятие процесса. Процесс, как контейнер
- •Тождественность процесса, выполняемой программы и ос 48 Поток. Контекст. Волокна
- •Назначение прерываний. Определение прерывания. Механизм прерываний
- •Алгоритм выполнения прерываний. Главные функции механизма прерываний
- •Классификация прерываний, возникающих при работе вычислительной системы
- •Распределение прерываний по уровням приоритета
- •Планирование заданий процессов и потоков
- •Виды планирования, используемые в современных ос
- •Жизненный цикл процесса (потока). Очереди. Классы алгоритмов планирования
- •Алгоритмы планирования процессов и потоков. Достоинства и недостатки различных алгоритмов планирования
- •Разделение времени при работе с процессами и потоками. Понятие кванта времени. Алгоритмы, основанные на квантовании
- •Понятие приоритетного обслуживания
- •Разновидности приоритетного планирования
- •Система приоритетного обслуживания Windows
- •Физическая организация памяти
- •Виртуальная память
- •Интерфейс прикладных программ. Перенос приложений между платформами 148 Взаимодействие процессов – синхронизация. Критические ресурсы и критические секции процессов
- •Взаимодействие процессов – синхронизация. Взаимное исключение. Задача взаимного исключения
- •Использование блокировки памяти. Алгоритм Деккера
- •Семафорные примитивы. Мьютексы
- •Задача "поставщик-потребитель"
- •Понятие сообщения в ос. Виды сообщений 170 Вызовы процедур. Локальные вызовы, удаленные вызовы (rpc). Направление вызова – клиент-сервер
- •Вызовы процедур. Локальные вызовы, удаленные вызовы (rpc). Направление вызова – сервер- клиент 175 Проблема тупиков. Предотвращение тупика
- •Проблема тупиков. Обход тупика
- •Проблема тупиков. Распознавание тупика
- •Мониторы
- •Синхронизация в распределенных системах
- •Алгоритмы синхронизации в распределенных системах. Алгоритм «задиры», круговой алгоритм
Система приоритетного обслуживания Windows
Планирование потоков рассмотрим на примере ОС Windows В Windows реализована подсистема вытесняющего планирования на основе уровней приоритета. Всегда выполняется поток с наивысшим приоритетом к выполнению. В многопроцессорных системах под Windows NT и Windows 2000 выбор потока для выполнения может быть ограничен набором процессоров, на которых он может работать. Этот метод называется привязкой к процессору (processor affinity). По умолчанию поток выполняется на любом процессоре. С помощью функций Win32 можно изменить привязку к процессорам.
Физическая организация памяти
Под организацией памяти понимается, каким образом предоставляется и используется основная память, т.е. необходимо дать ответы на следующие вопросы: 1. Будем ли мы помещать в основную память только одну программу пользователя или несколько программ одновременно. 2. Если в основной памяти размещается программ сразу, будем ли мы предоставлять каждой из них одинаковое количество ячеек памяти или разобьем ее на части (разделы) различных размеров. 3. Будем ли разбивать основную память жестким образом, т.е. разделы определяются на достаточно длительное время, либо динамически, позволяя компьютеру быстро реагировать на изменения потребностей программы в ресурсах. 4. Будем ли мы требовать такого построения программы пользователя, чтобы они выполнялись только в конкретном разделе, либо предусмотрим возможность выполнения программы с занятием любых подходящих для них разделов. 5. Будем ли мы требовать, чтобы каждая программа помещалась в одном, непрерывном блоке ячеек памяти, либо допустим возможность разбиения программы на отдельные блоки, размещаемые в любых свободных участках (дырах) основной памяти. Физическая память представляет собой множество ячеек, которые пронумерованы, к каждой ячейке можно обратиться, указав ее порядковый номер (адрес). Количество ячеек физической памяти ограничено и фиксировано.
Виртуальная память
Реально отображение программы в памяти происходит не на физическое, а на логическое пространство адресов. Такие адреса называют виртуальными. Множество всех допустимых значений виртуального адреса для некоторой программы определяет ее виртуальное адресное пространство или виртуальную память. Виртуальное адресное пространство зависит от: - архитектуры процессора; - системы программирования. Виртуальное адресное пространство не зависит от: - объема реальной физической памяти, установленной в компьютере. Термин виртуальная память фактически относится к системам, которые сохраняют виртуальные адреса во время исполнения. Второе отображение осуществляется в процессе выполнения задачи, поэтому адреса физических ячеек могут изменяться.
Иерархия памяти
Современные ОС поддерживают 3 уровня памяти: кэш-память основная внешняя Стратегии управления памятью направлены на то, чтобы обеспечить наилучшее возможное использование ресурсов основной памяти. К ним относятся: Стратегии выборки. Стратегии размещения Стратегии замещения
Простое непрерывное распределение памяти
Простое непрерывное распределение – это самая простая схема, согласно которой вся память условно может быть разделена на три части: - область, занимаемая операционной системой; - область, в которой размещается исполняемая задача; - незанятая ничем (свободная) область памяти.
Простое непрерывное распределение памяти: распределение памяти в случае одной или нескольких задач 123
Сегментное распределение памяти
Сегментное распределение памяти — это метод, при котором виртуальное адресное пространство процесса делится на сегменты, размер которых определяется программистом с учётом смыслового значения содержащейся в них информации.
Отдельный сегмент может представлять собой подпрограмму, массив данных и т.п. Иногда сегментация программы выполняется по умолчанию компилятором.
При загрузке процесса часть сегментов помещается в оперативную память, а часть сегментов размещается в дисковой памяти. Сегменты одной программы могут занимать в оперативной памяти несмежные участки.
Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.
Страничное распределение памяти 132
Сегментно-страничное распределение памяти 136
Плоская модель памяти 140
Взаимодействие процесса с ОС. Интерфейс прикладных программ
Интерфейс прикладных программ (API — Application Programming Interface) ¬ – часть ОС, через которую происходит взаимодействие ОС с приложениями, решающими задачи пользователя. Практически все операционные системы (Unix, Windows, Mac OS, и т. д.) имеют API, с помощью которого программисты могут создавать приложения для этой операционной системы. Главный API операционных систем — это множество системных вызовов. В индустрии программного обеспечения общие стандартные API для стандартной функциональности имеют важную роль, так как они гарантируют, что все программы, использующие общий API, будут работать одинаково хорошо или, по крайней мере, типичным привычным образом. В случае API графических интерфейсов это означает, что программы будут иметь похожий пользовательский интерфейс, что облегчает процесс освоения новых программных продуктов. С другой стороны, отличия в API различных операционных систем существенно затрудняют перенос приложений между платформами. Существуют различные методы обхода этой сложности — написание «промежуточных» API (API графических интерфейсов Qt, Gtk, и т. п.), написание библиотек, которые отображают системные вызовы одной ОС в системные вызовы другой ОС (такие среды исполнения, как Wine, cygwin, и т. п.), введение стандартов кодирования в языках программирования (например, стандартная библиотека языка C), написание интерпретируемых языков, реализуемых на разных платформах (sh, python, perl, php, tcl, Java, и т. д.). Также необходимо отметить, что в распоряжении программиста часто находится несколько различных API, позволяющих добиться одного и того же результата. При этом каждый API обычно реализован с использованием API программных компонент более низкого уровня абстракции. Например: для того чтобы увидеть в браузере строчку «Hello, world!», достаточно лишь создать HTML-документ с минимальным заголовком и простейшим телом, содержащим данную строку. Что произойдёт, когда браузер откроет этот документ? Программа-браузер передаст имя файла (или уже открытый дескриптор файла) библиотеке, обрабатывающей HTML-документы, та, в свою очередь, при помощи API операционной системы прочитает этот файл и разберётся в его устройстве, затем последовательно вызовет через API библиотеки стандартных графических примитивов операции типа «очистить окошко», «написать выбранным шрифтом «Hello, world!». Во время выполнения этих операций библиотека графических примитивов обратится к библиотеке оконного интерфейса с соответствующими запросами, уже эта библиотека обратится к API операционной системы, чтобы записать данные в буфер видеокарты.