Реализация многозадачности в Windows NT — КиберПедия 

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

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

Реализация многозадачности в Windows NT

2019-09-26 427
Реализация многозадачности в Windows NT 0.00 из 5.00 0 оценок
Заказать работу

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

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

И, наконец, третья, последняя, но от этого не менее веская, причина. Затрагивает она программирование и, следовательно, программистов. Дело в том, что сложность разработки программного продукта, а вместе с ней стоимость, длительность, количество ошибок и т.п., возрастают с размером самой программы отнюдь не линейно: написать пять программ по двадцать тысяч строк гораздо легче, чем одну в сто тысяч. Поэтому, если есть возможность разбить крупный проект, реализовать части по отдельности, а затем объединить в рамках единого приложения - это, как правило, приводит к существенному повышению надежности и, опять-таки, сокращению сроков разработки, необходимых ресурсов и т.п. Разумеется, что эти отдельные блоки должны выполняться параллельно. Кроме всего, такой подход позволяет, один раз вложив деньги, получать многократную отдачу.

Например, создав модуль архивного копирования один раз, можно затем многократно использовать его при разработке других программ.

Давайте проследим, как менялся механизм реализации многозадачности в процессе эволюции операционных систем: MS DOS - Windows - Windows95. DOS с ее командной строкой, тем не менее, была многозадачной операционной системой. Конечно, весьма примитивной, однако и работать она могла на 86-м процессоре с 256-ю килобайтами памяти, сравните с 16-ю мегабайтами и пентиумом, необходимыми для нормальной работы Windows95.

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

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

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

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

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

Многозадачность, используемая в операционных системах Windows95 и Windows NT, носит название вытесняющей или приоритетной (preemptive) многозадачности. Время работы процессора разбивается на небольшие отрезки - кванты. Каждая задача имеет свой приоритет, от которого зависит, сколько квантов для выполнения будет выделено ей операционной системой, после чего эта задача будет прервана (вытеснена) и управление перейдет к следующей по очереди. Задачей в данном контексте может быть не только отдельная программа, но и ее часть, выделенная в т.н. поток (thread). Так, в седьмой версии MS Word'a как поток выделено открытие файла и, если вы решили открыть большой файл, а затем передумали, то можно закрыть Word, не дожидаясь, пока на экране появится текст.

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

К сожалению, в среде Windows95 в режиме вытесняющей многозадачности выполняются только 32-х разрядные приложения. Старые - 16-ти разрядные - по-прежнему работают с очередью сообщений, как под Windows 3.1, со всеми вытекающими отсюда последствиями. В чем, наверняка, каждый пользователь имел печальную возможность убедиться.

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



Поделиться с друзьями:

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

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

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.