Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OSi

.doc
Скачиваний:
7
Добавлен:
14.04.2015
Размер:
246.27 Кб
Скачать

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

Предоставление механизмов для управления ресурсами вычислительной системы – процессорами, памятью, устройствами I/O и информацией (файлы, структуры ОС)

ОС как расширенная машина API

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

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

Основные ресурсы ОС

  • Центральные процессоры

  • Оперативна память

  • Дисковые накопители

  • Прочие устройства I/O

  • Файлы

  • Системные объекты и структуры.

2. Эволюция ОС. I (1945-1955). Реле, вакуумные лампы, комм. панели. Програмир. установкой перемычек на комм. панели. Перфокарты. ОС: отсутствуют.

II (1955-1965). Транзисторы. Разделение между разработчиками, конструкторами, программистами, операторами и обслуживающим персоналом. Выч. системы: мэйнфреймы. ЯП – Фортран и ассемблер.

ОС: пакетные системы. По завершении задачи монитор авт. загружает следующую. В каждое задание включаются простые команды языка управления заданиями. Типичные ОС: FMS, IBSYS. III (1965-‘80). Полупроводн. ИС. Совместимые семейств ЭВМ (IBM System/360). Миникомпьютеры. Оборудование защиты памяти, многозадачность, защита памяти, подкачка, разделение времени, файловые системы, диалоговый режим. Типичные ОС: M.I.T, CTSS. IBMOS/360 для System/360. MULTICS. IV (1980-н.в.). Сверх большие ИС. Микропроц и ПК. GUI, сетевые и распредел. ОС. CP/M, MS-DOS и Apple DOS – системы командной строки. GUI. ‘84 Стив Джобс – Apple Macintosh. Граф. оболочка Win поверх 16-битной DOS (1985-1995 г.); 95-Me (1995-2000); NT 3.1 – W7. Novell.: ОС с сетевыми функциями. ‘83 OS-Net (звездообразной топологии с выдел. серв. Motorola). NetWare 86 для IBMPCXT и CPU 8088 (ОС центрального сервера сети). NetWare: все версии для Intel. ‘87 первая многозад. защищенного режима – OS/2. Вытесняющ. многозадачн.(многопоточ.), виртуальная память, GUI, вирт. маш. для DOS-приложений. UNIX: Семейство System V от AN&T; BSD Калиф. унив. Беркли; MINIX; LINUX.

3. Классификация ОС

- Общего назначения.

- Специального назначения (для носимых устройств и встроенных систем, организации и ведения БД, решения задач реального времени и т.д.) По типу вычислительной системы: ОС мэйнфреймов.

(- Пакетная обработка. - Обработка транзакций. - Системы разделения времени.)

Серверные. Многопроцессорные. ОС ПК. Встроенные. Сарт-карт (на базе стека java).

ОС реального времени (VxWorks, QNX).

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

По режиму обработки задач: Однопрограммн; Мультипрограмм (мнгозад).

По способу взаимодействия с компьютером:

Диалоговые системы (интерактивные системы); Пакетные системы.

По организации работы в диалоговом режиме с пользователями: Однопользоват ОС; Мультитерминальные ОС.

По архитектурному принципу:

Макрояд (монолитные) (WinNT, Linux). Клиент-сервер (микрояд) (Mach, QNX). Многоуровневые (THE, MULTICS).

Виртуальные машины (VM/370 (CP/CMS))

Экзоядро (exokernel).

Перспективные подходы к ОС: Архитектура микроядра, Многопоточность, Симметричная многопроцессорность, Распределенные ОС, Объектно-ориентированный дизайн.

4. Процессы

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

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

Ресурсы процесса:

  • Один или несколько потоков исполнения.

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

  • Один или несколько сегментов кода, включая код DLL.

  • Один или несколько сегментов данных, содержащих глобальные переменные.

  • Строки, содержащие информацию об окружении.

  • Куча процесса.

  • Ресурсы, напр-р. дескрипторы открытых файлов.

Адресное пространство - список адресов в памяти, которые процесс может прочесть и в которые он может писать. Оно содержит код программы, данные и ее стек.

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

Модель процесса

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

5. Создание процесса

Инициализация системы.

Выполнение изданного работающим процессом системного запроса на создание процесса.

Запрос пользователя на создание процесса.

Инициирование пакетного задания.

OC Windows: CreateProcess; ShellExecute, ShellExecuteEx; WinExec.

LPSECURITY_ATTRIBUTES: lpProcessAttributes и lpThreadAttributes – указатели на структуры атрибутов защиты процесса и потока. (по умолчанию NULL); bInheritHandles – наследует ли новый процесс открытые дескрипторы из вызывающего процесса; dwCreationFlags – задает одно или несколько флаговых значений: CREATE_SESPENDED – основной поток будет создан в приостановленном состоянии; SETEXHED_PROCESSиCREATE_NEW_CONSOLE – взаимоисключающие значения – создание процесса у которого отсутствует консоль или будет своя консоль соответственно.

lpENVIRONMENT – блок параметров настройки окружения нового процесса. Значение по умолчанию – NULL(окружение родительского процесса). lpCurrentDirectory – указатель на строку, содержащую путь к текущему каталогу процесса. lpStartupInfo – указатель на структуру, которая описывает внешний вид основного окна и содержит дескрипторы стандартных устройств нового процесса.

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

6. Состояние процессов

Работающий (использующий процессор).

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

Заблокированный (не может быть запущен прежде, чем произойдет некое внешнее событие).

Переходы:

1. Процесс блокируется, ожидая входных данных. 2. Планировщик выбирает другой процесс. 3. Планировщик выбирает этот процесс. 4. Доступны входные данные.

Реализация процессов в ОС.

Для процессов необходимая информация хранится в таблицах процессов – массив структур, по одной на каждый существующий процесс. Они называются блоками управления процессами (PSB), - управляющий блок, дескриптор процесса. PSB содержит атрибуты процесса – ID, приоритет, состояние, размещение в памяти, состояние открытых файлов,

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

Элементы PSB:

PID, PPID, UID и GID (в Windows это Token), регистры доступные пользователю, Управляющие регистры (счетчик команд, коды условий, информация о CPU), указатели на стек, состояние процесса, приоритет, информация о планировании, информация о событиях, данные IPC, маркеры доступа, информация о расположении в памяти, данные управления ресурсами.

7. Ядра ОС. Варианты реализации.

Часть набора команд выполняется в привелигерованном режиме (чтение управляющих регистров, команды I/O, команды связанные с упралением памятью.)

С меньшими привелегиями – пользовател. (выполняются пользовательские программы). С более высокими привелегиями – режим ядра. Соответсвенно выделяют: -Пользовательские процессы, - код пользоваетльской программы, код ОС в режиме ядра. -Системыне процессы (выпольня.т код ОС, выделение памяти, свопинг). Автономное ядро Имеет свою область памяти, собственный системный стек, для управления вызовамми процедур. Код ОС - отдельный объект. В составе пользов. процессов: Все в режиме пользователя. В процессе часть области ядра. Стек ядра – отдельный для каждого процесса. Код и данные ОС в совместно используемом адресном пространстве и доступны для использования всеми пользовательскими процессами. Меньшее число переключений контекста. Пользовательский процесс переключается в режим ядра при вызове системной функции, генерации исключения или прерывании. ОС на основе процессов: Выполняются в режиме ядра, но реализованы как отдельные процессы. Микроядерные. В привилегиров. режиме работает микроядро. Большинство функций оформлено в виде пользователь. режима (сервера ОС). Микроядро передает запросы процессов-клиентов серверам ОС и возвращает результат их выполнения.

8. Функции и компоненты ядра ОС . Начало формы

Типичные функции ядра ОС:

-Управление процессами:

Создание и завершение,

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

Переключение процессов.

Синхронизация и поддержка обмена.

Организация PSB.

-Управление памятью.

Выделение адресного пространства.

Свопинг

Управление страницами и сегментами

-Управление I/O

Управление буферами

Выделение каналов и устройств I/O

-Функции поддержки

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

Учёт использования ресурсов

Текущий контроль системы.Конец формы

9. Объекты ядра: дескрипторы.

Объект –экземпляр определенного типа.

Тип объекта – общесистемный тип данных+функции оперирующие этим типом.

Структура обекта скрыта и доступна косвенно через вызовы WinAPI.

User(интерфейса – окна, курсоры), GDI (интерфейса – перья, кисти), Kernel (объекты).

Объекты ядра разделяются на – управляющие и объекты диспетчера.

Объекты:

- Процесс, поток, задание, раздел, файл, маркер доступа (хранит контекст защиты).

- событие, семафор, мьютекс, таймер, рабочий стол, мэйлслот.

Состоят из: Заголовок (имя, дескриптор защиты, счетчик открытых описателей, счетчик ссылок), Тело объекта.

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

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

Конец формы

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

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

Основное отличие процессов от потоков:

процессы – это контейнеры ресурсов,

потоки – это объекты, поочередно выполняющиеся на центральном процессоре.

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

Один однопоточный процесс: MS_DOS

Множество однопоточныхпроцесов: разновидности UNIX

Множество многопоточных процессов: OS/2, Linux, Solaris, Mach, WindowsNT.

Причины: Для сохранения отзывчивости к командам пользователя, вводу данных и управлению GUI; Для масштабирования производительности в многопроцессорных и многоядерных ЭВМ; Для работы приложения, во время приостановки при выполнении операции ввода/вывода.

12. Основные состояния потоков:

Состояние выполнения потока - выполняется процессором; готовности – может выполняться; блокировки (блокированных или спящих) – выполняет функцию ожидания не сигнализирующих объектов или объектов синхронизации, завершения операции I/O и т.д. Действия: Порождение; Блокир.; Разблокир.; Завершение. Выбор следующего потока по истечению кванта времени или Sleep (0). Для перевода потока в приостановленное состояние используется: SuspendThread (hThread); Для возобновления выполнения используется: ResumeThread (hThread); Sleep (dwMilliseconds); позволяет потоку перейти из выполнения в ожидание. По истечении периода ожидания - в готовности. Реализация потоков: В пространстве пользователя (ULT): P-Threads отPOSIX, C-Threads от Mach. На уровне ядра (KLT) : OS/2, Linux, Win NT. Смешанные(Solaris)

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

13. Планирование.

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

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

Дисциплина диспетчеризации (планирования) – правило формирования очереди (списка) готовых к выполнению процессов.

Виды планировщиков

  • Долгосрочный – выбирает набор процессов для эффективного использования ресурсов системы;

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

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

Ситуации планирования:

При прерывании от таймера; При прерывании I/O; Вызов ОС; При завершении или создании процесса; При блокировании процесса (семафором или I/O)

13. Начало формы

Конец формы

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

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

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

Принудительное применение политики.

Баланс – поддержка занятости всех частей системы. Для систем обработки данных

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

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

Для интерактивных: Время отклика - быстрота реакции на запросы пользователя;

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

14. Планирование в системах пакетной обработки данных

  1. 1. FCFS - «Первым пришел – первым обслужен» +: легко понять, легко программировать -: преимущество процессов, ориентир. на работу с процессором над ориентир. на I/O.

  2. «Кратчайшая задача – первая» (SPN, SJN)

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

  1. SRT - Вытесняющая версия алгоритма SPN.

Выбирает процесс с наименьшим оставшимся временем выполнения. При поступлении новой задачи вызывается перепланирование.

+: хорошее время отклика; -: низкая производительность длительных процессов; Планирование в интерактивных системах RR – циклическое (круговое или карусельное) +: минимальные накладные расходы; хорошее время отклика; беспристрастность к длине процессов; -: низкая пропускная способность при малом кванте времени; процесс, ограниченный I/O получает меньше времени. Каждому процессу предоставляется интервал времени – квант. VRR – наличие вспомогательной очереди, в которую переносятся процессы после окончания I/O с преимуществом над очередью готовых процессов. Приоритетное планирование - каждому процессу присваивается приоритет – значение, согласно которому планировщик должен выбирать тот, приоритет которого наибольший. Приоритеты: Статические (неизменяемые); Динамические (изменяемые во время выполнения).

15. Планирование в Windows

  • Единица планирования – поток;

  • Каждый поток имеет собственный приоритет;

  • Существует 32 приоритета: от 0 (min) до 32 (max). (0 приоритет имеет только 1 поток – поток обнуления страниц); все потоки с одинаковым приоритетом - равноправны;

  • ОС выделяет квант времени по алгоритм RRпотоку с наивысшим приоритетом;

  • Если готовых потоков с наивысшим приоритетом нет, то ОС выделяет квант времени потоку, следующему за наивысшим по приоритету (и т.д.);

  • Если более приоритетный поток переходит в состояние готовности, то ОС прекращает выполнение текущего потока и запускает на полный квант высокоприоритетный.

Приоритет любого потока определяется:

Классом приоритета его процесса; Уровнем приоритета потока внутри класса приоритета его процесса. Существует 6 классов приоритетов: IDLE_, BELOW_NORMAL_, NORMAL_, ABOVE_NORMAL_, HIGH_, REALTIME_PRIORITY_CLASS.

  • В рамках каждого класса есть следующие уровни: THREAD_PRIORITY_IDLE, _LOWEST, _BELOW_NORMAL, _NORMAL, _ABOVE_NORMAL, _HIGHEST, _TIME_CRITICAL

Для избегания голодания потоков ОС использует динамическое повышение приоритета. (только приоритетом от 0 до 15.) Основные причины динамического повышения: Для процесса, окно которого активно в данный момент. Когда окно получает ввод. Когда условие ожидания для заблокированного потока выполняется.

16. Состояние состязания. Взаимное исключение.

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

Способы: 1. Запрет прерываний. (Возможность краха ОС при сбое. Невозможно использовать в многопроцессорной системе)

2. Переменные блокировки. Свизано общая переменная со значение 0 (free) или 1. В общем случае проблема не решаема.

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

Постоянная проверка значения переменной – активное ожидание. А блокировка – спин-лок.

4. Алгоритм Деккера. Питерсона (1981). Кондитера (для n-процессов). 5. Команда TSL. Корректны, но используют активного ожидания, что может вызвать инверсию приоритета – блокировка высокоприортетнго процесса низкоприоритетным.

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

Примитивы (не используют акт. ожидание):

1. Sleep – блокирует вызывающий процесс, пока его не запустит другой.

wakeup – запрос, указывает процесс который следует запустить. (Используется актив. Бит)

2. Семафоры: Дейкстра (1961) – тип целочисл. переменных (0 либо положительное число).

Down – сравн. с 0, если больше, уменьш. на 1

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

3. Мьютексы. Два состояния: неблокированом (0) либо блокированом(ост.).

4. Мониторы – 73-74 Хоар и Хансен. – набор процедур, в один модуль. При обращении к монитору в любой момент может быть активен только один процесс.

5. Передача сообщений – send – посылает запрос, receive – получает сообщение от адресата, если сообщения нет, запрос блокируется или возвращает ошибку.

6. Барьеры – для групп процессов, блокирует до завершения последнего из группы.

18. Объекты синхрон. Критические секции.

Объекты синхронизации – объекты ядра Win. Могут находиться в сигнальном/несигнальном состоянии.

1. Для параллельных потоков: (Мьютексы, События, Семафор)

2. переходящий в сигнальное состояние по истечении времени (ожидающий таймер).

3. переходящие в сигнальное состояние по завершению: (Работа, процесс, поток)

4) переходящие в сигнальное состояние после получения сообщения об изменении содержимого объекта: Изменение состояния каталога, Консольный ввод.

Тип данных: pthread_mutex_t

pthread_mutex_init(), pthread_mutex_lock(),

pthread_mutex_unlock(),Семафоры: sem_init(), sem_wait(), sem_post(), sem_destroy().

Событием (event) называется оповещение о некотором выполненном действии.

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

События разделяют на: События с ручным сбросом, События с автоматическим сбросом.

Критические секции ; Не имеют дескрипторов и не могут разделяться процессами; При входе в критическую секцию блокируют поток, если в критической области уже есть другой поток. InitializeCriticalSection; EnterCriticalSection(); TryEnterCriticalSection(); LeaveCriticalSection();

Алгоритм использования CS: Выделить; Объявить; InitializeCriticalSection(); Разметить секции EnterCtiticalSection; LeaveCriticalSectio; Освободить ресурсы, DeleteCriticalSection();

19. Проблема тупиков.

Говорят, что поток находится в тупике (deadlock), если он ждет событие, которое никогда не произойдет.

Событие может никогда не произойти:

Не существует потока, который оповещает о наступлении; Поток, существует, но сам находится в тупике.

Если в тупике находится хотя бы один из потоков процесса, то считается, что этот процесс также находится в тупике.

Условия возникновения тупиков

Были сформулированы Коффманом, Элфиком и Шошани в 1970 г.:

Условие взаимоисключения. Одновременно использовать ресурс может только один процесс.

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

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

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

Направления борьбы с тупиками

Игнорирование проблемы в целом,

Предотвращение тупиков (тщательое распределение ресурсов, нарушение условий возникновения тупиков),

Обнаружение тупиков, Восстановление после тупиков (termination, preemption, rollback).

20. Классические проблемы IPC

Проблема взаимного исключения

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

Проблема читателей и писателей.

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

Проблема производителей и потребителей.

Дан буфер заранее фиксированного размера

Имеется один (или более) производитель, который помещает данные в буфер. Если буфер полностью заполняется – производители «засыпают». Имеется потребители, который считывает данные из буфера. При опустошении буфера потребители блокируются.

Проблема спящего брадобрея.

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

21. Межпроцессное взаимодействие (IPC) – пересылка данных от одного потока другому потоку разных процессов.

  • Поток, посылающий - отправителем.

  • Поток, который – адресатом или получателем.

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

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

  • Полудуплексная связь – данные могут передаваться только в одном направлении;

  • Дуплексная связь – данные могут передаваться в обоих направлениях.

Топология связей – конфигурация связей между процессам–отправителями и адресатами.

Обмен сообщениями: send – послать сообщение; receive – получить сообщение.

Виды адресации:

  • Прямая – явно указываются процессы отправитель и адресат;send (process P1, m);

  • Косвенная – указываются не адреса, а имя связи по которой передается сообщение.

send(connectionCon, m);

Набор правил, по которым устанавливаются связи и передаются данные - протокол.

При передаче данных различают:

  • Синхронный обмен данными – поток обратившись к функции send блокируется до получения сообщения получателем. Иначе – асинхронный обмен данными.

22. Механизмы IPC в Windows

  1. Сообщение WM_COPYDATA;

  2. Анонимные каналы (anonymous channels);

  3. Именованные каналы (named pipes);

  4. Почтовые ящики (mailslots); Файлы; Сокеты;

  5. Разделяемая память (shared memory);

  6. Буфер обмена (clipboard); Динамический обмен (DDE); COM/DOCM; Microsoft Message Queue (MSMQ); Удаленный вызов процедур (Remote Procedure Call, RPC).

Анонимные каналы - Объекты ядра ОС, обеспечивающие передачу, на одном компьютере. Основные характеристики:

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

Алг: Созд, соедин. кл.->сер, обмен, закрытие.

Именованный канал – объект ядра ОС, обеспечивает передачу данных в пределах одной локальной сети. Характеристики: Имеют имя, используемое клиентами для связи; М.б. как полудуплексные, так и дуплексные; Передача данными как потоком, так и сообщениями; Обмен данными как синхронный, так и асинхронный; Возможно моделирование любой топологии связей.

Алг: Созд., Соед. сер-> канал, Соед. кл-> канал,

Обмен, отсоедин. сер, закрытие канала.

Почтовый ящик – обеспечивает передачу сообщ. в пределах локальной сети.

Хар-ки: имеют имя, направление передачи данных от клиента к серверу, передача сообщениями, обмен данными асинхронный и синхронный.

Алг: Созд, соедин. кл.->сер, обмен, закрытие.

23. Управление памятью. – задача распределения памяти для размещения в ней нескольких процессов.Часть ОС – модуль управления памятью. Требования к стратегиям управления: Перемещение программы из одной области памяти в другую; Защита памяти процесса от других процессов; Возможность обращаться к одной области памяти нескольким процессам; Логическая – совмещение линейной организации памяти и модульности ПО; Физическая –взаимодейс первичной и вторичной памятью.

Фиксированное:

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

+Простота. Минимум требований к ОС. Накладные расходы процессов невелики

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

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

Алгоритм: Наилучший подходящий, Первый подходящий, Следующий подходящий.

+ Отсутствие внутренней фрагментации

Более эффективное использование основной памяти. - Неэффективное использование CPU из-за необходимости уплотнения.

24. Сегментация и страничная организация.

Логический адрес – представляет собой ссылку на ячейку памяти, не зависящую от текущего расположения данных в памяти. Относительный адрес – частный случай логического адреса, когда адрес определяется относительно точки. Физический адрес –действительное расположение ячейки памяти. Простая страничная. Память разделена блоки фиксированного размера – кадры. Процесс на одинаковые блоки, - страницы той же длины, что и кадры. Все страницы загружаются в кадры. Для каждого процесса поддерживается таблица страниц – системная структура, задающая расположение кадров каждой страницы. Трансляция: Выделить из логического n бит слева, получив номер страницы. Используя номер страницы как индекс в таблице страниц, найти номер кадра k. Начальный физический адрес кадра – k2^m; физический адрес=число + смещение. Такой адрес не надо вычислять – он в результате добавления номера кадра к смещению. +: Нет внешней фрагментации. -: наличие внутренней. Простая сегментная. Программа разделяется на ряд сегментов. Процесс загружается в динамические разделы. Для разрешения логического адреса используется таблица сегментов процесса. Таблица сегментов, в отличие от таблицы страниц, содержит не только адрес начала сегмента, но и его длину. Выделить nбитов слева, получив номер сегмента. Используя номер сегмента как индекс в таблице сегментов, найти физический адрес начала. физический = физ.адрес начала + смещения.

25. Виртуальная память

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

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

Ненужные блоки могут быть вытеснены во внешнюю память – в файлы страниц (pagefile) или в файлы подкачки (swapfile).

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

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

Особенности реализации управления памятью

  • Вид реализации: страничная адресация, сегментация или обе технологии;

  • Стратегия выборки;

  • Стратегия замещения;

  • Управление резидентным множеством;

  • Стратегия очистки.

26. Отображение файлов в памяти

Для этого используется объект ядра «раздел», который в WinAPIназывается объектом «проекция файла» (filemappingobject).

Этот механизм используется для загрузки DLL, создания разделяемой памяти и т.д.

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

  1. Откройте файл с нужными правами доступа (createFile)

  2. Создайте объект ядра отображение файла в память с помощью CreateFileMapping

  3. Отобразите файл или его часть в адресное пространство процесса MapViewOfFile;

  4. Выполните нужные действия;

  5. Отмените отображение файла UnmapViewOfFile;

  6. Закройте объект ядра;

  7. Закройте файл.

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

27. Управление устройствами

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

Аспекты, влияющие на построение ОС

  • Скорость передачи данных, Применение, Сложность управления, Единицы передачи данных, Представление данных, Условия ошибок

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

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

Устройства I/O можно разделить на

Механическую часть, Электронную часть

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

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

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

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

1. Каждому управляющему регистру назначается номер порта ввода-вывода (8- или 16-разр. целое число) (IBM 360, мэнфрм).

2. Все управляющие регистры периферийных устройств отображаются на адресное пространство памяти (Впервые в PDP-11).

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

Достоинства: Не требуется специальные команды CPU (IN, OUT), Не требуется специального механизма защиты от пользовательских процессов, Каждая команда процессора, применимая к памяти, может применяться к регистрам устройства.

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

3. Гибридная схема - Буферы устройств отображаются на адресное пространство памяти. Управляющим регистрам назначаются порты ввода вывода

Способы реализации ввода-вывода

Программируемый ввод-вывод (обмен с опросом готовности устройства I/O)

Ввод-вывод управляемый прерываниями

Прямой доступ к памяти.

29. Принципы ПО ввода-вывода

Универсальность: - независимость из устройств; - единообразное именование; - обработка ошибок; Эффективность: - поддержка синхронного (блокирующего) и асинхронного (управляемого прерываниями) способов переноса данных; - Буферизация; - поддержка выделенных и разделяемых устройств; Буферизация: Одинар, Двойная, Циклическая. Программные уровни ввода-вывода: ПО ввода-вывода уровня пользователя, Устройство – независимое ПО ОС, Драйверы устройств, Обработчики прерываний, АППАРАТУРА.

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

Драйвер – загружаемый модуль режима ядра, предназначенный для управления устройств. Образуют интерфейс между диспетчером I/O ядра и оборудованием. Формально: файл sys. Единственный способ добавления в систему кода уровня ядра. Код драйвера должен быть реентерабельным – поддерживать повторный вызов во время обработки первого вызова.

Аппаратных устройств; файловой системы; фильтра фс; Сетевые редиректоры и серверы; протоколов; потоковых фильтров ядра.

Модели: WDM (WindowsDriverModel) – поддерживают Plug and Play и управление электропитанием; WDF (Windows Driver Foundation) – KMDF (Kernel Mode Driver Framework) – 98/2000;UMDF (User Mode Driver Framework) – Vista. Виды: Одноуровневые (монолитные); Многоуровневые - Шинные драйверы; - Фильтр-драйверы; -Функциональные драйверы.

30. Файловые системы.

Файл – именованный набор данных, в виде совокупности записей одинаковой структуры.

Задачи ФС: Соответствие требованиям пользователя по хранению и выполнению операции над ними. Гарантирование корректности данных. Оптимизация производительности. Поддержка I/O для различных типов устройств. Минимизация потерь или повреждений. Обеспечение стандартизированного набора подпрограмм интерфейса. Обеспечение поддержки коллективного использования данных.

Том – часть, где можт быт множество файлов.

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

Структура файла: Неструктурированная последовательность байтов. Последовательность записей. Дерево записей.

Типы: Регулярные (ASCII, бинарные), каталоги, специальные (символьные, блочные).

Доступ: последовательный, произвольный.

Атрибуты: защита, создатель, флаги, длина, время, размер.

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

31. Устройство НЖМД.

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

1951 г. – UNIVAC 1 –накопители на магнитной ленте – последовательный доступ к данным. 1957 г. – IBM создала 1ый накопитель на жестком диске – RAMAC – устройство с произвольным доступом. 5мб, 50 000$

2010 – 3 Тб по 9 центов за 1 Гб.

Магнитные пластины (platters), Шпиндель (spindle), Консоль головок чтения-записи (diskarm), Привод блока головок (actuator), Головки чтения-записи (heads).

Структура диска – BIOS – MBR схема.

- UEFI – GPT – схема.

Совместно используемые файлы

Жесткая ссылка – запись в директории указывающая позицию файла в устройстве;

Мягкая ссылка (символьная ссылка в UNIX, ярлык в Windows, псевдоним в MacOS) –запись в директории, содержащая путь к файлу.

Монтирование – объединения множества файловых систем в общее пространство имен.

Команда монтирования назначает в родной ФС каталог – точку монтирования (mountpoint) –корневым каталогом монтируемой файловой системы. В ранних версиях Windows– структура монтирования была плоской (С:D: E: …) ФС UNIX, Win NTFS 5.0 – произвольная.

Управление свободным пространством

Битовые таблицы. Цепочки свободных порций. Индексирование. Список свободных блоков.

32. Надежность файловой системы

Резервные копии (Физическая архивация, Логическая арх., Инкрементная арх.) Непротиворечивость ФС. Журналирование.

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

При возникновении ошибки выполняется откат транзакции. После выполнения она фиксируется в файле протокола.

Журналируемая ФС выполняет все операции с файлами как протоколируемые транзакции.

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

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

5 уровней дисковых массивов: 0(разделение данных), 1 (зеркальное отобр.), 2 (побитовый контроль с коррекцией по Хеммингу), 3 (побитовый XOR–контроль и корр.), 4 (блочный XOR–контроль и корр.), 5 (блочный XOR–контроль и корр. с распределением).

33. Файловые системные вызовы.

Ввод-вывод:

  • Синхронный – поток, выполнивший операцию I/O блокируется, пока данные не будут записаны или прочитаны из буфера;

  • Асинхронный – поток не блокируется, а продолжает работу.

Файл должен быть открыт в режиме FILE_FLAG_OVERLAPPED;

Выполняется с помощью ReadFile и WriteFile, причем, если чтение или запись не завершились до выхода из функции возвращаетсяFALSE, (ERROR_IO_PENDING)

Определение момента завершения асинхронной операции I/O:

  • Переход дескриптора файла из несигнального в сигнальное по завершению I/O (если с файлом работает только одна операция асинхронного I/O);

  • Использование специального события в структуре типа OVERLAPPED.

34. Безопасность и механизмы защиты ОС

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

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

Аутентификация – установление подлинности.

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

Все ресурсы разбиваются на 2 категории:

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

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

Т.о., модель безопасности как система включает: Объекты; Наборы операций над объектами; Субъекты; Атрибуты защиты объектов (описывают права доступа субъектов к объектам).

35. Аутентификация и авторизация.

Методы аутентификации

- распознавание известного пользователю (пароль, PIN); - распознавание того, чем владеет пользователь (электронные карты,

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

Методы защиты паролей использование

-шифрования паролей; - использование «соли» (salt value); - разрешение на доступ к файлу паролей только через специальную процедуру.

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

Улучшенные варианты

Одноразовые пароли (схема Лесли Лампорта).

Система аутентификации «пароль-отзыв».

Аутентиф. с использованием физ. объекта

электронные карты; smart-карты (– содержат микропроцессор).

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

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

Биометрические параметры

Отпечатки пальцев, Рисунок сетчатки,

Анализ подписи , Измерение характеристик голоса и т.д.

36. Внутренние и внешние атаки на ОС.

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

Компьютерные вирусы. 1. механизм заражения; 2. триггер – событие активации; 3. нагрузка – то, что он делает. Фазы развития фаза покоя; фаза размножения –заражает; фаза запуска – срабатывает условие и загрузка; фаза выполнения.

Разновидности: 1. загрузочные – заражают MBR или BR и выполн, при загрузке с зараженного носителя; 2. компаньоны; 3. Зараж. исполн. файлы: перезаписыв; паразитич.; полостные; 4. резидентные; ­5. драйверов устройств; 6. макровирусы; 7. заражающие исходные тексты программ;

37. Механизмы защиты. Списки доступа.

Доступ осуществляется руководствуясь некоторыми правилами – политикой безопасности. Субъект реализующий политику - менеджер (монитор) безопасности. На основании п. б. строится модель безопасности включает: объекты; наборы операций; субъекты; атрибуты защиты объектов (описывают права доступа субъектов к объектам). Это основа для построения матрицы доступа. Одно измерение матрицы – идентификаторы субъектов, которым требуется получить доступ (пользователи, группы пользователей, узлы). Второе измерение – список объектов. В каждом элементе указаны права доступа данного субъекта к данному объекту (R–READ W–WRITE X–EXECUTE, C – CONTROL, CP – CONTROL _WITH_ PASSING_ABILITY). В виду разреженности матрицы она применяется на практике редко. Разложение матрицы по столбцам – списки контроля доступа (ACL);

разложение матрицы по строкам – мандаты возможностей. Т.к. субъекты могут передавать права управления другим субъектам, то должны быть определены правила, которым подчиняются субъекты при передаче прав. Набор таких правил определяет модель управления в дискреционной модели безопасности. Существуют 4 модели управления, которые могут использоваться в дискреционной модели безопасности: иерархическое управление; управление правами доступа владельцем объекта; либеральное управление; централизованное управление.

38. Криптографическая защита.

Кpиптология: кpиптогpафия + кpиптоанализ. Использования: пеpедача конфиденциальной инфоpмации, установление подлинности пеpедаваемых сообщений, хpанение инф.в зашифpованном виде. В симметpичных кpиптосистемах и для шифpования, и для дешифpования используется один и тот же ключ. В системах с откpытым ключом два ключа - откpытый и закpытый, связаные дpуг с дpугом. Шифpуется с откpытого ключа, а pасшифpовывается с закpытого ключа. Электpонная подпись - пpисоединяемое к тексту его пpеобpазование, котоpое позволяет пpи получении пpовеpить подлинность. Показатели кpиптстойксти: количество возможных ключей; сpеднее вpемя кpиптоанализа. Требования: поддаваться чтению пpи наличии ключа; число опеpаций, для опpеделения ключа шифpования должно быть не меньше общего числа возможных ключей; число опеpаций, необходимых для пеpебоpа всевозможных ключей должно иметь стpогую нижнюю оценку и выходить за пpеделы возможностей компьютеpов; знание алгоpитма не должно влиять на надежность защиты; незначителное изменение пpиводит к изменению вида зашифp.сообщения даже с одного и того же ключа; элементы алгоpитма должны быть неизменными; дополнительные биты надежно скpыты; длина шифpованного текста pавна исходного; нет зависимстей между ключами; ключ должен обеспечивать надежную защиту; алгоpитм как пpогpамную, так и аппаpатную, пpи этом изменение ключа не должно вести к ухудшению алгоpитма.

39. Модель безопасности в Windows

Реализована дискреционная модель. В качестве субъектов рассматриваются процессы и потоки, каждый работает от имени пользователя. При входе создается маркер доступа (идентифицирует и содержит привилегии). Каждый процесс имеет маркер доступа этого польз. Маркер для контроля доступа к охраняемым объектам (все объекты Win, которые могут иметь имя, потоки и процессы). Охраняемый объект имеет дескриптор безопасности (SD), создаваемый вместе с объектом и содержит информацию, необх. для защиты. Cистема сверяет информацию о пользователе, заданную в маркере доступа с информацией в дескрипторе безопасности. Если в SD указано, что пользователю разрешен доступ к объекту, то процесс получает требуемый доступ. Для хранения, разрешен или запрещен доступ к охраняемым объектам SD содержит список управления дискреционным доступом (DACL). В SD список управления системным доступом (SACL). Общее название– списки управления доступом (ACL). Для учетной записи создается идентификатор безопасности (SID), хранится в реестре в базе данных менеджера учетных записей SAM. SID - используется системой безопасности для идент. учетных записей. S–R–I–SA0–… R – версия SID. I - 48-б, уровень авторизации; SA– 32б, уточняет уровень авторизации. (относительным ID учетной записи). В случае пользователей и групп поле SA0 уточняет авторизацию, SA1- SA2- SA3 - уникальный 96-б идентификатор, SA4 – нумерует ID безопасности, внутри системы.

Глобальный идентификатор процесса (PID) – уникальное числовое значение характеризующее процесс;

Дескриптор процесса (HANDLE) – может существовать множественно с различными правами доступа к процессу.

Процесс может получить ID и дескриптор дочернего процесса из структуры PROCESS_INFORMATON. Для получения информации о текущем процессе служат две функции: HANDLE GetCurrentProcess (VOID);

DWORD GetCurrentProcessID(VOID); Дескриптор процесса на основе идентификатора (ID) процесса создается функцией: HANDLE OpenProcessAcces, Bool bInhritHandle,Dword dwProcessId);

Порождение и завершение потоков

Определение точки входа в поток:

DWORD WINAPI ThreadFunc (LPVOID lpThreadParam) { return 0;}

lpThreadParam – указатель на передаваемые в поток в качестве аргумента данные.

Создание потока: HANDLE CreateThread ();

В случае успеха CreateThread возвращает дескриптор созданного потока, иначе – NULL.

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

Исполнение потока завершается:

  1. Функция потока возвращает управление return (лучший вариант);

  2. Поток завершает свое выполнение с помощью ExitThread (не рекомендуется);

  3. Сторонний поток завершает текущий с помощью TerminateThread (не рекомендуется);

  4. Завершается процесс, запустивший данный поток (не рекомендуется).

Завершение текущего потока: ExitThread;

Принудительное завершение указанного потока: TerminateThread.

Получение кода возврата указанного потока:

GetExitCodeThread; GetCurrentThread – возвращает псевдодескриптор текущего потока; GetCurrentThreadId – возвращает идентификатор текущего потока;

GetThreadId – возвращает идентификатор потока по известному дескриптору;

OpenThread – создает дескриптор потока по известному идентификатору.

Современная реализация потоков в Linux базируется на библиотеке NativePOSIXThreadLibrary (NPTL), соответствующей стандарту POSIX.

Основные вызовы относящиеся к этой библиотеке описаны в заголовочном файле <pthread.h>

Основной тип, идентифицирующий поток - pthread_t

Точка входа в поток в Linux:

void* ThreadFunc (void* arg);

Создание:

#include <pthread.h>

Int pthread_create(pthread_t* thread_id

Const pthread_attr_t* attr,

void* (*start_fn) (void*),

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

Алгоритмы выбора замещаемой страницы: Оптимальный алгоритм, FIFO,LRU – вытесняется дольше всех не использующаяся;

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

Часовая стратегия. Сканируем буфер, начиная с текущего положения. В процессе сканирования бит использования не изменяется. Первый блок с состоянием (u=0, m=0) замещается. Если выполнение первого шага алгоритма не увенчалось успехом, ищем блок с параметрами {u=0, m=1}. Если найден – замещается. В процессе выполнения данного шага у всех просмотренных блоков сбрасывается бит использования. Повторяем шаги.

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

Управление резидентным множеством

Размер резидентного множества:

Фиксированный; Переменный;

Область видимости замещения:

Глобальная; Локальная;

Стратегии очистки:

По требованию; Предварительная;

Страничная организация виртуалной памяти

  • Все страницы процесса делятся на резидентные и нерезидентные (не загруженные в основную память);

  • Необходимые нерезидентные страницы автоматически подгружаются;

  • Поддерживаются страницы размером 4 Кб, 2 Мб, 1 Гб и от 1 до 4-х уровневые структуры для таблиц страниц.

Модификация таблиц страниц. Некоторые флаги PTE: P – присутствие страницы в основной памяти; R/W – разрешение на чтение/запись; U/S – владелец страницы; PCD – кэширование страницы отключено; A – была операция чтения из страницы; D – в страницу была произведена запись;

Страничная организация виртуальной памяти

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

Сегментация виртуальной памяти

  • Не требуется одновременно загружать все сегменты процесса;

  • Необходимые нерезидентные сегменты автоматически загружаются.

+: Нет внутренней фрагментации; Более высокая степень многозадачности; Большое виртуальное адресное пространство; Поддержка защиты и совместного использования.

-: Накладные расходы из-за сложной системы управления памятью.

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

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

Прямой доступ к памяти

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

Режимы работы DMA

  • Сквозной – контроллер приказывает устройству переслать данные напрямую в оперативную память

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

DMA

  • Модуль DMA, обладающий собственным процессором, выполняющим программу из основной памяти иногда называет каналом ввода-вывода

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

Дискреционная политика безопасности:

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

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

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

Три основных аспекта безопасности:

  • Природа угроз, природа злоумышленников,

  • случайная потеря данных.

Угрозы

Задача

Угроза

Конфиденциал.

Демонстрация

Целостность

Порча или подделка

Доступность

Отказ

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

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

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

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

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

- пpеобpазование должно быть необpатимым и исключать его восстановление откpытым ключом.

- опpеделение закpытого из откpытого должно быть невозможным.

При этом желательна точная нижняя оценка сложности (количества операций ) pаскpытия

шифра. Вообще же все предлагаемые сегодня

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

необратимых пpеобpазований:

разложение больших чисел на простые множители; вычисление логарифма в конечном поле; вычисление корней алгебраических уравнений.

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

для pаспpеделения ключей; аутентификации пользователей.

Дискреционная политика безопасности:

Для объекта определяется набор операций, кот. можно выполнять; Субъект может выполнить операцию, если он имеет право на её выполнение; Субъект, который имеет права на выполнение некоторых операции над объектом, может передать эти права другому субъекту. Без контроля менеджера безопасности – либеральная дискреционная политика; Только при наличии полномочии – строгая. Модель Белла-Ла Падулы (защищенности): Простое свойство секретности (Процесс, на любом уровне секретности, может читать только своего или более низкого уровня) Свойство *. (Процесс, на любом уровне секретности, может писать только в объекты своего или более высокого уровня секретности). Недостаток модели состоит в том, что она была разработана для хранения секретов, а не для обеспечения целостности данных. Модель целостности (Биба). Простой принцип. (Процесс, на любом уровне секретности, может писать только в своего или более низкого уровня). Свойство целостности*. (Процесс, на любом уровне секретности, может читать только объекты своего или более высокого уровня). Принципы проектирования систем безопасности 1. устройство системы не должно быть секретом. 2. по умолчанию доступ не должен предоставляться 3. необходимо проверять текущее состояние прав доступа 4. каждому процессу как можно меньше привилегий 5. механизм защиты должен быть простым, встроенным в нижние уровни системы 6. схема должна быть приемлемой.

SD содержит заголовок с флагами и указателями на: SID владельца; SID первичной группы владельца; указатели на DACL;SACL. Каждый ACL содержит входы управления доступом (ACE), кот.содержат: SID, которому разрешен/запрещен доступ; маску доступа, (специфицирует права доступа субъекта (специфические, стандартные, родовые) и SACL); флаг, типа ACE; флаги, наследования данного элемента ACE; флаги, аудита доступа к охраняемому объекту. Каждый ACE может быть: ACCESS_ALLOWED_ACE или _DENIED_ –разрешения/запрет на доступ. При определении разрешен или нет ОС извлекает из маркера доступа SID пользователя и сравнивает с хранящимися в DACL объекта ACE. Если такой ACE не найден субъект получает отказ. Иначе ОС проверяет тип элемента ACE и затребованный доступ.

При определении доступа система различает отсутствие DACL (доступ разрешен для всех) и пустой DACL (доступ запрещен для всех).

WinAPI, можно разделить на следующие категории: управление (создание записи, перечисление пользоват., получение информации); управление группами (создание, перечисление, добавление пользователей); работа с ACL на высоком уровне; работа с SID (создание, определение имени по SID и получение характеристик SID); работа с SD (создание, получение

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

Над объектами с помощью дескрипторов определены действия: - Закрытие описателя;

- Дублирование описателя; - Запрос объекта; - Запрос и установка защиты объекта;

- Ожидание одного или нескольких объектов.

Разделение объектов между процессами

Путем их наследования в момент создания процесса; За счет приема дублированного описателя от другого процесса; Путем именования объектов.

Наследование объектов

Объекты ядра могут быть:

- наследуемыми; - ненаследуемыми.

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

Свойства наследования объекта определяется его дескриптором, который также может быть наследуемым или ненаследуемым.

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

2 Передать сам объект дочернему процессу, создаваемому CreateProcess.

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

Облегченные потоки (fibers)

Fibers выполняются в контексте потока и управляются приложением (ULT).

ConvertThreadToFiber; CreateFiber; GetFiberData; GetCurrentFiber; SwitchToFiber;

DeleteFiber; ConvertFiberToThread.

Плюсы использования потоков

  1. Создание нового потока в уже существующем процессе занимает намного меньше времени, чем создание совершенно нового процесса.

  2. Поток можно завершить намного быстрее, чем процесс.

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

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

Плюсы использования потоков применительно к программированию

  • Одновременная работа в приоритетном и фоновом режимах

  • Асинхронная обработка

  • Высокая скорость выполнения

  • Модульная структура программы

Недостатки потоков

  • Потоки существенно усложняют программную модель

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

  • Усложняется обработка ошибок

  • Проблема с переполнением стеков

Виртуальная память в Windows

Используется страничная организация виртуальной памяти.

Управлением памятью занимается менеджер виртуальной памяти VMM.

Состояние страниц реальной памяти:

Valid–используется процессом;

Modified – записывается на диск;

Standby – удаляется из рабочего множества;

Free – освобождена, но не обнулена;

Zeroed–обнулена, может использоваться;

Bad–в нерабочем состоянии.

Виртуальная память в Widows

На основе флагов PTE каждой странице назначается доступ:

  • PAGE_NOACCESS – доступ запрещен;

  • PAGE_READONLY – доступ только на чтение;

  • PAGE_READWRITE – доступ на чтение и запись в страницу;

  • PAGE_EXECUTE – разрешено выполнение;

  • PAGE_GUARD – исключение.

При замещении страниц используется алгоритм LRU локально.

Виртуальное адресное пространство процесса 4 Гб делится на 2 части: 2:2 или 3:1

Страницы виртуальной памяти могут быть:

  • Свободны (free);

  • Распределены для использования (committed);

  • Зарезервированы процессом, но не использоваться (reserved);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]