Упражнения

  1. Составьте наиболее предпочтительную, с Вашей точки зрения, конфигурацию офисного настольного компьютера для Вашей повседневной работы. Укажите объем памяти, быстродействие, виды портов и внешних устройств.
  2. То же – для портативного компьютера (ноутбука).
  3. Предложите наиболее быстрый, надежный и удобный, с Вашей точки зрения, способ резервного копирования информации – сохранения наиболее важных файловых систем во внешней памяти.
  4. Изобразите схему прерываний и активизации процессора и устройства вывода при выполнении фрагмента простой программы: x := 1; writeln(x); y := 2; writeln(y);
  5. Предложите и реализуйте схему алгоритма умножения матриц m * m, хранящихся во внешней памяти, с записью результата также во внешнюю память, с использованием асинхронного ввода-вывода с целью распараллеливания программы.
  6. Опишите и реализуйте алгоритм обращения к памяти с использованием кэша, с предварительным поиском адреса в кэше и его записью в кэш, в случае, если он не найден.
  7. Пусть задаче выделена область памяти, начиная с адреса 400000 (содержимое регистра базы), длиной 100000 (содержимое регистра границы). Корректным ли будет обращение по адресу 400001? по адресу 500001? Опишите подробно, как происходит проверка адреса на корректность в каждом из двух случаев, и соответствующие действия системы.
  1. Темы для курсовых работ, рефератов, эссе
  2. Обзор архитектуры компьютерной системы (реферат).
  3. Обзор асинхронных и синхронных методов ввода-вывода в компьютерных системах (реферат).
  4. Методы обработки прерываний с помощью вектора прерываний (реферат).
  5. Обзор иерархии и видов внешней памяти (реферат).
  6. Обзор методов защиты памяти в компьютерных системах (реферат).

Лекция N 8 Концепции процесса

 

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

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

порождение - пользователь выдал запрос на обслуживание;

готовность - задание подготовлено соответствующими модулями ОС к выполнению, но еще не выделен ресурс "процессорное время";

выполнение - процессу выделен центральный процессор (ЦП) и задание этого процесса выполняется;

ожидание (блокирован) - процесс вступил в эту фазу из фазы "вы полнение" и ожидает наступления некоторого события, например, окон чания считывания массива данных из дисковой памяти;

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

 

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

 

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

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

 

Рис.1. Граф переходов процесса из состояния в состояние

 

 

Блок управления процессом

 

Представителем процесса в ОС является блок управления процессом (БУП). Это структура данных, содержащая определенную важную информацию о процессе, в том числе:

v текущее состояние процесса;

v уникальный идентификатор процесса;

v приоритет процесса;

v указатели памяти процесса;

v указатели выделенных процессу ресурсов;

v область сохранения регистров.

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

 

Операции над процессами

ОС, управляющие процессами, должны иметь возможность выполнять определенные операции над процессами, в том числе:

q создание (образование) процесса;

q уничтожение процесса;

q возобновление процесса;

q изменение приоритета процесса;

q блокирование процесса;

q пробуждение процесса;

q запуск (выбор) процесса.

q Создание процесса состоит из многих операций, включая:

q присвоение имени процессу;

q определение начального приоритета процесса;

q формирование БУП;

q выделение процессу начальных ресурсов.

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

 

 

Основные функции ядра ОС

 

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

 

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

Ядро ОС обычно содержит программы для реализации следующих функций:

Ø обработка прерываний;

Ø создание и уничтожение процессов;

Ø переключение процессов из состояния в состояние;

Ø организация взаимодействия между процессами, в том числе синхронизация процессов;

Ø поддержка операций ввода-вывода;

Ø поддержка распределения и перераспределения памяти;

Ø поддержка работы файловой системы;

Ø поддержка механизмов вызова-возврата при обращении к процедурам ОС;

Ø поддержка функций по ведению учета работы ЭВМ и ВС в целом.

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

 

Планирование загрузки процессоров

 

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

 

Уровни планирования

 

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

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

o краткосрочном, или диспетчерском планировании, т.е. планировании на нижнем уровне самих процессов.

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

 

Основные цели планирования

Дисциплина планирования должна:

1. быть "справедливой", т.е. одинаково относиться ко всем процессам и не задерживать достаточно долго обслуживание какого-то процесса;

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

3. обеспечивать максимальному числу пользователей приемлемые времена ответа.

 

Планирование с переключением и без переключения

 

Планирование с переключением (ПСП) имеет место, если у процесса может быть отобран ЦП. Если ЦП отобрать нельзя, то это планирование без переключения (ПБП).

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

 

Использование приоритетов при планировании процессов

 

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

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

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

 

Дисциплины распределения ресурсов, используемые в ОС

 

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

дисциплины формирования очередей на ресурс;

дисциплины обслуживания очередей.

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

1. Дисциплина обслуживания в порядке поступления: первый пришедший обслуживается первым (FIFO : first in - first out); все заявки при этом поступают в конец очереди, а первыми обслуживаются заявки из начала очереди; один из главных его недостатков - короткие процессы должны ждать полного выполнения длинных процессов, поэтому эту дисциплину не рекомендуется использовать в интерактивных системах, так как она не может обеспечить приемлемые времена ответа; обычно эта дисциплина применяется в комбинации с другими методами, например, в многоуровневых очередях с обратными связями;

2. Дисциплина обслуживания в порядке, обратном порядку поступления (LIFO : last in - first out); широко используется на практике, в частности, при использовании стеков в оперативной памяти;

3. Круговой циклический алгоритм, основанный на принципе FIFO, но в данном случае время обслуживания ограничено и меньше или равно значения кванта времени Т; если запрос не успевает быть обслуженным за время Т, то он прерывается и становится в хвост очереди; эта дисциплина достаточно эффективна в интерактивных системах, обеспечивая приемлемые времена ответа для каждого пользователя.

 

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

 

О выборе величины кванта времени

 

Программно-аппаратная реализация выделения процессу кванта времени Т обеспечивается аппаратными (таймером и СПП) и программными (обработчик прерывания от таймера и соответствующими блоками ядра ОС) средствами. Выбор величины Т для нахождения процесса в состоянии выполнения имеет критическое значение для эффективной работы ВС, работающей в режиме разделения времени. Обозначим через t время ответа системы, т.е. время от момента ввода задания с терминала до выдачи ответа на соответствующий дисплей. Рассмотрим характерные точки примерного графика зависимости t=f(Т). Обозначим через Т(пер) время, затрачиваемое ЦП на переключение из одного процесса в другой. При выполнении условия Т < T(пер) очевидно, что величина t будет бесконечно велика, так как все время работы ЦП будет затрачиваться только на переключение из процесса в процесс. Далее по мере роста Т величина t будет сначала уменьшаться и достигнет своего минимального значения min t; это значение Т обозначим opt Т. При дальнейшем росте Т величина t снова начнет возрастать, так как процессы с малым временем ответа будут сравнительно долго ждать, пока будет идти выполнение процессов с относительно большими временами ответа; при этом величина t будет стремиться снизу к некоторому предельному значению max t, характерному для ВС с дисциплиной обслуживания FIFO. Конечно, величина opt T меняется внутри системы в зависимости от ее нагрузки и тем более при переходе на другую систему.