Системы и способы управления драйверами в вычислительной системе
Иллюстрации
Показать всеИзобретение относится к вычислительным системам. Его использование при управлении драйверами позволяет получить технический результат в виде обеспечения возможности получить наиболее эффективный исполняемый код для текущей конфигурации компьютерной системы, с учетом возможности обновления ее компонентов. Этот результат достигается благодаря тому, что в компьютерной системе вводят программу приложения на промежуточном языке программирования в память компьютерной системы, вводят программу рабочей среды на промежуточном языке программирования в память компьютерной системы, компилируют программу приложения и программу рабочей среды компилятором компьютерной системы в единую выполняемую программу для выполнения на компьютерной системе назначения. 2 н. и 15 з.п. ф-лы, 7 ил.
Реферат
Область применения изобретения
Настоящее изобретение относится к системам и способам управления драйверами в вычислительной системе.
Предшествующий уровень техники
Применительно к конструкции компьютерной системы драйверы представляют собой компоненты программного обеспечения, позволяющие операционной системе использовать функции аппаратного обеспечения, которые она, в свою очередь, может предоставлять приложениям. Обычно операционная система взаимодействует с драйвером через интерфейс драйвера устройства (DDI), тщательно прописанный протокол, позволяющий операционной системе загружать драйвер, выяснять функции, обеспечиваемые аппаратным обеспечением, и делать эти функции доступными для приложений.
Программные интерфейсы, которыми операционная система обеспечивает приложения, называют программными интерфейсами приложения (API). API, предоставляемые операционной системой, снабжают приложения программными абстракциями, которые в той или иной степени подобны характеристикам нижележащего (базового) оборудования. Примером существенного отхода от нижележащего (базового) оборудования является абстракция программного обеспечения директорий/файлов, предусмотренная для запоминающего устройства большой емкости. В качестве еще одной программной абстракции, не подобной базовому оборудованию, можно указать виртуальную память, которая позволяет приложениям прозрачно использовать локальный жесткий диск, как если бы он был оперативным запоминающим устройством.
Когда API требуют использования аппаратных ресурсов, операционная система через DDI вызывает драйвер, позволяющий задействовать эти ресурсы. В силу различий между программными абстракциями, обеспечиваемыми API, и базовым оборудованием для такой трансляции вызовов API в вызовы DDI могут потребоваться значительные объемы логических операций и кода. В рамках данного описания изобретения программное обеспечение взаимодействия между API уровня приложений и DDI уровня драйверов носит общее название «рабочей среды» (среда поддержки исполнения программ).
Приложения, драйверы и пр. обычно пишут на языке высокого уровня, например, «С». Для реализации таких языков используют, в основном, компиляцию в собственный код. При этом драйверы прописывают отдельно от приложений и других программ, работающих на системе. Затем приложения и драйверы обычно компонуют друг с другом либо в процессе инсталляции, либо динамически (например, DLL) при выполнении приложения. Преимущество такой системы состоит в том, что можно создать компилятор, оптимизирующий код для конкретного класса процессоров (например, Х86). Однако компилятор может не оптимизировать код для конкретного микропроцессора, например, PENTIUM IV в отличие от PENTIUM III. Кроме того, компилятор не оптимизирует код для других параметров системы, включая версии драйвера, и других аппаратных компонентов или учитывает конкретные системные ограничения системы назначения. В результате система уровня приложений или рабочей среды должна применять логику высокой вычислительной мощности для определения таких параметров и ограничений процессора, чтобы скомпилировать программу так, чтобы она могла выполняться на целом классе компьютерных систем.
Другая общеизвестная парадигма программирования заключается в компилировании кодов во время выполнения. Примером такой системы является оперативный компилятор (JIT). Другие системы, компилирующие во время выполнения, включают в себя системы непрерывной компиляции, которые в режиме интерпретации немедленно начинают выполнение, но компилируют код в течение времени и непрерывно оптимизируют компиляцию. При использовании оперативных компиляторов по мере загрузки классов в виртуальную машину указатели метода в виртуальной таблице методов заменяются указателями на оперативный компилятор. Затем при первом вызове каждого метода для компиляции метода происходит обращение к JIT (оперативному) компилятору. После этого указатель из виртуальной таблицы методов вставляют для указания версии собственного кода для данного метода, что позволяет при дальнейших обращениях к методу осуществлять переход к собственному коду. Преимущество таких систем оперативной компиляции состоит в том, что машина назначения получает код на промежуточном языке (ПЯ), например, в виде байт-кодов JAVA, команд CLRT и т.п. Компилятор предназначен для преобразования ПЯ в команды, выполняемые центральным процессором. В результате одни и те же команды ПЯ можно посылать на компьютеры с разными центральными процессорами и выполнять их независимо от процессора назначения.
Хотя такие компиляторы промежуточного языка компилируют команды промежуточного языка на компьютерной системе назначения, они также не оптимизируют код для конкретной компьютерной системы назначения с учетом версий драйверов и других аппаратных компонентов.
Сущность изобретения
Ввиду вышеизложенного настоящее изобретение предусматривает управляемый код, содержащий приложение и рабочую среду и/или драйвер. Управляемый код компилируется компилятором, которому заранее известна точная конфигурация оборудования компьютерной системы назначения, подобно тому, как оперативному компилятору заранее известен тип микропроцессора на клиенте. Во время компиляции известна эффективная версия различных драйверов оборудования системы, поэтому если приложение или драйвер являются управляемыми, то компилятор может эмитировать выполняемый код, настроенный на конкретную версию драйвера.
Соответственно, изобретение предусматривает систему и способ управления кодом, позволяющие компилировать код, сконфигурированный для операционной системы, работающей с определенными процессором и драйвером, взаимодействующим с вычислительным компонентом. Система содержит совокупность команд приложения, которые поступают на промежуточном языке, читаемом компилятором промежуточного языка, и совокупность команд рабочей среды, которые также поступают на промежуточном языке, читаемом компилятором промежуточного языка. Компилятор промежуточного языка компилирует команды приложения и команды рабочей среды в набор команд управляемого кода, выполняемого процессором для взаимодействия с избранным драйвером. Драйвер (или фрагмент драйвера) можно также предоставлять на промежуточном языке и компилировать совместно с прикладными командами и командами рабочей среды в набор команд управляемого кода.
Краткое описание чертежей
Система и способы управления кодом описаны далее со ссылкой на прилагаемые чертежи, в которых:
фиг.1 - блок-схема иллюстративной сетевой среды, содержащей разнообразные вычислительные устройства, в которых можно реализовать настоящее изобретение;
фиг.2 - блок-схема примера вычислительного устройства, приведенного не с целью ограничения, в котором можно реализовать настоящее изобретение;
фиг.3А и 3В - различные модели драйвера для разных вычислительных систем;
фиг.4 - блок-схема компьютерной системы, имеющей архитектуру драйвера пользовательского режима в виде DLL, согласно аспекту изобретения;
фиг.5 - схема последовательности событий, происходящих, когда приложение осуществляет вызовы API, на примере графического приложения;
фиг.6 - схема применения JIT компиляции к приложению и рабочей среде согласно аспекту изобретения;
фиг.7 - схема применения оперативной (JIT) компиляции к приложению, драйверу и рабочей среде согласно аспекту изобретения.
Подробное описание изобретения
Обзор
Сторонники оперативных моделей драйверов мотивируют необходимость внедрения реализации API в драйвер улучшением качества функционирования. Однако такое внедрение имеет много нежелательных побочных эффектов, главным образом, из-за неспособности последующих версий рабочей среды добавлять особенности, усовершенствования в работе или изменения в политике API к драйверам, которые появились раньше данной версии рабочей среды.
Описанное здесь изобретение предусматривает, что управляемый код, включая приложения, рабочую среду и драйвер, должен заранее располагать информацией о точной конфигурации оборудования клиента, подобно тому, как оперативному JIT-компилятору заранее известен тип микропроцессора на клиенте. Например, в ходе динамической компиляции системе известна эффективная версия графического драйвера (DirectX 6.0, DirectX 7.0 и т.п.), и если приложение или драйвер являются управляемыми, то оперативный (JIT) компилятор может эмитировать выполняемый код, настроенный на конкретную версию драйвера.
Иллюстративные сетевые и распределенные среды
Специалистам в данной области очевидно, что компьютер или другое устройство-клиент или устройство-сервер можно развернуть как часть компьютерной сети или в виде распределенной вычислительной среды. Таким образом, настоящее изобретение относится к любой компьютерной системе, содержащей любое количество блоков памяти или запоминающих устройств и любое количество приложений и процессов, осуществляемых с использованием любого количества запоминающих устройств или томов. Настоящее изобретение применимо к среде, в которой компьютеры-серверы и компьютеры-клиенты, развернутые в сетевой среде или распределенной вычислительной среде, содержат удаленные или локальные запоминающие устройства. Настоящее изобретение также применимо к автономным вычислительным устройствам, обладающим функциями программирования на каком-либо языке программирования, интерпретации и выполнения, позволяющими генерировать, принимать и передавать информацию в связи с услугами.
Распределенное вычисление облегчает совместное пользование компьютерными ресурсами и услугами за счет прямого обмена между вычислительными устройствами и системами. Эти ресурсы и услуги включают в себя обмен информацией, кэш-память и запоминающие устройства на дисках для файлов. Благодаря связности сети распределенное вычисление позволяет клиентам увеличивать свою коллективную вычислительную мощность в интересах всего предприятия. В этом отношении ряд устройств может иметь наборы данных, для которых было бы желательно применять средства задания границ изображений, отвечающие настоящему изобретению.
На фиг.1 представлена схема иллюстративной сетевой или распределенной вычислительной среды. Распределенная вычислительная среда содержит вычислительные объекты 10а, 10b и т.д. и вычислительные объекты или устройства 110а, 110b, 110с и т.д. Эти объекты могут содержать программы, методы, запоминающие устройства, программируемую логику (логические устройства) и пр. Объекты могут содержать фрагменты одинаковых или разных устройств, например, PDA (персональный электронный секретарь), телевизоров, проигрывателей записей в формате МР3, телевизоров, персональных компьютеров и т.п. Каждый объект может связываться с другим объектом посредством сети связи 14. Эта сеть может сама содержать другие вычислительные объекты и вычислительные устройства, предоставляющие услуги системе, изображенной на фиг.1. Согласно аспекту изобретения каждый объект 10 или 110 может содержать данные, для которых было бы желательно осуществлять очерчивание или задание границ изображения. Может также оказаться желательным сравнивать очертание изображения из одного объекта 10 или 110 с очертанием изображения другого объекта 10 или 110.
В архитектуре распределенных вычислений компьютеры, которые традиционно можно было использовать только в качестве клиентов, связываются друг с другом напрямую и могут выступать и в качестве клиентов, и в качестве серверов, в зависимости от того, какая роль наиболее эффективна для сети. Это снижает нагрузку на серверы и позволяет всем клиентам обращаться к ресурсам, имеющимся на других клиентах, тем самым увеличивая емкость и эффективность всей сети.
Распределенное вычисление может быть полезно для коммерческих предприятий в повышении эффективности доставки услуг и функций через разнообразные географические границы. Кроме того, распределенное вычисление позволяет перемещать данные ближе к точке потребления данных, выступая в качестве механизма сетевого кэширования. Распределенное вычисление также позволяет вычислительным сетям совместно работать на динамической основе с использованием интеллектуальных агентов. Агенты размещаются на равноправных компьютерах и передают разного рода информацию в обоих направлениях. Агенты могут также инициировать задания от имени других равноправных систем. Например, интеллектуальные агенты можно использовать для назначения приоритетов заданий в сети, смены направления переноса трафика, локального поиска файлов или определения аномального поведения, например, вируса и его блокировки прежде, чем оно нанесет ущерб сети. Можно также рассматривать все остальные виды услуг. В такой среде можно реализовать алгоритм(ы) очерчивания изображения, отвечающие настоящему изобретению.
Очевидно, что объект, например, 110с, может размещаться на другом вычислительном устройстве 10 или 110. Таким образом, хотя в изображенной физической среде соединенные устройства показаны в виде компьютеров, такая схема является всего лишь иллюстрацией, и альтернативно можно изображать или описывать физическую среду, содержащую различные цифровые устройства, например, PDA, телевизоры, проигрыватели МР3 и пр., программные объекты, например интерфейсы, объекты СОМ (модели составных объектов в Windows) и т.п.
Существуют разнообразные системы, компоненты и сетевые конфигурации, которые поддерживают распределенные вычислительные среды. Например, вычислительные системы можно соединять друг с другом посредством проводных или беспроводных систем, локальных сетей или сильно распределенных сетей. В настоящее время многие сети подключены к сети Интернет, которая обеспечивает инфраструктуру для сильно распределенного вычисления и охватывает множество разных сетей.
Под сетью Интернет обычно понимают совокупность сетей и шлюзов, которые используют стек протоколов TCP/IP, широко распространенных в технике компьютерных сетей. Название TCP/IP- это акроним выражения «Transport Control Protocol/ Interface Program» (протокол управления передачей/ протокол интерфейса). Интернет можно описать как систему географически распределенных удаленных компьютерных сетей, соединенных между собой компьютерами, выполняющими сетевые протоколы, которые позволяют пользователям взаимодействовать и совместно использовать информацию по сетям. Благодаря такому широко распространенному совместному использованию информации удаленные сети, например Интернет, в целом, эволюционировали в открытую систему, для которой разработчики могут создавать программные приложения для осуществления специализированных операций или услуг, практически без ограничения.
Таким образом, сетевая инфраструктура обеспечивает разнообразные сетевые топологии, например, типа клиент-сервер, соединения равноправных узлов или архитектуры смешанного типа. «Клиент» - это элемент класса или группы, который пользуется услугами другого(й) класса или группы, к которому(й) не относится. Таким образом, в вычислении клиент - это процесс, т.е., грубо говоря, набор команд или заданий, который запрашивает услугу, обеспечиваемую другой программой. Чтобы воспользоваться запрашиваемой услугой, процессу-клиенту не требуется «знать», как работает другая программа или сами услуги. В архитектуре клиент-сервер, в частности, в сетевой системе клиент обычно представляет собой компьютер, который обращается к совместно используемым сетевым ресурсам, обеспечиваемым другим компьютером, например, сервером. В примере, представленном на фиг.1, компьютеры 110а, 110b и т.д. можно рассматривать как клиенты, а компьютеры 10а, 10b и т.д. можно рассматривать как серверы, причем сервер 10а, 10b и т.д. поддерживает данные, которые затем дублируются на компьютерах-клиентах 110а, 110b и т.д.
Сервер обычно представляет собой удаленную компьютерную систему, доступную через удаленную сеть, например, Интернет. Процесс-клиент может быть активен в первой компьютерной системе, а процесс-сервер может быть активен во второй компьютерной системе, поддерживая связь друг с другом посредством среды связи и таким образом обеспечивая распределенные функции и позволяя множественным клиентам пользоваться возможностями сервера по сбору информации.
Клиент и сервер связываются друг с другом с использованием функций, обеспечиваемых на уровне протоколов. Например, во Всемирной паутине (WWW) или просто «паутине» широко используется протокол передачи гипертекстовых файлов (HTTP). Для идентификации компьютеров-серверов или компьютеров-клиентов по отношению друг к другу используется обычно адрес компьютерной сети, например, универсальный указатель ресурсов (URL) или адрес Интернет-протокола (IP). Под сетевым адресом можно понимать адрес универсального указателя ресурсов. Связь можно обеспечивать, например, посредством среды связи. В частности, для обеспечения высокой пропускной способности линии связи клиент и сервер можно подключать друг к другу посредством соединений TCP/IP.
Таким образом, на фиг.1 показана иллюстративная сетевая или распределенная среда, отвечающая настоящему изобретению, в которой сервер поддерживает связь с компьютерами-клиентами через сеть/шину. В частности, несколько серверов 10а, 10b и т.д. соединены через сеть связи /шину 14, которая может представлять собой ЛВС, ГС, интранет, Интернет и т.п., с несколькими клиентами или удаленными вычислительными устройствами 110а, 110b, 110с, 110d, 110е и т.д., например, портативным компьютером, карманным компьютером, «тонким» клиентом, сетевым оборудованием или иным устройством, например, видеомагнитофоном, телевизором, печкой, осветительным прибором, нагревателем и т.п. в соответствии с настоящим изобретением. Предусматривается, что настоящее изобретение применимо к любому вычислительному устройству, в связи с которым желательно связываться с другим вычислительным устройством в отношении услуг очерчивания изображения или задания границ.
В сетевой среде, в которой сеть связи /шина 14 представляет собой, например, Интернет, серверы 10 могут являться веб-серверами, с которыми клиенты 110а, 110b, 110с, 110d, 110е и т.д. связываются посредством любого из нескольких известных протоколов, например, протокола передачи гипертекстовых файлов (HTTP). Серверы 10 могут также выступать в качестве клиентов 110, что может быть характерным для распределенной вычислительной среды. Каналы связи могут быть проводными или беспроводными по мере необходимости. Устройства-клиенты 110 могут осуществлять или не осуществлять связь через сеть связи /шину 14 и могут иметь собственные независимые каналы связи. Например, в случае телевизора или видеомагнитофона для управления ими можно применять или не применять сетевой аспект. Каждый компьютер-клиент 110 или компьютер-сервер 10 можно снабдить различными прикладными программными модулями или объектами 135 и соединениями или доступом к различным типам запоминающих элементов или объектов, в которых можно хранить файлы или в которые можно загружать или перемещать фрагмент(ы) файлов. Любой компьютер 10а, 10b, 110а, 110b и т.д. может отвечать за поддержку и обновление базы данных 20 или другого запоминающего элемента в соответствии с настоящим изобретением, например, базы данных для хранения программного обеспечения обработки изображений для обработки изображений в соответствии с настоящим изобретением. Таким образом, настоящее изобретение можно применять в среде компьютерной сети, содержащей компьютеры-клиенты 110а, 110b и т.д., которые могут иметь доступ и взаимодействовать с компьютерной сетью/ шиной 14, и компьютеры-серверы 10а, 10b и т.д., которые могут взаимодействовать с компьютерами-клиентами 110а, 110b и т.д. и другими устройствами 111 и базами данных 20.
Иллюстративное вычислительное устройство
Ниже со ссылкой на фиг.2 кратко описана в общем виде вычислительная среда, подходящая для реализации изобретения. Однако следует понимать, что в связи с настоящим изобретением предусмотрено использование карманных, портативных и других вычислительных устройств и вычислительных объектов всех видов. Хотя ниже описан компьютер общего назначения, это всего лишь один пример, и настоящее изобретение можно реализовать применительно к тонкому клиенту, имеющему возможность взаимодействия и взаимодействие с сетью/шиной. Таким образом, настоящее изобретение можно реализовать в среде сетевых услуг, сосредоточенных в главных машинах, в которой привлекаются очень малые или минимальные ресурсы клиентов, например, сетевой среде, в которой устройство-клиент служит всего лишь интерфейсом с сетью/шиной, например объект, размещенный в оборудовании. В сущности, всякое место, где можно хранить данные или откуда можно извлекать данные, является желательной или пригодной средой для выполнения алгоритма(ов) очерчивания изображений.
Хотя это и не обязательно, изобретение можно реализовать посредством операционной системы для использования разработчиком услуг для устройства или объекта и/или в составе прикладного программного обеспечения, способствующего обработке данных изображения. Программное обеспечение можно описывать в общем контексте компьютерно-выполняемых команд, например, программных модулей, выполняемых одним или несколькими компьютерами, например, клиентскими рабочими станциями, серверами или иными устройствами. В целом программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют отдельные задачи или реализуют отдельные абстрактные типы данных. Обычно функции программных модулей можно объединять или распределять в зависимости от варианта осуществления. Кроме того, специалистам в данной области очевидно, что изобретение можно осуществлять на практике применительно к другим конфигурациям компьютерной системы. В число других общеизвестных вычислительных систем и/или конфигураций, в которых можно реализовать изобретение, входят, но не исключительно, персональные компьютеры (ПК), банкоматы, компьютеры-серверы, карманные или переносные устройства, многопроцессорные системы, системы на основе микропроцессора, программируемая бытовая электроника, сетевые ПК, оборудование, осветительные приборы, элементы мониторинга окружающей среды, мини-компьютеры, универсальные компьютеры и т.п. Изобретение также можно осуществлять на практике в распределенных вычислительных средах, где задания выполняются удаленными устройствами обработки, подключенными через сеть связи /шину или другую среду передачи данных. В распределенной вычислительной среде программные модули могут размещаться как на локальных, так и на удаленных компьютерных носителях информации, в том числе запоминающих устройствах, и узлы-клиенты могут, в свою очередь, вести себя как узлы-серверы.
Таким образом, на фиг.2 показан пример среды 100 вычислительной системы, подходящей для реализации настоящего изобретения, хотя из вышесказанного явствует, что среда 100 вычислительной системы является только одним примером подходящей вычислительной среды и не призвана вносить какие-либо ограничения в сферу применения или функции изобретения. Кроме того, вычислительную среду 100 не следует рассматривать как имеющую какую-либо зависимость или подчиняющуюся требованию, относящемуся к любому из компонентов или их сочетанию, продемонстрированных в иллюстративной операционной среде 100.
Согласно фиг.2 иллюстративная система для реализации изобретения включает в себя вычислительное устройство общего назначения в виде компьютера 110. Компоненты компьютера 110 могут включать в себя, но не только, обрабатывающий блок 120, системную память 130 и системную шину 121, которая подключает различные компоненты системы, в том числе системную память к обрабатывающему блоку 120. Системная шина 121 может относиться к любому из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующих любую из разнообразных шинных архитектур. Например, но не исключительно, такие архитектуры включают в себя шину, соответствующую промышленному стандарту архитектуры (ISA), шину, соответствующую стандарту микроканальной архитектуры (МСА), шину, соответствующую расширенному ISA (EISA), локальную шину, соответствующую стандарту Ассоциации по стандартам в области видеоэлектроники (VESA), и шину, соответствующую стандарту подключения периферийных компонентов (PCI) (именуемую также шиной расширения).
Компьютер 110 обычно включает в себя разнообразные компьютерно-считываемые носители. Компьютерно-считываемые носители могут представлять собой любые имеющиеся носители, к которым может обращаться компьютер 110, в том числе энергозависимые и энергонезависимые носители, сменные и стационарные носители. Например, но не исключительно, компьютерно-считываемые носители могут включать в себя компьютерные носители для хранения данных и среды передачи данных. Компьютерные носители для хранения данных включают в себя энергозависимые и энергонезависимые, сменные и стационарные носители, реализованные посредством любого метода или технологии хранения информации, например, компьютерно-считываемых команд, структур данных, программных модулей или иных данных. Компьютерные носители для хранения данных включают в себя, помимо прочего, ОЗУ, ПЗУ, ЭППЗУ, флэш-память и другие запоминающие устройства, CD-ROM, цифровые универсальные диски (DVD) или иной оптический дисковый носитель данных, магнитные кассеты, магнитную ленту, магнитный дисковый носитель данных или иные магнитные запоминающие устройства или любой иной носитель, который можно использовать для хранения полезной информации и к которому может обращаться компьютер 110. Среды передачи данных обычно реализуют компьютерно-считываемые команды, структуры данных, программные модули или иные данные в виде сигнала, модулируемого данными, например, несущей волны или иного «транспортного» механизма, и включают в себя любые среды доставки информации. Термин «сигнал, модулируемый данными» означает сигнал, одну или несколько характеристик которого задают или изменяют определенным образом, чтобы кодировать в нем информацию. Среды передачи данных могут, например, помимо прочего, включать в себя проводные среды, например, проводную сеть или прямое проводное соединение, и беспроводные среды, например, акустические, РЧ (радиочастотные), инфракрасные и другие беспроводные среды. Понятие компьютерно-считываемого носителя охватывает также любые комбинации вышеперечисленных носителей.
Системная память 130 включает в себя компьютерные носители для хранения данных в виде энергозависимой и энергонезависимой памяти, например, постоянного запоминающего устройства (ПЗУ) 131 и оперативного запоминающего устройства (ОЗУ) 132. Базовая система ввода/вывода (BIOS) 133, содержащая базовые процедуры, обеспечивающие перенос информации между элементами компьютера 110, например, при запуске, обычно хранится в ПЗУ 131. В ОЗУ 132 обычно хранятся данные и программные модули, подлежащие быстрому доступу со стороны обрабатывающего модуля 120 или обрабатываемые им в данный момент. Для примера, но не для ограничения общности, на фиг.2 показаны операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 может также содержать другие сменные/стационарные, энергозависимые/энергонезависимые компьютерные носители для хранения данных. Исключительно для примера на фиг.2 показан жесткий диск 141 (привод жесткого диска), который позволяет считывать информацию со стационарного энергонезависимого магнитного носителя и записывать информацию на него, дисковод 151 для дискет, который считывает информацию со сменного энергонезависимого магнитного диска 152 или записывает информацию на него, и дисковод 155 для оптических дисков, который считывает информацию со сменного энергонезависимого оптического диска 156, например, CD-ROM или иного оптического носителя, или записывает информацию на него. В иллюстративной операционной среде можно также использовать другие сменные/стационарные, энергозависимые/энергонезависимые компьютерные носители для хранения данных, например, кассеты с магнитной лентой, карты флэш-памяти, цифровые универсальные диски, ленту для цифровой видеозаписи, ОЗУ на кристаллах, ПЗУ на кристаллах и т.д. Жесткий диск 141, как правило, подключен к системной шине 121 через интерфейс запоминающего устройства со стационарным носителем, например, интерфейс 140, а дисковод 151 для дискет и дисковод 155 для оптических дисков, как правило, подключены к системной шине 121 через интерфейс запоминающего устройства со сменным носителем, например, интерфейс 150.
Вышеупомянутые и изображенные на фиг.2 приводы и соответствующие компьютерные носители для хранения данных обеспечивают хранение компьютерно-считываемых команд, структур данных, программных модулей и других данных для компьютера 110. Например, согласно фиг.2, на жестком диске 141 хранится операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Заметим, что эти компоненты могут быть идентичны операционной системе 134, прикладным программам 135, другим программным модулям 136 и программным данным 137 или отличны от них. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 обозначены другими позициями, поскольку они, как минимум, могут представлять собой разные копии. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, например, клавиатуру 162 и указательное устройство 161, в качестве которого может выступать мышь, шаровой манипулятор или сенсорная панель. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровой пульт, спутниковую тарелку, сканер и т.д. Эти и другие устройства ввода обычно подключаются к обрабатывающему модулю 120 через интерфейс 160 пользовательского ввода, подключенный к системной шине 121, но могут подключаться посредством других интерфейсов и шинных структур, например, параллельного порта, игрового порта или универсальной последовательной шины (USB). К системной шине 121 также можно подключать графический интерфейс 182, например, Northbridge (Северный мост). «Северный мост» - это набор микросхем, который поддерживает связь с ЦП или главным обрабатывающим блоком 120 и предусмотрен для связи через AGP (ускоренный/усовершенствованный графический порт). С графическим интерфейсом 182 может/могут поддерживать связь один или несколько графических процессоров 184 (ГП). Монитор 191 или другое устройство отображения также подключены к системной шине 121 посредством интерфейса, например, видеоинтерфейса 190, который, в свою очередь, поддерживает связь с видеопамятью 186. Помимо монитора 191 компьютеры могут также содержать другие периферийные устройства вывода, например, громкоговорители 197 или принтер 196, которые могут подключаться через интерфейс 195 периферийных устройств вывода.
Компьютер 110 может работать в сетевой или распределенной среде, используя логические линии связи с одним или несколькими удаленными компьютерами, например, удаленным компьютером 180. Удаленный компьютер 180 может представлять собой персональный компьютер, сервер, маршрутизатор, сетевой ПК, равноправное устройство или другой общий узел сети и обычно содержит многие или все элементы, описанные выше в отношении компьютера 110, хотя на фиг.2 изображено только запоминающее устройство 181. Логические линии связи, обозначенные на фиг.2, включают в себя локальную вычислительную сеть (ЛВС) 171 и глобальную сеть (ГС) 173, а также, возможно, и другие сети/шины. Такие сетевые среды широко распространены в жилых домах, учреждениях, учрежденческих компьютерных сетях, сетях интранет и в сети Интернет.
При использовании сетевой среды ЛВС компьютер 110 подключают к ЛВС 171 посредством сетевого интерфейса или адаптера 170. При использовании сетевой среды ГС компьютер 110 обычно содержит модем 172 или другое средство установления связи через ГС 173, например, Интернет. Модем 172, который может быть внутренним или внешним, можно подключать к системной шине 121 через интерфейс 160 пользовательского ввода или посредством другого подходящего механизма. В сетевой среде программные модули, указанные применительно к компьютеру 110, или их фрагменты могут храниться в удаленном запоминающем устройстве. В порядке примера, но не в целях ограничения, на фиг.2 показано, что удаленные прикладные программы 185 хранятся в запоминающем устройстве 181. Следует понимать, что помимо сетевых линий связи, показанных в качестве примера, для установления линии связи между компьютерами можно использовать другие средства.
Иллюстративные структуры или архитектуры распределенного вычисления
В свете сближения персонального вычисления и Интернета были разработаны и разрабатываются в настоящее время различные структуры распределенного вычисления. Индивидуальным и учрежденческим пользователям одинаково предоставляется интерфейс, обеспечивающий бесшовное межсетевое взаимодействие и работу в Интернет, для приложений и вычислительных устройств, что делает вычислительную деятельность все более ориентированной на работу в сети или с веб-браузером.
Например, платформа .Net фирмы MICROSOFT® включает в себя серверы, услуги компоновки из стандартных блоков, например, хранение данных на базе Интернет и загружаемое программное обеспечение устройства. В целом, платформа .Net обеспечивает (1) возможность заставить целый ряд вычислительных устройств работать совместно и автоматически обновлять и синхронизировать пользовательскую информацию на всех устройствах, (2) повышенную интерактивную способность веб-сайтов за счет более широкого использования XML вместо HTML, (3) онлайновые услуги, характеризующиеся настраиваемыми доступом к продуктам и услугам и их доставкой пользователю из центральной начальной точки для управления различными приложениями, например, электронной почтой, или программным обеспечением, например, Office.Net, (4) централизованное хранение данных, которое повышает эффективность и простоту доступа к информации, а также синхронизацию информации между пользователями и устройствами, (5) способность интегрировать различные средства связи, например, электронную почту, факсы и телефоны, (6) для разработчиков - возможность создавать модули многоразового использования, что повышает производительность и снижает количество ошибок программирования, и (7) многие другие особенности межплатформенной интеграции.
Управление драйверами в вычислительной системе
Фиг.3А и 3В представляют собой простые схемы, поясняющие, как прикладная программа 135, рабочая среда 302 и драйвер 303 взаимодействуют посредством API и DDI.
Применительно к развертыванию графических API/DDI, в настоящее время имеются две распространенные модели драйвера: модель оперативного драйвера и модель многоуровневого драйвера. На фиг.3А представлена модель оперативного драйвера, в сущности, полная реализация API, которая имеет возможность работать на отдельной части аппаратуры, например, видеоинтерфейсе 190 (фиг.2). Примеры API, в которых используются модели оперативного драйвера, включают в себя соответствующие графические API, например, 3Dfx Glide и ATI CIF, а также OpenGL.
Многоуровневые драйверы, представленные на фиг.3В, вводят дополнительный уровень косвенности, на котором реализация API задействует некоторую логику (например, подтверждение правильности параметров) и код (например, геометрический конвейер) до вызова драйвера 303 через DDI. Термин «многоуровневый драйвер» подразумевает не только, что API вызывает DDI после выполнения работы, но также то, что драйвер 303 может реализовывать различные «уровни» в зависимости от того, насколько оборудование 306 реализует функции. Например, DDI для графического аппаратного продукта, в котором реализовано только наложение растра, имеет более низкий уровень, чем для продукта, в котором помимо наложения растра реализованы преобразование и подсветка.
Поддержка разнообразных многоуровневых драйверов повышает сложность реализации рабочей среды 302. Например, DIRECTX 7.0 от MICROSOFT, который поддерживает аппаратно-ускоренные преобразование и под