Планирование процессов и потоков
Понятие операционной системы, анализ ее задач. Поиск наиболее эффективного алгоритма как главная задача в планировании процессов и потоков. Классификация алгоритмов планирования. Различие между реализацией потоков на уровне пользователя и на уровне ядра.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 03.12.2015 |
Размер файла | 333,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство транспорта Российской Федерации
Федеральное агентство железнодорожного транспорта
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Дальневосточный государственный университет путей сообщения»
Естественно-научный институт
Кафедра «Вычислительная техника и компьютерная графика»
Курсовая работа
Планирование процессов и потоков
КР.09.03.01.ОПЕРС.00.13.000-923
Исполнитель:
студент В.А. Пычко
Руководитель:
преподаватель Балалаева Т.И.
Хабаровск, 2014
Содержание
- Введение
- 1. Планирование процессов. Критерии и параметры планирования
- 2. Алгоритмы планирования
- 2.1 Алгоритм FCFS
- 2.2 Алгоритм RR (циклическое планирование)
- 2.3 Алгоритм SJF
- 2.4 Алгоритм гарантированного планирования
- 2.5 Алгоритм приоритетного планирования
- 2.6 Алгоритм многоуровневых очередей (Multilevel Queue)
- 2.7 Алгоритм многоуровневые очереди с обратной связью (Multilevel Feedback Queue)
- 2.8 Алгоритмы планирования потоков
- 3. Системное программирование: процессы и потоки
- Заключение
- Список использованных источников
Введение
Современный компьютер состоит из одного или нескольких процессоров, оперативной памяти, дисков, принтера, клавиатуры, мыши, дисплея, сетевых интерфейсов и других разнообразных устройств ввода-вывода. В итоге получается довольно сложная система. Для управления всеми компонентами и их оптимального использования компьютеры оснащены специальным уровнем программного обеспечения, который называется операционной системой, в чью задачу входит управление пользовательскими программами, а также управление всеми ранее упомянутыми ресурсами.
Процессы - это одна из самых старых и наиболее важных абстракций, присущих операционной системе. Они поддерживают возможность осуществления (псевдо) параллельных операций даже при наличии всего одного центрального процессора. Они превращают один центральный процессор в несколько виртуальных. Любой процесс также имеет хотя бы один поток. Без абстракции процессов современные вычисления просто не могут существовать.
Когда компьютер работает в многозадачном режиме, на нем в большинстве случаев запускается сразу несколько процессов или потоков, претендующих на использование центрального процессора. Такая ситуация складывается в том случае, если в состоянии готовности одновременно находятся два или более процесса, или потока. Если доступен только один центральный процессор, необходимо выбрать, какой из этих процессов будет выполняться следующим. Та часть операционной системы, на которую возложен этот выбор, называется планировщиком, а алгоритм, который ею используется, называется алгоритмом планирования. Таким образом, главной задачей в планировании процессов и потоков является поиск наиболее эффективного алгоритма.
1. Планирование процессов. Критерии и параметры планирования
Процедура выбора очередного задания для загрузки в машину (порождение соответствующего процесса) называется планированием заданий. Планирование заданий появилось в пакетных системах после того, как для хранения сформированных пакетов заданий стали использоваться магнитные диски. Магнитные диски, являясь устройствами прямого доступа, позволяют загружать задания в компьютер в произвольном порядке, а не только в том, в котором они были записаны на диск. Изменяя порядок загрузки заданий в вычислительную систему, можно повысить эффективность ее использования. Различают три уровня планирования заданий: долгосрочное, краткосрочное и дополнительное среднесрочное.
1. Долгосрочного планирования процессов представляет собой планирование заданий, которое отвечает за порождение новых процессов в вычислительной системе, определяя ее степень мультипрограммирования (количество процессов, одновременно находящихся в вычислительной системе). Если степень мультипрограммирования системы поддерживается постоянной (среднее количество процессов не меняется), то новые процессы могут появляться только после завершения ранее загруженных. Поэтому долгосрочное планирование осуществляется достаточно редко, между появлением новых процессов могут проходить минуты или десятки минут.
Решение о выборе процесса для загрузки оказывает влияние на функционирование вычислительной системы на протяжении достаточно длительного времени. В некоторых операционных системах долгосрочное планирование сведено к минимуму или отсутствует. Например, во многих интерактивных системах разделения времени порождение процесса происходит сразу после появления соответствующего запроса. Поддержание разумной степени мультипрограммирования осуществляется за счет ограничения количества пользователей, которые могут работать в системе, и особенностей человеческой психологии. Если между нажатием на клавишу и появлением символа на экране проходит 20 - 30 секунд, то многие пользователи предпочитают продолжить работу, когда система будет менее загружена.
2. Краткосрочное планирование процессов представляет собой планирование использования процессора, которое возникает в мультипрограммных вычислительных системах для процедуры перевода процесса из состояния готовность в состояние исполнение. Оно проводится, например, при обращении исполняющегося процесса к устройствам ввода-вывода или просто по завершении определенного интервала времени. Поэтому краткосрочное планирование осуществляется, как правило, не реже одного раза в 100 миллисекунд.
3. Среднесрочное планирование процессов (дополнительное, промежуточное) используется для решения о выборе процесса и времени его перекачки на диск и обратно. Выбор нового процесса для исполнения оказывает влияние на функционирование системы до наступления очередного аналогичного события, то есть в течение короткого промежутка времени, чем и обусловлено название этого уровня планирования. В некоторых вычислительных системах бывает выгодно для повышения производительности временно удалить какой-либо частично выполнившийся процесс из оперативной памяти на диск, а позже вернуть его обратно для дальнейшего выполнения. Такая процедура получила название swapping (свопинг) - перекачка.
Для каждого уровня планирования процессов имеется набор специальных алгоритмов. Выбор конкретного алгоритма определяется классом задач, решаемых вычислительной системой и целями планирования:
- справедливостью - гарантией каждому заданию или процессу определенной части времени использования процессора, стараясь не допустить возникновения ситуации, когда процесс одного пользователя постоянно занимает процессор, в то время как процесс другого пользователя фактически не начинал выполняться;
- эффективностью - максимальной занятостью процессора, не позволяющей ему простаивать в ожидании процессов, готовых к исполнению (в реальных вычислительных системах загрузка процессора колеблется от 40 до 90%);
- сокращением полного времени выполнения (turnaround time) - обеспечением минимального времени между стартом процесса (или его постановкой в очередь для загрузки) и его завершением;
- сокращением времени ожидания (waiting time) - времени, которое проводят процессы в состоянии готовность в очереди на исполнение;
- сокращением времени отклика (response time) - минимизированием времени, которое требуется процессу в интерактивных системах для ответа на запрос пользователя.
Независимо от целей планирования, алгоритмы планирования должны обладать следующими свойствами:
- быть предсказуемыми, то есть одно и то же задание должно выполняться приблизительно за одно и то же время;
- иметь минимальные накладные расходы по использованию времени процессора (выбор процесса, перевод его из состояния ожидание в состояние исполнение, переключение контекста и пр.);
- равномерно загружать ресурсы вычислительной системы, отдавая предпочтение процессам, занимающим малоиспользуемые ресурсы;
- обладать масштабируемостью - не терять работоспособность при увеличении нагрузки.
Многие из приведенных выше целей и свойств являются противоречивыми. При улучшении работы алгоритма с точки зрения одного критерия, ухудшается его работа с точки зрения другого. Для осуществления поставленных целей алгоритмы планирования должны опираться на параметры планирования, которые подразделяются на две группы: статические и динамические.
Статические параметры - параметры, не изменяющиеся в ходе функционирования вычислительной системы. К ним относятся: предельные значения ресурсов вычислительной системы (размер оперативной памяти, максимальное количество памяти на диске для осуществления свопинга, количество подключенных устройств ввода-вывода и т.п.) и характеристики, которые присущи заданиям на этапе загрузки:
- каким пользователем запущен процесс или сформировано задание;
- каков приоритет задачи, поставленной на выполнение;
- сколько процессорного времени запрошено для решения задачи;
- каково соотношение процессорного времени и времени, необходимого для осуществления операций ввода-вывода;
- какие ресурсы вычислительной системы (оперативная память, устройства ввода-вывода, специальные библиотеки и системные программы и пр.) и в каком количестве необходимы заданию.
Динамические параметры системы описывают количество свободных ресурсов на данный момент, в результате чего подвержены постоянным изменениям.
Алгоритмы долгосрочного планирования используют в своей работе статические и динамические параметры вычислительной системы и статические параметры процессов (динамические параметры процессов на этапе загрузки заданий еще не известны). Алгоритмы краткосрочного и среднесрочного планирования дополнительно учитывают динамические характеристики процессов. Для среднесрочного планирования в качестве таких характеристик используется следующая информация:
- сколько времени прошло с момента выгрузки процесса на диск или его загрузки в оперативную память;
- сколько оперативной памяти занимает процесс;
- сколько процессорного времени уже предоставлено процессу.
Для краткосрочного планирования используются два динамических параметра:
- CPU burst - промежуток времени непрерывного использования процессора;
- I/O burst - промежуток времени непрерывного ожидания ввода-вывода.
Деятельность любого процесса можно представить, как последовательность циклов использования процессора и ожидания завершения операций ввода-вывода (рисунок 1.1).
Рисунок 1.1
Процесс планирования, осуществляемый частью операционной системы, называемой планировщиком. Планировщик может принимать решения о выборе для исполнения нового процесса из числа находящихся в состоянии готовность в следующих четырех случаях:
1. Процесс переводится из состояния исполнение в состояние завершил исполнение.
2. Процесс переводится из состояния исполнение в состояние ожидание.
3. Процесс переводится из состояния исполнение в состояние готовность (например, после прерывания от таймера).
4. Процесс переводится из состояния ожидание в состояние готовность (завершилась операция ввода-вывода или произошло другое событие).
В случаях 1 и 2 процесс, находившийся в состоянии исполнение, не может дальше исполняться, и для выполнения необходимо выбрать новый процесс. В случаях 3 и 4 планирование может не проводиться, процесс, который исполнялся до прерывания, может продолжать свое выполнение после обработки прерывания. Если планирование осуществляется только в случаях 1 и 2, то имеет место невытесняющее (nonpreemptiw) планирование. В противном случае - вытесняющее (preempts) планирование. Термин «вытесняющее планирование» возник потому, что исполняющийся процесс помимо своей воли может быть вытеснен из состояния исполнение другим процессом.
Вытесняющее планирование обычно используется в системах разделения времени. В этом режиме планирования процесс может быть приостановлен в любой момент исполнения. Операционная система устанавливает специальный таймер для генерации сигнала прерывания по истечении некоторого интервала времени - кванта. После прерывания процессор передается в распоряжение следующего процесса. Временные прерывания помогают гарантировать приемлемое время отклика процессов для пользователей, работающих в диалоговом режиме, и предотвращают зависание компьютерной системы из-за зацикливания какой-либо программы.
При невытесняющем режиме планирования процесс занимает столько процессорного времени, сколько ему необходимо. Переключение процессов возникает только при желании самого исполняющегося процесса передать управление (для ожидания операции ввода-вывода или по окончании работы). Этот метод планирования просто реализуем и достаточно эффективен, так как позволяет выделить большую часть процессорного времени для работы самих процессов и до минимума сократить затраты на переключение контекста. Однако имеется возможность полного захвата процессора одним процессом, который вследствие каких-либо причин (например, из-за ошибки в программе) зацикливается и не может передать управление другому процессу. В этом случае требуется перезагрузка всей вычислительной системы. Невытесняющее планирование используется в Windows 3.1, Apple Macintosh и др.
2. Алгоритмы планирования
Существует достаточно большой набор разнообразных алгоритмов планирования, которые предназначены для достижения различных целей. Ниже перечислены некоторые наиболее употребительные алгоритмы применительно к процессу кратковременного планирования.
2.1 Алгоритм FCFS
Простейшим алгоритмом планирования является алгоритм First-Come, First-Served, FCFS - первым пришел, первым обслужен. Когда процесс переходит в состояние готовность, то ссылка на его РСВ помещается в конец очереди. Выбор нового процесса для исполнения осуществляется из начала очереди с удалением оттуда ссылки на его РСВ. Очередь подобного типа имеет в программировании специальное наименование - First In, First Out (FIFO), первым вошел, первым вышел. Данный алгоритм выбора процесса осуществляет невытесняющее планирование. Процесс, получивший в свое распоряжение процессор, занимает его до истечения текущего CPU burst (промежуток времени непрерывного использования процессора). После этого для выполнения выбирается новый процесс из начала очереди. Преимуществом алгоритма FCFS является легкость реализации, но в то же время он имеет и много недостатков. Так как среднее время ожидания и среднее полное время выполнения для этого алгоритма существенно зависят от порядка расположения процессов в очереди, то процессы, перешедшие в состояние готовность, будут долго ждать начала выполнения. Поэтому алгоритм неприменим для систем разделения времени.
2.2 Алгоритм RR (циклическое планирование)
Модификацией алгоритма FCFS является алгоритм Round Robin, RR (вид детской карусели в США). Этот алгоритм реализован в режиме вытесняющего планирования. Готовые к исполнению процессы организованны циклически и вращаются так, чтобы каждый процесс находился около процессора небольшой фиксированный квант времени, обычно 10 - 100 миллисекунд. Пока процесс находится рядом с процессором, он получает процессор в свое распоряжение и может исполняться. Реализуется алгоритм так же, как и предыдущий, с помощью организации процессов, находящихся в состоянии готовность, в очередь FIFO. Планировщик выбирает для очередного исполнения процесс, расположенный в начале очереди, и устанавливает таймер для генерации прерывания по истечении определенного кванта времени. При выполнении процесса возможны два варианта:
- CPU burst меньше или равно продолжительности кванта времени; в этом случае процесс по своей воле освобождает процессор до истечения кванта времени, на исполнение поступает новый процесс из начала очереди и таймер начинает отсчет кванта заново;
- CPU burst процесса больше выделенного кванта времени; в этом случае по истечении кванта процесс прерывается таймером и помещается в конец очереди процессов, готовых к исполнению, а процессор выделяется для использования процессу, находящемуся в ее начале.
На производительность алгоритма RR влияет величина кванта времени. При больших величинах кванта времени, когда каждый процесс успевает завершить свой CPU burst до возникновения прерывания по времени, алгоритм RR преобразуется в алгоритм FCFS. При малых величинах - создается иллюзия, что каждый из n процессов работает на собственном виртуальном процессоре с производительностью ~ 1/n от производительности реального процессора. Кроме того, при частом переключении контекста накладные расходы на переключение резко снижают производительность системы. Алгоритмы FCFS и RR зависят от порядка расположения в очереди процессов, готовых к исполнению. Если короткие задачи расположены в очереди ближе к ее началу, то общая производительность этих алгоритмов значительно возрастает.
2.3 Алгоритм SJF
Алгоритм краткосрочного планирования Shortest-Job-First, SJF (кратчайшая работа первой) может быть как вытесняющим, так и невытесняющим. При невытесняющем SJF-планировании процессор предоставляется избранному процессу на все необходимое ему время, независимо от событий, происходящих в вычислительной системе. При вытесняющем SJF-планировании учитывается появление новых процессов в очереди готовых к исполнению (из числа вновь родившихся или разблокированных) во время работы выбранного процесса. Если CPU burst нового процесса меньше, чем остаток CPU burst у исполняющегося процесса, то исполняющийся процесс вытесняется новым процессом. Основную сложность при реализации алгоритма SJF представляет невозможность точного знания времени очередного CPU burst для исполняющихся процессов. В пакетных системах количество процессорного времени, необходимое заданию для выполнения, указывает пользователь при формировании задания. Если пользователь укажет больше времени, то он будет ждать результата дольше, если меньшее - то задача может не досчитаться до конца.
2.4 Алгоритм гарантированного планирования
При интерактивной работе n пользователей в вычислительной системе можно использовать алгоритм планирования, который гарантирует, что каждый из пользователей будет иметь в своем распоряжении ~1/n часть процессорного времени. Для каждого пользователя используется две величины: Ti - время нахождения пользователя в системе; ti - суммарное процессорное время уже выделенное всем процессам пользователя в течение сеанса работы.
Справедливым для пользователя будет получение Ti / n процессорного времени. Если ti << Ti / n, то i - тый пользователь обделен процессорным временем, если ti >> Ti / n, то i - тый пользователь получает больше расчетного времени процессора. Поэтому для каждого пользовательского процесса вводится значение коэффициента справедливости ti n / Ti и процессу с наименьшей величиной коэффициента предоставляется очередной квант времени. Недостатком алгоритма является невозможность предугадать поведение пользователей. Если пользователь некоторое время не работает с системой, то по возвращению к работе его процессы будут получать неоправданно много процессорного времени.
2.5 Алгоритм приоритетного планирования
Алгоритмы SJF и гарантированного планирования представляют собой частные случаи приоритетного планирования. При приоритетном планировании каждому процессу присваивается определенное числовое значение - приоритет, в соответствии с которым ему выделяется процессор. Процессы с одинаковыми приоритетами планируются в порядке FCFS. Для алгоритма SJF в качестве такого приоритета выступает оценка продолжительности следующего CPU burst. Чем меньше значение этой оценки, тем более высокий приоритет имеет процесс. Для алгоритма гарантированного планирования приоритетом служит вычисленный коэффициент справедливости. Чем он меньше, тем больше у процесса приоритет. Принципы назначения приоритетов могут опираться:
- на внутренние критерии, которые используют различные количественные и качественные характеристики процесса для вычисления его приоритета: определенные ограничения по времени использования процессора; требования к размеру памяти; число открытых файлов и используемых устройств ввода-вывода; отношение средних продолжительностей I/O burst к CPU burst и др.;
- на внешние критерии, к которым относятся: параметры важности процесса для достижения каких-либо целей; параметры стоимости оплаченного процессорного времени и др.
Приоритетное планирование может вытесняющим и невытесняющим. При вытесняющем планировании процесс с более высоким приоритетом, появившийся в очереди готовых процессов, вытесняет исполняющийся процесс с более низким приоритетом. В случае невытесняющего планирования он становится в начало очереди готовых процессов.
Приоритеты процессов, которые с течением времени не изменялись, называются статическими приоритетами. Механизмы статической приоритетности легко реализовать, однако статические приоритеты не реагируют на изменения ситуации в вычислительной системе. Более гибкими являются динамические приоритеты процессов, изменяющие свои значения по ходу исполнения процессов. Начальное значение динамического приоритета, присвоенное процессу, действует в течение короткого периода времени, после чего ему назначается новое значение. Как правило, изменение приоритета процессов проводится согласованно с совершением каких-либо других операций: при рождении нового процесса, при разблокировке или блокировании процесса, по истечении определенного кванта времени или по завершении процесса. Примерами алгоритмов с динамическими приоритетами являются алгоритм SJF и алгоритм гарантированного планирования.
Главная проблема приоритетного планирования заключается в том, что при неправильном выборе механизма назначения и изменения приоритетов низкоприоритетные процессы могут не запускаться долгое время. Решение этой проблемы может быть достигнуто с помощью увеличения со временем значения приоритета процесса, находящегося в состоянии готовность. Каждый раз по истечении определенного промежутка времени, значения приоритетов процессов, находящихся в состоянии готовность, уменьшаются на 1, а процессу, побывавшему в состоянии исполнение, присваивается первоначальное значение приоритета.
2.6 Алгоритм многоуровневых очередей (Multilevel Queue)
Для систем, в которых процессы рассортированы по разным группам, разработаны алгоритмы планирования на основе очередей. Для каждой группы процессов создается очередь процессов, находящихся в состоянии готовность. Этим очередям приписываются фиксированные приоритеты. Например, приоритет очереди системных процессов устанавливается выше, чем приоритет очередей пользовательских процессов. Это означает, что ни один пользовательский процесс не будет выбран для исполнения, пока имеется хоть один готовый к исполнению системный процесс. Внутри очередей могут применяться разные алгоритмы планирования. Например, для больших счетных процессов, не требующих взаимодействия с пользователем, может использоваться алгоритм FCFS, для интерактивных процессов - алгоритм RR. Данный подход многоуровневых очередей повышает гибкость планирования, так как для процессов с различными характеристиками применяется наиболее подходящий им алгоритм.
2.7 Алгоритм многоуровневые очереди с обратной связью (Multilevel Feedback Queue)
Дальнейшим развитием алгоритма многоуровневых очередей является добавление к нему механизма обратной связи, благодаря которому процесс может мигрировать из одной очереди в другую в зависимости от своего поведения. Планирование процессов между очередями осуществляется на основе вытесняющего приоритетного механизма. Процессы в очереди 1 не могут исполняться, если в очереди 0 есть хотя бы один процесс. Процессы в очереди 2 не будут выбраны для выполнения, пока есть хоть один процесс в очередях 0 и 1 и т.д. Если при работе процесса появляется другой процесс в более приоритетной очереди, исполняющийся процесс вытесняется новым. Планирование процессов внутри очередей 0 - 2 осуществляется с использованием алгоритма RR, в очереди 3 - алгоритма FCFS.
Родившийся процесс поступает в очередь 0. При выборе на исполнение он получает в свое распоряжение квант времени, например, размером 8 единиц. Если продолжительность его CPU burst меньше этого кванта времени, процесс остается в очереди 0. В противном случае он переходит в очередь 1. Для процессов очереди 1 квант времени имеет величину 16. Если процесс не укладывается в это время, он переходит в очередь 2. В очереди 2 величина кванта времени составляет 32 единицы. Если для непрерывной работы процесса этого мало, процесс поступает в очередь 3, для которой квантование времени не применяется и, при отсутствии готовых процессов в других очередях, может исполняться до окончания своего CPU burst. Чем больше значение продолжительности CPU burst, тем в менее приоритетную очередь попадает процесс, но тем на большее процессорное время он может рассчитывать. Таким образом, процессы, требующие малого времени работы процессора, окажутся размещенными в высокоприоритетных очередях, а процессы, требующие большого времени работы процессора и с низкими запросами к времени отклика - в низкоприоритетных.
Миграция процессов в обратном направлении может осуществляться по различным принципам. Например, после завершения ожидания ввода с клавиатуры процессы из очередей 1, 2 и 3 могут помещаться в очередь 0. После завершения дисковых операций ввода-вывода процессы из очереди 3 могут помещаться в очередь 1, а после завершения ожидания всех событий - из очереди 3 в очередь 2. Перемещение процессов из низкоприоритетных очередей в высокоприоритетные позволяет более полно учитывать изменение поведения процессов с течением времени.
Многоуровневые очереди с обратной связью представляют собой наиболее общий подход к планированию процессов, они трудны в реализации, но обладают наибольшей гибкостью. Для полного описания их конкретного воплощения необходимо указать:
- количество очередей для процессов, находящихся в состоянии готовность.
- алгоритм планирования, действующий между очередями;
- алгоритмы планирования, действующие внутри очередей;
- правила помещения родившегося процесса в одну из очередей;
- правила перевода процессов из одной очереди в другую.
Изменяя какой-либо из перечисленных пунктов, можно существенно изменять поведение вычислительной системы.
2.8 Алгоритмы планирования потоков
Если в системе имеется несколько процессов, каждый из которых разделен на несколько потоков, реализуется два уровня параллелизма: на уровне потоков и на уровне процессов. Планирование в таких системах зависит от того, поддерживаются ли потоки на уровне пользователя, на уровне ядра или и те и другие.
В случае поддержки потоков на уровне пользователя ядро не знает о существовании потоков и выполняет обычное планирование, выбирая, например, процесс А и предоставляя ему квант времени. Внутри процесса А планировщик потоков выбирает поток, например, А1. Так как в потоках нет прерывания по таймеру, выбранный поток будет исполняться, пока не завершит свою работу. Если поток А1 займет весь квант времени, выделенный процессу А, ядро передаст управление другому процессу, а при передаче управления снова процессу А, поток А1 продолжит использовать процессорное время до своего завершения. Поведение потока А1 не повлияет на другие процессы, и они получат долю процессорного времени, которую планировщик считает справедливой, независимо от того, что происходит внутри процесса.
Если n потокам процесса А предоставить равное количество времени t/n из отведенного кванта времени процессу А, то каждый из них будет выполнять свою работу в течении времени t/n и возвращать процессор планировщику потоков. Это приведет к следующей цепочке: А1, А2, А3…Аn; А1, А2, A3… Аn, А1… Аn, после чего управление будет передано следующему процессу (рисунок 2.1). В качестве алгоритма планирования наиболее часто используются алгоритмы циклического и приоритетного планирования. Единственной проблемой является отсутствие таймера, который прерывал бы затянувшуюся работу потока.
Рисунок 2.1 - Планирование потоков на уровне пользователя
В случае поддержки потоков на уровне ядра, (рисунок 2.2) ядро выбирает следующий поток, не принимая во внимание, какой поток принадлежит какому процессу. Потоку предоставляется квант времени и по истечении этого кванта управление передается другому потоку. Например: А1, А2…Аn; возможно: А1, В1, А2, В2, А3, В3…Аn, Bn.
Рисунок 2.2 - Планирование потоков на уровне ядра
Основное различие между реализацией потоков на уровне пользователя и реализацией их на уровне ядра состоит в производительности. Для переключения потоков на уровне пользователя требуется выполнение нескольких машинных команд. Для переключения потоков на уровне ядра нужно выполнить полное переключение контекста с заменой карты памяти и аннулированием кэша, что выполняется медленнее. С другой стороны, при реализации потоков на уровне пользователя блокировка потока на устройстве ввода-вывода блокирует весь процесс, что не случается с потоками на уровне ядра.
3. Системное программирование: процессы и потоки
операционный алгоритм пользователь ядро
Понятие процесса является основополагающим во всем курсе операционных систем. В литературе существует множество различных определений процесса, самое простое из которых звучит следующим образом: процесс - это некоторая абстракция, характеризующая программу во время ее исполнения. Однако для глубокого изучения операционных систем данного определения не всегда достаточно. Процесс можно рассматривать как совокупность следующих компонентов:
- набора исполняющихся команд;
- набора ресурсов;
- текущего состояния исполнения.
Под набором исполняющихся команд, как правило, понимают набор инструкций процессора, составляющий конкретный алгоритм программы. В общем случае один процесс может содержать несколько наборов исполняющихся команд.
Набор ресурсов - это все ресурсы, ассоциированные с процессом, такие как выделенная память, адресное пространство, открытые файлы, устройства ввода-вывода и т.д.
Текущее состояние исполнения описывает динамическую составляющую процесса и содержит: значения регистров процессора на конкретный момент, значения программного счетчика, состояние стека, значения переменных и т.д.
Как правило, невозможно установить взаимно-однозначного соответствия между программой и процессором. Задания и выполненная работа над процессами и потока представлена в приложении А и Б соответственно.
Задания и выполненная работа над процессами и потока представлена в приложении А и Б соответственно.
Заключение
Чтобы сгладить влияние прерываний, операционные системы предоставляют концептуальную модель, состоящую из параллельно запускаемых последовательных процессов. Процессы могут создаваться и уничтожаться в динамическом режиме. У каждого процесса есть свое собственное адресное пространство. Некоторым приложениям выгодно в рамках одного процесса иметь несколько потоков управления. Эти потоки имеют независимое планирование, и каждый из них имеет свой собственный стек, но все потоки, принадлежащие одному процессу, используют общее адресное пространство. Потоки могут быть реализованы в пространстве пользователя или в пространстве ядра.
Процессы могут взаимодействовать друг с другом, используя соответствующие примитивы, к которым относятся семафоры, мониторы или сообщения. Эти примитивы используются, чтобы исключить одновременное пребывание двух процессов в их критических областях, то есть для предотвращения ситуации, приводящей к хаосу. Процесс может находиться в работающем, готовом к работе или заблокированном состоянии и может изменять состояние, когда он сам или другие процессы задействуют один из примитивов взаимодействия процессов. Взаимодействие потоков имеет сходный характер.
Примитивы взаимодействия процессов могут использоваться для решения таких задач, как производитель-потребитель, обедающие философы и читатель-писатель. Но даже при использовании этих примитивов нужно соблюдать особую осторожность во избежание ошибок и взаимных блокировок.
Было изучено множество алгоритмов планирования. Некоторые из них, например, алгоритм первоочередного выполнения самого короткого задания, используются преимущественно в пакетных системах. Другие же получили распространение как в пакетных, так и в интерактивных системах. В числе этих алгоритмов циклическое, приоритетное планирование, многоуровневые очереди, гарантированное, лотерейное и справедливое планирование. Некоторые системы проводят четкую грань между механизмом и политикой планирования, что позволяет пользователям осуществлять управление алгоритмом планирования. Таким образом, существует множество алгоритмов планирования, имеющие свои особенности и преимущества в разных применениях.
Список использованных источников
1 Волков, А.С. Операционные системы. Системное программирование : практикум. В 2 ч. Ч. 1 / А.С. Волков, А.А. Король. - Хабаровск : Изд-во ДВГУПС, 2009. - 68 с. : ил.
2 Красовская Т.С. Правила оформления текстовых и графических документов: учебное пособие/Т.С. Красовская - Хабаровск: Изд-во ДВГУПС, 2007. - 41 с.
3 Таненбаум, Э. Современные операционные системы / Э. Таненбаум. - СПб.; Питер, 2004. - 1040 с.
Размещено на Allbest.ru
...Подобные документы
Рассмотрение способов просмотра состояния процессов через диспетер задач в операционной системе Windows: определение взаимосвязи процессов и потоков, времени работы системы в пользовательском режиме. Ознакомление со сведениями о файлах драйверов.
лабораторная работа [3,1 M], добавлен 07.04.2010Количественная, сторона процессов обслуживания потоков сообщений в системах распределения информации. Основные задачи теории телетрафика и сведения о методах решения задач. Принципы классификации потоков вызовов. Просеивание потоков и потоки Эрланга.
реферат [124,6 K], добавлен 18.02.2012Обзор операционных систем, обеспечивающих взаимную синхронизацию процессов и потоков. Понятие критической секции и критических данных, описание приема взаимного исключения. Использование блокирующих переменных и семафоров. Объекты-взаимоисключения.
доклад [26,7 K], добавлен 27.12.2013Взаимодействие процессов и потоков в операционной системе, основные алгоритмы и механизмы синхронизации. Разработка школьного курса по изучению процессов в операционной системе Windows для 10-11 классов. Методические рекомендации по курсу для учителей.
дипломная работа [3,2 M], добавлен 29.06.2012Создание средств представления процессов и механизмов управления на уровне диспетчеризации, разработка алгоритма и написание программы, имитирующую работу простейшей операционной системы. Формирование дескриптора, ввод информации, интерфейс программы.
лабораторная работа [1,1 M], добавлен 09.07.2010Определение наиболее надёжного пути передачи 2-х потоков информации за один цикл между шестью коммутаторами с учётом критерия максимальной помехозащищенности. Вычисление коэффициентов целевой функции и системы ограничений. Оптимальный план обмена данными.
курсовая работа [617,5 K], добавлен 13.01.2015Основные функции и процессы подсистемы управления процессами. Диспетчеризация процессов (потоков). Алгоритмы планирования выполнения потоков. Назначение и разновидности приоритетов в операционных системах. Функции подсистемы управления основной памятью.
презентация [117,7 K], добавлен 20.12.2013Описание основных целей и рабочих процессов оператора сотовой связи. Шкала оценки важности информации. Построение матрицы ответственности за аппаратные ресурсы. Разработка структурной схемы их взаимодействия между собой и модели информационных потоков.
практическая работа [336,0 K], добавлен 28.01.2015Основные этапы создания алгоритмов, представление в виде программы. Рассмотрение методов решения задач. Метод поэтапных уточнений. Различие между численными и логическими алгоритмами. Реализация цикла со счетчиком. Процесс разработки сложного алгоритма.
презентация [1,3 M], добавлен 22.10.2013Описание общего алгоритма и интерфейса программы. Метод заполнения массива случайными числами. Метод вычисления длины линии между пространственными точками. Создание, синхронизация и завершение потоков. TThread как абстрактный класс, листинг программы.
курсовая работа [664,0 K], добавлен 08.04.2014Алгоритмы планирования мультипрограммных операционных систем. Оценка возможности выполнения двух процессов в реальном времени. Организация доступа к критической секции с использованием передачи сообщений. Обнаружение блокировок в вычислительной системе.
курсовая работа [858,7 K], добавлен 24.03.2015Изучение основных аспектов моделирования операционной системы. Исследование принципов организации псевдопараллельной работы процессов. Анализ алгоритмов диспетчеризации процессов. Проектирование подсистемы управления памятью и запоминающими устройствами.
курсовая работа [1,7 M], добавлен 12.01.2014Основные структуры процессов в операционной системе Unix. Возможные состояния процесса в Unix и способы перехода между ними. Планирование и выполнение процессов. Различия между родительским и дочерним процессом. Ожидание завершения и выполнения процесса.
курсовая работа [673,0 K], добавлен 24.02.2012Рассмотрение понятия, назначения и преимуществ использования динамических библиотек; способы их связи с приложениями. Принципы работы с системным реестром Windows NT. Характеристика процессов и потоков как основополагающих компонент операционной системы.
лабораторная работа [760,6 K], добавлен 08.09.2011Классификация систем реального времени. Ядра и операционные системы реального времени. Задачи, процессы, потоки. Преимущества и недостатки потоков. Свойства, планирование, синхронизация задач. Связанные задачи. Синхронизация с внешними событиями.
реферат [391,5 K], добавлен 28.12.2007Анализ текущих бизнес-процессов при работе букмекерской конторы. Построение функциональных моделей предметной области и диаграмм потоков данных. Основные меры по реорганизации бизнес-процессов и разрешению противоречий. Разработка мобильных приложений.
курсовая работа [246,0 K], добавлен 10.01.2014Сведения о планировании заданий. Характеристика алгоритмов FIFO и SJF. Диспетчеризация задач для бесприоритетной ДО FB и с динамическим приоритетом (зависимость от времени обслуживания). Алгоритм функционирования диспетчера и результаты моделирования.
курсовая работа [702,3 K], добавлен 23.09.2013Функциональная схема локальной вычислительной сети, анализ информационных потребностей и потоков предприятия. Планирование структуры сети, сетевая архитектура и топология. Структура корпоративной компьютерной сети, устройства и средства коммуникаций.
курсовая работа [315,5 K], добавлен 26.08.2010Классификация вычислительных систем по способам взаимодействия потоков выполняемых команд и потоков обрабатываемых данных, их разновидности и функциональные особенности. Принципы расширения классификации Флинна. Виды топологии соединительной сети.
презентация [175,6 K], добавлен 11.10.2014Актуальность внедрения автоматизированных информационных систем (АИС) в бюджетный процесс. Осуществление бюджетного планирования и управления с помощью АИС "Финансы" и "Бюджет". Разработка электронного бюджета с целью улучшения информационных потоков.
реферат [39,2 K], добавлен 04.10.2013