система для вызова привилегированной функции в устройстве
Классы МПК: | G06F9/48 инициирование программы; переключение программы, например, прерыванием |
Автор(ы): | КЕЛЛИ Брайан Харольд (US), ЧАНДРАСЕКХАР Рамеш (US) |
Патентообладатель(и): | КВЭЛКОММ ИНКОРПОРЕЙТЕД (US) |
Приоритеты: |
подача заявки:
2004-10-28 публикация патента:
27.12.2008 |
Изобретение относится к вычислительной технике. Техническим результатом является обеспечение доступа к процедурам привилегированного режима из приложений, выполняющихся в привилегированном или непривилегированном режиме. Устройство содержит схему приема запроса от приложения, схему определения режима работы запрашивающего приложения, схему для вызова функции с использованием прерывания и схему для непосредственного вызова функции. Способ включает в себя этап приема запроса от приложения для вызова функции; этап определения режима работы приложения; вызова функции с использованием прерывания в случае, если приложение выполняется в непривилегированном режиме, причем функция выполняется в той же самой задаче в качестве приложения. Способ также включает в себя этап непосредственного вызова функции в случае, если приложение выполняется в привилегированном режиме. 4 н. и 8 з.п. ф-лы, 3 ил.
Формула изобретения
1. Способ, предоставляющий приложению возможность вызова функции в устройстве, причем устройство включает в себя, по меньшей мере, два режима работы, содержащие привилегированный режим и непривилегированный режим, причем функция выполняется в привилегированном режиме, содержащий этапы, на которых
принимают запрос от приложения для выполнения функции, связанной с идентификатором, который передается с запросом;
определяют режим работы запрашивающего приложения;
если запрашивающее приложение выполняется в привилегированном режиме работы, то
выполняют поиск требуемой привилегированной функции на основании идентификатора,
выполняют вызов привилегированной функции,
выполняют возврат к вызывающему привилегированному приложению;
если запрашивающее приложение выполняется в непривилегированном режиме работы, то
формируют прерывание, которое функционирует для запроса перехода в привилегированный режим так, чтобы привилегированная функция могла быть выполнена, причем прерывание включает в себя идентификатор, передаваемый из вызывающего приложения,
выполняют переход к обработчику прерываний привилегированного режима, где происходит переключение на стек привилегированного режима и проверка правильности переданного идентификатора функции,
выполняют поиск требуемой привилегированной функции на основании идентификатора,
выполняют вызов привилегированной функции,
после выполнения привилегированной функции выполняют восстановление непривилегированных регистров, включая стек непривилегированного режима,
выполняют возврат к вызывающему непривилегированному приложению.
2. Способ по п.1, причем прерывание является программным прерыванием.
3. Способ по п.1, причем устройство представляет собой беспроводное устройство.
4. Устройство для предоставления приложению возможности вызова функции в устройстве, причем устройство включает в себя, по меньшей мере, два режима работы, содержащие привилегированный режим и непривилегированный режим, причем функция выполняется в привилегированном режиме, содержащее
логическую схему, которая принимает запрос от приложения для выполнения функции, связанной с идентификатором, который передается с запросом;
логическую схему, которая определяет режим работы запрашивающего приложения;
логическую схему для вызова функции с использованием прерывания в случае, если приложение выполняется в непривилегированном режиме, причем логическая схема для вызова функции с использованием прерывания выполнена с возможностью: формирования прерывания, которое функционирует для запроса перехода в привилегированный режим так, чтобы привилегированная функция могла быть выполнена, причем прерывание включает в себя идентификатор, передаваемый из вызывающего приложения, выполнения перехода к обработчику прерываний привилегированного режима, где происходит переключение на стек привилегированного режима и проверка правильности переданного идентификатора функции, выполнения поиска требуемой привилегированной функции на основании идентификатора, выполнения вызова привилегированной функции, восстановления непривилегированных регистров, включая стек непривилегированного режима, и выполнения возврата к вызывающему привилегированному приложению; и
логическую схему для непосредственного вызова функции в случае, если приложение выполняется в привилегированном режиме, причем логическая схема для непосредственного вызова функции выполнена с возможностью выполнения поиска требуемой привилегированной функции на основании идентификатора, выполнения вызова привилегированной функции, выполнения возврата к вызывающему непривилегированному приложению.
5. Устройство по п.4, причем прерывание представляет собой программное прерывание.
6. Устройство по п.4, причем устройство представляет собой беспроводное устройство.
7. Устройство для предоставления приложению возможности вызова функции в устройстве, причем устройство включает в себя, по меньшей мере, два режима работы, содержащие привилегированный режим и непривилегированный режим, причем функция выполняется в привилегированном режиме, содержащее
средство для приема запроса от приложения для выполнения функции, связанной с идентификатором, который передается с запросом;
средство для определения режима работы запрашивающего приложения;
средство для вызова функции с использованием прерывания в случае, если приложение выполняется в непривилегированном режиме, причем средство для вызова функции с использованием прерывания выполнено с возможностью формирования прерывания, которое функционирует для запроса перехода в привилегированный режим так, чтобы привилегированная функция могла быть выполнена, причем прерывание включает в себя идентификатор, передаваемый из вызывающего приложения, выполнения перехода к обработчику прерываний привилегированного режима, где происходит переключение на стек привилегированного режима и проверка правильности переданного идентификатора функции, выполнения поиска требуемой привилегированной функции на основании идентификатора, выполнения вызова привилегированной функции, восстановления непривилегированных регистров, включая стек непривилегированного режима, и выполнения возврата к вызывающему привилегированному приложению; и
средство для непосредственного вызова функции в случае, если приложение выполняется в привилегированном режиме, причем средство для непосредственного вызова функции выполнено с возможностью: выполнения поиска требуемой привилегированной функции на основании идентификатора, выполнения вызова привилегированной функции, выполнения возврата к вызывающему непривилегированному приложению.
8. Устройство по п.7, причем прерывание представляет собой программное прерывание.
9. Устройство по п.7, причем устройство представляет собой беспроводное устройство.
10. Машиночитаемый носитель, содержащий команды, которые при выполнении процессором в устройстве, функционируют для предоставления приложению возможности вызова функции в устройстве, причем устройство включает в себя, по меньшей мере, два режима работы, содержащие привилегированный режим и непривилегированный режим, причем функция выполняется в привилегированном режиме, содержащий
команды для приема запроса от приложения для выполнения функции, связанной с идентификатором, который передается с запросом;
команды для определения режима работы запрашивающего приложения;
команды для вызова функции с использованием прерывания в случае, если приложение выполняется в непривилегированном режиме, причем команды для вызова функции с использованием прерывания сконфигурированы для
формирования прерывания, которое функционирует для запроса перехода в привилегированный режим так, чтобы привилегированная функция могла быть выполнена, причем прерывание включает в себя идентификатор, передаваемый из вызывающего приложения, выполнения перехода к обработчику прерываний привилегированного режима, где происходит переключение на стек привилегированного режима и проверка правильности переданного идентификатора функции, выполнения поиска требуемой привилегированной функции на основании идентификатора, выполнения вызова привилегированной функции, восстановления непривилегированных регистров, включая стек непривилегированного режима, и выполнения возврата к вызывающему привилегированному приложению; и
команды для непосредственного вызова функции в случае, если приложение выполняется в привилегированном режиме, причем команды для непосредственного вызова функции сконфигурированы для выполнения поиска требуемой привилегированной функции на основании идентификатора, выполнения вызова привилегированной функции, выполнения возврата к вызывающему непривилегированному приложению.
11. Машиночитаемый носитель по п.10, причем прерывание представляет собой программное прерывание.
12. Машиночитаемый носитель по п.10, причем устройство представляет собой беспроводное устройство.
Описание изобретения к патенту
Область техники, к которой относится изобретение
Настоящее изобретение относится, в целом, к эффективной работе устройства и, более конкретно, к системе для вызова привилегированной функции в устройстве.
Описание предшествующего уровня техники
Усовершенствования в технологии привели к росту разнообразия устройств для домашнего, офисного и персонального использования. Например, компьютерные системы, такие как настольные компьютеры, портативные компьютеры и планшетные компьютеры, стали мощными инструментальными средствами для использования дома или в офисных средах. Персональные устройства, такие как беспроводные телефоны, «карманные» компьютеры (PDA) и устройство страничной памяти, также стали более мощными и на данный момент широко используются.
В настоящее время многие устройства содержат сложные аппаратные средства и программное обеспечение, которое запускают операционные системы, такие как UNIX, LINUX или подобные операционные системы. В целом, эти операционные системы обеспечивают множество режимов работы. Например, большинство систем обеспечивают привилегированный и непривилегированный режимы работы. Программам, выполняющимся в привилегированном режиме работы, предоставлена возможность обращения к памяти и системным ресурсам без ограничений. Программы, выполняющиеся в непривилегированном режиме, ограничены в доступе к определенным областям памяти и/или системам устройства. Эта конфигурация обеспечивает уровень защиты для важной области памяти или функций устройства. Например, посредством выполнения сторонних приложений в непривилегированном режиме важные области памяти и функции устройства могут быть защищены от несанкционированного доступа. Кроме того, такая структура позволяет системе локализовать ошибки в течение выполнения.
Однако в некоторых ситуациях желательно предоставить возможность вызова функций привилегированного режима из приложений, выполняющихся в привилегированном или в непривилегированном режиме. Например, желательно, чтобы приложение, выполняющееся в привилегированном режиме, имело доступ к функциям привилегированного режима, а также желательно, чтобы приложение, выполняющееся в непривилегированном режиме, имело доступ к тем же самым привилегированным функциям. Например, может быть желательно предоставить приложению возможность доступа к выбранному системному файлу или аппаратным средствам устройства, таким как, например, модем устройства.
К сожалению, обычные системы используют (системное) прерывание для приостановки выполнения непривилегированного приложения, в то время как отдельная задача «ядра» привилегированного режима выполняет требуемую операцию. В результате этого новая задача привилегированного режима приводит к дополнительным сложностям планирования и к непроизводительным затратам. Также могут иметь место дополнительные системные задержки в виде латентности диспетчера. Кроме того, новая задача может выполняться с другим приоритетом, отличным от приоритета непривилегированного приложения, из которого она была вызвана, таким образом дополнительно усложняя системное планирование и работу.
Поэтому существует потребность в системе, которая обеспечивает способ для приложения, выполняющегося в привилегированном или в непривилегированном режиме, для вызова привилегированной функции для выполнения в той же самой задаче, что и приложение, таким образом, обеспечивая доступ к специальным процедурам привилегированного режима, выполняющимся в любом режиме приложений.
Краткое описание изобретения
В одном или нескольких вариантах осуществления система, содержащая способы и/или устройство, функционирует для обеспечения доступа к специальным процедурам привилегированного режима из приложений, выполняющихся в привилегированном или в непривилегированном режиме. Например, в одном варианте осуществления система обеспечивает обработчик функций, который позволяет приложению, выполняющемуся в непривилегированном режиме, выполнять функции привилегированного режима в той же самой задаче (или потоке выполняемых задач), таким образом, избегая создания задачи, планирования и латентности диспетчера. Обработчик функций также доступен привилегированным приложениям для предоставления этим приложениям возможности выполнения привилегированных функций. Таким образом, система преобразовывает источник в существующее программное обеспечение, в связи с чем доступ к функциям привилегированного режима может быть получен без изменений существующей программной модели.
В одном или нескольких вариантах осуществления обработчик функций функционирует для определения того, в привилегированном или в непривилегированном режиме выполняется вызывающее приложение. Если вызывающее приложение выполняется в привилегированном режиме, то обработчик функций непосредственно вызывает привилегированную функцию. Если вызывающее приложение выполняется в непривилегированном режиме, то обработчик функций формирует прерывание, которое обрабатывается посредством, например, системы перехода, которая предоставляет возможность вызова привилегированной функции в той же самой задаче, что и вызывающее непривилегированное приложение. Таким образом, обработчик функций функционирует для обеспечения специальных процедур привилегированной функции для привилегированных и непривилегированных приложений.
В одном варианте осуществления вызывающее приложение передает идентификатор функции обработчику функций. Идентификатор функции идентифицирует функции, которые являются доступными для выполнения. В одном варианте осуществления обработчик функций определяет функцию из идентификатора и непосредственно вызывает функцию. В другом варианте осуществления обработчик функций формирует прерывание и передает идентификатор системе перехода, которая использует идентификатор для вызова требуемой функции после надлежащей проверки правильности. Прерывание может быть программным, аппаратным или прерыванием, основанным на исключении.
В одном варианте осуществления обеспечивается способ, который предоставляет приложению возможность вызова функции в устройстве, причем устройство включает в себя, по меньшей мере, два режима работы, содержащих привилегированный режим и непривилегированный режим, и функция выполняется в привилегированном режиме. Способ содержит этап приема запроса от приложения для вызова функции и этап определения режима работы приложения. Способ также содержит этап вызова функции с использованием прерывания в случае, если приложение выполняется в непривилегированном режиме, причем функция выполняется в той же самой задаче, что и приложение. Способ также содержит этап непосредственного вызова функции в случае, если приложение выполняется в привилегированном режиме.
В другом варианте осуществления обеспечивается устройство, которое предоставляет приложению возможность вызова функции в устройстве, причем устройство включает в себя, по меньшей мере, два режима работы, содержащих привилегированный режим и непривилегированный режим, и функция выполняется в привилегированном режиме. Устройство содержит логическую схему, которая принимает запрос от приложения для вызова функции. Устройство также содержит логическую схему, которая определяет режим работы приложения. Устройство также содержит логическую схему для вызова функции с использованием прерывания в случае, если приложение выполняется в непривилегированном режиме, причем функция выполняется в той же самой задаче, что и приложение. Устройство также содержит логическую схему для непосредственного вызова функции в случае, если приложение выполняется в привилегированном режиме.
В другом варианте осуществления обеспечивается устройство, которое предоставляет приложению возможность вызова функции в устройстве, причем устройство включает в себя, по меньшей мере, два режима работы, содержащие привилегированный режим и непривилегированный режим, и функция выполняется в привилегированном режиме. Устройство содержит средство для приема запроса от приложения для вызова функции и средство для определения режима работы приложения. Устройство также содержит средство для вызова функции с использованием прерывания в случае, если приложение выполняется в непривилегированном режиме, причем функция выполняется в той же самой задаче, что и приложение. Устройство также содержит средство для непосредственного вызова функции в случае, если приложение выполняется в привилегированном режиме.
В другом варианте осуществления обеспечивается машиночитаемый носитель, содержащий команды, которые при выполнении процессором в устройстве функционируют для предоставления приложению возможности вызова функции в устройстве, причем устройство включает в себя, по меньшей мере, два режима работы, содержащие привилегированный режим и непривилегированный режим, и функция выполняется в привилегированном режиме. Машиночитаемый носитель содержит команды для приема запроса от приложения для вызова функции и команды для определения режима работы приложения. Машиночитаемый носитель также содержит команды для вызова функции с использованием прерывания в случае, если приложение выполняется в непривилегированном режиме, причем функция выполняется в той же самой задаче, что и приложение. Машиночитаемый носитель также содержит команды для непосредственного вызова функции в случае, если приложение выполняется в привилегированном режиме.
Другие аспекты, преимущества и особенности настоящего изобретения станут очевидными после обзора сформулированного ниже краткого описания чертежей, подробного описания изобретения и формулы изобретения.
Краткое описание чертежей
Предшествующие аспекты и сопутствующие преимущества описанных здесь вариантов осуществления станут более очевидными в отношении следующего подробного описания, взятого совместно с сопроводительными чертежами, на которых изображено следующее:
фиг.1 изображает один вариант осуществления системы обработчика функций, которая обеспечивает специальные процедуры привилегированной функции для привилегированных и непривилегированных приложений, выполняющихся в устройстве 102;
фиг.2 изображает подробную блок-схему устройства, содержащего один вариант осуществления системы обработчика функций; и
фиг.3 изображает схему последовательности операций, которая иллюстрирует процесс работы одного варианта осуществления системы обработчика функций для использования в устройстве.
Подробное описание изобретения
Следующее подробное описание представляет систему обработчика функций, которая обеспечивает специальные процедуры привилегированной функции для привилегированных и непривилегированных приложений. Например, система функционирует для приема функции вызовов из привилегированных и непривилегированных приложений, после чего определяется режим работы вызывающего приложения и обеспечивается быстрый и эффективный переход к привилегированной функции. Функция выполняется в том же самом потоке выполнения, что и вызывающее приложение. Таким образом, обработчик функций обеспечивает специальные процедуры привилегированной функции для привилегированных и непривилегированных приложений, которые затем способны к вызову привилегированной функции без формирования новой задачи, таким образом избегая непроизводительных затрат от создания новой задачи, планирования и латентности диспетчера.
В одном или нескольких вариантах осуществления система обработчика функций взаимодействует со средой выполнения (или операционной системой), выполняющейся в устройстве, что используется для упрощения работы устройства, как, например, посредством обеспечения обобщенных вызовов для определенных ресурсов устройства. Такая среда выполнения представляет собой программную платформу «Binary Runtime Environment for Wireless»TM (BREWTM ), разработанную фирмой QUALCOMM, Inc. расположенную в Сан-Диего, Калифорния. Следующее описание представляет устройство, выполняющее среду выполнения, такую как программная платформа BREW. Однако в одном или нескольких вариантах осуществления регистрационная система является подходящей для использования с другими типами сред выполнения для обеспечения быстрой и эффективной регистрации специальных процедур привилегированных функций во множестве устройств, включая формирование систем или других программ управления или мониторинга. Например, устройства могут включать в себя, но не ограничиваться этим, настольные компьютеры, портативные компьютеры, «карманные» компьютеры и портативные устройства, такие как беспроводные телефоны, пейджеры, PDA, устройства для работы с электронной почтой, планшетные компьютеры или другой тип вычислительных устройств.
Фиг.1 изображает один вариант осуществления системы 100 обработчика функций, которая обеспечивает специальные процедуры привилегированной функции для привилегированных и непривилегированных приложений, выполняющихся в устройстве 102. Система 100 может быть частью домашнего компьютера, офисного компьютера или персонального устройства, такого как беспроводной телефон, или «карманного» компьютера (PDA), или любого другого типа вычислительного устройства. В процессе работы одно или несколько приложений выполняются в устройстве 102 и функционируют для обеспечения информацией, функциями и/или службами устройства 102. Например, один тип приложения может быть приложением средства просмотра, которое функционирует для предоставления устройству 102 возможности отображения фильмов, новостей или других типов мультимедийного содержимого.
В одном варианте осуществления устройство 102 включает в себя среду 104 выполнения (то есть BREW), которая обеспечивает по меньшей мере два режима работы, а именно непривилегированный режим (NP) и привилегированный режим (Р). Непривилегированный режим работы используется для ограничения доступа выполняющихся в устройстве приложений и обеспечения обнаружения ошибок. Например, приложения, выполняющиеся в непривилегированном режиме ограничены выбранными областями памяти и могут быть лишены доступа к регистрам устройства или другим ресурсам. Привилегированный режим работы предоставляет выполняющемуся в этом режиме приложению возможность обращения к памяти или к ресурсам устройства без ограничений.
Если приложение выполняется в устройстве 102, то оно выполняется в среде выполнения для обеспечения желательных функциональных возможностей. Например, приложение 106 выполняется в устройстве 102 в непривилегированном режиме (NP), а приложение 108 выполняется в устройстве 102 в привилегированном режиме (Р). Любое из этих приложений может нуждаться в функциях или системных службах, которые являются доступными через привилегированную функцию 110. Например, приложения могут нуждаться в доступе к привилегированной памяти или ресурсам аппаратных средств устройства. Для получения этих функций или служб система 100 обработчика функций обеспечивает механизм, который предоставляет любому приложению (106, 108) возможность вызова привилегированной функции через обработчик 112 функций. При вызове через обработчик 112 функций функция 110 выполняется в том же самом потоке выполнения, что и вызывающее приложение. После того как функция 110 выполнит требуемую службу, программное управление возвращается к вызывающему приложению.
В результате система 100 обработчика функций обеспечивает быстрый и эффективный механизм для предоставления привилегированным и непривилегированным приложениям возможности выполнения привилегированных функций без потребности в создании и планировании новой задачи для выполнения посредством среды выполнения, таким образом, устраняя сложность планирования и связанной латентности диспетчера.
Фиг.2 изображает подробную блок-схему устройства 102, содержащего один вариант осуществления системы обработчика функций. Устройство 102 содержит логическую схему 202 обработки и ресурсы 206 устройства, которые соединены с внутренней шиной 204 данных. Ресурсы 206 устройства содержат аппаратные средства, программное обеспечение, запоминающее устройство, логическую схему или другие ресурсы, которые предоставляют устройству возможность взаимодействия с различными внутренними и внешними ресурсами, устройствами или системами. Запоминающее устройство 208 кода и запоминающее устройство 210 данных также соединены с логической схемой 202 обработки.
В одном или нескольких вариантах осуществления логическая схема 202 обработки содержит центральный процессор (CPU), процессор, логическую матрицу, логическую схему аппаратных средств, элементы памяти, виртуальную (вычислительную) машину, программное обеспечение, интерфейсы ввода/вывода и/или любую комбинацию аппаратных средств и программного обеспечения. Таким образом, логическая схема 202 обработки в целом содержит логическую схему для выполнения машиночитаемых команд. Например, команды могут быть загружены в устройство 102 из машиночитаемого носителя, такого как гибкий магнитный диск (дискета), диск CD-ROM, флэш-память, или других машиночитаемых носителей, которые взаимодействуют с устройством 102 через ресурсы 206 устройства. В другом варианте осуществления команды могут быть загружены в устройство 102 из сетевого ресурса, такого как сетевой сервер, или любого другого типа сетевого ресурса, который взаимодействует с устройством 102 через ресурсы 206 устройства. При выполнении команд посредством логической схемы 202 обработки обеспечивается один или несколько вариантов осуществления системы обработчика функций, как описано здесь.
В одном варианте осуществления запоминающее устройство 208 кода содержит оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), флэш-память, электрически стираемую программируемую память (EEROM), или любой другой подходящий тип запоминающего устройства, или их комбинацию. Запоминающее устройство 206 кода разделено на привилегированную область 212 (Р) и непривилегированную область 214 (NP) вследствие работы диспетчера 216 памяти. Диспетчер 216 памяти (MMU) функционирует для ограничения работы непривилегированного кода программы так, чтобы непривилегированный код имел ограниченные права доступа к выбранным областям запоминающего устройства 208 кода.
Привилегированная область 212 включает в себя код программы, который при выполнении имеет неограниченный доступ к памяти или другим системам устройства 102. Например, привилегированная область 212 кода содержит код операционной системы (OS), код пользовательского интерфейса (UI), код проверки правильности, код 108 приложения (Арр-Р) и код 110 привилегированной функции (FUNC). Код, показанный в привилегированной области 212 кода, является типичным образцом для типов привилегированного кода, который может быть включен в устройство 102. Также привилегированная область 212 кода может включать в себя другие типы привилегированного кода для выполнения в устройстве 102.
Непривилегированная область 214 кода включает в себя код программы, который при выполнении ограничен в доступе только выбранными областями памяти. Например, непривилегированная область 214 кода содержит код операционной системы (OS) и код 106 приложения (App-NP) и обработчик функций 106. В одном или нескольких вариантах осуществления обработчик 106 функций (FH) может быть загружен в устройство 102 из сети или системы, установленной при изготовлении устройства или добавленной в устройство с машиночитаемого носителя.
В одном варианте осуществления запоминающее устройство 210 данных содержит привилегированную область 216 и непривилегированную область 218. Привилегированная область 226 содержит области данных, к которым можно получить доступ только посредством привилегированного кода программы. Например, привилегированная область 216 данных содержит данные, используемые кодом операционной системы (OS), пользовательского интерфейса (UI), проверки правильности, приложения (Арр-Р) и FUNC. Непривилегированная область 218 данных содержит области данных, к которым можно получить доступ посредством непривилегированного кода программы. Например, непривилегированная область 218 данных содержит данные, используемые непривилегированным кодом операционной системы (OS), приложения (App-NP) и кодом программы FH. Также с запоминающим устройством 210 данных соединен диспетчер 220 памяти (MMU). Диспетчер 220 памяти (MMU) функционирует для ограничения доступа к непривилегированным и привилегированным областям данных. Например, непривилегированное приложение ограничено в доступе для данных в привилегированной области 216 данных, или данных, принадлежащих другим непривилегированным приложениям в непривилегированной области 218 данных.
Логическая схема 202 обработки также содержит логическую схему 222 режима и логическую схему 224 прерывания. Логическая схема 222 режима содержит центральный процессор (CPU), процессор, логическую схему, регистры устройства, программное обеспечение или любую комбинацию аппаратных средств и программного обеспечения и функционирует для предоставления возможности изменения режима между режимами работы устройства 102. Например, в одном варианте осуществления логическая схема 222 режима содержит регистр, разряды которого устанавливают режим работы. Например, для переключения из привилегированного режима в непривилегированный режим устанавливаются выбранные разряды в регистре, которые приводят к восстановлению непривилегированного стека и выполнению программы, продолжающейся в непривилегированном режиме.
Логическая схема 224 прерывания содержит центральный процессор (CPU), процессор, логическую схему, программное обеспечение или любую комбинацию аппаратных средств и программного обеспечения и функционирует для предоставления прерыванию возможности быть принятым и обработанным логической схемой 202 обработки. Например, логическая схема 224 прерывания может принять программное прерывание, которое сформировано кодом программы, выполняемым логической схемой 202 обработки. В одном варианте осуществления система обработчика функций использует программное прерывание для предоставления непривилегированному коду программы возможности выполнения привилегированной функции в той же самой задаче и с тем же приоритетом. В одном варианте осуществления логическая схема 224 прерывания обрабатывает программные прерывания, аппаратные прерывания, программные исключения или любой другой тип прерывания в качестве части операции системы обработчика функций.
Должно быть отмечено, что конфигурация устройства 102 является лишь одной подходящей конфигурацией для реализации описанной системы обработчика функций. Также возможно реализовать один или несколько вариантов осуществления системы обработчика функций с использованием других конфигураций устройства, функциональных элементов или конфигураций элементов в объеме настоящего изобретения.
В процессе работы устройства 102 логическая схема 202 обработки выполняет непривилегированный код приложения (то есть, App-NP) и/или привилегированный код приложения (Арр-Р). Если любое приложение нуждается в службах привилегированной функции, такой как Func 110, то соответствующее приложение вызывает код 112 обработчика функций (FH) с идентификатором, который идентифицирует желательную функцию (то есть, Func). Код 112 обработчика функций (FH) является непривилегированным кодом, и, таким образом, он может быть вызван или привилегированными, или непривилегированными приложениями.
Код обработчика функций (FH) определяет режим работы вызывающего и, основываясь на определенном режиме, выполняет выбранные процедуры для вызова привилегированной функции Func для обеспечения требуемых служб без создания новой задачи. Ниже перечисленное является кратким описанием процедур, используемых обработчиком 112 функций для ответа на запрос для служб привилегированной функции.
1. Прием запроса от приложения для выполнения функции, связанной с идентификатором, который передается с запросом.
2. Определение режима работы запрашивающего приложения.
3. Если запрашивающее приложение выполняется в привилегированном режиме работы, то:
а) выполняется поиск требуемой привилегированной функции на основании идентификатора,
b) выполняется вызов привилегированной функции,
с) выполняется возврат к вызывающему привилегированному приложению.
4. Если запрашивающее приложение выполняется в непривилегированном режиме работы, то:
а) формируется программное прерывание и передается идентификатор,
b) выполняется переход к обработчику прерываний привилегированного режима,
с) выполняется поиск требуемой привилегированной функции на основании идентификатора,
d) выполняется вызов привилегированной функции,
е) после выполнения привилегированной функции выполняется восстановление непривилегированных регистров,
f) выполняется возврат к вызывающему непривилегированному приложению.
В одном варианте осуществления описанная система обработчика функций содержит команды программы, сохраненные на машиночитаемом носителе, которые при выполнении логической схемой 202 обработки обеспечивают описанные здесь функции. В одном или нескольких вариантах осуществления машиночитаемый носитель содержит гибкий магнитный диск, компакт-диск, карту памяти, устройство флэш-памяти, оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM) или любой другой тип запоминающего устройства.
Фиг.3 изображает схему 300 последовательности операций, которая иллюстрирует процесс функционирования одного варианта осуществления системы обработчика функций для использования в устройстве, например в устройстве 102. Для ясности схема 300 будет описана со ссылкой на устройство, изображенное на Фиг.2. Предполагается, что устройство выполняет среду выполнения BREW и функционирует для создания потока 302 выполнения. Поток 302 выполнения представляет выполнение привилегированных или непривилегированных приложений в устройстве.
Системный планировщик (не показан) функционирует для планирования выполнения приложений для формирования потока 302 выполнения. Как правило, планировщик функционирует для планирования выполнения на основании приоритета, но наряду с этим он может функционировать для планирования выполнения на основании других критериев. Однако описанная здесь система обработчика функций обеспечивает обработчик функций, который функционирует в том же самом потоке выполнения, что и вызывающее приложение, таким образом, избегая создания новой задачи, сложности соотнесенного планировщика и возможной латентности диспетчера.
Поток 302 выполнения представляет выполнение или привилегированного приложения (Арр-Р), или непривилегированного приложения (App-NP). Выполняемое приложение может быть приложением средства просмотра, которое предоставляет устройству возможность отображения различного мультимедийного содержимого пользователю устройства. Поскольку приложение выполняется, то существует потребность для служб привилегированной функции (Func). Чтобы получить службы из привилегированной функции, приложение вызывает обработчик 304 функций (FH) и передает идентификатор, который идентифицирует привилегированную функцию Func. Предполагается, что доступные в системе привилегированные функции имеют соотнесенный идентификатор, который может быть обнаружен выполняемым приложением. В одном или нескольких вариантах осуществления следующие функции выполняются логической схемой 202 обработки, команды выполняемой программы, сохраненные в запоминающем устройстве 208 кода, могут также обрабатывать данные в запоминающем устройстве 210 данных.
В блоке 306 обработчик 304 функций (FH) принимает идентификатор, который идентифицирует привилегированную функцию Func. Например, идентификатор может быть передан обработчику функций в регистре, связанном с логической схемой 202 обработки, или в другой ячейке памяти в запоминающем устройстве 210 данных.
В блоке 308 выполняется проверка для определения того, в привилегированном или в непривилегированном режиме выполняется вызывающее приложение. Например, логическая схема обработки определяет текущий режим обработки приложения посредством оценки регистров состояния процессора. Если вызывающее приложение выполняется в непривилегированном режиме, то осуществляется переход на блок 310. Если вызывающее приложение выполняется в привилегированном режиме, то осуществляется переход на блок 312.
В блоке 312 было определено, что приложение выполняется в привилегированном режиме. Код 304 обработчика функций выполняет поиск требуемой привилегированной функции (то есть Func) на основании принятого идентификатора. Например, логическая схема 202 обработки использует идентификатор для доступа к структуре данных, которая отображает доступные функции идентификаторам для определения функции, требуемой вызывающим приложением. Структура данных может быть сохранена в запоминающем устройстве 210 данных.
В блоке 314 привилегированная функция Func вызывается для выполнения требуемой службы. Например, привилегированная функция может получить доступ к системному файлу или ресурсу аппаратных средств. В одном варианте осуществления логическая схема обработки выполняет команды программы для вызова привилегированной функции Func. После выполнения функция Func может также выполнять различные проверки параметров и проверки правильности для подтверждения того, что вызывающее приложение передало допустимые и правильные параметры. После того как функция Func закончит выполнение, процесс выполнения программы возвращается к потоку 302 выполнения.
В связи с этим если привилегированное приложение вызывает функцию Func через обработчик 304 функций (FH), то обработчик 304 функций (FH) функционирует для определения требуемой функции на основании идентификатора и вызывает ту функцию для выполнения требуемой службы. Если непривилегированное приложение вызывает функцию Func через обработчик 304 функций (FH), то обработчик 304 функций (FH) функционирует следующим образом для обеспечения требуемой службы.
В блоке 310 обработчик 304 функций (FH) формирует прерывание, которое функционирует для запроса того режима работы устройства для перехода в привилегированный режим 316 так, чтобы привилегированная функция Func могла быть выполнена. Прерывание может быть программным прерыванием или любым другим типом прерывания, которое может быть сформировано обработчиком 304 функций (FH). Прерывание включает в себя идентификатор, передаваемый из вызывающего приложения. Например, прерывание может быть сформировано и/или обработано логической схемой 224 прерывания, изображенной на Фиг.2.
После формирования прерывания выполнение программы переходит к коду 316 программы привилегированного режима, где привилегированная функция Func является запросом в той же самой задаче, что и вызывающее приложение.
Краткое описание процесса работы кода 316 программы дается ниже. Однако для более подробного описания процесса работы кода 316 программы читатель отсылается к патенту США «System for Providing Transitions Between Operating Modes of a Device», имеющему реестровый номер 030620, который включен сюда в качестве ссылки.
После того как произошли переключение на стек привилегированного режима и проверка правильности переданного идентификатора функции, выполнение программы переходит в блок 318.
В блоке 318 на основании переданного идентификатора определяется желательная привилегированная функция. Например, структура данных, сохраненная в запоминающем устройстве 210 данных, выполняет поиск посредством логической схемы 202 обработки на основании идентификатора для идентификации желательной функции Func.
В блоке 320 после определения привилегированной функции Func выполняется ее вызов. Например, в одном варианте осуществления логическая схема 202 обработки выполняет команды, сохраненные в запоминающем устройстве 208 кода, для вызова функции Func. Привилегированная функция может функционировать для открытия конкретного системного файла, который содержит данные для использования вызываемым непривилегированным приложением. В одном варианте осуществления дополнительные параметры передаются привилегированной функции из приложения. Например, параметры могут дополнительно указывать или определять тип службы, запрашиваемой непривилегированным приложением. Привилегированная функция функционирует для утверждения этих параметров для проверки того, что выполнение привилегированной функции не будет превышать привилегии, предоставленные приложению. Например, функция функционирует для утверждения параметров таким образом, чтобы выполнение функции не превысило помещенные в приложение ограничения памяти.
В блоке 322 после выполнения функции Func регистры непривилегированного режима восстанавливаются, включая стек непривилегированного режима. Выполнение программы возвращается к потоку 302 непривилегированного приложения, как показано в 324.
Должно быть отмечено, что схема 300 последовательности операций программы иллюстрирует лишь один вариант осуществления и что могут быть выполнены изменения, добавления или перестановки элементов программы, не отступая от возможностей изобретения.
Соответственно, в то время как один или несколько вариантов осуществления способов и устройства для системы обработчика функций были здесь иллюстрированы и описаны, будет оценено, что в вариантах осуществления могут быть сделаны различные изменения, не отступая от их сущности или основных (необходимых) характеристик. Поэтому предоставленные здесь раскрытия и описания предназначены для иллюстративных целей и не ограничивают объем изобретения, который сформулирован в нижеследующей формуле изобретения.
Класс G06F9/48 инициирование программы; переключение программы, например, прерыванием