
- •Классификация ос по назначению:
- •Монолитная структура ос.
- •Переносимость ос может быть достигнута при соблюдении:
- •Процесс – отдельная программа в момент ее выполнения, а также выделенные ей ресурсы.
- •Описание процессов.
- •Создание процесса.
- •Сигнал в ос unix — это асинхронное уведомление процесса о каком-либо событии.
- •Поток — это независимо планируемый контекст выполнения, разделяющий единое адресное пространство с другими потоками своего процесса.
- •Два процесса называются параллельными, если их выполнение может перекрываться во времени.
- •Аппаратные способы достижения взаимного исключения.
- •Семафор – специальная переменная, имеющая целое значение и связанную с ним очередь
- •Классические проблемы межпроцессорного взаимодействия.
- •Планирование – обеспечение поочередного доступа процессов к одному процессору.
- •Фиксированное распределение памяти.
- •Система двойников.
- •Алгоритмы управления виртуальной памятью.
- •Цели и задачи файловой системы.
- •Устройство диска.
- •Атрибуты файлов.
- •Переменные окружения (переменные среды) используются для настройки многих ос. Они задаются в реестре Windows и программным обеспечением.
Сигнал в ос unix — это асинхронное уведомление процесса о каком-либо событии.
Функции сигналов:
оповещение процессов о возникновении системных событий;
обеспечение механизма для коммуникации и синхронизации между прикладными процессами.
Сигналы дают возможность вызвать специальную функцию — обработчик сигнала при возникновении определенного события. После обработки сигнала таким обработчиком основная программа продолжает работу с того места, в котором она была прервана поступлением сигнала.
Процесс оповещения о событии состоит из двух этапов — генерации сигнала и обработки сигнала.
При наступлении события, связанного с каким-либо сигналом, ядро ОС генерирует этот сигнал путем установки соответствующего бита в маске ожидающих сигналов в управляющем блоке процесса. При этом процесс может получить сигнал лишь в определенные моменты времени:
при выборке процесса диспетчером на выполнение из очереди готовых;
перед блокировкой или после блокировки;
во время некоторых блокировок.
Независимо от источника сигнала все сигналы процессу доставляет ядро ОС.
Поток — это независимо планируемый контекст выполнения, разделяющий единое адресное пространство с другими потоками своего процесса.
Многопоточность - исполнение нескольких потоков в одном процессе.
Основные операции с потоками:
Создание нового потока: функции pthread_create — в UNIX, CreateThread—в Windows.
Основным параметром этих функций является имя процедуры, которую необходимо запустить в новом потоке. В Windows также предусмотрена функция CreateRemoteThread, позволяющая создать поток в другом процессе.
Прекращение работы процесса. Завершить поток можно изнутри самого этого потока функцией pthread_exit в UNIX или ExitThread — в Windows. После этого поток исчезает и уже не рассматривается планировщиком. Завершить поток можно также из другого потока при помощи функции pthread_cancel в UNIX или TerminateThread — в Windows.
Ожидание потоком завершения другого определенного потока. Выполняется при помощи функции pthread_join в UNIX или WaitForSingleObject и WaitForMultipleObject—в Windows. Поток может добровольно уступить свою очередь другому потоку при помощи функций pthread_yield в UNIX или SwitchToThread и SuspendThread — в Windows.
Ресурс – любой объект, который может запрашиваться и ожидаться процессом, может состоять из любого количества идентичных единиц и процесс может запрашивать любое количество единиц ресурса.
Категории ресурсов.
Повторно используемые – не истощаются при использовании. Имеют фиксированное количество единиц.
Расходуемые – нельзя забрать у процесса без потери данных.
Режимы доступа к ресурсу.
Монопольный – доступ к ресурсу в каждый момент времени может получить только один процесс
Разделяемый – доступ к ресурсу одновременно может получить любое количество процессов
Ресурсные взаимоблокировки – ни один процесс не может работать, ни один не может высвободить какой-либо ресурс, ни один не может возобновить работу.
Взаимоблокировка – блокировка группы процессов ожидающих событие, которое никогда не сможет наступить т.к. данное событие может выбрать только другой процесс из той же группы.
Условия возникновения взаимоблокировок.
Взаимные исключения – одновременно использовать ресурс может только один процесс
Удержание и ожидание – процесс может удерживать выделенные ресурсы во время ожидания других ресурсов
Отсутствие перераспределения – ресурс не может быть принудительно отобран у удерживающего его процесса
Циклическое ожидание – существует замкнутая цепь процессов, каждый из которых удерживает как минимум один ресурс необходимый процессу, следующему в цепи после данного процесса
Предупреждение взаимоблокировок
Пренебрежение проблемой в целом
Обнаружение и устранение
Динамическое избегание тупиков
Предотвращение одного из четырех условий, необходимых для взаимоблокировок