Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspect.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
111.62 Кб
Скачать

Синицын дмитрий юрьевич. СПО.

ВВЕДЕНИЕ В СПО.

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

структура: пользователь---прикладное ПО---сист ПО---ОС---Аппаратура.

Фукнции ос:

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

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

ОС - это система безопасности данных ресурсов и процессов.

ОС- это постоянно функционирующее ядро взаимодействующее со всеми прогами и ресурсами компьютера.

0-ой период: 1945-1955:Фортран и ассемблер.

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

2 период:60ые-1980.Компьютеры на основе интегральных микросхем. Первые многозадачные ОС.

Особенности:

1) Реализация защитных механизмов для предоставления ресурсов.

2) Наличие прерываний.

3) Развитие параллелилизма в архитектуре.

Функции:

1)Организация интерфейса между программами.

2)Организация очередей из заданий с последующим переключением с одного задания на другое.

3)Организация стратегии управления памятью.

4)Организация хранения информации во внешних носителях.

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

АРХИТЕКТУРНЫЕ ОСОБЕННОСТИ ОС

1) монолитное ядро:все компоненты системы являются составными частями одной большой программы.Ядро полностью хранится в оперативной памяти.Сборка ядра (компиляция осуществляется отдельно для каждого комп.)

2) Составное ядро.Иерархия следющего вида:интерфейс пользователя---управление ВВ---Диспетчер устройства---Управление памятью---Планировщик задач---Апп. обеспечение.

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

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

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

Достоинства: простота отладки, простота добавления новых компонентов, повышение надежности системы(ошибка на непривеллигированном уровне менее опасна, чем на уровне ядра.)

Недостатки: дополнительные накладные расходы на передачу сообщенией между компонентами.

Основные понятия ОС:

процесс - некоторая совокупность набора исполняемых команд и связанных с ним ресурсов (адресное пространство, стеки, файлы, устройства ввода вывода)

состояние процесса: start->ready->run->finish-

|______|

все процессы в системе создаются другими процессами называемыми родительскими. Создание процесса происходит с помощю спецального системного вызова. В качестве аргументов этому системному выводу указывается полное имя запускаемого процесса, приоритет, размер выделяемой памяти и входные данные. Системный вызов носит все данные о процессе в ячейку спец системной таблицы: PCB(процесс контрол блок или блок управления процессом) данные из этой ячейки условно разделяются на 3 группы:

###

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

2) Управление памятью: указатели на сегмент кода данных стека.

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

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

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

1) состояние готовности. Причины: закончился отведенный квант времени, или запущен более приоритетный процесс

2) состояние завершения: закончилось время выполнения процесса.

3) переход в состояние блокировки: для продолжения выполнения процесса надо какое то событие. Как только событие происходит процесс перехоодит в состояние готовности.

Варианты завершение процесса:

1) обычный выход: по окончанию всех действий

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

3) выход по неисправимой ошибке. (падение системы)

4) уничтожение другим процессом:(вирус)

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

ПОТОКИ

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

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

###

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

###

1:...

Func1 ()

{

func2();

{

}

}

Во фрейме находиться локальная переменная процедуры и адрес возврата. В многопоточном режиме процессы запускаются с оним потоком. Этот поток может создавать новые потоки вызываю процедуру thread_create . Параметром является имя процедуры, которую необходимо запустить в отдельном потоке. Чаще всего приоритеты и отношения родительский-дочерний поток отсутствуют и все потоки считаются равнозначными. Поток завершается вызовом процедуры thread_exit. 1 поток может ожидать завершения какого-либо определенного потока. Для этого используется процедура thread_wait. Процедура thread_yield преднозначена для добровольного уступления очереди одного потока другому. Важность этой функции состоит в том, что в случае потока несуществует прерывания по таймингу, следовательно невозможно установить режим разделения времени как это было в случае процесса. Основное достоинство потока: легкость создания и уничтожения потоков, скорость создания уничтожения потоков. Недостатки: существенно усложняется програмная модель за счет необходимости разработки защиты и алгоритмов планирования.

Реализация потоков в простренстве пользователя

###

рализация потоков в пространстве пользователя состоит в размещении всего пакета внутри процесса. При этом ядро опотоках ничего не знает и управляет обычными однопоточными процессами. Основное приемущество этой системы состоит в том что потоки можно реализовать даже в системе не поддерживающей потоки. Раелизация такой системы состоит в разработке системы поддержки исполнения программы для каждого многопоточного процесса. В ней реализуются прроцедуры управления потоками, а также табалицы потоков. Таблица потоков необходима для отслеживания потоков в процессе работы. Она похожа на таблицу процессов но отслеживает только характеристики потоков. Счетчик команд, регистры, указатель стека. Для переключения между потоком вызыввается спецальная процедура, которая сохраняет контекст потоков в таблицу и ищет в ней готовый к запуску другой поток. Работа нового потока сразу после переключения счетчика команд или указателя стека. Если у процессора имеется команда позволяющая за 1 инструкции сохранить все регистры и за 1 инструкцию загрузить их, то переключение произойдет значительно быстрее, чем переключение в режим ядра и переключение потоков в нем. Кроме этого процедуру переключения можно включить в состав других управляющих процедур, что еще более ускорит работу программы так как не придется переключаться между разными процедурами.

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

Варианты решения:

1) можно сделать все системные запросы неблокирующими. Но это потребует неприемлемых изменений операционной системы.

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

If (select (read(kbd)))

thread_yield ()

else

read(kbd)

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

Реализация потоков в ядре:

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

Смешанная реализация потоков.

Ядро знает только опотоках своего уровня и управляет ими. Потоки пользовательского уровня управляются потоками уровня ядра достоинства и недостатки: зависит от конкретной реализации данного ядра.

Процессное взаимодействие.

3 проблемы:

1) предача информации от 1 процесса к другому.

2) контроль над деятельностью процессов.

3) согласование действий процессов.

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

1) 2 процесса не должны одновременно находиться в критических областях.

2) в проге не должно быть предположение по скорости или колличеству процессов.

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

4) невозможна ситуация в которой процесс вечно ждет попадания в критическую область.

Взаимное исключение с активным ожиданием.

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

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

Достоинства: исключается передача процессора другому процессу.

Недостатки: может привести к краху ОС.

2) в многопроцессорной системе запрет действует только на 1 процессор.

Переменная блокировка.

Используется переменная блокировки изначально равная 0. Если процесс хочет попасть в критическую область он считывает эту переменную и если она равна 0 то изменяет ее на 1 и попадает в критическую область. Если она равна 1 то ждет смены значения этой переменной на 0.

While (n);

n=1;

goto_crit();

недостанок простоя : пустая трата процессорного времени.

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

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