Изоляция контента посредством процессов в приложении
Иллюстрации
Показать всеИзобретение относится к области выполнения процессов, которые содержат в себе контент, полученный через сеть. Техническим результатом является изоляция контента посредством процессов в приложении. В варианте осуществления выполнение одного или более процессов, которые содержат принятый через сеть контент, управляется посредством другого процесса одного приложения, которое включает в себя один или более процессов. Управление включает в себя завершение одного или более процессов, когда они не отвечают. Выполнение одного или более процессов изолировано от другого процесса так, что, когда один или более процессов не отвечают, другой процесс остается реагирующим. Затем контент в одном или более завершенных процессов восстанавливается. 3 н. и 17 з.п. ф-лы, 5 ил.
Реферат
УРОВЕНЬ ТЕХНИКИ
Приложения могут быть выполнены с возможностью потреблять широкое многообразие контента. Например, приложение обозревателя может быть выполнено с возможностью переходить по широкому многообразию различного контента, доступного через сеть, такого как web страницы, музыка, интерактивное видео и т.д. Этот интернет контент обычно является не заслуживающим доверия и/или ненадежным и, следовательно, его выполнение должно быть ограничено как в использовании ресурсов, так и в управлении доступом. В некоторых случаях этот контент может быть выполнен в качестве кода расширения, который служит для того чтобы расширить функции самого приложения обозревателя, который иногда называется как «подключаемый модуль», «сторонний подключаемый модуль», «дополнительный компонент» и так далее. Тем не менее этот код расширения может оказывать вредное влияние на выполнение самого приложения обозревателя, даже доводя его до точки отказа. Он также может пытаться выполнить действия, которые пользователь не хотел бы, чтобы происходили.
Например, приложение обозревателя может принять сторонний подключаемый модуль для того чтобы расширить функциональность приложения обозревателя. Так как это «сторонний» подключаемый модуль, тем не менее он может быть написан в соответствии со стандартами качества, которые не согласуются со стандартами автора приложения обозревателя. Например, дополнительный модуль может вызвать отказ во время выполнения совместно с приложением обозревателя. Из-за того что подключаемый модуль является кодом расширения, который может совместно использовать ресурсы с приложением обозревателя, сбой подключаемого модуля может вызвать отказ приложения обозревателя, такого как аварийный отказ, «зависание» и т.д.
КРАТКОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
Описана изоляция контента посредством процессов в приложении. В варианте осуществления выполнение одного или более процессов, которые содержат в себе контент, полученный через сеть, управляется посредством другого процесса одного приложения, которое включает в себя один или более процессов. Управление включает в себя завершение или перезапуск одного или более процессов, когда они не отвечают, дают сбой или иным способом не выполняются должным образом. Выполнение одного или более процессов изолируется от других процессов таким образом, что, когда один или более процесс не отвечает, другой процесс остается реагирующим. Затем контент в завершенном одном или более процессах восстанавливается. Следовательно, выполнение одного или более процессов может быть изолировано от других процессов так, что их клиентское удостоверение и управление доступом могут быть установлены и ограничены на основании политики для источника Интернет контента и выполняющего его пользователя. Выполнение контента из Интернет затем может управляться посредством удостоверения операционной системы клиента и/или ограничений управлением доступа характерных для источника интернета и, сверх этого, приложенных на основании удостоверения пользователя локального клиента.
В другом варианте осуществления один или более машиночитаемых носителей включает в себя команды, которые являются исполняемыми для того чтобы предоставить приложению обозревателя возможность иметь один или более процессов вкладки и процесс фрейма. Один и более процессов вкладки содержат в себе контент, принятый через сеть так, что каждый процесс вкладки изолирует соответствующий контент один от другого. Процесс фрейма управляет выполнением одного или более процессов вкладки. По меньшей мере, одному из процессов вкладки назначается уровень доверия, который ниже чем у процесса фрейма, так, что процесс фрейма имеет доступ к одному или более ресурсам, которые не доступны контенту, содержащемуся, по меньшей мере, в одном процессе вкладки.
Это краткое описание предоставлено для того, чтобы в явной форме представить выбор идей, которые дополнительно описаны ниже в Подробном Описании. Это краткое описание не предназначено для того, чтобы определить ключевые признаки или неотъемлемые признаки заявленного предмета, а также не предназначено для того, чтобы быть использованным в качестве средства для определения объема заявленного предмета.
ПЕРЕЧЕНЬ ФИГУР ЧЕРТЕЖЕЙ
Подробное описание описано со ссылкой на прилагаемые фигуры. В фигурах крайняя левая цифра(ы) ссылочного номера определяет фигуру, в которой ссылочный номер появляется впервые. Использование одних и тех же ссылочных номеров в различных примерах в описании и фигурах может указывать аналогичные или идентичные элементы.
Фиг. 1 является иллюстрацией окружения в типичном варианте осуществления, которое является рабочим для того, чтобы использовать технологию изоляции.
Фиг. 2 является иллюстрацией архитектуры, показывающей компоненты, которые могут использоваться для формирования инфраструктуры приложения.
Фиг. 3 описывает типичную инфраструктуру изоляции для приложения обозревателя в качестве организованной по уровням.
Фиг. 4 является иллюстрацией типичного варианта осуществления процесса фрейма и процесса вкладки, как осуществленные через компоненты Фиг. 2 и 3.
Фиг. 5 является блок-схемой, описывающей процедуру в типичном варианте осуществления, в которой выполнение одного или более процессов, которые изолируют контент, управляется посредством других процессов.
ПОДРОБНОЕ ОПИСАНИЕ
ОБЗОР
Многообразие различных приложений, которые выполняет полученный через сеть контент, может быть расширено посредством динамически загружаемого и выполняемого предоставленного из интернета контента. Этот контент может включать в себя как «внешний», так и «встроенный» код, но в любом случае он вызывает выполнение команд на локальном компьютере. Этот контент включает в себя не только «специфичный для интернет узла» код, такой как HTML, но так же «код расширения», который может включать в себя «подключаемые модули», «дополнительные компоненты», «драйверы» и т.д., которые предназначены для выполнения на различных или всех контентах интернет узла или на ресурсах локальной машины.
Код расширения обычно представлен как «машинный код», который выполняется без стандартных механизмов управления доступом в интернет или механизмов управления надежностью. Он может иметь меняющийся уровень качества и доверия. Дополнительно код расширения может совместно с приложением, которое его размещает, использовать ресурсы (например, память, дескрипторы, пространство процесса и т.д.). Следовательно, отказ кода расширения также может вызвать отказ приложения (например, вызвать «аварийный отказ» или «зависание» приложения), вызвать неэффективное потребление ресурсов, может привести к нарушению безопасности и т.д.
Описана изоляция контента, принятого через сеть (например, Интернет контент), посредством процессов в приложении. В варианте осуществления для того чтобы изолировать выполнение интернет контента используются процессы. Например, приложение интернет обозревателя может быть выполнено с возможностью включать в себя процесс фрейма, который отвечает за управление (и вследствие этого в нижеследующем описании также называемый как «процесс управления») основной функциональностью обозревателя, такой как формирование функциональности и управления самого обозревателя, включая кнопки «назад» и «вперед» для перехода по web страницам, адресную строку, которая принимает в качестве входных данных адрес унифицированного указателя ресурсов (URL) и т.д.
Приложение обозревателя также может поддерживать процессы, которые используются для того чтобы изолировать (и вследствие этого в нижеследующем описании также называемые как «процессы изоляции») контент, принятый через просмотр, лежащий в основе функциональности самого приложения обозревателя. Эти процессы, например, могут отражаться как вкладки внутри приложения обозревателя, каждая выполняемая в отдельном процессе. Процесс фрейма может выполняться для того, чтобы управлять выполнением процессами вкладок и из-за изоляции, и если один или более процессов вкладки отказал (например, не отвечает), процесс фрейма может продолжить выполняться в качестве предназначенного вместе с другими процессами вкладки, которые не отказали. Дополнительно процесс фрейма может предпринимать одно или более корректирующее воздействие такое, чтобы завершить неотвечающий процесс вкладки и затем восстановить контент, который был выполнен в процессе вкладки. Также рассматривается многообразие других примеров, дальнейшее обсуждение которых может быть найдено в описании к нижеследующим фигурам.
В другом варианте осуществления технология изоляции может использоваться совместно с «оценкой доверия» для того, чтобы ограничить управление доступом и удостоверением контента. Ранее описанный контент, принятый через интернет, включающий в себя код расширения, может быть написан с намерением и для того, чтобы добиться целей, которые не в интересах пользователя или локального клиента. Следовательно, оценка доверия к контенту может быть сделана, используя, например, знание об источнике контента или средства, используемые для того, чтобы идентифицировать и/или принимать контент, используемые для того, чтобы назначить уровень «удостоверения и управления доступом» для соответствующего контента. Оценка доверия может использоваться в качестве основы для доступа к ресурсам компьютера, который выполняет код расширения. Тем не менее обычные технологии были выполнены на основе «из расчета на приложение». Например, для того чтобы взаимодействовать с web контентом, имеющим различное доверие, выполнялись многочисленные приложения обозревателя, которые не применяли управление доступом операционной системы клиента, а идентифицировали, что возможно ресурс неэффективный и возможно расстраивающий и сбивающий с толку для пользователя с точки зрения простоты работы. Дальнейшее обсуждение доверия может также быть найдено в описании к нижеследующим фигурам.
В нижеследующем обсуждении сначала описано типичное окружение, которое является рабочим для того, чтобы использовать технологию изоляции. Затем описаны типичные процедуры, которые могут быть использованы в типичном окружении, так же, как и в других окружениях. Несмотря на то что в некоторых примерах описано приложение обозревателя как использующее технологию изоляции, также эту технологию может использовать многообразие других приложений, которые выполняют интернет контент, такие как приложения «технических новинок», которые выполняют сторонний код расширения (например, на боковой панели) на рабочей поверхности компьютера для того чтобы предоставить дополнительную функциональность, такую как информация о погоде, заголовки, интерактивное видео и т.д.
ТИПИЧНОЕ ОКРУЖЕНИЕ
Фиг. 1 является иллюстрацией окружения 100 в типичном варианте осуществления, которое является рабочим для того чтобы использовать технологию изолирования. Проиллюстрированное окружение 100 включает в себя множество поставщиков 102(1)-102(M) контента и компьютер 104, которые коммуникативно соединены друг с другом через сеть 106. Компьютер 104 может быть скомпанован различными способами. Например, компьютер 104 может быть выполнен с возможностью обмениваться информацией через сеть 106, как, например, настольный компьютер, мобильная станция, устройство для развлечения, телевизионная абонентская приставка, коммуникативно соединенная с дисплейным устройством, беспроводной телефон, игровая приставка и т.д.
Несмотря на то что сеть 106 проиллюстрирована как сеть Интернет, сеть может предполагать широкое многообразие исполнений. Например, сеть 106 может включать в себя глобальную сеть (WAN), локальную сеть (LAN), беспроводную сеть, телефонную сеть общего пользования, интрасеть и так далее. Дополнительно несмотря на то что показана единичная сеть 106, сеть 106 может быть выполнена с возможностью включать в себя разнообразные сети.
Каждое из множества поставщиков контента 102(1)-102(M) проиллюстрированы как включающие в себя модули 102(1)-102(M) управления соответствующим контентом, которые являются образцами функциональности для того, чтобы предоставить соответствующий контент 110(c), 112(k) (где «c» и «k» могут быть целочисленными значениями между 1 и «C», 1 и «K» соответственно) компьютеру 104 через сеть 106. Контент может быть сформирован различными способами. Например, контент 112(k) может быть сформирован как web страницы 114, сценарии 116, код расширения 118 и т.д.
Компьютер 104 проиллюстрирован как включающий в себя процессор 120 и память 122. Процессоры не ограничены материалами, из которых они сформированы, или используемыми ими механизмами обработки. Например, процессоры могут содержать в себе полупроводник(и) и/или транзисторы (например, электронные интегральные схемы (IC)). В таком контексте выполняемые процессором команды могут быть командами, выполняемыми при помощи электронных устройств. В качестве альтернативы механизмы процессоров или механизмы для процессоров и, следовательно, устройств вычисления или для устройств вычисления могут включать в себя, но не ограничены, квантовые вычисления, оптические вычисления, механические вычисления (например, используя нанотехнологию) и так далее. В добавление несмотря на то что показана одна память 122, может быть использовано широкое многообразие типов и комбинаций памяти, такие как оперативная память (RAM), память на жестком диске, съемные запоминающие устройства и другие типы машиночитаемых носителей.
Компьютер также проиллюстрирован как выполняющий процессором 120 приложение 124, которое является хранящимся в памяти 122. Приложение 124 может быть выполнено с возможностью предоставлять широкое многообразие функциональности, такое как приложение обозревателя (дальнейшее описание которого может быть найдено в описании к Фиг. 3), рабочее приложение и т.д.
В качестве примера приложение 124 может следовать модели компонента и структуре изоляции, которые могут использовать базисные элементы операционной системы (например, процессы) для того чтобы изолировать компоненты друг от друга посредством использования процессов управления и процессов изоляции. Такой пример показан для приложения 124 в качестве инфраструктуры изоляции, которая включает в себя процесс 126 фрейма, который является примером процесса управления, и множество процессов 128(1)-128(T) вкладки, которые являются примерами процессов изоляции. Процесс 126 фрейма является образцом функционирования для того чтобы управлять процессами 128(1)-128(T) вкладки, как, например, принимать решение, «где» в компьютерных 104 ресурсах (например, процессор 120 и/или память 122) процессы 128(1)-128(T) вкладки должны выполняться и/или поддерживаться, отслеживать время жизни и способность к реагированию процессов вкладки 128(1)-128(T), прекращать процессы 128(1)-128(T) вкладки, восстанавливать соответствующий контент 112(1)-112(T), когда соответствующие процессы 128(1)-128(T) вкладки отказывают и т.д. Следовательно, выполнение контента 112(1)-112(T) в соответствующих процессах 128(1)-128(T) вкладки не пересекается с выполнением процесса 126 фрейма, тем самым поддерживая способность к реагированию процесса 126 фрейма, даже когда один или более процессов 128(1)-128(T) вкладки и заключенные в них контенты 112(1)-112(T) не отвечают и дальнейшее обсуждение которых может быть найдено начиная с описания к Фиг. 4. В дополнительном варианте осуществления эта изоляция достигается посредством разделения процесса, который дополнительно держит контент 112(1) в одном процессе 128(1) вкладки от пересечения с контентом 112(T) в другом процессе 128(T) вкладки в одном приложении, например приложение 124.
Технология изоляции, такая как инфраструктура изоляции, также может поддерживать многообразие другой функциональности. Например, изоляция контента 112(1)-112(T) в соответствующих процессах 128(1)-128(T) вкладки может позволять использование различных уровней «доверия» одним приложением. Контенту 112(1), выполняемому в процессе 128(1) вкладки, например, может быть назначен уровень доверия, который ниже, чем уровень доверия, назначенный процессу 126 фрейма. Следовательно, процесс 126 фрейма может иметь разрешение для доступа к дополнительным ресурсам (например, к программной части, такой как операционная система и/или к аппаратной, такой как совместно используемая память), к которым контент 112 (1) в процессе 128(1) не имеет разрешение доступа. Подобным образом, контенту 112(1) в процессе 128(1) вкладки может быть назначен уровень доверия, отличный от уровня для контента 112(T) в процессе 128(T) вкладки, и дан доступ к различным ресурсам внутри одного и того же приложения 124. Дальнейшее обсуждение уровней доверия может быть найдено в нижеследующем обсуждении начиная с описания к Фиг. 5.
Использование процессов одним приложением может поддерживать многообразие другой функциональности. Например, процессы могут быть выполнены с возможностью нести разное количество «битов» так, что процесс 126 фрейма может выполняться на 64 битах, в то время как один или более процессов 128(1)-128(T) вкладки работают на 32 битах, при этом процессы 128(1)-128(T) вкладки могут работать на отличных (друг от друга) полосах пропускания и т.д. Предполагается также многообразие других примеров, дальнейшее обсуждение которых может быть найдено описаниях к нижеследующим фигурам.
В целом любая описанная здесь функция может быть осуществлена, используя программное обеспечение, встроенное программное обеспечение (например, фиксированная логическая схема), ручную обработку или комбинацию этих исполнений. Используемые здесь термины «модуль», «функциональность» и «логика» в общем смысле представляют программное обеспечение, встроенное программное обеспечение или комбинацию обычного и встроенного программного обеспечения. В случае осуществления в программном обеспечении модуль, функциональность или логика представляют собой код программы, который выполняет указанные задачи при выполнении процессором (например, центральным процессором или центральными процессорами). Код программы может быть сохранен на одном или более машиночитаемых устройствах памяти, например в памяти 122 на Фиг. 1. Описанные ниже признаки технологии изолирования являются платформо-независимыми, означая, что технология может быть реализована на многообразии коммерческих вычислительных платформ, имеющих многообразие процессоров.
Фиг. 2 изображает архитектуру 200, показывающую компоненты 202, 204, которые могут быть использованы для формирования инфраструктуры приложения. Архитектура 200 может предоставлять инфраструктуру изоляции (ISO), которая служит в качестве основы для особенностей приложения. ISO может быть разделена посредством кода приложения на отдельные подсистемы, которые могут быть повторно использованы, например использованы множество раз различными особенностями приложения и для проверки так, что корректность, безопасность и надежность ISO могут быть проверены непосредственно.
Например, ISO может быть создана так, чтобы предоставлять асинхронную связь. Составная модель объекта (COM), например, является дуплексным механизмом и по этой причине не поддерживает полудуплексные связи. В другом примере ISO может поддерживать различные уровни доверия для средств идентификации, обязательство знания уровня доверия для средств идентификации и предоставлять возможность для обнаружения уровня доверия. В дополнительном примере местоположение средств идентификации может изменяться между в-процессе-в-потоке, в-процессе/другом потоке, другом потоке, другом уровне обязательной целостности/отсеке и т.д. В еще одном примере ISO может давать возможность изменения и расширения исполнения «под» интерфейсами прикладного программирования (API) ISO.
О главной единице архитектуры 200 ISO можно думать как о «компоненте», примеры которого проиллюстрированы на Фиг. 2 как компонент 202 и компонент 204 архитектуры 200. О компоненте можно думать как о единице размещения и обмена сообщениями. На иллюстрации Фиг. 2 компоненты 202, 204 имеют WINDOWS (WINDOWS является торговой маркой Microsoft Corp., Рэдмонд, Вашингтон) циклы 206, 208 обработки сообщения. Компоненты 202, 204 в дальнейшем проиллюстрированы как существующие «на» соответствующих потоках 210, 212 и «в» соответствующих процессах 214, 216 (например, процесс WINDOWS). Несмотря на то что соответствующие потоки 210, 212 проиллюстрированы раздельно, они могут существовать «внутри» соответствующих процессов 214, 216.
Между компонентами 202, 204 может поддерживаться многообразие различных типов связи. Например, компоненты могут обмениваться информацией, используя асинхронное сообщение 218 через цикл обработки сообщения. В другом примере межконтейнерный синхронный COM (Составная Модель Объекта) вызов может быть выполнен в контейнерах COM так, что вызов объекта COM может вводить или откладывать объект. В дополнительном примере совместный буфер 222 может использоваться, например, для потоковых данных. Также предполагаются еще и другие примеры.
Фиг. 3 изображает типичную инфраструктуру 300 изоляции для приложения 302 обозревателя в качестве организованной по уровням. «Нижний» уровень (например, метод абстракции) приложения 302 обозревателя на Фиг. 3 включает в себя низкоуровневую связь 304 (например, обмен сообщениями WINDOWS) и низкоуровневую совместно используемую память 306. Следующий уровень 308 включает в себя физически-основанные программные интерфейсы приложения (API), например потоки, буферы, процессы, уровни обязательной целостности (MIC) и т.д. Следующий уровень выше включает в себя компоненты 310, например удостоверение, безопасность, обмен сообщениями и принадлежность ресурса. Верхний уровень в проиллюстрированном примере включает в себя действия 312, такие как асинхронное последовательное программирование, как и «посредников» и интерфейсы, например «COM-подобное» асинхронное программирование, которое асинхронно имитирует COM технологию.
Фиг. 4 является иллюстрацией типичного варианта осуществления 400 процесса 402 фрейма и процесса 404 вкладки как осуществленных через компоненты Фиг. 2 и 3. Процесс 402 фрейма и процесс 404 вкладки могут соответствовать или могут не соответствовать процессу фрейма и процессу вкладки на Фиг. 1.
Типичный вариант осуществления 400 на Фиг. 4 является иллюстративным для инфраструктуры изоляции, которая разделяет приложение на Фиг. 1 на компоненты и управляет обменом и совместным использованием данных и управлением между этими компонентами. Использование инфраструктуры изоляции способствует свободно взаимодействующему компонентному представлению приложения, как предложено на фигуре.
Процесс 404 вкладки является «границами» контента и может быть выполнен с возможностью изолировать контент один от другого посредством использования множества вкладок. Поэтому несмотря на то что проиллюстрирован единственный процесс 404 вкладки, может быть осуществлено множество процессов вкладки.
Процесс 404 вкладки, например, может быть использован для того, чтобы «содержать в себе» расширение для приложения, такого как приложение 302 обозревателя на Фиг. 3. Примеры контента, который «выполняется» в процессе 404 вкладки, проиллюстрированы как потоки 406, 408 и «iso» (т.е. изоляция) поток 410. Каждый из потоков (например, поток фрейма 406, 408 и 410) проиллюстрированы как компонент, как ранее описано в описании к Фиг. 2, и вследствие этого включают в себя циклы обработки сообщения WINDOWS, потоки и процессы. Процесс 404 вкладки может выполняться «в-процессе» по отношению к фреймам и может выполняться «вне-процесса» по отношению к другим процессам. Несмотря на то что не проиллюстрировано, процесс 404 вкладки также может включать в себя управляющий поток, который «владеет» содержимым процесса 404 вкладки.
Процесс 402 фрейма включает в себя управляющий поток 406, который является образцом функциональности для того чтобы управлять выполнением процесса 404 вкладки. Например, процесс 402 фрейма посредством управляющего потока 412 может принять решение, «где» должен выполняться процесс 404 вкладки, может отслеживать существование и способность к реагированию процесса 404 вкладки и может высылать, заменять или восстанавливать процесс 404 вкладки, когда произошла ошибка. Управляющий поток 406, например, может определять, что процесс 406 вкладки «завис» (например, попал в бесконечный цикл) и по этой причине восстанавливает процесс 404 вкладки так, чтобы отыскать контент, который ранее выполнялся процессом вкладки. Таким образом, пораженный процесс 404 вкладки восстанавливается без повторной инициализации всего приложения, например в этом случае приложения обозревателя. Связь между потоками и процессами может производиться, как ранее описано в описании к Фиг. 2.
Следовательно, в процессе фрейма существует один управляющий поток (например, «полномочный» управляющий поток), который выполняет функции управления, такие как отслеживание времени жизни и т.д. Также существуют один или более потоки фрейма, которые отвечают за визуализацию интерфейса пользователя фрейма (например, кнопки перехода назад, кнопки перехода вперед, адресной строки и т.д.) и отвечающие за ввод пользователем данных во фрейм.
В процессе вкладки существует один управляющий поток (который не является полномочным управляющим потоком, как описано для процесса фрейма), который отвечает за дальнейшее создание компонентов изоляции в процессе вкладки по запросу фрейма. Также существуют один или более потоков вкладки, которые выполняют компоненты вкладки в процессе вкладки и отвечают за визуализацию контента вкладки (например, страницы HTML) и отвечающие за использование ввода для контента.
Дополнительно могут существовать ноль или больше потоков компонента для других компонентов, которые могут выполняться либо в процессе фрейма, либо в процессе вкладки. Они не являются вкладкой, но изолированы в том же процессе для того, чтобы добавить преимущества изоляции, но предотвратить всплеск производительности из-за разгона процесса для каждого из них.
ТИПИЧНАЯ ПРОЦЕДУРА
Следующее обсуждение описывает технологию изоляции, которая может быть осуществлена, используя ранее описанные системы и устройства. Аспекты каждой из процедур могут быть осуществлены в аппаратной части, встроенной программной части или программной части или их комбинации. Процедура показана как набор блоков, которые устанавливают действия, выполняемые одним или более устройствами, и не являются обязательно ограниченными порядком, показанным для выполнения действий соответствующими блоками. В некоторых частях следующего обсуждения может быть сделана ссылка на типичное окружение, описанное в описаниях к Фиг. 1-4.
Фиг. 5 изображает процедуру 500 в типичном варианте осуществлении, в котором выполнение одного или более процессов, которые изолируют контент, управляется другим процессом. Выполнение одного или более процессов, которые содержат в себе контент, принятый через сеть, управляется другим процессом одного приложения, которое включает в себя один или более процессов (блок 502). Например, приложение 124 проиллюстрировано как включающее в себя процесс 126 фрейма и множество процессов 128(1)-128(T) вкладки. Приложение 124, например, может соответствовать приложению 302 обозревателя с процессом 126 фрейма, отвечающим за предоставление основы управляющих элементов (например, кнопок перехода вперед и назад, адресной строки и т.д.), внутри которого принятый через сеть 106 контент 118(c), 112(k) может быть выведен посредством использования процессов 128(1), 128(T) вкладки. Следовательно, окно приложения 302 обозревателя может включать в себя фрейм, предоставленный процессом 126 фрейма, посредством которого контент 112(1)-112(T) выдается посредством процессов 128(1)-128(T) вкладки. Несмотря на то что описан прием контента через сеть, контент может приниматься многообразием других способов, таких как через машиночитаемый носитель.
Ресурсы указаны для того чтобы использоваться для выполнения одного или более процессов (блок 504). Например, процесс 126 фрейма может указывать аппаратные ресурсы (например, конкретно совместно используемая память), программную функциональность (например, дескрипторы, диапазоны дескриптора и/или границы дескриптора) и т.д. для использования процессом 128(1) вкладки для того чтобы изолировать контент 112(1), принятый через сеть 106. Также предполагается многообразие других примеров, таких как указывать уровни доверия для использования для выполнения одного или более процессов (блок 506). Уровни доверия, для примера, могут определяться на основе политики конфиденциальности, источника контента 112(1), сертификатов, включенных в контент 112(1) (например, либо самоподписывающегося, либо от уполномоченного сертификата), и т.д.
Управление также может включать в себя завершение одного или более процессов, когда он не отвечает (блок 508). Процесс 126 фрейма, например, может периодически опрашивать процессы 128(1)-128(T) вкладки. Когда ответ не принят от одного или более процессов 128(1)-128(T) вкладки в течение предопределенного периода времени, соответствующий один или более процессов 128(1)-128(T) вкладки могут быть завершены. Следовательно, даже когда один или более процессов 128(1)-128(T) вкладки отказывают (например, «зависает», «занят» и т.д.), этот отказ не «распространяется» на процесс 126 фрейма (например, и на осуществление других процессов вкладки), так что процесс вкладки остается реагирующим. Соответственно, может быть предпринято многообразие корректирующих действий.
В качестве примера контент может быть восстановлен в одном или более процессах (блок 510). Например, процесс 126 фрейма может определить, «где» (например, URL) был получен контент 112(1) в процессе вкладки, вновь запустить процесс 128(1) вкладки, который был завершен, и вновь получить контент 112(1). Следовательно, в отличие от вызова общего отказа приложения, с чем ранее сталкивались в такой ситуации, контент 112(1) может быть автоматически восстановлен и без вмешательства пользователя.
ЗАКЛЮЧЕНИЕ
Несмотря на то что изобретение было описано на языке, специфичном для структурных признаков и/или методологических действий, должно быть понятно, что изобретение, определенное в прилагаемой формуле изобретения, не обязательно ограничено конкретными признаками или описанными действиями. Наоборот, конкретные признаки и действия раскрыты в качестве типичных форм осуществления заявленного изобретения.
1. Считываемый компьютером носитель, содержащий команды, которые являются исполняемыми для предоставления приложения, имеющего:один или более процессов изоляции, которые содержат код расширения, принятый через Интернет, для добавления функциональности приложению; ипроцесс управления для управления выполнением этих одного или более процессов изоляции, так что выполнение нежелательного действия со стороны исполняющегося кода расширения в соответствующем процессе изоляции изолируется от и управляется посредством процесса управления, причем этот соответствующий процесс изоляции дополнительно изолируется от другого процесса изоляции, при этом упомянутый соответствующий процесс изоляции включает в себя:управляющий поток процесса изоляции, сконфигурированный создавать, в ответ на запрос от процесса управления, компоненты для изоляции упомянутого соответствующего процесса изоляции, причем эти компоненты упомянутого соответствующего процесса изоляции сконфигурированы сообщаться друг с другом,один или более потоков исполнения для исполнения кода расширения, соответствующего упомянутому соответствующему процессу изоляции.
2. Считываемый компьютером носитель по п.1, при этом приложение является приложением обозревателя для перемещения по контенту, доступному через Интернет.
3. Считываемый компьютером носитель по п.2, при этом:процесс управления выполнен в качестве процесса фрейма, который предоставляет один или более управляющих элементов, которые являются выбираемыми для выполнения перемещения; иэти один или более элементов управления включают в себя кнопку перехода назад, кнопку перехода вперед и адресную строку.
4. Считываемый компьютером носитель по п.1, при этом код расширения является подключаемым модулем, сторонним подключаемым модулем или дополнительным модулем.
5. Считываемый компьютером носитель по п.1, при этом управление выполнением одного или более процессов изоляции посредством процесса управления включает в себя восстановление кода расширения и его текущего контекста исполнения в соответствующем процессе изоляции, когда соответствующий процесс изоляции отказал.
6. Считываемый компьютером носитель по п.1, при этом управление выполнением одного или более процессов изоляции посредством процесса управления включает в себя определение того, реагирует ли исполнение кода расширения в соответствующем процессе изоляции.
7. Считываемый компьютером носитель по п.6, при этом управление выполнением одного или более процессов изоляции посредством процесса управления включает в себя завершение соответствующего процесса изоляции, когда код расширения в соответствующем процессе изоляции не реагирует.
8. Считываемый компьютером носитель по п.1, при этом для выполнения процесса управления предусмотрены удостоверение и уровень доверия, которые отличаются от упомянутых одного или более процессов изоляции, так что процесс управления обеспечивается доступом к ресурсам, которые не предоставляются этим одному или более процессам изоляции.
9. Считываемый компьютером носитель по п.1, при этом связь между процессом управления и упомянутыми одним или более процессами изоляции включает в себя использование одного или более асинхронных сообщений.
10. Считываемый компьютером носитель по п.1, при этом:упомянутые один или более процессов изоляции включают в себя первый процесс изоляции и второй процесс изоляции; исвязь между первым и вторым процессами изоляции включает в себя одно или более асинхронных сообщений.
11. Считываемый компьютером носитель, на котором сохранены команды, которые, при их исполнении клиентской системой, предписывают клиентской системе предоставлять приложение обозревателя, имеющее:один или более процессов вкладки в приложении обозревателя, которые ассоциированы с соответствующими вкладками в пользовательском интерфейсе и которые содержат принятый через сеть контент, так что каждый процесс вкладки изолирует соответствующий контент один от другого и от других частей клиентской системы, основываясь на оценке надежности контента; ипроцесс фрейма в приложении обозревателя для управления выполнением этих одного или более процессов вкладки, при этом по меньшей мере одному процессу вкладки назначается уровень доверия, который ниже, чем у процесса фрейма, так что процесс фрейма имеет доступ к одному или более ресурсам, которые не доступны контенту, содержащемуся в этом по меньшей мере одном процессе вкладки, при этом каждый процесс вкладки включает в себя:управляющий поток процесса вкладки, сконфигурированный создавать, в ответ на запрос от процесса фрейма, компоненты для изоляции данного процесса вкладки, причем эти компоненты процесса вкладки сконфигурированы так, что один компонент сообщается с другим компонентом с использованием, по меньшей мере, асинхронного обмена сообщениям, иодин или более потоков визуализации для визуализации соответствующего контента данного процесса вкладки.
12. Считываемый компьютером носитель по п.11, при этом оценка доверия основана, по меньшей мере частично, на намерении или надежности контента.
13. Считываемый компьютером носитель по п.11, при этом другому процессу вкладки назначается уровень доверия, который отличается от упомянутого по меньшей мере одного процесса вкладки, так что контент этого другого процесса вкладки имеет доступ к упомянутым одному или более ресурсам, которые не доступны контенту, содержащемуся в упомянутом по меньшей мере одном процессе вкладки.
14. Считываемый компьютером носитель по п.11, при этом другому процессу вкладки назначается уровень доверия, который отличается от упомянутого по меньшей мере одного процесса вкладки, так что контент обоих упомянутых процессо