Билет №46 2. Модели процессов и потоков. Управление процессами и потоками. Основные функции управления и их содержание

1. Аутентификация с использованием одноразового пароля. Алгоритм Лесли Лампорта

Аутентификация (authentication) предотвращает доступ к сети нежелательных лиц и разрешает вход для легальных пользователей. Термин «аутентификация» в переводе с латинского означает «установление подлинности».

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

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

Алгоритм Лапорта основан на необратимой функции y=f(x), обладающей тем свойством, что по заданному x легко найти y, а вот наоборот (по y найти x) невозможно.

Вход и выход должны иметь одинаковую длину, например 128 бит.

1.Пользователь выбирает секретный пароль S и число n – сколько раз будет сгенерирован одноразовый пароль.

Для удобства рассмотрим маленькое значение n=4

2. Тогда первый пароль получается с ипользованием необратимой функции f(x) n раз:

Р1 = f (f (f (f (x))))

3. Второй, если применить функцию n-1 раз и т.д.

P2 = f (f(f(x)))

Таким образом, Pi-1 = f (Pi)

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

Сервер инициализируется числом Р0 = f (P1). Это значение хранится в файле вместе с именем пользователя и числом 1. Машина пользователя отвечает числам Р1, вычисляемым локально из S.

Затем сервер вычисляет f(P1) и сравнивает с Р0, хранящемся в файле. При следующем входе в систему пользователю посылается число 2, а машина пользователя вычисляет число Р2. А затем сервер вычисляет Р2, если значения совпадают регистрация завершается: число увеличивается на единицу, а в Р2 записывается поверх Р1.

2. Модели процессов и потоков. Управление процессами и потоками. Основные функции управления и их содержание

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

1. их созданием и уничтожением;

2. поддерживает изоляцию и взаимодействие между ними;

3. распределяет ресурсы системы между несколькими одновременно существующими в системе процессами и потоками.

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

Информационные структуры для управления процессами

1. Блок управления процессом (дескриптор)

2. Контекст процесса

Дескрипторы объединяются в таблицу процессов, которая хранится области ядра. На ее основании ОС осуществляет планирование и синхронизацию процессов.

В дескрипторе хранится информация необходимая ядру в течение всего ЖЦ процесса информация:

o по идентификации процесса

o по состоянию процесса

o используемая при управлении процессом

Информация по состоянию и управлению процессом:

• состояние готовности процесса

• приоритет

• инф-я о событиях и т.п.

Контекст процесса – информация, позволяющая система приостанавливать и возобновлять выполнения процесса с прерванного места

• Содержимое регистров процессора, доступных пользователю (обычно 8 – 32 регистра и до 100 регистров в RISC – процессорах);

• Содержимое счетчика команд;

• Состояние управляющих регистров и регистров состояния;

• Коды условия, отражающие результат выполнения последней арифметической или логической операции (например, равенство нулю, переполнение);

САМУЮ ПРОСТУЮ МОДЕЛЬ ПРОЦЕССА можно построить исходя из того что возможны 2 состояния: выполняется/не выполняется

Однако в реальности удобнее другая модель:

ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

ОЖИДАНИЕ - пассивное состояние процесса, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса;

ГОТОВНОСТЬ - также пассивное состояние процесса, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса.

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

В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и ГОТОВНОСТЬ - несколько процессов, эти процессы образуют очереди соответственно ожидающих и готовых процессов.

Потоки и их модели.

Описатель потока (идентификатор потока, приоритет и т.п.)

1) атрибуты блока управления

2) контекст потока (равления потоком и контекст потока (в многопоточной системе процессы контекстов не имеют).

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

1) в пространстве пользователя (user - level threads – ULT);

2) в ядре (kernel – level threads – KLT).

ДОСТОИНСТВА:

 можно реализовать в ОС, не поддерживающей потоки без каких-либо изменений в ОС;

 высокая производительность, поскольку процессу не нужно переключаться в режим ядра и обратно;

 ядро о потоках ничего не знает и управляет однопоточными процессами;

 имеется возможность использования любых алгоритмов планирования потоков с учетом их специфики;

 управление потоками возлагается на программу пользователя.

НЕДОСТАТКИ:

 системный вызов блокирует не только работающий поток, но и все потоки того процесса, к которому он относится;

 приложение не может работать в многопроцессорном режиме, так как ядро закрепляет за каждым процессом только один процессор;

 при запуске одного потока ни один другой поток а рамках одного процесса не будет запущен пока первый добровольно не отдаст процессор;

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

ДОСТОИНСТВА:

 возможно планирование работы нескольких потоков одного и того же процесса на нескольких процессорах;

 реализуется мультипрограммирование в рамках всех процессов (в том числе одного);

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

 процедуры ядра могут быть многопоточными.

НЕДОСТАТКИ:

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

Смешанная реализация.

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

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

Задача

Чтобы не было потерь данных: (2*1024)/скорость_модема=5+1.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: