Системное программное обеспечение

Автор работы: Пользователь скрыл имя, 28 Января 2013 в 15:44, шпаргалка

Описание

Работа содержит ответы на вопросы для экзамена (или зачета) по дисциплине "Системное программное обеспечение"

Работа состоит из  1 файл

ОС Шпоры.docx

— 207.00 Кб (Скачать документ)

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

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

  В качестве примера рассмотрим схему назначения приоритетов потокам, принятую в операционной системе Windows NT (рис. 4.9). В системе определено 32 уровня приоритетов и два класса потоков — потоки реального времени и потоки с переменными приоритетами. Диапазон от 1 до 15 включительно отведен для потоков с переменными приоритетами, а от 16 до 31 — для более критичных ко времени потоков реального времени (приоритет 0 зарезервирован для системных целей). В системах с абсолютными приоритетами время ожидания потока в очередях может быть сведено к минимуму, если ему назначить самый высокий приоритет. Такой поток будет вытеснять из процессора все остальные потоки (кроме потоков, имеющих такой же наивысший приоритет). Это делает планирование на основе абсолютных приоритетов подходящим для систем управления объектами, в которых важна быстрая реакция на событие.

Смешанные алгоритмы планирования

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

Рассмотрим более подробно алгоритм планирования в операционной системе UNIX System V Release 4. В этой ОС понятие «поток» отсутствует, и планирование осуществляется на уровне процессов. В системе UNIX System V Release 4 реализована вытесняющая многозадачность, основанная на использовании приоритетов и квантования.

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

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

  Процессы разделения времени были до появления UNIX System V Release 4 единственным классом процессов, и по умолчанию UNIX System V Release 4 назначает новому процессу именно этот класс. Состав класса процессов разделения времени наиболее неопределенный и часто меняющийся в отличие от системных процессов и процессов реального времени. Для справедливого распределения времени процессора между процессами в этом классе используется стратегия динамических приоритетов. Величина приоритета, назначаемого процессам разделения времени, вычисляется пропорционально значениям двух составляющих: пользовательской части и системной части. Пользовательская часть приоритета может быть изменена администратором и владельцем процесса, но в последнем случае только в сторону его снижения.

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

  Другой пример относится к операционной системе OS/2. Планирование здесь основано на использовании квантования и абсолютных динамических приоритетов. На множестве потоков определены приоритетные классы — критический  (time critical), серверный (server), стандартный (regular) и остаточный (idle), в каждом из которых имеется 32 приоритетных уровня. Потоки критического класса имеют наивысший приоритет. В этот класс могут быть отнесены, например, системные потоки, выполняющие задачи управления сетью. Следующий по приоритетности класс предназначен, как это следует из его названия, для потоков, обслуживающих серверные приложения. К стандартному классу могут быть отнесены потоки обычных приложений. Потоки, входящие в остаточный класс, имеют самый низкий приоритет. К этому классу относится, например, поток, выводящий на экран заставку, когда в системе не выполняется никакой работы.

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

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

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

Если поток ушел на выполнение операции ввода-вывода, то после ее завершения он получит наивысшее значение приоритета своего класса.

 Приоритет потока автоматически  повышается, когда он поступает  на выполнение. ОС динамически  устанавливает величину кванта, отводимого потоку для выполнения. Величина кванта зависит от  загрузки системы и интенсивности  подкачки. Параметры настройки системы  позволяют явно задать границы  изменения кванта. В любом случае  он не может быть меньше 32 мс  и больше 65 536 мс. Если поток был  прерван до истечения кванта, то следующий выделенный ему  интервал выполнения будет увеличен  на время, равное одному периоду  таймера (около 32 мс), и так до  тех пор, пока квант не достигнет  заранее заданного при настройке  ОС предела. Благодаря такому  алгоритму планирования в OS/2 ни  один поток не будет «забыт»  системой и получит достаточно  процессорного времени.

  1. Мультипрограммирование на основе прерываний. Назначение и типы прерываний. Контроллер прерываний.

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

Различают следующие типы прерываний:

· внешние (аппаратные);

· внутренние (исключения -exception);

· программные.

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

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

Прерываниям равного значения приписываются  уровни приоритетов (уровни - IRQ).

Каждое из прерываний обслуживается  обработчиком прерываний (Interrupt Service Routine).

Внешние – обрабатываются драйверами, внутренние – модулями ядра, программные  – процедурами из API.

  1. Механизм обработки прерываний в реальном и защищенном режимах процессоров Intel.

Прерывания в реальном режиме

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

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

Для обработки прерываний в реальном режиме процессор использует таблицу  векторов прерываний. Эта таблица  располагается в самом начале оперативной памяти, т.е. её физический адрес - 00000.

  Таблица векторов прерываний реального режима состоит из 256 элементов по 4 байта, таким образом её размер составляет 1 килобайт. Элементы таблицы - дальние указатели на процедуры обработки прерываний. Указатели состоят из 16-битового сегментного адреса процедуры обработки прерывания и 16-битового смещения. Причём смещение хранится по младшему адресу, а сегментный адрес - по старшему.

  Когда происходит программное или аппаратное прерывание, текущее содержимое регистров CS, IP а также регистра флагов FLAGS записывается в стек программы (который, в свою очередь, адресуется регистровой парой SS:SP). Далее из таблицы векторов прерываний выбираются новые значения для CS и IP, при этом управление передаётся на процедуру обработки прерывания.

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

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

Что же касается аппаратных маскируемых  прерываний, то в компьютере IBM AT и  совместимых с ним существует всего шестнадцать таких прерываний, обозначаемых IRQ0-IRQ15. В реальном режиме для обработки прерываний IRQ0-IRQ7 используются вектора прерываний от 08h до 0Fh, а  для IRQ8-IRQ15 - от 70h до 77h.

Прерывания защищённого  режима

В защищённом режиме все прерывания разделяются на два типа - обычные  прерывания и исключения (exception - исключение, особый случай). Обычное прерывание инициируется командой INT (программное прерывание) или внешним событием (аппаратное прерывание). Перед передачей управления процедуре обработки обычного прерывания флаг разрешения прерываний IF сбрасывается и прерывания запрещаются.

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

  1. Синхронизация процессов и потоков. Блокирующие переменные. Системные функции Post() и Wait().

   Синхронизация процессов  и потоков: цели и средства  синхронизации

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

Информация о работе Системное программное обеспечение