КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Очереди готовых процессов
Очереди заблокированных процессов Если завершается какое-то событие, ожидание которого ждут несколько заблокированных процессов в очереди. При этом сами процессы в очереди могут располагаться не подряд а в произвольном порядке. После завершения события, которого они все вместе ожидали они могут не ждать дальше. А перейти в очередь готовых процессов. Однако, для поиска всех процессов, которые ждали одного завершившегося события, нужно просматривать всю очередь заблокированных процессов для перевода их в другую очередь – готовых процессов. Для больших систем – этот перебор может занимать значительное время, поэтому создают несколько очередейзаблокированных процессов: для каждого события создается своя очередь процессов. Которые ждут завершения именно этого события. Например, 3 процесса ждут, когда закончится ввод данных с жесткого диска, а 2 процесса ждут, когда пользователь введет данные с клавиатуры. В этом случае создается 2 очереди: Очередь готовых процессов может быть одна или несколько. При одной очереди все процессы выполняются последовательно: кто первый стал в очередь – того первого и обслуживает процессор Однако вы скажете – зачем несколько очередей, если процессор только один? Вы были бы правы, если бы не было необходимости одни процессы выполнять быстрее, чем другие. Особенно это касается системных процессов, которым нужно давать процессорное время в первую очередь. При нескольких очередях каждой очереди назначается свой приоритет и процессы размещаются в очереди по их приоритетам. Чем приоритет у очереди больше, тем процессы из этой очереди выполняются раньше Пример состояний процесса и очередей. Разберем пример перехода процесса из одного состояния в другое. Допустим, пользователь запускает программу, которая порождает процесс. Первое состояние этого процесса – «новый» т.е. идет подготовка его к началу работы. При этом, для него отводится своя область оперативной памяти, в которую размещаются коды команд процесса и необходимые для его выполнения данные. После всех размещений процесс переходит в состояние «готовый к выполнению» или «выполняющийся» – это зависит от того, занят процессор или нет к моменту готовности процесса. Если процессор занят, то процесс переходит в состояние готового к работе и размещается в очереди готовых процессов, а если процессор свободен, то процесс сразу начинает работу т.е. переходит в состояние выполняющегося. Допустим, что во время работы процесса потребовался ввод с жесткого диска данных. В этом случае процессор выполняет прерывание процесса с сохранением значений всех своих регистров в оперативной памяти и система переводит процесс в очередь заблокированных процессов для данного жесткого диска. Как только данные будут считаны с диска, система переведет процесс из очереди заблокированных процессов в очередь готовых к выполнению процессов и как только процессор освободится и подойдет очередь данного процесса он будет запущен на выполнение процессором т.е. перейдет снова в состояние выполняющегося. Если во время выполнения процесса случилась ошибка (например, деление на 0) и система прервала его работу, переведя процесс в очередь приостановленных процессов и вывела пользователю на экран сообщение об ошибке с вопросом: продолжить работу или завершить? Если пользователь захочет продолжить работу, то после ввода им ответа о продолжении работы система снова переведет процесс в состояние готовых к работе и разместит его в очереди готовых процессов. Если же пользователь захочет прервать работу процесса или процесс сам закончит свою работу, то система переведет его в состояние завершающегося. На этом этапе будет выполнено сохранение всех данных результата работы процесса и освобождена оперативная память от всех данных. Состояние «завершающийся» - это последняя стадия существования процесса.
Дата добавления: 2014-12-07; Просмотров: 941; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |