Автор работы: Пользователь скрыл имя, 27 Января 2012 в 00:57, шпаргалка
Работа содержит ответы на вопросы по дисциплине "Программирование и компьютеры"
Для управления процессами в ОС существует специальная структура называемая дескриптором процессов. В ней содержится следующая информация:
- идентификатор процесса PID;
- приоритет процесса;
- область памяти, используемая процессом;
- информация
об используемых ресурсах. Дескрипторы
процессов используются для
Потоки
С одним процессом может быть связано несколько потоков, т.е. многопоточность – это возможность выполнять в одной прикладной программе несколько видов задач. Как правило, программы, использующие многопоточность, работают эффективнее. Многопоточность широко используется в распределенных приложениях (серверы БД).
В ОС возможны следующие режимы работы с потоками: либо ОС управляет потоками, либо она управляет процессами, либо бывает смешенное управление. Логика управления потоками ложится на прикладную программу.
Если ОС поддерживает управление потоками, то она обеспечивает планирование (диспетчеризацию) потоков самостоятельно.
Потоки в ОС создаются быстрее, чем процессы, поскольку не требуется выделение области памяти, используемых ресурсов, эти объекты используются всеми потоками одного процесса отдельно в рамках одного процесса.
Потоки
очень эффективны в тех случаях,
когда они решают независимые
задачи. А когда требуется
Планирование процессов
Разделяют планирование заданий (это задние набора такого множества процессов, которые будут как можно реже конфликтовать из-за имеющихся в системе ресурсов) и краткосрочное планирование или диспетчеризация, т.е. определение следующей задачи на выполнение при котором ресурсы системы будут использоваться наиболее эффективно.
Стратегия планирования определяет, какие именно процессы будут выполняться. Критерием выбора процесса может быть следующее:
1) Возможность заканчивать вычисление в том порядке в каком они были начаты.
2) Отдавать предпочтение более коротким процессам, т.е. требующим меньше времени.
3) Предоставлять равные возможности для всех процессов.
Известно большое количество правил, по которым формируется очередь процессов ожидающих свое выполнение. Все эти правила можно сгруппировать в два класса: бесприоритетные и приоритетные.
В первом случае следующий процесс выбирается из очереди в некотором заранее установленном порядке.
Во втором случае процесс выбирается из очереди с учетом его важности (приоритета).
Вытесняющее планирование
При не вытесняющей диспетчеризации активный процесс выполняется до тех пор пока его квант времени не закончится, либо он не завершит свою работу сам.
При вытесняющем планировании возможна замена текущего выполняющегося процесса на другой. Как правило, для вытеснения используется значение приоритета процесса, т.е. если в очереди процессов готовых на выполнение появляется процесс у которого значение приоритета выше чем у выполняемого процесса, то выполняемый вытесняется.
Динамическое планирование
Недостаток прошлого метода в том, что процесс с низким приоритетом будет долго выполняться или совсем не выполниться. В динамическом планировании ОС может повышать или понижать приоритет. Например в Windows 2000 gпричиной для повышения приоритета является работа с графикой. В этой ОС предполагается 32 класса приоритета, которые делятся на классы реального времени (значение приоритета от 16 до 31) и переменного приоритета (от 0 до 15). Пользовательские процессы могут иметь значение приоритета от 1 до 15. Причем ОС может уменьшить значение приоритета для оптимизации своей работы. Диспетчер останавливает выполнение потока после того, как тот израсходовал свой квант времени и если этот поток относиться к диапазону динамического приоритета, то ОС понижает приоритет потока на 1. Т.е. потто требующий много вычислений постепенно теряет свой приоритет до значение базового приоритета. С другой стороны ОС увеличивает приоритет потока после выхода его из состояния блокировки, причем добавка к приоритету зависит от причин блокировки, максимальное значение не может быть выше 15.
Рассмотрим некоторые наиболее известные дисциплины диспетчеризации процесса:
1) FCFS (первым
пришел первым выполнился). В этом
случае процессы обслуживаются
в порядке их нахождения в
очереди. Если появляются
2) SJN (следующим
выполняется самое короткое
3) SRT, т.е. задача, которая требует наименьшего времени для своего завершения.
Рассмотренные алгоритмы широко использовались в системах пакетной обработки данных, но оказались неприемлемыми для интерактивных систем, в которых требуется обеспечить приемлемый отклик на запросы пользователей.
В интерактивных системах используется следующая дисциплина диспетчеризации.
4) RR. Предполагается, что каждая задача получает процессорное время некоторыми порциями (квантами). Если квант времени процесса заканчивается, то этот процесс из состояния готовности переходит в состояние ожидания и переносится в конец очереди, а управление передается другому процессу.
Данный алгоритм диспетчеризации сталкивается со следующей дилеммой: каким образом выбрать квант времени?
Если выбирать квант времени достаточно большим, то увеличится время ожидания остальных процессов в очереди. Если – меленьким, то основное время будет тратиться на переключение контекста процессов.
Планирование процессов в Unix (Linux).
Основной проблемой организации многопользовательского режима в любой ОС является поддержка мультизагрузочности, т.е. имитация параллельного выполнения нескольких процессов на одном процессоре.
Самым распространенным алгоритмом планирования является циклический алгоритм RR (Round Robin) при котором каждому процессу выделяются кванты времени, а сами процессы выстраиваются в кольцевую очередь.
В Unix работает
более гибка схема планирования
учитывающая приоритет
Жизненный Циклы процесса
Возможны следующие состояния процесса:
1) Процесс работает в пользовательском режиме, при этом процессом выполняются соответствующие прикладные инструкции программы.
2) Процесс
работает в режиме ядра. При
этом процесс выполняет
3) Процесс не выполняется, но готов к выполнению и ожидает когда его выберет планировщик.
4) Процесс
находится в состоянии сна
в связи с ожиданием каких-
5) Процесс
возвращается из режима ядра
в режим задачи, но прерывается
поскольку в состояние
6) Процесс только что создан системным вызовом fork и находится в переходном состоянии: он существует, но не готов к запуску и не находиться в состоянии сна.
7) Процесс выполнил системный вызов exit и перешел в состояние зомби (zombie, defunct). Как такового процесса не существует, но остаются записи, содержащие код возврата и временную статистику его выполнения, доступную для родительского процесса. Это состояние является конечным в жизненном цикле процесса.
3. Взаимодействие процессов. Понятие критической секции. Средства межпроцессорного взаимодействия в Linux: программыне и FIFO каналы, сообщения, семафоры, сокеты.
Для нормального функционирования процесса, ОС старается максимально обособить их друг от друг. Каждый процесс имеет собственное адресное пространство нарушение, которого приводит к аварийной остановке процесса. Каждому процессу по возможности предоставляется свои дополнительные ресурсы . Тем не менее для решения некоторых задач процессы могут объединить свои усилия. Причины их взаимодействия следующие:
1)Повышение
скорости работы, пока один процесс
ожидает наступление
2)Совместное
использование данных. Различные
процессы могут работать с
одной и той же динамической
базой данных или с
3)Реализация
модульной конструкции системы.
4)Повышение удобства работы пользователя желающего, например, редактировать и отлаживать программу одновременно. В этой ситуации редактора и отладчика должны взаимодействовать друг с другом.
Процесс который оказывает влияние на поведение друг друга принято называть кооперативным или взаимодействующими процедурами. В отличии от независимых процессов не оказывающих друг на друга никакого воздействия и ничего не знающих о взаимном сосуществовании в вычислительной системе.
Важным понятием при изучении способов синхронизации процессов является понятие критической секции (critical section) программы.
Критическая секция – это часть программы, исполнение которой может привести к возникновению race condition (состояние гонки, состояние состязания) для определенного набора программ.
Чтобы исключить эффект гонок по отношению к некоторому ресурсу, необходимо организовать работу так, чтобы в каждый момент времени только один процесс мог находиться в своей критической секции, связанной с этим ресурсом. Иными словами, необходимо обеспечить реализацию взаимоисключения для критических секций программ.
Средства межпроцессного взаимодействия в Unix
Процессы
выполняются в своем
1) Программные каналы (pipes)
Простейшей разновидностью каналов являются конвееры.
Cut файл 1 /vc
В этом конвеере стандартный выход программы cut передается на стандартный вход программы vc. Таким образом, создается программный канал между этими командами.
Информация о работе Шпаргалка по "Программированию и компьютерам"