BRPI0618027A2 - configuração de extensões isoladas e acionadores de dispositivo - Google Patents
configuração de extensões isoladas e acionadores de dispositivo Download PDFInfo
- Publication number
- BRPI0618027A2 BRPI0618027A2 BRPI0618027-2A BRPI0618027A BRPI0618027A2 BR PI0618027 A2 BRPI0618027 A2 BR PI0618027A2 BR PI0618027 A BRPI0618027 A BR PI0618027A BR PI0618027 A2 BRPI0618027 A2 BR PI0618027A2
- Authority
- BR
- Brazil
- Prior art keywords
- computing resources
- program module
- executable instructions
- device driver
- access
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
CONFIGURAçãO DE EXTENSõES ISOLADAS E ACIONADORES DE DISPOSITIVO Descritas aqui estão uma ou mais implementações para descrever e/ou abordar as exigências de configuração de aplicações, extensões, acionadores de dispositivo (300) , e outros componentes de um sistema de software.
Description
"CONFIGURAÇÃO DE EXTENSÕES ISOLADAS E ACIONADORESDE DISPOSITIVO"
Fundamentos da Invenção
Sistemas de software, tal como os sistemas opera-cionais, tipicamente vêm com um conjunto pré-definido de mó-dulos de software para executar várias tarefas. Esses módu-los estão associados uns com os outros porque eles são todosparte do mesmo conjunto pré-definido.
Entretanto, funcionalidade adicional e/ou persona-lização são freqüentemente desejadas. Em outras palavras, afuncionalidade é "estendida". Tipicamente, os sistemas desoftware permitem extensão fornecendo adição dinâmica de no-vos módulos ou processos de software. Essas adições são fre-qüentemente chamadas "extensões" ou "conexões" ("plug-ins").Exemplos comuns de extensões ou conexões em sistemas conven-cionais incluem, mas não estão limitados a, acionadores dedispositivos para sistemas operacionais, procedimentos es-tendidos armazenados em bases de dados, conexões e controlesActiveX™ em navegadores da rede, conteúdo ISAPI e extensõesde filtro em servidores da rede, extensões de invólucro parainvólucros de interface de usuário, etc. A funcionalidadeadicionada por extensões está na faixa de simples suportepara versões atualizadas de dispositivos de hardware a var-redores de virus para ferramentas de fluxo de trabalho emclientes de correio eletrônico. Entretanto, a aproximaçãoconvencional para integrar extensões pode ser problemática.
Por exemplo, um sistema operacional convencional("OS") carrega extensões carregando um conjunto de instru-ções executáveis no domínio de proteção de kernel. Uma vezque o acionador é instalado nesse espaço de endereço, o ker-nel convencional não pode impedir a extensão carregada deacessar qualquer hardware (ou todos) no sistema de computa-ção. Conseqüentemente, uma extensão mal formada ou maliciosapode provocar uma grande confusão em um kernel de OS.
Um acionador de dispositivo é um tipo de extensãoencontrada em sistemas operacionais, ele é um módulo desoftware que estende o sistema operacional para acessar um dispositivo específico ou classe de dispositivos. Por exem-plo, um acionador de IDE, permite que o sistema operacionalacesse unidades de disco conectadas a um controlador de ar-mazenamento IDE. Os acionadores de dispositivos executam umafunção vital, abstrair funcionalidade comum entendida pelos sistemas operacionais ou aplicações - tal como blocos deleitura e escrita de armazenadores de disco - dos mecanismosde fala de hardware específico - tal como um controlador dearmazenador de fabricante específico. Enquanto os acionado-res de dispositivo freqüentemente acessam dispositivos físi- cos, os versados na técnica reconhecerão que os acionadoresde dispositivos também podem fornecer acesso a recursos vir-tuais ou podem estar em camadas para adicionar funcionalida-de adicional - tal como um acionador de compressão que estálocalizado em cima de um acionador de dispositivo do contro-lador de armazenamento.
A complexidade de acionadores de dispositivos temcrescido consideravelmente na última década à medida que osusuários têm esperado ricas características, tal como trocaa quente e gerenciamento de energia. Muitos sistemas opera-cionais convencionais têm respondido de uma variedade deformas, mas em seus núcleos esses sistemas possuem o mesmomodelo de acionador que eles possuíam uma década atrás.
Como a extensão, um sistema operacional ("OS")convencional carrega acionadores de dispositivos carregandoinstruções executáveis no domínio de proteção do kernel. Umavez que o acionador está instalado nesse espaço de endereço,o kernel convencional não pode impedir o acionador carregadode acessar qualquer hardware (ou todos) no sistema de compu-tação .
Além disso, à medida que esses acionadores são ti-picamente escritos com primitivas de baixo nível para aces-sar hardware diretamente, o kernel convencional raramenteverifica que os acionadores usam somente recursos de hardwa-re apropriados. Ao invés, o kernel convencional confia que oacionador somente acessará hardware para o dispositivo queele reivindica servir. Além disso, freqüentemente o kernelconvencional não pode garantir que o acionador seja configu-rado corretamente, que o acionador respeitará a memória queestá alocada para processos ativos, ou até a memória alocadapara outros componentes no kernel convencional.
Conseqüentemente, os acionadores convencionais es-tão entre os componentes mais não confiáveis no OS. Algunsrelatórios indicam que 85% das falhas diagnosticadas no OSconvencional mais popular são causadas pelos acionadores.Outros relatórios indicam que os acionadores para um OS con-vencional menos popular são sete vezes mais prováveis deconter erros do que outras instruções executáveis no kernel.
Sumário da Invenção
Descritas aqui estão uma ou mais implementaçõespara descrever e/ou abordar as exigências de configuração deaplicações, extensões, acionadores de dispositivo, e outroscomponentes de um sistema de software.
Este sumário é fornecido para introduzir uma sele-ção de conceitos de uma forma simplificada, os quais são a-dicionalmente descritos abaixo na Descrição Detalhada. Estesumário não pretende identificar características chave ouessenciais do assunto reivindicado, nem pretende ser usadocomo um auxílio na determinação do escopo do assunto reivin-dicado .
Breve Descrição dos Desenhos
Os mesmos números são usados por todos os desenhospara relacionar elementos e características similares.
A Fig. 1 é um cenário operacional para uma arqui-tetura de sistema operacional que suporta uma ou mais imple-mentações descritas aqui.
A Fig. 2 é um diagrama de bloco de uma arquiteturade sistema operacional que suporta uma ou mais implementa-ções descritas aqui.
A Fig. 3 é um diagrama de bloco dos objetos em umprocesso de acionador de dispositivo e sua relação com ou-tras partes da arquitetura de sistema operacional mostradana Fig. 2.
A Fig. 4 é um fluxograma de uma outra implementa-ção metodológica descrita aqui.Descrição Detalhada da Invenção
A seguinte descrição apresenta técnicas para des-crever e/ou abordar as exigências de configuração de aplica-ções, extensões, acionadores de dispositivos, e outros com-ponentes de um sistema de software.
As extensões convencionais (por exemplo, acionado-res de dispositivos) incluem instruções executáveis para a-cesso direto a recursos de computação, tal Omo entrada/saida(1/0), memória, video, som, linhas de solicitação de inter-rupção (IRQ), ou outros hardwares. Diferente das extensõesconvencionais, as extensões (por exemplo, acionadores dedispositivos), criadas de acordo com uma ou mais implementa-ções descritas aqui, acessam recursos de computação via umou mais objetos de acesso local, que são objetos (isto é,instruções executáveis com uma ou mais estruturas de dados)que fornecem uma porta de comunicação ou ponte para os re-cursos de computação.
Com uma ou mais implementações descritas, as ex-tensões contêm metadados embutidos que especificam suas exi-gências de configuração e incluem sua necessidade por essesrecursos. O sistema operacional (OS) determina as necessida-des de recurso de computação da extensão baseado em seus me-tadados. O OS fornece as instruções executáveis necessárias(na forma dos objetos de acesso local) para alocar os recur-sos exigidos e conectar a extensão aos recursos de computa-ção fora de seu processo.
Essa nova divisão de função fornece o hospedeiroda extensão (o OS em uma ou mais modalidades para acionado-res de dispositivos) com a capacidade de verificar todas asexigências de configuração e controlar todo o acesso pelaextensão a recursos de I/O ou IPC.
Processos de Software Isolados
No âmbito da ciência de computador e, mais parti-cularmente, a técnica de sistemas operacionais, o termo"processo de software" (ou simplesmente, "processo") é bemconhecido. As aplicações são freqüentemente compostas de umou mais processos. O sistema operacional (OS) está cientedisso e, de fato, pode gerenciar e supervisionar um ou maisprocessos separados executando em um computador.
Aqui, um processo contém instruções executáveis.Um módulo de programa também contém instruções executáveis.Um ou mais processos podem executar baseados em um módulo deprograma.
Aqui, uma extensão pode ser descrita como um módu-lo de programa. Além disso, um acionador de dispositivo é umexemplo de uma extensão. Uma ou mais modalidades descritasaqui podem ser implementadas via um processo isolado. 0 con-texto de um processo isolado é descrito no contexto da Fig.1.
Uma ou mais implementações são descritas aqui paraoperar em um modelo de OS que forneça e/ou suporte configu-ração de um modelo de abstração de Processo de Software Iso-lado (SIP). Os SIPs encapsulam partes de um programa ou umsistema e fornecem ocultação de informação, isolamento defalhas, e interfaces fortes. Os SIPs são usados por todo osistema operacional e software de aplicação.A Fig. 1 mostra um cenário operacional para aconstrução de SIPs. Ela mostra uma arquitetura de construçãode processo 100 como parte de um sistema operacional 110 ar-mazenado e/ou executando em um computador 120. A arquiteturade construção de processo 100 pode ser, como mostrada naFig. 1, parte do sistema operacional. Alternativamente, todaou parte da arquitetura de construção de processo 100 podeser separada do sistema operacional, mas ainda trabalhandoem cooperação com o sistema operacional.
A arquitetura de construção de processo 100 cons-trói processos em uma memória de trabalho do computador apartir de um conjunto dinâmico de componentes constituinteseditados por um conjunto de componentes de extensão. Uma vezconstruídas, as instruções executáveis de um processo ativosão fixadas. Uma vez fixado, um processo ativo não executausualmente novas instruções executáveis por processador. Demodo a fazer isso, o processo é tipicamente novamente re-construído com as novas instruções executáveis como partedele, ou um novo processo complementar é criado.
O conjunto dinâmico de componentes constituintes ede extensão é tipicamente manifestado como um conjunto demódulos de carga armazenados no armazenador do computador. Aarquitetura de construção de processo 100 constrói processosde uma maneira que permite que análises considerando uma oumais propriedades de processos (por exemplo, integridade,segurança, confiabilidade, disponibilidade, análise de usode recursos, análise de término, e/ou estabilidade) sejamexecutadas, bem como para várias otimizações desejáveis aserem executadas.
O computador 120 inclui um dispositivo de armaze-namento em computador 122 (por exemplo, disco rígido, siste-ma RAID, etc.) que armazena um conjunto de módulos de carga124 e uma memória de trabalho 130. No exemplo da Fig. 1, aarquitetura de construção de processo 100 constrói um pro-cesso 140 que é armazenado na memória de trabalho 130. Comorepresentado aqui, o processo 140 é construído dos módulosde carga 124, que são manifestações dos componentes consti-tuintes do processo editados pelos componentes de extensãodo processo.
O processo 140 tem um manifesto de processo 142,que define os conteúdos atualizados do processo 140. Partedesses conteúdos atualizados inclui os componentes constitu-intes do processo editados pelos componentes de extensão doprocesso. Como representado aqui, o manifesto de processo142 está diretamente associado com um processo (tal como oprocesso 140) cuja composição ele descreve.
Ao construir um processo, a arquitetura de cons-trução de processo 100 pode empregar um ou mais dos seguin-tes componentes funcionais: um compositor de manifesto deprocesso 150, um criador de representação de código tipado152, um atualizador de representação de código tipado 154,um otimizador 156, um conversor de representação de códigotipado 158, um eliminador de interferência interprocessos160, e um criador de identidade fixa 162. Enquanto a Fig. 1mostra esses componentes funcionais como separados uns dosoutros, a funcionalidade de um ou mais desses componentesfuncionais pode ser combinada.
0 pedido "As Comunicações Interprocessos Empregan-do Canais de Mensagem Bidirecionais" descreve os componentesde um modelo de OS que suporta comunicações interprocessosque pode ser usada entre SIPs (e o OS também).
Com os SIPs, todas as instruções executáveis forado kernel executam em um SIP e se comunicam com outros SIPsatravés de canais de comunicação fortemente tipados. Um SIPé um ambiente fechado, que não permite compartilhamento dedados ou carregamento de código dinâmico. Os SIPs diferemdos processos de OS convencional em um número de formas.
Um novo kernel (que suporta implementações descri-tas aqui e que é representado pelo sistema operacional 210)consistem quase inteiramente de instruções executáveis segu-ras e o resto do sistema, que executa em SIPs, consiste deinstruções executáveis verificavelmente seguras, incluindoacionadores de dispositivos, processos de sistema, e aplica-ções. Enquanto todas as instruções executáveis não confiá-veis devem ser verificavelmente seguras, partes do novo ker-nel e sistema de tempo de execução, chamado a base confiá-vel, não são verificavelmente seguros. A segurança de lin-guagem protege essa base confiável de instruções executáveisnão confiáveis. Além disso, a integridade de cada SIP depen-de da segurança da instrução e de uma invariante de sistemaamplo que um processo não mantém uma referência em um outroespaço de objeto do processo.
Comunicação Interprocessos
Em pelo menos uma implementação descrita, os SIPsse comunicam exclusivamente enviando mensagens por canais.Um canal é bidirecional, conexão comportadamente tipada en-tre dois processos. As mensagens são coleções rotuladas devalores ou blocos de mensagens na Pilha de Troca que sãotransferidas a partir de um envio a um processo de recebi-mento. Um canal é tipado por um contrato, que especifica oformato das mensagens e as seqüências de mensagens válidasao longo do canal.
Um SIP cria um canal invocando um método de NovoCanal estático do contrato que retorna os dois pontos finaisdo canal - assimetricamente tipados como um exportador e im-portador - em seus parâmetros de saida.
O SIP pode passar qualquer um ou ambos os pontosfinais a outros processos pelos canais existentes. O proces-so que recebe um ponto final tem um canal ao processo man-tendo o outro ponto final correspondente. Por exemplo, se umprocesso de aplicação deseja se comunicar com um serviço desistema, a aplicação cria dois pontos finais e envia uma so-licitação contendo um ponto final ao servidor de nome doservidor, que encaminha o ponto final ao serviço, desse modoestabelecendo um canal entre o processo e o serviço.
Um canal de envio é assincrono. Um recebimentobloqueia de forma assincrona até que uma mensagem especificachegue. Usando características de linguagem, um processo po-de esperar pelo primeiro de um conjunto de mensagem ao longode um canal ou pode esperar por conjuntos específicos demensagens de diferentes canais. Quando os dados são enviadospor um canal, a propriedade passa do processo de envio, quenão pode reter uma referência à mensagem, ao processo de re-cebimento. Essa propriedade invariante é reforçada pela lin-guagem e os sistemas de tempo de execução, e serve para trêspropósitos. O primeiro é impedir compartilhamento entre pro-cessos. O segundo é facilitar análise de programa estáticaeliminando serrilhado de ponteiro de mensagens. O terceiro épermitir flexibilidade de implementação fornecendo semânti-cas de passagem de mensagem que podem ser implementadas porcópia ou passando ponteiro.
Extensibilidade Isolada
Os criadores de software raramente antecipam afuncionalidade completa demandada por usuários de seu siste-ma ou aplicação. Ao invés de tentar satisfazer qualquer umcom um sistema monolítico, a maior parte dos softwares nãotriviais fornece mecanismos para aumentar sua funcionalidadecarregando instruções executáveis adicionais. Por exemplo,alguns sistemas operacionais de computador pessoal disponí-veis comercialmente suportam mais de 100.000 acionadores dedispositivos terceiros, que habilitam um OS a controlar qua-se qualquer dispositivo de hardware. Similarmente, incontá-veis complementos e extensões de navegador de Internet au-mentam uma interface do navegador e componentes para páginasda rede. Até projetos de fonte aberta - embora potencialmen-te modificáveis - fornecem mecanismos "conectáveis", já queas extensões são mais fáceis de desenvolver e distribuir doque novas versões de software.
Uma extensão usualmente consiste de instruções e-xecutáveis que são dinamicamente carregadas no espaço de en-dereço do pai da extensão. Com acesso direto às interfacesinternas do pai e às estruturas de dados, as extensões podemfornecer rica funcionalidade. Entretanto, essa flexibilidadevem a um alto custo. As extensões são uma causa principal deproblemas com confiabilidade de software, segurança, e re-trocompatibilidade. Embora as instruções executáveis desoftware sejam freqüentemente não confiáveis, não verifica-das, sujeitas a falhas, ou até maliciosas, elas são carrega-das diretamente em um espaço de endereço do programa sem in-terface rígida, limite, ou distinção entre hospedeiro e ex-tensão .
As extensões são freqüentemente a fonte de incom-patibilidade, pobre funcionalidade, ou outros erros. Alémdisso, como uma extensão carece de uma interface rígida, elase torna dependente em detalhes da implementação de seu pai,que restringe a evolução de futuras versões de um programa eexige teste extensivo para evitar incompatibilidades.
O carregamento dinâmico de instruções executáveisimpõe uma segunda taxa menos óbvia em desempenho e correção.Um sistema que pode dinamicamente carregar instruções execu-táveis é um ambiente aberto no qual é difícil ou impossívelfazer hipóteses fundadas sobre os estados do sistema, inva-riantes, ou transições válidas. Considerando-se uma máquinavirtual Java™ (JVM), na qual, a qualquer hora, uma inter-rupção, exceção, ou troca de processo pode executar instru-ções que carregam um novo arquivo, ignoram classe e corposde método, e modificam o estado global. Em geral, não háforma possível de analisar um programa executando em tal am-biente, exceto sob a hipótese infundada de que o ambientenão muda arbitrariamente entre duas instruções executáveis.
A nova aproximação empregada por uma ou mais im-plementações descritas aqui é proibir carregamento dinâmicode instruções executáveis e isolar uma extensão dinamicamen-te criada em seu próprio ambiente. Tentativas anteriores aolongo dessas linhas não foram amplamente usadas porque osmecanismos de isolamento tinham problemas de desempenho eprogramabilidade que os tornavam menos atrativos do que osriscos de executar sem isolamento.
O mecanismo de isolamento mais predominante é umprocesso de OS tradicional, mas seus altos custos limitamsua usabilidade. Hardware de gerenciamento de memória ouprocessadores modernos fornecem um processo com limites rí-gidos e protegem estado do processador, mas impõem uma altapenalidade no controle interprocessos e transferências dedados. Em processadores x86 modernos, a troca entre proces-sos pode custar de centenas a milhares de ciclos, não inclu-indo perdas de recarga de cache e TLB.
Sistemas mais recentes, tal como a máquina virtualJava™ (JVM) e o Tempo de Execução de Linguagem Comum (CLR)da Microsoft®, são projetados para extensibilidade e conse-qüentemente usam segurança de linguagem, não hardware, comoo mecanismo para isolar computações executando em um mesmoespaço de endereço. Entretanto, linguagens seguras, por elasmesmas, podem ser uma garantia insuficiente de isolamento.Dados compartilhados fornecem um caminho entre os espaços deobjeto das computações, nos quais APIs de reflexão pontualfornecem um mecanismo para subverter abstração de dados eocultação de informação. Como uma conseqüência, esses siste-mas exigem políticas e mecanismos de segurança complexos,tal como controle de acesso fino JVM ou a Segurança de Aces-so a Código do CLR, para controlar acesso a mecanismos e in-terfaces de sistema.
Em adição, as computações que compartilham um sis-tema de tempo de execução e executam em um mesmo processonão são isoladas mediante falha. Quando uma computação exe-cutando em uma JVM falha, o processo JVM inteiro tipicamenteé reiniciado porque é difícil isolar e descartar dados cor-rompidos e encontrar um ponto limpo para reiniciar a compu-tação que falhou.
Pelo menos uma implementação descrita aqui empregaSIPs para encapsular instruções executáveis de componentesde sistema em um ambiente fechado. As extensões para o sis-tema ou uma aplicação executam em um novo SIP e se comunicamcom um pai pelos canais que fornecem funcionalidade apropri-ada e limitada. Se a extensão falha, seu SIP termina, quepermite que o OS exija recursos e notifique os parceiros decomunicação. Como esses parceiros não compartilham estadocom a extensão, a recuperação de erro é local e é facilitadapelos protocolos explícitos dos canais.
Uma ou mais implementações descritas aqui fornecemreflexão de tempo de compilação (CTR), que fornece funciona-lidade que executa quando um arquivo é compilado para gerarnovas instruções executáveis. A reflexão normal, que executano tempo de execução, tem acesso aos valores de tempo de e-xecução e é mais geral do que CTR. Entretanto, em muitos ca-sos, as novas instruções executáveis desejadas são conheci-das à frente de execução. Nesses casos, CTR produz novasinstruções executáveis durante a compilação.
Arquitetura de Computador Suportando Configuraçãode Acionadores de Dispositivos Isolados
Alguns acionadores de dispositivos convencionaissão carregados no espaço de endereço do kernel e no domíniode proteção de hardware sem mecanismos para isolar as ins-truções executáveis do acionador das instruções executáveisdo kernel. Entretanto, uma ou mais implementações descritasdescreveram um sistema operacional que suporta acionadoresde dispositivos isolados.
A Fig. 2 representa uma arquitetura de sistema o-peracional (OS) exemplificada 200 que suporta configuraçãode extensões e acionadores de dispositivos isolados e uma oumais implementações descritas aqui. Como representado, a ar-quitetura de OS exemplificada 200 mostra um kernel 210, umou mais acionadores de dispositivos 220, um ou mais sistemasde arquivos 230, e uma ou mais aplicações 240. Os versadosna técnica reconhecerão que o OS pode incluir serviços de OSadicionais que executam nos SIPs "como o sistema de arquivos330.
O kernel 210 é um componente de sistema privilegi-ado que controla o acesso a recursos de hardware, aloca erecupera memória, cria e programa processos, fornece sincro-nização intraprocesso, e gerencia 1/0.
O kernel 210 fornece a funcionalidade de núcleo doOS. Isso inclui, por exemplo, gerenciamento de memória e ou-tros recursos de hardware, criação e término de processo,comunicações interprocessos, operações de canal, programa-ção, e 1/0. Alguns dos componentes desse kernel 210 incluemum gerenciador de 1/0 211, programador 212, gerenciador depágina 213, coordenador de acionador de dispositivo 214, ecamada de abstração de hardware (HAL) 215.
As instruções executáveis nessa arquitetura de OSexemplificada 200 são ou verificadas ou confiáveis. A segu-rança de tipo e a segurança de memória das instruções veri-ficadas são verificadas por um compilador. As instruções nãoverificáveis devem ser confiáveis pelo OS e são limitadas àHAL 215, ao kernel 210, e partes dos tempos de execução con-fiáveis 324, 334 e 344. A maior parte do kernel é verifica-damente segura.
Todas as instruções executáveis fora do kernel edo tempo de execução confiável são escritas em uma linguagemsegura, tal como C# ou Java, traduzida para uma linguagemintermediária segura, tal como a Linguagem Intermediária daMicrosoft® (MSIL), e então compilada para instrução executá-vel de processador por um ou mais outros compiladores auxi-liares.
A linha de divisão entre as instruções de kernel eas instruções de SIP é indistinta pelo sistema de tempo deexecução confiável. O tempo de execução confiável contéminstruções executáveis não verificáveis. A instrução execu-tável do tempo de execução é protegida das instruções doSIP, porque sua segurança de tipo verificada impede-as deinteragir com o sistema de tempo de execução e com suas es-truturas de dados exceto através de interfaces seguras. Emmuitos casos, o compilador auxiliar pode seguramente escalo-nar instruções do tempo de execução confiável na instruçãoexecutável do SIP, desse modo seguramente movendo operaçõesque tradicionalmente executariam em um kernel em um processode usuário.
As instruções executáveis do acionador de disposi-tivo 220 incluem instruções escritas pelo programador do a-cionador de dispositivo mais as instruções executáveis deuma ou mais bibliotecas de classes 222 e seu tempo de execu-ção confiável 224. Similarmente, como representado, o siste-ma de arquivos 230 inclui instruções executáveis de biblio-tecas de classes 232 e seu tempo de execução confiável 234.Além disso, como representado, a aplicação 240 inclui ins-truções executáveis de bibliotecas de classes 242 e seu tem-po de execução confiável 244.
A Fig. 3 representa os objetos relacionados à con-figuração em um processo de acionador de dispositivo exem-plificado 300 e sua relação com outras partes de uma arqui-tetura de sistema operacional (OS) exemplificada 200 supor-tada por uma ou mais implementações descritas aqui. Como re-presentado, a arquitetura de OS exemplificada 200 mostra umkernel de OS 310, um processo de acionador de dispositivoexemplificado 300, e recursos de hardware e outros recursosde computação 350.
O kernel de OS 310 inclui um ou mais canais 312para habilitar passagem de mensagem interprocessos. Como re-presentado, os recursos de hardware e outros recursos decomputação 350 incluem uma porta I/O 352 (também conhecidacomo um registrador I/O), memória I/O 354, um controladorDMA 356, e uma linha de solicitação de interrupção (IRQ)358. É claro, esses são somente exemplos de alguns recursosde hardware e outros recursos de computação. Outras imple-mentações podem incluir outros recursos de hardware e outrosrecursos de computação comuns e incomuns. As implementaçõespodem também incluir mais do que uma porta I/O 352, memória1/0 354, controlador DMA 356, ou linha de solicitação de in-terrupção (IRQ) 358. Alguma implementação pode não incluirtodos esses tipos de recursos de hardware.
O processo de acionador de dispositivo exemplifi-cado 300 contém objetos implementando as funções do aciona-dor de dispositivo, objetos de acionador de dispositivo 326.O processo de acionador de dispositivo 300 também contém umtempo de execução confiável 224, zero ou mais bibliotecas declasses 222, e um objeto de configuração 328.
Os objetos de acionador de dispositivo 326 incluemum exemplo de um módulo de programa não confiável. Diferentedas aproximações convencionais, ao código executável do a-cionador de dispositivo não é dado livre domínio. Entretan-to, suas ações não são também fiscalizadas ou verificadas.Ao invés, com uma ou mais implementações descritas aqui, aoacionador de dispositivo não confiável é dado livre, mas in-direto acesso a um conjunto limitado de recursos de computa-ção .
O tempo de execução confiável 224 inclui objetosde acesso que mediam acesso a recursos de hardware e IPC.Esses objetos de acesso incluem (a titulo de exemplo e nãolimitação) IoPort 332, IoMemory 334, IoDma 336, IoIrq 338, eponto final 340. Os objetos de acesso no tempo de execuçãoconfiável 224 agem como portas de comunicação para os se-guintes recursos:
- IoPort 332 -> Porta 1/0 352;
- IoMemory 334 -> Memória 354;
- IoDma 336 -> Canal DMA 356;
- IoIrq 338 -> Linha IRQ 358;
- Pontos finais 340 -> Manipulador de Canal 312.
Diferente dos acionadores de dispositivo conven-cionais, os arquivos contendo as instruções executáveis dosobjetos de acionador de dispositivo 326 não incluem instru-ções executáveis para configurar o acionador de dispositivoou para diretamente acessar hardware e outros recursos decomputação, tal como aqueles representados em 350. Ao invés,a instrução executável nos objetos de acionador de disposi-tivo 326 somente acessa recursos de hardware e outros recur-sos de computação via objetos de acesso 332, 334, 336, 338,e 340, cujas instruções executáveis estão contidas no tempode execução confiável 224.
As instruções executáveis para criar o objeto deconfiguração 328 e para acessar objetos 332, 334, 336, 338 e340 não estão incluídas nos arquivos fornecidos pelo progra-mador do acionador de dispositivo. Ao invés, o programadorde acionador de dispositivo embute exigências de configura-ção como metadados anexados às instruções executáveis para oacionador de dispositivo. Com uma ou mais implementaçõesdescritas, as instruções executáveis para criar o objeto deconfiguração 328 e acessar os objetos 332, 334, 336, 338 e340 são separadas e configuradas à parte das instruções exe-cutáveis do resto dos objetos do acionador de dispositivos.
Em uma ou mais implementações, as instruções exe-cutáveis para criar o objeto de configuração 328 são forne-cidas pelo sistema operacional. Em uma implementação, essasinstruções executáveis são geradas no tempo de instalaçãousando modelos de reflexão de tempo de compilação (CTR). Osmodelos CTR processam as exigências de configuração embuti-das como metadados na descrição do objeto de configuraçãocodificado no acionador de dispositivo. Em uma outra imple-mentação, os modelos CTR processam um manifesto, partes doqual foram criadas a partir dos metadados de configuraçãonos arquivos contendo as instruções executáveis para os ob-jetos de acionador de dispositivo 326. Em uma outra imple-mentação, as instruções executáveis no tempo de execuçãoconfiável 224 criam o objeto de configuração interpretandoou os metadados de configuração ou o manifesto de acionadorde dispositivo.
A arquitetura OS exemplificada 200 executa cadaacionador de dispositivo (tal como o acionador 200) em umprocesso de software isolado (SIP) separado. A arquiteturade OS exemplificada 200 usa segurança de linguagem para ve-rificar que nenhum SIP é capaz de escrevem em outras páginasdo SIP. Encapsulados nos SIPs, acionadores individuais podemser parados e reiniciados à medida que necessário sem dani-ficar o sistema operacional inteiro.
Programas para a arquitetura de OS exemplificada200 são estaticamente ligados no tempo de instalação a umtempo de execução confiável. Enquanto programas são estati-camente verificados para segurança de tipo, cada tempo deexecução confiável é um componente de sua base de computaçãoconfiável do sistema (TCB). As instruções executáveis notempo de execução confiável mantêm isolamento de processo,permitindo que os processos executem no modo privilegia-do/supervisor do processador hospedeiro sem ser capaz de a-fetar a memória e recursos de hardware de outros processos.Em uma implementação descrita, a reflexão dinâmica ou outrosmecanismos que podem contornar a segurança de tipo não sãopermitidos em instruções executáveis fornecidas pelo progra-mador do acionador de dispositivo.
0 tempo de execução confiável para acionadores dedispositivo fornece um ambiente seguro que abstrai comunica-ção com hardware. As instruções executáveis por processadorpara manipular solicitações de interrupção, acessar memóriafixa, acessar portas I/O (também conhecidas como registrado-res 1/0), e controlar controladores de acesso direto à memó-ria (DiVlA) são protegidas através de objetos de acesso expos-tos pelo tempo de execução de acionador.
Toda a comunicação interprocessos (IPC) é atravésde canais bidirecionais fortemente tipados. Esses canais têmexatamente dois pontos finais. As mensagens em um canal sãorestritas a tipos de valores, e o formato dessas mensagens édefinido por um contrato. O contrato também serve como umprotocolo de canal que especifica seqüências válidas de men-sagens enviadas através do canal, e inclui uma etapa de "a-perto de mão" para iniciar comunicação. Uma adaptação da a-plicação ao contrato pode ser estaticamente verificada.
Alguns pontos finais têm um nome público de modo apermitir fácil conexão por clientes. Isso é alcançado atra-vés de um único espaço de nome globalmente acessível enrai-zado. Um servidor de espaço de nomes global gerencia o espa-ço de nome, e permite o mapeamento de nomes a pontos finaisde canal, diretórios, e ligações simbólicas. O espaço de no-me não é conectado a um armazenamento complementar persis-tente. Ao invés, a política do sistema permite que algumasaplicações (tal como o sistema de arquivo) criem sub-árvoresvirtuais no espaço de nome e mapeiem conteúdo nessas árvo-res. Isso permite o equivalente de um sistema de arquivosconvencional, com a distinção de que o acesso aos arquivos éatravés da abstração de canal.
A arquitetura de OS exemplificada 200 tem uma abs-tração para tratar aplicações (tal como 240) como entidadesde primeira classe, que habilita que o sistema operacionalconsidere sobre aplicações e forneça garantias. Os acionado-res de dispositivos são uma sub-classe dessa abstração. Alémdisso, a instalação do acionador de dispositivo é uma opera-ção de primeira classe executada pelo OS nas aplicações.
Na arquitetura de OS exemplificada 200, o aciona-dor de dispositivo declara suas exigências de configuraçãode 1/0 e IPC. Em aproximações convencionais, as exigênciasde configuração são impossíveis de serem descobertas. Aqui,as exigências de configuração são codificadas no mesmo ar-quivo das instruções executáveis do acionador de dispositi-vo. As exigências de configuração codificadas podem ser con-vertidas, para processamento mais fácil, em uma especifica- ção autônoma que declara as exigências de configuração.
As exigências de configuração são verificáveis nahora da compilação, na hora da instalação, na hora da reini-cialização, e na hora da execução. De fato, a codificação deexigências de configuração no mesmo arquivo à medida que o acionador de dispositivo as transforma em um artefato auto-descritivel. Dado o conjunto de conjuntos MSIL para o acio-nador de dispositivo, o OS pode considerar completamente so-bre as pré-condições de configuração (e as dependências deambos recursos de software e de hardware) que devem ser al- cançadas de modo ao acionador de dispositivo funcionar cor-retamente.
Com a abstração de aplicação e as declarações deconfiguração de acionador, a arquitetura de OS exemplificada200 pode fornecer garantias sobre os recursos de 1/0 e IPC usados por um acionador de dispositivo. Por exemplo, o OSpode detectar conflitos de configuração antes do acionadorexecutar comparando o conjunto de recursos desejados por umnovo acionador de dispositivo com o conjunto de recursos u-sados por todos os outros acionadores de dispositivo e veri-ficando recursos sobrepostos - e, portanto, conflito - talcomo faixas de porta 1/0 ou de memória 1/0. Em uma modalida-de preferencial, os conflitos de configuração são detectadosna hora da instalação, e a instalação é permitida somente senão houver conflitos entre o novo acionador de dispositivo eo resto do sistema, incluindo todos os acionadores de dispo-sitivo previamente instalados.
Como um outro exemplo, o OS pode criar uma ordemde reinicialização total válida - a ordem na qual os aciona-dores de dispositivo são inicializados - extraindo uns dosoutros suas dependências de configuração, então classifican-do a lista tal que nenhum acionador de dispositivo seja ini-cializado antes de uma de suas dependências. A criação auto-mática de uma ordem de reinicialização de sistema total vá-lida é um avanço significativo sobre sistemas anteriores on-de uma ordem de reinicialização está ou codificada permanen-temente no OS na hora do desenvolvimento ou é manualmenteatualizada por um administrador. Como um exemplo final dasgarantias derivadas das exigências de configuração declara-tivas, o OS é capaz de gerar toda instrução executável parainicialização do acionador relacionada à configuração do a-cionador e aquisição de recursos. Como tal, o OS pode garan-tir que os acionadores somente usem recursos declarados eesses recursos são adquiridos seguindo políticas de sistema.Essas capacidades aumentam a confiabilidade e sustentabili-dade do sistema sem custo significativo em desempenho detempo de execução.
Coordenação de Acionador de Dispositivo
Diferente de aproximações convencionais, o coorde-nador de acionador de dispositivo 214 de uma ou mais imple-mentações descritas aqui impede que um acionador acesse lo-calizações de memória ou outros recursos de hardware inapro-priados. De forma oposta, o coordenador de acionador de dis-positivo permite que um acionador acesse somente localiza-ções de memória e outros recursos de hardware apropriados.Além disso, ao invés de um acionador diretamente acessarhardware e recursos (que é o que as aproximações convencio-nais permitem), o kernel 210 veta um acesso do acionador ahardware e recursos.
Uma ou mais implementações descritas aqui têm umsistema de entrada/saida (I/O) consistindo de três camadas:HAL 214, gerenciador de I/O 211, e acionadores 220. A HAL214 é uma pequena base de instruções executáveis confiáveisque abstrai acesso a hardware do computador. Por exemplo, emuma modalidade, a HAL implementou quatro objetos de acessopara manipular hardware: o objeto IoPort 332 para acessaruma porta I/O 352 (também conhecida como um registradorI/O), o objeto IoMemory 334 para acessar a memória I/O 354,o objeto IoDma 336 para acessar um controlador DMA 356, e oobjeto IoIrq 338 para acessar uma linha de solicitação deinterrupção 358. Em uma modalidade, a HAL 314 também incluiinstrução executável para o controlador de tempo, controla-dor de interrupção, e hardware de relógio em tempo real. Ogerenciador de I/O 211 é responsável por inicializar os a-cionadores de dispositivo e conectar as aplicações aos acio-nadores de dispositivo 220.
O kernel 210 usa ou os metadados de configuraçãode acionador de dispositivo 220 diretamente, ou manifestospara cada acionador de dispositivo (por exemplo, manifestode processo 142 representado na Fig. 1) para configurar osacionadores de dispositivo 220 e conectar os recursos neces-sários para executar corretamente. Na inicialização, o ker-nel 210 faz uma configuração conectar e ligar do sistema. Okernel 210 usa informação adquirida da BIOS pelo carregadorde reinicialização e de barramentos, tal como o barramentoPCI, para enumerar dispositivos, para iniciar os acionadoresde dispositivos apropriados, e para passar esses objetos deacionadores que encapsulam acesso ao hardware de dispositi-vo .
Cada acionador 220 é escrito em instruções execu-táveis seguras e executa em seu próprio processo. Os aciona-dores se comunicam com outras partes do sistema, incluindo apilha de rede e sistema de arquivo, exclusivamente atravésdos canais. Quando um acionador inicia, o gerenciador de I/O211 fornece - como exigido pelo manifesto do acionador dedispositivo 220 - acesso a objeto 332, 334, 336, e 338 paracomunicar com hardware de dispositivo 352, 354, 356, e 358.Todos esses objetos de acesso fornecem um a interface seguraque verifica cada referência antes de diretamente acessar aslocalizações mapeadas na memória do hardware.
Em uma modalidade usando isolamento de software,as instruções executáveis inteiras para os objetos de acesso1/0 estão contidas no tempo de execução confiável 324 e exe-cutando no processo acionador-acionador 300. As verificaçõespara garantir que o acesso a hardware é válido são executa-as por instruções executáveis nos objetos de acesso 1/0332, 334, 336, e 338 no tempo de execução confiável 224. Emuma outra modalidade usando isolamento de hardware, o hard-ware de isolamento de processo do processador é programadopara permitir que um acionador de dispositivo acesse somenteregiões especificas do espaço de porta I/0 ou espaço de me-mória I/0 ao qual o acionador foi garantido acesso. Na moda-lidade usando o isolamento de hardware, instruções executá-veis para configurar o hardware de isolamento de processoresidem no kernel de OS 210.
Configuração de Acionador
Uma ou mais implementações usam exigências de con-figuração codificadas em metadados em componentes de sistemapara descrever partes do sistema, explicar'como elas encai-xam juntas, e especificar sua interação de comportamento comoutras partes do sistema. Os metadados de forma declarativarotulam cada componente do sistema, tal como o kernel, umaaplicação, ou acionador de dispositivo, e suas exigências deconfiguração. As exigências de configuração incluem informa-ção sobre as dependências, serviços exportados, e exigênciasde recurso. As ferramentas usam esses metadados antes da e-xecução do sistema para verificar que as instruções executá-veis do componente de sistema podem ser configuradas corre-tamente. Esses metadados são usados durante a execução dosistema para configurar cada componente do sistema correta-mente tal que ele possa executar como pretendido por seuprogramador.
Os metadados de sistema são alcançados em um oumais armazenadores de sistema chamados manifestos. Um mani-festo de sistema de alto nivel aponta para manifestos des-crevendo componente individual (tal como acionadores de dis-positivo). Através desses manifestos, tal como um carregadorde reinicialização ou verificador de sistema, pode-se desco-brir cada componente do sistema.
Os manifestos do sistema são suficientes para ha-bilitar análise fora de linha do sistema. Com implementaçõesdescritas aqui, um administrador é capaz de descobrir a res-posta a muitas questões relacionadas a "acionador de dispo-sitivo" usando somente uma descrição dos dispositivos dehardware e do manifesto do sistema. Tais questões incluem,por exemplo, o sistema reiniciará no hardware particular?Quais acionadores e serviços inicializarão? E quais aplica-ções podem executar?
Especificação
Uma imagem de sistema executável contém exigênciasde configuração para o sistema inteiro embutidas como meta-dados. Usando os metadados, uma ou mais das implementaçõesdescritas mantêm três invariantes. Primeiro, o OS nunca ins-talará um acionador de dispositivo que não pode iniciar comsucesso devido às exigências de configuração que entram emconflito com um outro acionador ou uma outra parte do siste-ma. Segundo, o OS nunca iniciará um acionador de dispositivoque não pode executar com sucesso devido ou a conflitos deconfiguração ou a recursos faltando. Terceiro, um acionadorde dispositivo não pode usar recursos na hora da execuçãoque não foram declarados em suas exigências de configuração.
Quando possível, uma ou mais implementações des-critas aqui usam atributos de metadados padrão em linguagensde alto nível para intercalar exigências de configuração emcódigo fonte, tal que somente um documento fonte deva sermantido. Os atributos padrão podem ser conectados a entida-des de código fonte tal como classe, método, ou declaraçõesde campo. Um compilador codifica atributos no arquivo con-tendo as instruções executáveis de linguagem intermediária.Os compiladores, ligadores, ferramentas de instalação, eferramentas de verificação podem ler os metadados codifica-dos com as instruções executáveis mesmo que eles não estejamexecutando as instruções.
Como um exemplo, o seguinte código fonte mostraalguns atributos usados para declarar as exigências de con-figuração de um acionador de dispositivo de video (tal comoacionador de dispositivo de video s3™Trio64™) :[Signature("/pci/03/00/5333/8811")]class S3GtrioConfig : DriverCategoryDeclaration
{
// Recursos de hardware de config PCI[IoMemoryRange(0, Default = 0xf8000000, Lenght =
0x400000) ]
IoMemoryRange frameBuffer;
// Recursos de hardware fixos
[IoFixedMemoryRange(Base = 0xb8000, Lenght
0x8000)]
IoMemoryRange textBuffer;
[IoFixedMemoryRange(Base = OxaOOOO, Lenght =
0x8000)]IoMemoryRange fontBuffer;
[IoFixedPortRange(Base = 0x03c0, Lenght = 0x20)]
IoPortRange control;
[IoFixedPortRange(Base = 0x4ae8, Lenght = 0x02)]
IoPortRange advanced;
[IoFixedPortRange(Base = 0x9ae8, Lenght = 0x02)]
IoPortRange gpstart;
// canais
[ExtensionEndpoint(typeof(ExtensionContract.Exp))]
Tref<ExtensionContract.Exp:Start> iosys;
[ServiceEndpoint(typeof(VideoDeviceContract.Exp))]
Tref<ServiceProviderContract.Exp:Start> video;
}
Os atributos [DriverCategory] e [Signature] decla-ram esse módulo como sendo um acionador de dispositivo parauma classe especifica de dispositivos de video PCI. A Dri-verCategory denota uma categoria de aplicações que implemen-tam acionadores de dispositivos para hardware especifico.
Outras categorias incluem ServiceCategory, para aplicaçõesimplementando serviços de software, e WebAppCategory paraextensões de um servidor da rede.
O atributo [IoMemoryRange] declara que frameBufferé derivado da primeira entrada no espaço de configuração PCIdo dispositivo. Essa localização do armazenador temporáriode quadros é determinada quando o hardware é configurado, eos parâmetros de hardware, tal como o tamanho da região dememória, devem ser compatíveis com os valores de configura-ção no atributo. Os atributos [IoFixedMemoryRange] e [IoFi-xedPortRange] especificam que o acionador necessita ou deuma faixa fixa de espaço de endereço para acesso mapeado emmemória ou faixas fixas de portas 1/0 para acessar registra-dores de dispositivo.
Nessa modalidade, os objetos IoDmaRange, IoIrqRan-ge, IoMemoryRange, e IoPortRange são recipientes para cole-ções de objetos de acesso consecutivos e podem ser usados deforma intercambiável com objetos de acesso, IoDma, Iolrq, eIoPort respectivamente.
O atributo [ExtensionEndpoint] declara que o acio-nador deve ser configurado com um ponto final de canal parase comunicar com o processo pai do acionador. No caso de a-cionadores de dispositivo, tal como o S3™Trio64™, o sistema1/0 é o processo pai.
O atributo [ServiceEndpoint] declara que o aciona-dor deve ser configurado com um ponto final de canal para oserviço de diretório de sistema e que aplicações usando oacionador de vídeo serão limitadas ao acionador de disposi-tivo pelo serviço de diretório através desse ponto final.
Hora de Compilação
Na hora da compilação, o compilador de linguagemde alto nível embute atributos padrão como metadados no ar-quivo contendo as instruções executáveis de linguagem inter-mediária para o acionador de dispositivo. Usando uma biblio-teca de acesso a metadados de linguagem intermediária, umaou mais implementações descritas podem restaurar os metada-dos embutidos a partir do arquivo de linguagem intermediáriasem executar as instruções executáveis contidas no arquivo.
Na hora da ligação, uma ferramenta de criação demanifesto lê os metadados de atributos padrão a partir doarquivo de linguagem intermediária para criar um manifestode aplicação. Um manifesto de aplicação é um arquivo XML e-numerando os componentes e exigências de configuração da a-plicação. Os manifestos de aplicação são descritos em maisdetalhes em "Artefatos Autodescritiveis e Abstrações de A-plicação".
0 seguinte XML contém parte da informação de mani-festo para o acionador de dispositivo de video (tal como umacionador de dispositivo de video S3™Trio64™) :
<manifest>
<application identity = "S3Trio64" />
<assemblies>
<assembly filename = "S3Trio64.exe" />
<assembly filename = "Namespace.Contracts.dll"version = "1.0.0.2299" />
<assembly filename = "Io.Contracts.dll"version = "1.0.0.2299" />
<assembly filename = "Corblib.dll"version = "1.0.0.2299" />
<assembly filename = "Corlibsg.dll"version = "1.0.0.2299" />
<assembly filename = "System.Compiler.Runtime.dll"version = "1.0.0.2299" />
<assembly filename = "MS.SingSharp.Runtime.dll"version = "1.0.0.2299" />
<assembly filename = "ILHelpers.dll"version = "1.0.0.2299" />
<assembly filename = "OS.Vl.ill"version = "1.0.0.2299" /></assemblies>
<driverCategory>
<device signature = "/pci/03/00/5333/8811" /><ioMemoryRange index="0" baseAddress
"Oxf8000000"rangeLenght = "0x400000" />
<ioMemoryRange baseAddress = "0xb8000"rangeLenght = "0x8000" fixed = "True" /><ioMemoryRange baseAddress = "OxaOOOO"rangeLenght = "0x8000" fixed = "True" />CioPortRange baseAddress = "0x3c0"
rangeLenght = "0x20" fixed = "True" />CioPortRange baseAddress = "0x4ae8"rangeLenght = "0x2" fixed = "True" />CioPortRange baseAddress = "0x9ae8"rangeLenght = "0x2" fixed = "True" />
<extension startStateld = "3" contractName ="MS.OS.Extending.ExtensionContract"endpointEnd="Exp" assembly="Namespace.Contracts"/><serviceProvider startStateld = "3" contractName ="MS.OS.Io.VideoDeviceContract"
endpointEnd="Exp" assembly = "Io.Contracts" /></driverCategory>...
</manifest>
Hora de Instalação
Com uma ou mais implementações descritas aqui, osistema garante não instalar um acionador de dispositivo quenão pode iniciar. Para fazer isso, o sistema verifica que asexigências de configuração inteiras do acionador de disposi-tivo podem ser satisfeitas antes do acionador de dispositivoser instalado.
Uma aplicação é uma abstração de primeira classeem um OS suportando uma ou mais implementações descritas a-qui. Esse conceito é descrito em mais detalhes em "ArtefatosAutodescritiveis e Abstrações de Aplicação". Em uma modali-dade, de modo a serem executadas, um conjunto de instruçõesexecutáveis é adicionado à aplicação por um instalador parainicializar a aplicação de acordo com suas exigências deconfiguração. Em uma implementação alternativa, as instru-ções executáveis para inicializar a aplicação de acordo comsuas exigências de configuração estão contidas no tempo deexecução confiável e criam o objeto de configuração e obje-tos de acesso interpretando os metadados de configuração daaplicação.
O instalador inicia com os metadados no manifestoda aplicação. 0 instalador verifica se cada um dos conjuntosde aplicação existe e é seguro em memória e tipo. Ele tambémverifica se todos os contratos de canal são implementadoscorretamente.
Uma vez que essas propriedades internas são resol-vidas e verificadas, o instalador a seguir tenta resolver everificar todas as dependências externas. Por exemplo, oinstalador assegura que quaisquer recursos de hardware usa-dos por um acionador de dispositivo não conflitam com recur-sos de hardware exigidos por qualquer outro acionador. 0instalador também verifica a existência de todo tipo de ca-nal usado pela aplicação. Se a aplicação exporta um canal, oinstalador verifica que um canal exportado não conflita comuma outra aplicação. Quando os conflitos chegam, a políticano manifesto do sistema os resolve. Por exemplo, o manifestodeve declarar que somente um acionador de dispositivo podefornecer o contrato de console de vídeo. A instalação de a-cionadores de vídeo adicionais pode ser desabilitada, ou so-mente um único acionador de vídeo ativado na hora da reini-cialização.
A reflexão de Tempo de Compilação (CTR) é usadapara gerar instrução executável confiável para inicializar oobjeto de configuração da aplicação e objetos de acesso pararecursos de sistema. Em uma modalidade, os modelos CTR exe-cutam na hora da instalação processando os elementos de pro-grama atribuídos nos conjuntos chamados pelo manifesto deaplicação.
O processo de instalação é completado atualizandoos metadados de manifesto do sistema para incorporar a novaaplicação ou acionador de dispositivo.
Em pelo menos uma implementação, o processo deinstalação inteiro acontece fora de linha com uma instalação se tornando visível somente na próxima reinicialização dosistema. Alternativamente, o processo de instalação inteiropode ser executado em linha e/ou parcialmente em linha.
Hora de Execução
Na hora da execução, os metadados acionam a inici- alização do kernel, acionadores de dispositivo, serviços eaplicações. O carregador de reinicialização lê uma parte domanifesto do sistema para determinar qual kernel, acionado-res de dispositivo, e serviços deveriam ser carregados. Aordem na qual esses carregam e iniciam a executar não é es- pecificada em nenhum lugar; ao invés, o sistema a conclui apartir das dependências especificadas.
À medida que cada aplicação é iniciada, o kernelverifica e resolve todas as dependências de metadados econstrói um registro de configuração de processo no kernel. Instruções executáveis confiáveis, emitidas na aplicação u-sando CTR, analisa o registro de configuração para criar oobjeto de configuração 328 e para criar objetos de acesso332, 334, 336, 338, 340 para acessar recursos externos. Areflexão de tempo de compilação (CTR) gera as instruções e- xecutáveis para o objeto de configuração 428.
Voltando ao exemplo do acionador de dispositivoS3™Trio64™, o kernel registra no registro de configuraçãodo acionador a necessidade por objetos IoMemoryRange paraframeBuffer, textBuffer, e fontBuffer. O kernel também re-gistra os objetos IoPortRange para controle, avançado, eportas I/O gpstat. O kernel cria um canal para conectar oacionador de dispositivo ao sub-sistema I/O e um segundo ca-nal para conectar o acionador ao espaço de nomes. Os pontosfinais do canal são adicionados ao registro de configuraçãodo acionador.
Quando o acionador de dispositivo começa a execu-tar, as instruções executáveis no tempo de execução confiá-vel criam os objetos de acesso apropriados IoMemoryRange eIoPortRange no espaço de objeto do acionador. Como esses po-dem ser construídos somente pelo tempo de execução confiá-vel, um acionador de dispositivo pode somente acessar recur-sos I/O declarados em seus metadados de configuração e veri-ficados por conflitos pelo sub-sistema I/O de kernel.
Declarar pontos finais de canal em metadados deconfiguração assegura três propriedades. Primeiro, as ins-truções executáveis para um SIP podem ser estaticamente ve-rificadas para assegurar que elas se comuniquem somente a-través de canais completamente declarados, em adequação res-trita aos contratos de canal. Segundo, as aplicações não ne-cessitam conter nomes globais. Por exemplo, o acionador dedispositivo de vídeo S3™Trio64™ não está ciente do nomedev/vídeo no espaço de nome do sistema. Ao invés, o aciona-dor usa um nome local, S3™Trio64Config.vídeo, para se refe-rir a um canal com um dado contrato (ServiceProviderCon-tract) . A diagramação inteira do espaço de nomes 1/0 podemudar sem afetar uma única linha de código fonte no aciona-dor de vídeo. Terceiro, as aplicações podem ser "caixas deareia" se adequando ao principio de privilégio menos possí-vel, para remover uma fonte de erro e vulnerabilidade de se-gurança em sistemas atuais. Por exemplo, embora o acionadorS3™Trio64™ mantenha um ponto final conectado ao serviço dediretório de sistema, o acionador não tem habilidade de cri-ar novos nomes ou de se conectar a qualquer outro processode sistema.
Implementação Metodológica dos Acionadores de Dis-positivos Isolados
A Fig. 4 mostra o método 400 para inicialização dequalquer extensão (tal como um acionador de dispositivo) .Como esse método 400, o OS lê os metadados a partir do mani-festo do acionador de dispositivo para criar objeto de acio-nador de dispositivo. Esse método 400 é executado por um oumais dos vários componentes como representado na Fig. 1. A-lém disso, esse método 400 pode ser executado em software,hardware, suporte lógico inalterável ou uma combinação des-ses .
Em 402 da Fig. 4, o sistema operacional (OS) obtémmódulo de programa não confiável (tal como um acionador dedispositivo). O OS determina um conjunto de recursos de com-putação solicitados a partir do manifesto do acionador dedispositivo. Aqui, os recursos de computação podem incluirrecursos virtuais (tal como um canal) ou recursos de hardwa-re (tal como uma faixa de Portas I/O ou memória 1/0) ou ou-tros tais recursos.
O OS pode fazer essa determinação lendo o manifes-to do acionador de dispositivo. Alternativamente, o OS podeanalisar as instruções executáveis do acionador de disposi-tivo. Alternativamente ainda, o OS pode extrair metadadosdas instruções executáveis ou uma estrutura de dados associ-ada.
Em 4 04, o OS determina se qualquer um dos recursosjá está alocado ao OS ou um outro acionador de dispositivo.Se estiver, o processo aborta em 406. Modalidades alternati-vas da invenção devem seguir o aborto com política adicio-nal, tal como reiniciar o processo de inicialização quandoos recursos foram liberados, negociar com o proprietário a-tual para liberar os recursos, perguntar ao usuário por per-missão para parar o acionador de conflito, notificar o es-critor de acionador de dispositivo de uma solicitação de re-curso potencialmente errôneo, etc.
Também, aqui, o OS pode fazer outras determinaçõesrelacionadas ao acionador de dispositivo e aos recursos decomputação solicitados. 0 OS confirma que o acionador dedispositivo é permitido a acessar esses recursos de computa-ção solicitados e acessá-los da maneira que ele solicita.
Em 408, o OS registra alocação de recursos para oacionador de dispositivo.
Em 410, o OS fornece um objeto de acesso localconfiável a ser usado pelo acionador de dispositivo para ca-da recurso exigido ou solicitado. Os objetos de tempo de e-xecução confiável (representado na Fig. 3) são exemplos deobjetos de acesso local.
0 "fornecimento" que o OS executa aqui pode inclu-ir simplesmente empregar instruções executáveis fixadas e jápré-configuradas (e dados) - que são os objetos de acessolocal. Ele pode incluir gerar novas instruções (talvez base-ado em um modelo) que são personalizadas para as necessida- des e condições particulares. Ou o OS pode fazer alguma coi-sa intermediária. Por exemplo, ele pode configurar ou leve-mente alterar instruções executáveis existentes - que são osobjetos de acesso local.
De fato, o OS pode inserir ou ligar as instruções executáveis (e dados) do objeto de acesso local confiável aoacionador de dispositivo não confiável tal que o acionadorde dispositivo possa ganhar acesso via o objeto de acessolocal ligado ou inserido.
Em 412, o OS inicializa o objeto de configuração de dispositivo usando o conjunto de objetos de acesso localpara os recursos exigidos. Um objeto de configuração podeinclui configurações adicionais especificadas nos manifes-tos. Um exemplo de configurações adicionais seria uma confi-guração contanto a uma extensão de classificação o formato dados/hora preferenciais do usuário.
Em 414, o OS inicia execução das instruções execu-táveis do acionador de dispositivo. As instruções executá-veis para inicializar o acionador de dispositivo são forne-cidas pelo OS ou sistema de instalação e não pelo programa- dor do acionador de dispositivo.
Em 416, o acionador de dispositivo executando a-cessa os recursos de computação solicitados através de obje-tos de acesso local. Além disso, o acionador de dispositivoexecutando pode somente acessar os recursos de computaçãosolicitados (não outros) e somente via os objetos de acessolocal ligados ou inseridos.
Conclusão
As técnicas, descritas aqui, podem ser implementa-das de muitas formas, incluindo (mas não limitadas a) módu-los de programa, sistemas de computação de propósito geral ede propósito especial, servidores e equipamento de rede, e-letrônica dedicada e hardware, suporte lógico inalterável,como parte de uma ou mais redes de computador, e/ou uma com-binação desses.
Embora uma ou mais implementações descritas acimatenham sido descritas em linguagem especifica para caracte-rísticas estruturais e/ou etapas metodológicas, entende-seque outras implementações podem ser praticadas sem as carac-terísticas ou etapas exemplificadas específicas descritasaqui. De preferência, as características ou etapas exempli-ficadas específicas são descritas como formas preferenciaisde uma ou mais implementações. Em alguns casos, caracterís-ticas bem conhecidas podem ter sido omitidas ou simplifica-das para esclarecimento da descrição das implementações e-xemplifiçadas. Além disso, para facilidade de entendimento,certas etapas de método são traçadas como etapas separadas;entretanto, essas etapas separadamente traçadas não deveriamser construídas como necessariamente ordem dependente de seudesempenho.
Claims (10)
1. Meio legível por processador, CARACTERIZADO porter instruções executáveis por processador que, quandoexecutadas por um processador, executam um método,compreendendo:obter um acionador de dispositivo (300), onde esteé um conjunto de instruções executáveis;determinar um conjunto de recursos de computação(312 e 350) exigidos para execução do conjunto de instruçõesexecutáveis do acionador de dispositivo (300);fornecer um ou mais objetos de acesso local (332,333, 336, 338 e 340) para uso pelo acionador de dispositivo(300) para acesso ao conjunto exigido de recursos decomputação (312 e 350), cada um dos um ou mais objetos deacesso local (332, 333, 336, 338 e 340) compreendendoinstruções executáveis;iniciar execução do conjunto de instruçõesexecutáveis do acionador de dispositivo (300) e as instruçõesexecutáveis de um ou mais objetos de acesso local (332, 333,336, 338 e 340).
2. Meio, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que a ação de determinarcompreende obter um manifesto legível por computador (142)associado com o acionador de dispositivo (300), o manifestode acionador de dispositivo (142) especificando o conjunto derecursos de computação (312 e 350) exigido para execução doconjunto de instruções executáveis do acionador dedispositivo (300).
3. Meio, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que o método adicionalmentecompreende confirmar que o acionador de dispositivo (300)está autorizado a acessar o conjunto exigido de recursos decomputação (312 e 350).
4. Meio, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que a ação de forneceradicionalmente compreende gerar um ou mais objetos de acessolocal (332, 333, 336, 338, e 340) para uso pelo acionador dedispositivo (300) para acesso ao conjunto exigido de recursosde computação (312 e 350), o objeto de acesso local sendofornecido por um sistema operacional.
5. Meio legível por processador, CARACTERIZADO porter instruções executáveis por processador que, quandoexecutadas por um processador, executam um método,compreendendo:obter um módulo de programa não confiável (300)compreendendo um conjunto de instruções executáveis e omódulo de programa não confiável (300) sendo configurado paraacessar um ou mais recursos de computação (312 e 350);determinar um ou mais recursos de computação alvo(312 e 350) do módulo de programa não confiável (300) , ondeum ou mais recursos de computação alvo (312 e 350) sãorecursos de computação (312 e 350) que o módulo de programanão confiável (300) procurará acessar quando o conjunto deinstruções executáveis do módulo de programa não confiável(300) é executado;fornecer um ou mais objetos de acesso localconfiáveis (332, 333, 336, 338 e 340) ao módulo de programanão confiável (300) tal que o módulo de programa nãoconfiável ganhe acesso a um ou mais recursos de computaçãoalvo (312 e 350) via os um ou mais objetos de acesso localconfiáveis (332, 333, 336, 338 e 340).
6. Meio, de acordo com a reivindicação 5,CARACTERIZADO pelo fato de que cada um dos objetos de acessolocal confiáveis (332, 333, 336, 338 e 340) está associado aum ou mais recursos de computação (312 e 350) e cada um dosobjetos de acesso local confiáveis (332, 333, 336, 338 e 340)compreende um conjunto de instruções executáveis.
7. Meio, de acordo com a reivindicação 5,CARACTERIZADO pelo fato de que cada um dos objetos de acessolocal confiáveis (332, 333, 336, 338 e 340) está associado aum ou mais recursos de computação, cada um dos objetos deacesso local confiáveis (332, 333, 336, 338 e 340) compreendeinstruções executáveis, e o fornecimento adicionalmentecompreende configurar as instruções executáveis de um ou maisobjetos de acesso local confiáveis (332, 333, 336, 338 e 340)para fornecer ao módulo de programa não confiável (300)acesso a um ou mais recursos de computação alvo (312 e 350)via as instruções executáveis configuradas de um ou maisobjetos de acesso local confiáveis (332, 333, 336, 338 e-340).
8. Meio, de acordo com a reivindicação 5,CARACTERIZADO pelo fato de que o módulo de programa nãoconfiável (300) é um acionador de dispositivo (300).
9. Meio legível por processador, CARACTERIZADO porter instruções executáveis por processador que, quandoexecutadas por um processador, executam um método,compreendendo:obter um módulo de programa não confiável (300)compreendendo um conjunto de instruções executáveis e omódulo de programa não confiável (300) sendo configurado paraacessar um ou mais recursos de computação (312 e 350);determinar um ou mais recursos de computação alvo(312 e 350) do módulo de programa não confiável (300), ondeum ou mais recursos de computação alvo (312 e 350) sãorecursos de computação (312 e 350) que o módulo de programanão confiável (300) procurará acessar quando o conjunto deinstruções executáveis do módulo de programa não confiável(300) é executado;fornecer um ou mais objetos de acesso localconfiáveis (332, 333, 336, 338 e 340) ao módulo de programanão confiável (300) tal que o módulo de programa nãoconfiável ganhe acesso a um ou mais recursos de computaçãoalvo (312 e 350) via os um ou mais objetos de acesso localconfiáveis providos (332, 333, 336, 338 e 340), os um ou maisobjetos de acesso local confiáveis (332, 333, 336, 338 e 340)estando associados com um ou mais recursos de computação alvo(312 e 350);permitir que o módulo de programa acesse um ou maisrecursos de computação alvo (312 e 350) somente via um oumais objetos de acesso local confiáveis (332, 333, 336, 338 e340) associados com aqueles um ou mais recursos de computaçãoalvo (312 e 350) .
10. Meio, de acordo com a reivindicação 9,CARACTERIZADO pelo fato de que o módulo de programa nãoconfiável (300) é um acionador de dispositivo (300).
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US73054605P | 2005-10-26 | 2005-10-26 | |
| US60/730.546 | 2005-10-26 | ||
| US11/428.096 | 2006-06-30 | ||
| US11/428,096 US8074231B2 (en) | 2005-10-26 | 2006-06-30 | Configuration of isolated extensions and device drivers |
| PCT/US2006/040545 WO2007050364A1 (en) | 2005-10-26 | 2006-10-16 | Configuration of isolated extensions and device drivers |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| BRPI0618027A2 true BRPI0618027A2 (pt) | 2011-08-16 |
Family
ID=37968124
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| BRPI0618027-2A BRPI0618027A2 (pt) | 2005-10-26 | 2006-10-16 | configuração de extensões isoladas e acionadores de dispositivo |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US8074231B2 (pt) |
| EP (1) | EP1952251A4 (pt) |
| JP (1) | JP5009299B2 (pt) |
| KR (1) | KR101331361B1 (pt) |
| BR (1) | BRPI0618027A2 (pt) |
| RU (1) | RU2443012C2 (pt) |
| WO (1) | WO2007050364A1 (pt) |
Families Citing this family (59)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8849968B2 (en) * | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
| US20070094495A1 (en) * | 2005-10-26 | 2007-04-26 | Microsoft Corporation | Statically Verifiable Inter-Process-Communicative Isolated Processes |
| US20070165765A1 (en) * | 2005-12-01 | 2007-07-19 | Ogami Kenneth Y | Use of placeable channels in the construction of embedded applications |
| US8701023B1 (en) * | 2006-02-16 | 2014-04-15 | Cypress Semiconductor Corporation | Global parameter management graphical user interface (GUI) for embedded application design |
| US20070234029A1 (en) * | 2006-03-28 | 2007-10-04 | Rothman Michael A | Methods and apparatus for context sensitive component dispatch management |
| US8032898B2 (en) | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
| US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
| US20090210888A1 (en) * | 2008-02-14 | 2009-08-20 | Microsoft Corporation | Software isolated device driver architecture |
| US8296730B2 (en) * | 2008-03-12 | 2012-10-23 | Microsoft Corporation | Using extension methods to extend COM objects |
| US8049918B2 (en) | 2008-11-03 | 2011-11-01 | Microsoft Corporation | Print plug-in isolation |
| US20100211988A1 (en) * | 2009-02-18 | 2010-08-19 | Microsoft Corporation | Managing resources to display media content |
| US8316384B2 (en) | 2009-02-18 | 2012-11-20 | Microsoft Corporation | Input/output broker model |
| US20100215340A1 (en) * | 2009-02-20 | 2010-08-26 | Microsoft Corporation | Triggers For Launching Applications |
| US9069585B2 (en) * | 2009-03-02 | 2015-06-30 | Microsoft Corporation | Application tune manifests and tune state recovery |
| US9588803B2 (en) | 2009-05-11 | 2017-03-07 | Microsoft Technology Licensing, Llc | Executing native-code applications in a browser |
| US20100318964A1 (en) * | 2009-06-12 | 2010-12-16 | Microsoft Corporation | Software extension analysis |
| JP5473756B2 (ja) * | 2010-04-27 | 2014-04-16 | キヤノン株式会社 | 情報処理装置、その制御方法及びプログラム |
| US9323921B2 (en) | 2010-07-13 | 2016-04-26 | Microsoft Technology Licensing, Llc | Ultra-low cost sandboxing for application appliances |
| US8661410B2 (en) | 2011-03-11 | 2014-02-25 | Oracle International Corporation | Managed enterprise software components as dynamic services |
| US8856734B2 (en) | 2011-03-11 | 2014-10-07 | Oracle International Corporation | Type-safe dependency injection of services into enterprise components |
| US8706881B2 (en) * | 2011-03-22 | 2014-04-22 | Oracle International Corporation | Automatic registration of enterprise resources in a dynamic module system services registry |
| US9495183B2 (en) | 2011-05-16 | 2016-11-15 | Microsoft Technology Licensing, Llc | Instruction set emulation for guest operating systems |
| US9063776B2 (en) * | 2011-05-27 | 2015-06-23 | Microsoft Technology Licensing, Llc | Application activation framework |
| US8800051B2 (en) * | 2011-06-29 | 2014-08-05 | Nvidia Corporation | System and method for private information communication from a browser to a driver |
| US20130036431A1 (en) * | 2011-08-02 | 2013-02-07 | Microsoft Corporation | Constraining Execution of Specified Device Drivers |
| US9389933B2 (en) | 2011-12-12 | 2016-07-12 | Microsoft Technology Licensing, Llc | Facilitating system service request interactions for hardware-protected applications |
| US9413538B2 (en) | 2011-12-12 | 2016-08-09 | Microsoft Technology Licensing, Llc | Cryptographic certification of secure hosted execution environments |
| US9829715B2 (en) | 2012-01-23 | 2017-11-28 | Nvidia Corporation | Eyewear device for transmitting signal and communication method thereof |
| US8997120B1 (en) * | 2012-03-30 | 2015-03-31 | Emc Corporation | Lightweight communication channel for control of device driver components |
| US8972973B2 (en) | 2012-06-27 | 2015-03-03 | Microsoft Technology Licensing, Llc | Firmware update discovery and distribution |
| US9235404B2 (en) | 2012-06-27 | 2016-01-12 | Microsoft Technology Licensing, Llc | Firmware update system |
| US9110761B2 (en) | 2012-06-27 | 2015-08-18 | Microsoft Technology Licensing, Llc | Resource data structures for firmware updates |
| DE112012006333T5 (de) * | 2012-07-26 | 2015-01-22 | Hewlett-Packard Development Company, L.P. | Periodischer Zugriff auf eine Hardwareressource |
| US10453019B1 (en) * | 2012-08-23 | 2019-10-22 | Jpmorgan Chase Bank, N.A. | Business activity resource modeling system and method |
| US9569184B2 (en) | 2012-09-05 | 2017-02-14 | Microsoft Technology Licensing, Llc | Generating native code from intermediate language code for an application |
| US8938796B2 (en) | 2012-09-20 | 2015-01-20 | Paul Case, SR. | Case secure computer architecture |
| US9811319B2 (en) * | 2013-01-04 | 2017-11-07 | Microsoft Technology Licensing, Llc | Software interface for a hardware device |
| US9323543B2 (en) * | 2013-01-04 | 2016-04-26 | Microsoft Technology Licensing, Llc | Capability based device driver framework |
| US9183092B1 (en) * | 2013-01-21 | 2015-11-10 | Amazon Technologies, Inc. | Avoidance of dependency issues in network-based service startup workflows |
| US9405605B1 (en) * | 2013-01-21 | 2016-08-02 | Amazon Technologies, Inc. | Correction of dependency issues in network-based service remedial workflows |
| US20140222670A1 (en) * | 2013-02-01 | 2014-08-07 | Barclays Bank Plc | Contactless payment application management |
| US8990839B2 (en) * | 2013-04-22 | 2015-03-24 | Microsoft Technology Licensing, Llc | Controlling runtime access to application programming interfaces |
| US9075985B2 (en) * | 2013-05-31 | 2015-07-07 | Microsoft Technology Licensing, Llc | Restricted transmogrifying driver platform |
| US9032423B2 (en) | 2013-06-21 | 2015-05-12 | Microsoft Technology Licensing, Llc | Dependency based configuration package activation |
| US9690564B2 (en) * | 2013-09-10 | 2017-06-27 | International Business Machines Corporation | Runtime detection of software configurations and upgrades |
| RU2568294C2 (ru) | 2013-12-27 | 2015-11-20 | Закрытое акционерное общество "Лаборатория Касперского" | Способ автоматической установки приложения без участия человека |
| KR102442181B1 (ko) * | 2014-07-10 | 2022-09-08 | 하만인터내셔날인더스트리스인코포레이티드 | 운영 체제 시동 가속화 |
| RU2592461C2 (ru) * | 2014-12-05 | 2016-07-20 | Федеральное государственное учреждение "Федеральный научный центр Научно-исследовательский институт системных исследований Российской академии наук"(ФГУ ФНЦ НИИСИ РАН) | Способ передачи данных между процессами |
| US9952853B2 (en) * | 2015-02-10 | 2018-04-24 | Mediatek Inc. | Methods for cross-mounting devices and apparatus utilizing the same |
| US10469473B2 (en) * | 2016-08-31 | 2019-11-05 | Hewlett Packard Enterprise Development Lp | Network authentication system extensions |
| US10802855B2 (en) * | 2016-09-16 | 2020-10-13 | Oracle International Corporation | Producing an internal representation of a type based on the type's source representation |
| US10353686B1 (en) * | 2016-12-28 | 2019-07-16 | Facebook, Inc. | Application installation system |
| RU2649293C1 (ru) * | 2017-04-28 | 2018-03-30 | Акционерное общество "Лаборатория Касперского" | Система и способ передачи перехваченных запросов от драйвера к драйверу в процессе инициализации драйверов |
| FR3069937B1 (fr) * | 2017-08-07 | 2021-10-01 | Prove & Run | Syteme embarque securise et procede de securisation |
| US10783058B2 (en) | 2019-02-14 | 2020-09-22 | Microsoft Technology Licensing, Llc | Extensible device driver verification |
| FR3110726A1 (fr) * | 2020-05-20 | 2021-11-26 | Orange | Procédé de sécurisation d’un appel système, procédé de mise en place d’une politique de sécurité associée et dispositifs mettant en œuvre ces procédés. |
| CN113741856B (zh) * | 2021-07-27 | 2024-09-06 | 深圳市广通远驰科技有限公司 | 驱动绑定方法、装置、电子设备及存储介质 |
| US12380204B2 (en) | 2021-08-19 | 2025-08-05 | Venn Technology Corporation | Indicator of security policy application for a portion of resources on a machine |
| US12518030B2 (en) | 2021-08-19 | 2026-01-06 | Venn Technology Corporation | Privacy border for partially supervised computer |
Family Cites Families (169)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5A (en) * | 1836-08-10 | Thomas Blanchard | Machine for mortising solid wooden shells of ships' tackle-blocks | |
| US4916637A (en) * | 1987-11-18 | 1990-04-10 | International Business Machines Corporation | Customized instruction generator |
| US4885684A (en) * | 1987-12-07 | 1989-12-05 | International Business Machines Corporation | Method for compiling a master task definition data set for defining the logical data flow of a distributed processing network |
| US5031089A (en) * | 1988-12-30 | 1991-07-09 | United States Of America As Represented By The Administrator, National Aeronautics And Space Administration | Dynamic resource allocation scheme for distributed heterogeneous computer systems |
| US5057996A (en) * | 1989-06-29 | 1991-10-15 | Digital Equipment Corporation | Waitable object creation system and method in an object based computer operating system |
| CA2025160A1 (en) * | 1989-09-28 | 1991-03-29 | John W. White | Portable and dynamic distributed applications architecture |
| US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
| JP2720904B2 (ja) * | 1990-08-31 | 1998-03-04 | 富士通株式会社 | 自己記述によるデータベース管理システムの構成方法および開発/変更方法 |
| EP0490636B1 (en) * | 1990-12-14 | 1998-09-09 | Sun Microsystems, Inc. | Method and apparatus for interprocess message switching |
| US5317568A (en) * | 1991-04-11 | 1994-05-31 | Galileo International Partnership | Method and apparatus for managing and facilitating communications in a distributed hetergeneous network |
| US5522075A (en) * | 1991-06-28 | 1996-05-28 | Digital Equipment Corporation | Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces |
| US5469571A (en) | 1991-07-15 | 1995-11-21 | Lynx Real-Time Systems, Inc. | Operating system architecture using multiple priority light weight kernel task based interrupt handling |
| US5590281A (en) * | 1991-10-28 | 1996-12-31 | The United States Of Americas As Represented By The Secretary Of The Navy | Asynchronous bidirectional application program processes interface for a distributed heterogeneous multiprocessor system |
| EP0543560B1 (en) * | 1991-11-19 | 1999-12-22 | Sun Microsystems, Inc. | Arbitrating multiprocessor accesses to shared resources |
| US5349682A (en) * | 1992-01-31 | 1994-09-20 | Parallel Pcs, Inc. | Dynamic fault-tolerant parallel processing system for performing an application function with increased efficiency using heterogeneous processors |
| US5361359A (en) * | 1992-08-31 | 1994-11-01 | Trusted Information Systems, Inc. | System and method for controlling the use of a computer |
| US5329619A (en) * | 1992-10-30 | 1994-07-12 | Software Ag | Cooperative processing interface and communication broker for heterogeneous computing environments |
| US5481717A (en) | 1993-04-12 | 1996-01-02 | Kabushiki Kaisha Toshiba | Logic program comparison method for verifying a computer program in relation to a system specification |
| US5455951A (en) * | 1993-07-19 | 1995-10-03 | Taligent, Inc. | Method and apparatus for running an object-oriented program on a host computer with a procedural operating system |
| GB9505939D0 (en) | 1995-03-23 | 1995-05-10 | Intelligence Quotient Int | A method of operating a computer system |
| JPH0756754A (ja) * | 1993-08-03 | 1995-03-03 | Internatl Business Mach Corp <Ibm> | マルチメディア・グループ資源割当て装置及び方法 |
| GB9320982D0 (en) | 1993-10-12 | 1993-12-01 | Ibm | A data processing system |
| DE69505717T2 (de) * | 1994-03-08 | 1999-06-24 | Digital Equipment Corp., Maynard, Mass. | Verfahren und Vorrichtung zur Feststellung und Durchführung von kreuzweisen Unterprogrammanrufen |
| US5590001A (en) * | 1994-03-15 | 1996-12-31 | Fujitsu Limited | Breather filter unit for magnetic disk drive |
| WO1995033239A1 (en) * | 1994-05-26 | 1995-12-07 | The Commonwealth Of Australia | Secure computer architecture |
| US6763454B2 (en) * | 1994-05-27 | 2004-07-13 | Microsoft Corp. | System for allocating resources in a computer system |
| US5551051A (en) * | 1994-09-20 | 1996-08-27 | Motorola, Inc. | Isolated multiprocessing system having tracking circuit for verifyng only that the processor is executing set of entry instructions upon initiation of the system controller program |
| US5794052A (en) * | 1995-02-27 | 1998-08-11 | Ast Research, Inc. | Method of software installation and setup |
| US6006328A (en) * | 1995-07-14 | 1999-12-21 | Christopher N. Drake | Computer software authentication, protection, and security system |
| US6009476A (en) * | 1995-11-21 | 1999-12-28 | Diamond Multimedia Systems, Inc. | Device driver architecture supporting emulation environment |
| US5752032A (en) * | 1995-11-21 | 1998-05-12 | Diamond Multimedia Systems, Inc. | Adaptive device driver using controller hardware sub-element identifier |
| US5754776A (en) | 1995-12-28 | 1998-05-19 | Intel Corporation | Re-prioritizing background data transfers in multipoint conferencing |
| US5951639A (en) * | 1996-02-14 | 1999-09-14 | Powertv, Inc. | Multicast downloading of software and data modules and their compatibility requirements |
| US5845129A (en) * | 1996-03-22 | 1998-12-01 | Philips Electronics North America Corporation | Protection domains in a single address space |
| US6292941B1 (en) * | 1996-04-30 | 2001-09-18 | Sun Microsystems, Inc. | Operating system installation |
| US5768532A (en) * | 1996-06-17 | 1998-06-16 | International Business Machines Corporation | Method and distributed database file system for implementing self-describing distributed file objects |
| US6003129A (en) * | 1996-08-19 | 1999-12-14 | Samsung Electronics Company, Ltd. | System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture |
| US5958050A (en) * | 1996-09-24 | 1999-09-28 | Electric Communities | Trusted delegation system |
| US5974572A (en) * | 1996-10-15 | 1999-10-26 | Mercury Interactive Corporation | Software system and methods for generating a load test using a server access log |
| US5923878A (en) * | 1996-11-13 | 1999-07-13 | Sun Microsystems, Inc. | System, method and apparatus of directly executing an architecture-independent binary program |
| US5878408A (en) * | 1996-12-06 | 1999-03-02 | International Business Machines Corporation | Data management system and process |
| US5931938A (en) * | 1996-12-12 | 1999-08-03 | Sun Microsystems, Inc. | Multiprocessor computer having configurable hardware system domains |
| US5991518A (en) * | 1997-01-28 | 1999-11-23 | Tandem Computers Incorporated | Method and apparatus for split-brain avoidance in a multi-processor system |
| US5991826A (en) * | 1997-03-10 | 1999-11-23 | Compaq Computer Coporation | System for configuring computer devices according to configuration patterns |
| US6144992A (en) * | 1997-05-09 | 2000-11-07 | Altiris, Inc. | Method and system for client/server and peer-to-peer disk imaging |
| US6658447B2 (en) | 1997-07-08 | 2003-12-02 | Intel Corporation | Priority based simultaneous multi-threading |
| US6038399A (en) * | 1997-07-22 | 2000-03-14 | Compaq Computer Corporation | Computer manufacturing architecture with two data-loading processes |
| US6247128B1 (en) * | 1997-07-22 | 2001-06-12 | Compaq Computer Corporation | Computer manufacturing with smart configuration methods |
| US6078744A (en) | 1997-08-01 | 2000-06-20 | Sun Microsystems | Method and apparatus for improving compiler performance during subsequent compilations of a source program |
| US5963743A (en) * | 1997-08-29 | 1999-10-05 | Dell Usa, L.P. | Database for facilitating software installation and testing for a build-to-order computer system |
| US6072953A (en) * | 1997-09-30 | 2000-06-06 | International Business Machines Corporation | Apparatus and method for dynamically modifying class files during loading for execution |
| US6542926B2 (en) | 1998-06-10 | 2003-04-01 | Compaq Information Technologies Group, L.P. | Software partitioned multi-processor system with flexible resource sharing levels |
| US6351850B1 (en) * | 1997-11-14 | 2002-02-26 | Frank Van Gilluwe | Computer operating system installation |
| US6182275B1 (en) * | 1998-01-26 | 2001-01-30 | Dell Usa, L.P. | Generation of a compatible order for a computer system |
| US6161150A (en) * | 1998-01-30 | 2000-12-12 | Object Technology Licensing Corporation | System for informing a computer user of a conflict encountered during resource allocation to expansion cards of different types having resource information in different format |
| IL123512A0 (en) | 1998-03-02 | 1999-03-12 | Security 7 Software Ltd | Method and agent for the protection against hostile resource use access |
| US6912692B1 (en) | 1998-04-13 | 2005-06-28 | Adobe Systems Incorporated | Copying a sequence of commands to a macro |
| US6092189A (en) * | 1998-04-30 | 2000-07-18 | Compaq Computer Corporation | Channel configuration program server architecture |
| US6161051A (en) * | 1998-05-08 | 2000-12-12 | Rockwell Technologies, Llc | System, method and article of manufacture for utilizing external models for enterprise wide control |
| US6080207A (en) * | 1998-06-04 | 2000-06-27 | Gateway 2000, Inc. | System and method of creating and delivering software |
| US6279111B1 (en) | 1998-06-12 | 2001-08-21 | Microsoft Corporation | Security model using restricted tokens |
| US6381742B2 (en) * | 1998-06-19 | 2002-04-30 | Microsoft Corporation | Software package management |
| US6434694B1 (en) * | 1998-06-29 | 2002-08-13 | Sun Microsystems, Inc. | Security for platform-independent device drivers |
| US6202147B1 (en) * | 1998-06-29 | 2001-03-13 | Sun Microsystems, Inc. | Platform-independent device drivers |
| US6629152B2 (en) | 1998-06-29 | 2003-09-30 | International Business Machines Corporation | Message passing using shared memory of a computer |
| US6321334B1 (en) | 1998-07-15 | 2001-11-20 | Microsoft Corporation | Administering permissions associated with a security zone in a computer system security model |
| DE19837871C2 (de) | 1998-08-20 | 2000-06-08 | Manfred Broy | Verfahren zum automatischen Erzeugen eines Programms |
| US6324622B1 (en) * | 1998-08-24 | 2001-11-27 | International Business Machines Corporation | 6XX bus with exclusive intervention |
| US6029174A (en) * | 1998-10-31 | 2000-02-22 | M/A/R/C Inc. | Apparatus and system for an adaptive data management architecture |
| US6066182A (en) * | 1998-11-05 | 2000-05-23 | Platinum Technology Ip, Inc. | Method and apparatus for operating system personalization during installation |
| US6438549B1 (en) | 1998-12-03 | 2002-08-20 | International Business Machines Corporation | Method for storing sparse hierarchical data in a relational database |
| US6842782B1 (en) * | 1998-12-08 | 2005-01-11 | Yodlee.Com, Inc. | Method and apparatus for tracking functional states of a web-site and reporting results to web developers |
| US6862735B1 (en) | 1999-02-11 | 2005-03-01 | Sun Microsystems, Inc. | Mechanism by which platform independent software may bind to and access platform dependent software |
| US6732220B2 (en) * | 1999-02-17 | 2004-05-04 | Elbrus International | Method for emulating hardware features of a foreign architecture in a host operating system environment |
| US6341371B1 (en) | 1999-02-23 | 2002-01-22 | International Business Machines Corporation | System and method for optimizing program execution in a computer system |
| US6442754B1 (en) * | 1999-03-29 | 2002-08-27 | International Business Machines Corporation | System, method, and program for checking dependencies of installed software components during installation or uninstallation of software |
| US6546546B1 (en) * | 1999-05-19 | 2003-04-08 | International Business Machines Corporation | Integrating operating systems and run-time systems |
| US6782541B1 (en) | 1999-05-28 | 2004-08-24 | Avaya Technology Corp. | System and method of exchanging information between software modules |
| AU1329601A (en) * | 1999-10-01 | 2001-05-10 | Infraworks Corporation | System and method for providing data security |
| US7167867B1 (en) * | 1999-10-05 | 2007-01-23 | Emc Corporation | Self-describing file system |
| US6715144B2 (en) | 1999-12-30 | 2004-03-30 | International Business Machines Corporation | Request based automation of software installation, customization and activation |
| US6748592B1 (en) * | 2000-02-14 | 2004-06-08 | Xoucin, Inc. | Method and apparatus for protectively operating a data/information processing device |
| US6567974B1 (en) * | 2000-02-25 | 2003-05-20 | Sun Microsystems, Inc. | Small memory footprint system and method for separating applications within a single virtual machine |
| US7047534B2 (en) * | 2000-03-17 | 2006-05-16 | Microsoft Corporation | Simplified device drivers for hardware devices of a computer system |
| US6871344B2 (en) * | 2000-04-24 | 2005-03-22 | Microsoft Corporation | Configurations for binding software assemblies to application programs |
| US7155713B1 (en) * | 2000-04-27 | 2006-12-26 | Microsoft Corporation | Componentized operating system |
| US7310801B2 (en) | 2000-04-27 | 2007-12-18 | Microsoft Corporation | Servicing a component-based software product throughout the software product lifecycle |
| US7124408B1 (en) | 2000-06-28 | 2006-10-17 | Microsoft Corporation | Binding by hash |
| US6868539B1 (en) * | 2000-06-28 | 2005-03-15 | Microsoft Corp. | System and method providing single application image |
| US6816905B1 (en) * | 2000-11-10 | 2004-11-09 | Galactic Computing Corporation Bvi/Bc | Method and system for providing dynamic hosted service management across disparate accounts/sites |
| US7089289B1 (en) | 2000-07-18 | 2006-08-08 | International Business Machines Corporation | Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices |
| US6973517B1 (en) | 2000-08-31 | 2005-12-06 | Hewlett-Packard Development Company, L.P. | Partition formation using microprocessors in a multiprocessor computer system |
| JP3664473B2 (ja) * | 2000-10-04 | 2005-06-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
| US7260845B2 (en) * | 2001-01-09 | 2007-08-21 | Gabriel Kedma | Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems |
| US7613930B2 (en) * | 2001-01-19 | 2009-11-03 | Trustware International Limited | Method for protecting computer programs and data from hostile code |
| JP3610915B2 (ja) | 2001-03-19 | 2005-01-19 | 株式会社デンソー | 処理実行装置及びプログラム |
| US7233998B2 (en) | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
| US20030031404A1 (en) * | 2001-08-07 | 2003-02-13 | Corvis Corporation | Optical transmission systems including optical components and optical filters and methods of use therein |
| GB2381336B (en) | 2001-08-21 | 2005-09-28 | Silicon Infusion Ltd | Object orientated heterogeneous multi-processor platform |
| IL145105A (en) * | 2001-08-23 | 2007-02-11 | Gregory Bondar | Method and system for providing a web service by a plurality of web domains through a single ip address |
| US6988261B2 (en) * | 2001-08-24 | 2006-01-17 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions in Java computing environments |
| CA2404602C (en) | 2001-09-21 | 2009-07-14 | Corel Corporation | Web services gateway |
| US6978018B2 (en) * | 2001-09-28 | 2005-12-20 | Intel Corporation | Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment |
| US7711570B2 (en) | 2001-10-21 | 2010-05-04 | Microsoft Corporation | Application abstraction with dialog purpose |
| EP1497724A2 (en) | 2001-10-30 | 2005-01-19 | Koninklijke Philips Electronics N.V. | Method for constructing distributed software components |
| US6745307B2 (en) * | 2001-10-31 | 2004-06-01 | Hewlett-Packard Development Company, L.P. | Method and system for privilege-level-access to memory within a computer |
| JP4170227B2 (ja) | 2002-01-24 | 2008-10-22 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 多重処理環境における処理の実行 |
| JP2003233521A (ja) | 2002-02-13 | 2003-08-22 | Hitachi Ltd | ファイル保護システム |
| US6977994B2 (en) * | 2002-03-27 | 2005-12-20 | Toshiba Tec Kabushiki Kaisha | Portable, high performance messaging system |
| US6721871B2 (en) | 2002-04-02 | 2004-04-13 | Nokia Corporation | Method and apparatus for synchronizing data stores with respect to changes in folders |
| US7136924B2 (en) | 2002-04-16 | 2006-11-14 | Dean Dauger | Method and system for parallel operation and control of legacy computer clusters |
| US7058768B2 (en) * | 2002-04-17 | 2006-06-06 | Microsoft Corporation | Memory isolation through address translation data edit control |
| US7856631B2 (en) * | 2002-05-08 | 2010-12-21 | Sap Aktiengesellschaft | Software delivery manager |
| US7222106B2 (en) * | 2002-05-21 | 2007-05-22 | International Business Machines Corporation | Mechanisms for handling software license agreements on multi-user system |
| US20030221012A1 (en) | 2002-05-22 | 2003-11-27 | International Business Machines Corporation | Resource manager system and method for access control to physical resources in an application hosting environment |
| US7062764B2 (en) * | 2002-06-17 | 2006-06-13 | Microsoft Corporation | System and method for manipulating offline software |
| US7103914B2 (en) * | 2002-06-17 | 2006-09-05 | Bae Systems Information Technology Llc | Trusted computer system |
| DE10235455B9 (de) * | 2002-08-02 | 2008-01-24 | Leo Elektronenmikroskopie Gmbh | Teilchenoptische Vorrichtung und Verfahren zum Betrieb derselben |
| US7832011B2 (en) | 2002-08-30 | 2010-11-09 | Symantec Corporation | Method and apparatus for detecting malicious code in an information handling system |
| US20040054793A1 (en) | 2002-09-16 | 2004-03-18 | Richard Coleman | System and method for high performance shared web hosting |
| EP1406166B1 (en) | 2002-10-01 | 2011-07-13 | Sap Ag | Validation of scripting languages with interfaces using annotations in XML |
| US6944754B2 (en) | 2002-10-02 | 2005-09-13 | Wisconsin Alumni Research Foundation | Method and apparatus for parallel execution of computer software using a distilled program |
| US20040078799A1 (en) | 2002-10-17 | 2004-04-22 | Maarten Koning | Interpartition communication system and method |
| JP3869347B2 (ja) * | 2002-10-18 | 2007-01-17 | 株式会社エヌ・ティ・ティ・ドコモ | 入出力制御システム、入出力制御方法、入出力制御プログラム |
| US7000092B2 (en) | 2002-12-12 | 2006-02-14 | Lsi Logic Corporation | Heterogeneous multi-processor reference design |
| EP1431873A1 (en) | 2002-12-19 | 2004-06-23 | Hewlett-Packard Company, A Delaware Corporation | Computer programming |
| CN1270229C (zh) * | 2002-12-31 | 2006-08-16 | 上海科泰世纪科技有限公司 | 基于动态内核实现跨地址空间创建构件对象的方法 |
| US7278030B1 (en) * | 2003-03-03 | 2007-10-02 | Vmware, Inc. | Virtualization system for computers having multiple protection mechanisms |
| US6963960B2 (en) * | 2003-03-25 | 2005-11-08 | Microsoft Corporation | System and method for kernel mode memory management having movable kernel objects |
| US8136155B2 (en) * | 2003-04-01 | 2012-03-13 | Check Point Software Technologies, Inc. | Security system with methodology for interprocess communication control |
| CN1312577C (zh) | 2003-05-07 | 2007-04-25 | 中兴通讯股份有限公司 | 一种实现通信过程零拷贝消息队列的方法 |
| GB2401445A (en) | 2003-05-08 | 2004-11-10 | Simon Freeman | Web site security model |
| US7389512B2 (en) * | 2003-05-09 | 2008-06-17 | Sun Microsystems, Inc. | Interprocess communication within operating system partitions |
| US20040230963A1 (en) * | 2003-05-12 | 2004-11-18 | Rothman Michael A. | Method for updating firmware in an operating system agnostic manner |
| JP4196333B2 (ja) | 2003-05-27 | 2008-12-17 | 日本電気株式会社 | 並列処理システム及び並列処理プログラム |
| US8020163B2 (en) | 2003-06-02 | 2011-09-13 | Interuniversitair Microelektronica Centrum (Imec) | Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof |
| US20050005261A1 (en) | 2003-07-02 | 2005-01-06 | Severin William B. | Component integration engine |
| US7533103B2 (en) | 2003-07-22 | 2009-05-12 | Sap Ag | Self-describing business objects |
| US7403956B2 (en) | 2003-08-29 | 2008-07-22 | Microsoft Corporation | Relational schema format |
| US20050060687A1 (en) | 2003-09-15 | 2005-03-17 | Ghazaleh David Abu | Method and apparatus for documenting and describing object oriented programming logic |
| US20050071828A1 (en) | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | System and method for compiling source code for multi-processor environments |
| US7516456B2 (en) * | 2003-09-25 | 2009-04-07 | International Business Machines Corporation | Asymmetric heterogeneous multi-threaded operating system |
| US7093091B2 (en) * | 2003-09-26 | 2006-08-15 | Atmel Corporation | Selectable block protection for non-volatile memory |
| US20050086667A1 (en) * | 2003-09-30 | 2005-04-21 | Feng Jin | Symmetric Scheduling for parallel execution |
| US20050091658A1 (en) * | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Operating system resource protection |
| US20050119902A1 (en) | 2003-11-28 | 2005-06-02 | Christiansen David L. | Security descriptor verifier |
| US7565653B2 (en) * | 2004-02-20 | 2009-07-21 | Sony Computer Entertainment Inc. | Methods and apparatus for processor task migration in a multi-processor system |
| US7574709B2 (en) * | 2004-04-30 | 2009-08-11 | Microsoft Corporation | VEX-virtual extension framework |
| US8190863B2 (en) | 2004-07-02 | 2012-05-29 | Intel Corporation | Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction |
| US7844945B2 (en) | 2004-08-04 | 2010-11-30 | Avocent Fremont Corp. | Software and firmware adaptation for unanticipated/changing hardware environments |
| US7240137B2 (en) * | 2004-08-26 | 2007-07-03 | International Business Machines Corporation | System and method for message delivery across a plurality of processors |
| EP1810160A4 (en) * | 2004-09-22 | 2008-05-21 | Xyratex Tech Ltd | INTERCONTROLLER INTERPROCESSOR COMMUNICATION IN XML / SOAP PROTOCOL |
| US7690033B2 (en) * | 2004-09-28 | 2010-03-30 | Exobox Technologies Corp. | Electronic computer system secured from unauthorized access to and manipulation of data |
| US7680758B2 (en) * | 2004-09-30 | 2010-03-16 | Citrix Systems, Inc. | Method and apparatus for isolating execution of software applications |
| US20060123401A1 (en) | 2004-12-02 | 2006-06-08 | International Business Machines Corporation | Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system |
| US8020141B2 (en) | 2004-12-06 | 2011-09-13 | Microsoft Corporation | Operating-system process construction |
| US7882317B2 (en) | 2004-12-06 | 2011-02-01 | Microsoft Corporation | Process isolation using protection domains |
| US7600232B2 (en) | 2004-12-07 | 2009-10-06 | Microsoft Corporation | Inter-process communications employing bi-directional message conduits |
| US7451435B2 (en) | 2004-12-07 | 2008-11-11 | Microsoft Corporation | Self-describing artifacts and application abstractions |
| US7454477B2 (en) | 2005-05-16 | 2008-11-18 | Microsoft Corporation | Zero-copy transfer of memory between address spaces |
| US8849968B2 (en) | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
| US20070033592A1 (en) | 2005-08-04 | 2007-02-08 | International Business Machines Corporation | Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors |
| US7500039B2 (en) | 2005-08-19 | 2009-03-03 | International Business Machines Corporation | Method for communicating with a processor event facility |
| US20070094495A1 (en) | 2005-10-26 | 2007-04-26 | Microsoft Corporation | Statically Verifiable Inter-Process-Communicative Isolated Processes |
| JP4784827B2 (ja) | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
| US8032898B2 (en) | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
| US8132169B2 (en) | 2006-07-21 | 2012-03-06 | International Business Machines Corporation | System and method for dynamically partitioning an application across multiple processing elements in a heterogeneous processing environment |
| US20080244507A1 (en) | 2007-03-30 | 2008-10-02 | Microsoft Corporation | Homogeneous Programming For Heterogeneous Multiprocessor Systems |
| US8789063B2 (en) | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
-
2006
- 2006-06-30 US US11/428,096 patent/US8074231B2/en not_active Expired - Fee Related
- 2006-10-16 BR BRPI0618027-2A patent/BRPI0618027A2/pt not_active IP Right Cessation
- 2006-10-16 KR KR1020087010060A patent/KR101331361B1/ko not_active Expired - Fee Related
- 2006-10-16 JP JP2008537770A patent/JP5009299B2/ja not_active Expired - Fee Related
- 2006-10-16 EP EP06817056A patent/EP1952251A4/en not_active Ceased
- 2006-10-16 RU RU2008116714/08A patent/RU2443012C2/ru not_active IP Right Cessation
- 2006-10-16 WO PCT/US2006/040545 patent/WO2007050364A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| WO2007050364A1 (en) | 2007-05-03 |
| KR101331361B1 (ko) | 2013-11-22 |
| JP2009514099A (ja) | 2009-04-02 |
| RU2443012C2 (ru) | 2012-02-20 |
| EP1952251A1 (en) | 2008-08-06 |
| EP1952251A4 (en) | 2009-01-14 |
| RU2008116714A (ru) | 2009-10-27 |
| KR20080070634A (ko) | 2008-07-30 |
| US20070094673A1 (en) | 2007-04-26 |
| JP5009299B2 (ja) | 2012-08-22 |
| US8074231B2 (en) | 2011-12-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| BRPI0618027A2 (pt) | configuração de extensões isoladas e acionadores de dispositivo | |
| US7784044B2 (en) | Patching of in-use functions on a running computer system | |
| Castro et al. | Fast byte-granularity software fault isolation | |
| CA2645708C (en) | Virtual machine configuration system | |
| Russinovich et al. | Windows internals, part 2 | |
| US8621279B1 (en) | System and method for generating emulation-based scenarios for Error Handling | |
| US6978018B2 (en) | Technique to support co-location and certification of executable content from a pre-boot space into an operating system runtime environment | |
| CN100426238C (zh) | Vex-虚拟扩展框架 | |
| JP2005322242A (ja) | 仮想環境からのハードウェアへの直接アクセスの提供 | |
| Zimmer et al. | Beyond BIOS: developing with the unified extensible firmware interface | |
| US7162626B2 (en) | Use of common language infrastructure for sharing drivers and executable content across execution environments | |
| US6834391B2 (en) | Method and apparatus for automated native code isolation | |
| Spear et al. | Solving the starting problem: device drivers as self-describing artifacts | |
| US20070288682A1 (en) | Computer system and method providing a memory buffer for use with native and platform-independent software code | |
| US9727390B1 (en) | Invoking a firmware function | |
| CN101297280B (zh) | 隔离扩展和设备驱动程序的配置 | |
| CN102216901B (zh) | 组件扩展方法和装置 | |
| WO2025113399A1 (zh) | 用于管理虚拟机的方法、装置、设备和存储介质 | |
| Okafor et al. | Eliminating the operating system via the bare machine computing paradigm | |
| Kempf et al. | Cross-address space dynamic linking | |
| RU2521265C2 (ru) | Система и способ автоматической обработки системных ошибок программного обеспечения | |
| US20260010628A1 (en) | Secure and Dynamic Independent Diagnostics Module Injections to Support an Independent Diagnostics Module During Preboot Diagnostics | |
| Erlingsson et al. | Ad hoc extensibility and access control | |
| Eisenbach et al. | Reuse and Abuse. | |
| MX2008005403A (en) | Configuration of isolated extensions and device drivers |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| B08F | Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette] |
Free format text: REFERENTE A 7A ANUIDADE. |
|
| B08K | Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette] |
Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2256 DE 01/04/2014. |