
- •1. Назначение и функции операционных систем. Принципы построения операционных, систем.
- •3. Принципы управления памятью. Распределение памяти. Организация виртуальной памяти.
- •4. Назначение и функции файловой системы. Организация данных на носителе.
- •Основные функции подсистемы управления вводом-выводом. Способы организации обмена данными. Управление обменом. Буферизация.
- •6. Процессы в ос unix. Типы процессов. Атрибуты процессов. Планирование выполнения процессов в ос unix. Таймеры. Порождение и завершение процессов в ос unix.
- •7.Организация взаимодействия процессов в ос unix
- •8. Файловая система в ос unix. Дескрипторы и атрибуты файлов в ос unix.
- •9 Архитектура виртуальной файловой системы. Монтирование и доступ к файловым системам.
1. Назначение и функции операционных систем. Принципы построения операционных, систем.
Операционная система - совокупность программных средств, обеспечивающих управление аппаратными ресурсами вычислительной системы и взаимодействием программных процессов с аппаратурой, другими процессами и пользователем.
Функции операционных систем.
1. Обеспечение интерфейса пользователя.
2. Управление вычислительными процессами.
3. Управление хранением данных.
4. Управление вводом и выводом информации.
5. Обеспечение пользователей средствами разработки программ.
6. Сервисное обслуживание - тестово-диагностические программы и т.п.
Типы ОС
Принципы построения операционных систем.
1. Принцип модульности.
Под модулем в общем случае понимают функционально законченный элемент системы, выполненный в соответствии с принятыми межмодульными интерфейсами. По своему определению модуль предполагает возможность без труда заменить его на другой при наличии заданных интерфейсов. Модули строятся по функциональному принципу, особую роль играет возможность многократного вызова одного и того же модуля.
2. Принцип функциональной избирательности.
В операционной системе выделяется некоторая часть важных модулей, которые должны постоянно находиться в оперативной памяти для более эффективной организации вычислительного процесса. Эту часть называют ядром, ядро явл-ся резидентным. Помимо программных модулей, входящих в состав ядра, может быть много других системных программных модулей, которые получают название подгружаемые (транзитные). Они загружаются в оперативную память только при необходимости и в случае отсутствия свободного пространства могут быть замещены другими транзитными модулями.
3. Принцип генерируемости. ОС должна иметь возможность настраиваться на определенную конфигурацию аппаратуры. Эта процедура проводится обычно при установке.
4. Принцип функциональной избыточности.(ф-ции могут выполняться разными способами)
Этот принцип учитывает возможность проведения одной и той же работы различными средствами.
5. Принцип умолчания.Некоторые параметры операционной системы могут устанавливаться по умолчанию.
6. Принцип (мобильности) переносимости.Операционная системы относительно легко должна переноситься с аппаратной платформы одного типа на аппаратную платформу другого типа.
7. Принцип обеспечения безопасности вычислений.
а) защита операционной системы от прикладных программ;
б) защита прикладных процессов друг от друга;
в) защита данных от несанкционированного доступа.
8. Принцип открытой и наращиваемой операционной системы.
Открытая операционная система доступна для анализа, как пользователям, так и системным специалистам, обслуживающим вычислительную систему. Наращиваемая операционная система позволяет не только использовать возможности генерации, но и вводить в ее состав новые модули, совершенствовать существующие и т.д.
9) частотный принцип (учитывает наиболее часто выполняемые действия и для них создает наиболее благоприятный режим)
2. Понятие и состояния процесса. Свойства процессов. Долгосрочное и краткосрочное планирование процессов. Дисциплины формирования очередей и дисциплины обслуживания. Приоритеты. Типовые задачи синхронизации параллельных процессов. Тупики.
«Вычислительный процесс» (или просто «процесс») -это некоторая система действий, реализующая какую-либо функцию и рассматриваемая ОС как некая единица работы. Отождествляется с выполнением программы. Процесс имеет собственное адресное пространство. Процесс проходит во времени через разные фазы. Это связано с изменениями в состояниях процесса.
Порождение - подготовка к исполнению процесса (создание виртуальной машины).
Готовность - процесс получил все ресурсы для исполнения, ожидает выделение ему времени центрального процессора.
Активность - исполнение процесса на процессоре.
Ожидание - ожидание выделения некоторых ресурсов.
Завершение - окончание процесса (нормальное или аварийное) – уничтожение виртуальной машины.
При порождении требуется выделение всех необходимых ресурсов. Из состояния готовности процесс может перейти в состояние ожидания или завершения.
● внутренние и внешние
● С точки зрения операционной системы процессы могут быть системными и пользовательскими.
● По генетическому признаку - порожденные (дочерние) и порождаемые (родительские).
● По динамическому признаку - последовательные, параллельные и комбинированные (процессы, в которых существу ют точки, где возможно существование одного параллельного процесса и невозможно существование другого).
● По связности - процессы изолированные, т.е. полностью независимые друг от друга; информационно независимые (не зависимые по данным, но используют некие общие ресурсы); взаимодействующие (имеют информационные связи между собой); конкурирующие (имеют и информационные связи и используют одни и те же ресурсы).
На каждый процесс заводится специальная структура – дескриптор процесса. Он содержит PID, таблицу адресов памяти процесса, приоритет процесса, текущее состояние процесса, информацию о событиях, связанных с этим процессом, контекст процесса (состояние регистра). Дескрипторы обычно постоянно располагаются в ОП, организуются в очереди, перемещаются из одной очереди в другую при изменении состояния процесса.
Долгосрочное и краткосрочное планирование процессов.
Основным подходом к организации того или иного метода управления процессами, обеспечивающего эффективную загрузку ресурсов или выполнение каких-либо иных целей, является организация очередей процессов и ресурсов.
Возникает задача подбора такого множества процессов, что при выполнении они будут как можно реже конфликтовать из-за имеющихся в системе ресурсов. Такая задача называется планированием вычислительных процессов.
Все управление процессами строится по двухуровневому принципу:
1. Уровень долгосрочного планирования - управление на уровне задания и задачи.
2. Уровень краткосрочного планирования - поддержка процесса в его основных фазах.
При долгосрочном планировании решается, какой из процессов, находящихся во входной очереди, должен быть переведен в очередь готовых процессов в случае освобождения ресурсов памяти. При этом выбираются процессы из входной очереди с целью создания неоднородной мультипрограммной смеси. Это означает, что в очереди готовых к выполнению процессов должны находиться - в разной пропорции - как процессы, ориентированные на ввод/вывод, так и процессы, ориентированные преимущественно на работу с центральным процессором.
Долгосрочное планирование связано с созданием виртуальной машины и дескрипторов процессов (информация о идентификаторе процесса, о ресурсах, которые затребованы или используются процессом, о состоянии процесса, включая фиксацию текущего, условия перехода к следующему состоянию, ссылки на области памяти, о родственных связях процесса, учетная информация, связанная с этим процессом).
При краткосрочном планировании решается, какая из задач, находящихся в очереди готовых к выполнению, должна быть передана на исполнение.
В большинстве современных операционных систем долгосрочное планирование отсутствует. Стратегия планирования определяет, какие процессы мы планируем на выполнение для того, чтобы достичь поставленной цели. Можно выделить следующие основные стратегии:
1. по возможности заканчивать вычисления (вычислительные процессы) в том же самом порядке, в котором они были начаты;
2. отдавать предпочтение более коротким процессам;
3. предоставлять всем пользователям (процессам пользователей) одинаковые услуги, в том числе и одинаковое время ожидания.
Дисциплины формирования очередей и дисциплины обслуживания. Приоритеты.
Известно большое количество правил (дисциплин диспетчеризации), в соответствии с которыми формируется список (очередь) готовых к выполнению задач. Различают два больших класса дисциплин обслуживания - бесприоритетные и приоритетные.
При бесприоритетном обслуживании выбор задачи производится в некотором заранее установленном порядке без учета их относительной важности и времени обслуживания.
При реализации приоритетных дисциплин обслуживания отдельным задачам предоставляется преимущественное право попасть в состояние исполнения. Приоритет может являться величиной постоянной, а может изменяться в процессе обслуживания процесса.
Диспетчеризация без перераспределения процессорного времени, то есть не вытесняющая многозадачность - это такой способ диспетчеризации процессов, при котором активный процесс выполняется до тех пор, пока он сам не отдаст управлению диспетчеру задач для выбора из очереди другого процесса.
Диспетчеризация с перераспределением процессорного времени между задачами, то есть вытесняющая многозадачность - это такой способ, при котором решение о переключении процессора с выполнения одного процесса на выполнение другого процесса принимается диспетчером задач, а не самой активной задачей.
К основным дисциплинам обслуживания относятся:
1.Бесприоритетная дисциплина FIFO (first in first out) - задачи обслуживаются «в порядке очереди», то есть в порядке их появления. Вновь приходящие задачи ставятся в конец очереди.
2.Бесприоритеная дисциплина LIFO (last in first out) – очередь организуется с помощью стековой структуры, сначала обслуживаются задачи, пришедшие последними. Вновь приходящие задачи ставятся в начало очереди.
3. Дисциплина обслуживания RR предполагает, что каждая задача получает процессорное время порциями (квантами). После окончания кванта времени задача снимается с процессора, и он передается следующей задаче. Снятая задача ставится в конец очереди задач готовых к выполнению.
4. Приоритетная дисциплина обслуживания с динамическим приоритетом. Сначала обслуживаются задач и имеющие более высокий приоритет. Приоритет может изменяться в зависимости от времени обслуживания или от времени ожидания процесса в очереди. Приоритеты могут быть относительными (после обслуживания одного процесса выбирается следующий с более высоким приоритетом) и абсолютными (если во время обслуживания одного процесса приходит процесс с более высоким приоритетом, то процесс с более высоким приоритетом вытесняет из обслуживания процесс с более низким приоритетом, который ставится в очередь и дообслуживается после).
Типовые задачи синхронизации параллельных процессов. Семафоры. Тупики.
Операционная система должна обеспечивать надежные механизмы синхронизации задач. Так как задачи разделяют данные (ресурсы) и должны сообщаться друг с другом, то должны существовать механизмы блокирования и коммуникации.
Задачи синхронизации.
Задача взаимного исключения – связана с использованием какого-либо ресурса без его разделения. Критический ресурс – такой ресурс, который не допускает одновременного использования несколькими процессами.
Критическая секция – фрагмент программы, который работает с монопольно выделенным критическим ресурсом. Такой механизм называется механизм взаимоисключения.
● одновременно внутри критической секции не должно находится более одного процесса
● ни один процесс не может находиться в критической секции бесконечно долго
● ни один процесс не должен бесконечно долго ждать входа в критическую секцию
● если процесс, находящийся в критической секции, остановлен или завершен, то режим взаимоисключения д.б.отменен.
2. Семафорные примитивы Дейкстры. Семафор - переменная специального типа, которая доступна параллельным процессам для проведения над ней только операций: «закрытия» и «открытия», названных соответственно Р- и V- операциями. Эти операции являются примитивами относительно семафора, который указывается в качестве параметра операций. Здесь семафор выполняет роль вспомогательного критического ресурса, так как операции Р и V неделимы в своем исполнении и взаимно исключают друг друга. Семафорный механизм работает по схеме, в которой сначала исследуется состояние критического ресурса, идентифицируемое значением семафора, а затем уже осуществляется допуск к критическому ресурсу или отказ от него на некоторое время. При отказе используется режим «пассивного ожидания». Поэтому в состав механизма включают средства формирования и обслуживания очереди ожидающих процессов. Самый простой – двоичный семафор(откр/закр), счетный семафор предполагает, что константа изменения семафора не равна 1, массив семафоров.
Задача «Производитель - потребитель» - один процесс генерирует некоторую информацию, а другой ее использует. Необходимо, чтобы потребитель получал достоверную информацию. Необходимо выполнить требования взаимного исключения при обращении к этому ресурсу. Надо учитывать состояние области памяти. Для производителя: свободно - занято, для потребителя – есть ли там информация, обновлялась ли она.
Задача «Читатель-писатель» - работа с общей областью памяти, куда можно записывать и от куда можно читать. Читатели могут одновременно читать информацию из памяти при условии, что в этот момент не идет запись. Писатели могут записывать информацию, но не может быть одновременной записи от нескольких писателей. Потребителей может быть несколько. С т.з. читателей – ресурс разделяемый, а не критический. С т.з. писателей, если хотя бы один читатель занят чтением, то доступ к критическому ресурсу закрыт для всех пользователей. Писатели имеют более высокий приоритет перед читателями.
При параллельном исполнении процессов могут возникать ситуации, при которых два или более процесса все время находятся в заблокированном состоянии (например, каждый из процессов ожидает ресурс, занятый другим). Такие ситуации называют тупиками. Говорят, что процесс находится в состоянии тупика, если он ждет события, которое никогда не произойдет. Борьба с тупиковыми ситуациями основывается на одной из трех стратегий:
1. Предотвращение тупика - запрет существования опасных состояний.
2. Обход тупика - запрет входа в опасное состояние.
3. Обнаружение тупика путем проверки текущих событий (например, наличие замкнутой цепочки запросов).