PT590645E - Processo e sistema para reduzir os pedidos de atribuicao de memoria - Google Patents
Processo e sistema para reduzir os pedidos de atribuicao de memoria Download PDFInfo
- Publication number
- PT590645E PT590645E PT93115741T PT93115741T PT590645E PT 590645 E PT590645 E PT 590645E PT 93115741 T PT93115741 T PT 93115741T PT 93115741 T PT93115741 T PT 93115741T PT 590645 E PT590645 E PT 590645E
- Authority
- PT
- Portugal
- Prior art keywords
- buffer
- memory
- component
- size
- device controller
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
- Hardware Redundancy (AREA)
- Saccharide Compounds (AREA)
Description
SROoáS
/7
DESCRIÇÃO
"PROCESSO E SISTEMA PARA REDUZIR OS PEDIDOS DE ATRIBUIÇÃO DE MEMÓRIA"
Campo técnico A presente invenção refere-se no geral ao campo da arquitectura de computadores, e mais particularmente a um processo e sistema para reduzir os pedidos de atribuição de memória numa arquitectura em camadas.
Motivo da invenção
Um sistema informático pode executar várias rotinas de software. Estas rotinas de software podem exigir a atribuição e retirada da atribuição dinâmica da memória de uma quantidade particular de memória de computador disponível para utilizar como espaço de trabalho. Na atribuição dinâmica da memória, a memória é atribuída conforme necessário durante a execução das rotinas de software. Num sistema informático típico, quando uma rotina de software inicia a sua execução, solicita a atribuição dinâmica da memória do computador. Assim que a rotina do software termina a sua execução, ela retira a atribuição da memória do computador atribuída. A memória do computador sem atribuição encontra-se então disponível para nova atribuição. Tipicamente, uma tal atribuição e retirada de atribuição ocorre todas as vezes que uma rotina de software é invocada. Deste modo, se tiverem que ser invocadas várias rotinas de software, é necessário um grande número de atribuições e retirada de atribuições correspondentes de memória do computador. 1
Convencionalmente, as atribuições e retirada de atribuições de memória do computador são executadas por um sistema operativo dentro do sistema informático a pedido de uma rotina de software. Estas atribuições e retirada de atribuições exigem que o sistema operativo determine os troços disponíveis de memória do computador e atribua estes troços disponíveis à rotina de software que os solicita. Isto exige, por exemplo, que os apontadores para estes troços disponíveis sejam actualizados durante todas atribuições e retirada de atribuições de memória do computador dentro do sistema informático. Deste modo, cada atribuição e retirada de atribuição da memória do computador, é demorada e diminui a eficiência do sistema informático. 0 documento "Fast Allocation and Deallocation of memory based on object lifetimes", Software Practice & Experience, Chichesterr UK, January 1990, vol 20, nr. 1, páginas 5 a 12, de D. R. Hanson, descreve um algoritmo simples de gestão dinâmica de armazenamento que é eficiente quando existem poucos tempos de vida de objecto. Em termos de instruções executadas por byte atribuído, o algoritmo custa metade do ajuste rápido e menos de duas vezes o custo de atribuição em pilha. O espaço para objectos com o mesmo tempo de vida é atribuído de uma lista de arenas grandes, e a toda a lista é retirada a atribuição de uma só vez. Encontra-se incluída uma implementação em ANSI C. É objectivo da presente invenção proporcionar um processo e sistema informático para atribuir dinamicamente uma memória tampão colectiva da memória do computador, a várias rotinas de software.
Este objectivo é alcançado pelos processos de acordo com as reivindicações 1, 6 e 11. As realizações preferidas da invenção são o assunto das reivindicações secundárias. 2
Um aspecto da presente invenção é o de proporcionar um processo e sistema informático para manter, para cada rotina de software, um deslocamento que indica a localização do espaço de trabalho dentro da memória tampão colectiva proporcionada para essa rotina de software.
Um outro aspecto da invenção é o de proporcionar um processo e sistema informático para atribuir uma memória tampão colectiva para controladores de dispositivos a vários controladores de dispositivos componentes antes da execução de qualquer dos controladores de dispositivos componentes e aceder aos troços correspondentes da memória tampão colectiva dos controladores de dispositivos como espaço de trabalho para cada controlador de dispositivos componentes invocado para processar uma operação de entrada/saida (1/0) .
Estes e outros aspectos, que se tornarão visíveis conforme invenção é completamente descrita a seguir, são obtidos por um processo e sistema informático para atribuição de memória para várias rotinas de software, descritas como se segue. Antes da execução das rotinas de software, é atribuída uma memória tampão colectiva. A cada rotina de software é atribuído um deslocamento dentro da memória tampão colectiva. Cada rotina de software pode então utilizar o troço da memória tampão colectiva a partir do seu deslocamento conforme o seu espaço de trabalho atribuído dinamicamente. Antes de atribuir a memória tampão colectiva, é primeiro determinado um tamanho da memória tampão colectiva que seja suficiente para satisfazer as exigências da memória dinâmica total das rotinas de software. Ao determinar o tamanho da memória tampão colectiva, o tamanho da memória tampão da rotina de software exigida por cada rotina de software é acumulada dentro do tamanho da memória tampão colectiva. Conforme cada exigência de memória tampão da rotina de software é acumulada, o total é armazenado como o deslocamento para a próxima rotina de software. Quando o último tamanho da memória tampão da rotina de software Γλ estiver acumulado, o total indica o tamanho da memória tampão colectiva. A memória tampão colectiva do tamanho da memória tampão colectiva é depois atribuída. Quando as rotinas de software estiverem a ser executadas, cada rotina de software utiliza um troço da memória tampão colectiva referenciada pelo seu deslocamento atribuído. Quando todas rotinas software terminarem a execução, à memória tampão colectiva pode então ser retirada a atribuição.
Numa realização preferida da invenção, a memória é atribuída ao sistema de software tendo uma arquitectura em camadas incluindo uma aplicação e um controlador de dispositivo compreendendo vários controladores de dispositivos componentes. Quando executado, cada controlador de dispositivo componente, executa funções necessárias para processar um pedido de entrada/saída (1/0) da aplicação. É atribuída uma memória tampão de controlador de dispositivo tendo um tamanho baseado num total da exigência do espaço de trabalho de todos os controladores de dispositivos componentes. Durante um pedido de entrada/saída (1/0) pela aplicação, é acedida uma tabela de chamada que contém entradas de tabela de chamada para cada controlador de dispositivo componente. A entrada de tabela de chamada contém um apontador para o controlador de dispositivo componente correspondente e um deslocamento dentro da memória tampão do controlador de dispositivo. Cada controlador de dispositivo componente processa o pedido de entrada/saída (1/0) utilizando um troço da memória tampão do controlador de dispositivo que começa neste deslocamento como seu espaço de trabalho.
Breve descrição dos desenhos
Figura 1 diagrama em bloco apresentando um computador com um sistema de software tendo uma arquitectura por camadas. 4
Figura 2 diagrama em bloco ilustrando amostras de estruturas de dados da presente invenção.
Figura 3 fluxograma de uma rotina para determinar o tamanho da memória tampão e deslocamento da memória tampão dos controladores de dispositivos componentes.
Figura 4 fluxograma de uma rotina para atribuir uma memória para executar uma operação de entrada/saida (1/0).
Figura 5 fluxograma de uma rotina para processar um pedido de entrada/saida (1/0).
Figura 6 fluxograma representando o processamento executado por um controlador de dispositivo.
Descrição pormenorizada da invenção A figura 1 é um diagrama em bloco apresentando um computador com um sistema de software tendo uma arquitectura em camadas. 0 computador 101 inclui dispositivos entrada/saida (I/O), memória, e um processador (não apresentado). Dentro da memória é armazenada um sistema de arquitectura em camada 102 o qual é executado pelo processador. O sistema de arquitectura em camadas compreende uma aplicação 103, um controlador de sistema de ficheiros 104, supervisor entrada/saida (1/0) (IOS) 105, e controlador de dispositivo 109. 0 controlador de dispositivo 109 compreende controladores de dispositivos componentes 106, 107 e 108. Os controladores de dispositivo componentes 106, 107 e 108 executam cada um, uma função especifica relacionada, para aceder a um dispositivo correspondente. Os controladores de componentes são configurados para dentro do controlador de dispositivo durante o arranque do computador. 5
0 sistema de arquitectura em camadas é apresentado na figura 1 enquanto os seus componentes 103 a 108 são referido conceptualmente como camadas. Os programas de computador nas camadas mais elevadas solicitam serviços dos programas de computadores nas camadas mais baixas. Por exemplo, a aplicação 103 solicita serviços do controlador de sistema de ficheiros 104 enviando-lhe pedidos de sistema de ficheiros, tais como pedidos de leitura ou escrita de ficheiros. O controlador de sistema de ficheiros 104 recebe estes pedidos de sistema de ficheiros e executa funções tais como convertendo um pedido de leitura de ficheiro (para ler um local particular no ficheiro) para um pedido para ler uma localização correspondente relativamente ao endereço de disco actual no qual o ficheiro se encontra armazenado. O controlador de sistema de ficheiros passa então o pedido para ler dados, para o supervisor entrada/saida (I/O) 105. 0 supervisor entrada/saida (1/0) passa o pedido de leitura para o controlador de dispositivo 109 invocando o controlador de dispositivo componente 106. Cada controlador de dispositivo componente quando realizado, executa uma função particular referente à chamada de dados do disco. Por exemplo, o controlador de dispositivo componente 106 pode implementar o cache de disco, o controlador de dispositivo componente 107 pode cifrar/decifrar dados e o controlador de dispositivo componente 108 pode aceder directamente ao disco para leitura e escrita de dados. Deste modo, durante um pedido para ler dados que foram armazenados na memória tampão do cache, o controlador de dispositivo 106 chama os dados da sua memória tampão de cache para satisfazer este pedido. Se, contudo, os dados não estiverem armazenados dentro da memória tampão do cache, então o pedido não pode ser satisfeito pelo controlador de dispositivo componente 106, e o controlador de dispositivo componente 106 passa o pedido para o controlador de dispositivo componente 107. O controlador de dispositivo componente 107 pode, por exemplo, cifrar e decifrar dados transferidos para e do disco. Dado que o pedido de sistema de 6
ficheiro é um pedido de leitura, o controlador de dispositivo componente 107 não pode satisfazer o pedido, mas passa o pedido para o controlador de dispositivo componentes 108. 0 controlador· de dispositivo componente 108 actualmente chama os dados do disco e devolve os dados para o controlador de dispositivo componente 107. O controlador de dispositivo componente 107 então cifra os dados e passa os dados para o controlador de dispositivo componente 106. 0 controlador de dispositivo componente 106 passa os dados para o supervisor entrada/saida (1/0) 105 após armazenar os dados na sua memória tampão de cache. O supervisor entrada/saida (I/O) 105 passa os dados para o controlador do sistema de ficheiros 104, e finalmente o controlador de sistema de ficheiros 104 passa os dados para a aplicação 103.
Existem várias vantagens na arquitectura de software por camadas. Por exemplo, cada uma das camadas pode ser desenvolvida e testada independentemente uma da outra. Um produtor de software pode desenvolver um controlador de dispositivo componente 106, que executa o cache de disco. Outro produtor de software pode desenvolver o controlador de dispositivo componente 107 para cifrar e decifrar dados. Desde que as interfaces entre as camadas estejam bem definidas, os vários controladores de dispositivos componentes podem ser apropriadamente configurados numa arquitectura de camada tal como descrita acima. Uma tal arquitectura de camadas encontra-se descrita na patente US 07/954,920 com o titulo "Method and System for Configuring and Executing Device Drivers", a qual é aqui incorporada como referência.
Uma desvantagem da arquitectura em camadas ocorre, contudo, quando a cada camada é pedida para ser atribuída separadamente a memória de espaço de trabalho necessária para executar a sua função. Por exemplo, quando o controlador de dispositivo componente 106 é invocado para executar um cache de disco, irá pedir ao sistema operativo para proporcionar 7
uma atribuição de memória de espaço de trabalho para si para executar o cache de disco. Antes de voltar atrás, o controlador de dispositivo componente 106 iria pedir a retirada da atribuição da sua memória de trabalho. De modo semelhante, os controladores de dispositivo componentes 107 e 108 iriam também pedir atribuições e retirada de atribuições da memória de espaço de trabalho. Esta atribuição e retirada de atribuição de espaço de trabalho para cada controlador de componente pode resultar numa sobrecarga inaceitável no sistema informático. A presente invenção reduz esta carga atribuindo, antes de executar rotinas de software (por exemplo controladores de dispositivo componente), uma quantidade de memória necessária para satisfazer as exigências de todas as rotinas de software. É criada uma memória tampão colectiva, tendo um tamanho de memória tampão colectiva suficiente para satisfazer um total de todas estas exigências de memória. Os deslocamentos são armazenados para cada rotina de software, calculados das exigências de memória individuais desta rotina de software, para localizar uma memória tampão de rotina de software correspondente dentro da memória tampão colectiva que contém o espaço de trabalho para esta rotina de software.
Numa realização preferida da invenção, do sistema operativo atribui, antes de invocar os controladores de dispositivo componente, memória suficiente para satisfazer as exigências da memória de todos os controladores de dispositivo componentes. A exigência da memória de cada um destes controladores de dispositivo componente é determinada e acumulada para calcular o tamanho de uma memória tampão de controlador de dispositivo necessária para conter espaço de trabalho para todos os controladores de dispositivo componentes. Estas exigências de memória que são também utilizadas para determinar os deslocamentos que são utilizados por cada controlador de dispositivo componente 8
para referenciar o seu próprio espaço de trabalho dentro da memória tampão colectiva. A figura 2 é um diagrama em bloco ilustrando amostras de estruturas de dados da presente invenção. 0 supervisor de entrada/saida (1/0) mantém em memória um bloco de controlo de dispositivo 210 para cada dispositivo periférico. O bloco de controlo de dispositivo 210 contém o endereço de uma tabela de chamada (CDT) 201. A tabela de chamada contém uma entrada CDT 202, 203, 204 para cada controlador de dispositivo componente do controlador de dispositivo. Cada entrada CDT contém o endereço do controlador de dispositivo componente. Durante a execução de um controlador de dispositivo para aceder a um dispositivo correspondente, o bloco de controlo de dispositivo é acedido para determinar o tamanho das memórias tampão necessárias pelo controlador de dispositivo durante a execução, e para localizar a tabela de chamada. A tabela de chamada contém a localização de cada controlador de dispositivo componente dentro do controlador de dispositivo e a localização de cada memória tampão de controlador de dispositivo componente tendo espaço de trabalho para o controlador de dispositivo componente correspondente. A tabela de chamada é acedida para invocar cada controlador de dispositivo componente dentro da mesma. Cada controlador de dispositivo componente executa uma função do controlador de dispositivo acedendo ao dispositivo correspondente, utilizando a memória tampão correspondente do controlador de dispositivo componente. Dado que a execução de um controlador de dispositivo ocorre após os controladores de dispositivo componente terem sido configurados em camadas dentro do controlador de dispositivo, a tabela de chamada representa o controlador de dispositivo componente a ser chamado durante a execução do controlador de dispositivo. O controlador do sistema de ficheiros identifica uma memória tampão de pacote de entrada/saida (IOP) 220 quando passa um pedido para o supervisor de entrada/saida (IOS) para chamar 9
ou armazenar dados. A memória tampão IOP 220 contém uma memória tampão IOS 221, uma memória tampão de pedido de entrada/saida (IOR) 222, e memórias tampão de controladores de dispositivos de componente (CDD) 223, 224 e 225. O IOS utiliza a memória tampão IOS 221 para armazenar a sua informação de estado interno. O IOS armazena uma descrição do pedido de entrada/saida (I/O), recebido de uma aplicação, na memória tampão IOR 222. Cada controlador de dispositivo componente acede à memória tampão IOR para determinar o pedido. O tamanho da memória tampão IOR é determinado pelo IOS. Cada uma destas memórias tampão de controladores de dispositivo componente é utilizada para proporcionar espaço de trabalho ao controlador de dispositivo componente correspondente. As memórias tampão de controlador de dispositivo componente são colectivamente referidas como memória tampão de controlador de dispositivo (DD) 226. A figura 3 é um fluxograma de uma rotina para determinar as exigências de tamanho de memória tampão e deslocamentos da memória tampão dos controladores de dispositivo componente. Esta rotina, denominada IOS_determine_CCD_buffersizes, é invocada pelo IOS durante a execução de um controlador de dispositivo para aceder a um dispositivo correspondente. Para cada controlador de dispositivo componente listado na tabela de chamada, a rotina determina as exigências de tamanho de memória tampão e insere na tabela de chamada um deslocamento do inicio da memória tampão 226 de controlador de dispositivo. O deslocamento indica o inicio do espaço de trabalho da memória tampão do controlador de dispositivo componente para o controlador de dispositivo componente correspondente. No passo 301, a rotina coloca uma variável, denominada deslocamento, a zero. A variável deslocamento é utilizada para pesquisar o deslocamento de uma memória tampão de controlador de dispositivo componente do início da memória tampão do controlador de dispositivo 226. Nos passos 302 a 306, a rotina executa um anel, determinando o tamanho de cada memória tampão de controlador de dispositivo componente e 10 9»
actualizando a tabela de chamada de acordo com mesmo. No passo 302, a rotina selecciona o próximo controlador de dispositivo componente, referindo-se ao controlador de dispositivo componente na tabela de chamada através do bloco de controlo de dispositivo, iniciando com o controlador de dispositivo componente que se encontra "mais abaixo". O controlador de dispositivo componente que se encontra "mais abaixo" é, no exemplo da figura 1, o controlador de dispositivo componente 108. No passo 303, a rotina armazena o deslocamento de variável na entrada CDT para o controlador de dispositivo componente seleccionado.
No passo 304, a rotina determina o tamanho da memória tampão do controlador de dispositivo componente seleccionado. A exigência de tamanho da memória tampão do controlador de dispositivo componente seleccionado pode ser determinado solicitando a exigência de memória tampão do controlador de dispositivo componente seleccionado cada vez que esta rotina é invocada. Deste modo, cada controlador de dispositivo componente pode determinar dinamicamente as suas necessidades de memória. Alternativamente, a exigência de tamanho de memória tampão pode ser determinada uma vez no arranque do sistema.
No passo 305, a rotina aumenta a variável deslocamento pela exigência do tamanho da memória tampão determinada do controlador de dispositivo componente seleccionado. No passo 306, se todos os controladores de dispositivo componente já tiverem sido seleccionados, a rotina continua no passo 307. De outro modo, a rotina corre em anel para o passo 302 para seleccionar o próximo controlador de dispositivo componente. No passo 307, a rotina coloca o tamanho total da memória tampão do controlador de dispositivo, igual à variável deslocamento, por exemplo a parte de baixo da memória tampão, e a rotina volta para atrás. Ao aumentar a variável do deslocamento pela exigência do tamanho da memória tampão relevante, durante cada execução do anel, o deslocamento 11 /7 f\ \ r, __r(- indica a localização da próxima memória tampão de controlador de dispositivo componente na memória tampão IOP e, durante a saída do anel, o tamanho total da memória tampão do controlador de dispositivo.
As figuras 4 a 6 ilustram o processamento de um pedido de entrada/saída (1/0) por um controlador de dispositivo utilizando a memória tampão colectiva para proporcionar espaço de trabalho para cada controlador de dispositivo componente dentro do controlador de dispositivo. A figura 4 apresenta a rotina FSD_Request (pedido de FSD) executada pelo controlador de sistema de ficheiros durante a recepção de um pedido para executar uma operação de entrada/saída (1/0). Esta rotina determina o tamanho das memórias tampão necessárias para o controlador de dispositivo apropriado para processar o pedido, atribui memória para estas memórias tampão, chama a rotina IOS_Request apresentada na figura 5 para processar o pedido, e depois retira a atribuição de memória. A rotina IOS_Request na figura 5 selecciona o primeiro controlador de dispositivo componente no controlador de dispositivo, chamando a rotina de controlador de dispositivo componente apresentada na figura 6 para invocar os controladores de dispositivo componente. A figura 6 apresenta um processo executado por um controlado de dispositivo componente, o qual inclui o processamento do pedido de entrada/saída (1/0) executando uma função específica de controlador de dispositivo componente tal como decifragem, etc., e invocando, onde for apropriado, um controlador de dispositivo componente próximo para executar outra função específica de controlador de dispositivo componente. Cada controlador de dispositivo componente calcula um endereço de uma memória tampão de controlador de dispositivo de comprimento correspondente, num deslocamento correspondente, e utiliza a memória tampão de controlador de dispositivo componente correspondente com o espaço de trabalho enquanto executa a sua função específica da controlador de.dispositivo componente. 12
A figura 4 é um fluxograma de uma rotina para atribuir memória para executar uma operação de entrada/saida (1/0). Esta rotina, denominado FSD_Request, é parte de um controlador de sistema de ficheiros (FSD) e é invocado durante um pedido por uma aplicação para executar uma operação de entrada/saida (1/0). A rotina recebe pedidos de sistema de ficheiros de uma aplicação e processa os pedidos. A rotina atribui uma memória tampão IOP, inicializa os dados da memória tampão IOR, invoca o IOS passando um apontador para a memória tampão IOP, e retira a atribuição à memória tampão IOP.
No passo 401, a rotina determina também o tamanho da memória tampão do controlador de dispositivo, a memória tampão IOS, e a memória tampão IOR. Numa realização preferida da invenção, o FSD determina estes tamanhos, pedindo os dados do IOS. 0 IOS determina o tamanho da memória tampão, a qual varia baseada num número e tipo de controladores de dispositivo componente. Isto é de preferência feito pelo IOS invocando a rotina IOS_determine_CDD_buffersizes. No passo 402, a rotina determina o tamanho da memória tampão IOP. O tamanho da memória tampão IOP é o tamanho total da memória tampão do controlador de dispositivo mais o tamanho da memória tampão IOS, mais o tamanho da memória tampão IOR. No passo 403, a rotina atribui uma memória tampão IOP do tamanho da memória tampão IOP determinada. Esta atribuição é essencialmente a identificação do espaço de memória adequado para acomodar as exigências de memória tampão. A atribuição de memória de memórias tampão é bem conhecida do técnico. No passo 404, a rotina inicializa a memória tampão IOR. Esta inicialização armazena na memória tampão IOR informação descrevendo o pedido entrada/saida (I/O), o qual pode envolver, por exemplo, a tradução de um sistema de ficheiros lógicos para endereço de disco físico. No passo 405, a rotina invoca a rotina IOS_Request passando-a para a memória tampão IOP. No 13 passo 406, a rotina retira a atribuição à memória tampão IOP. A rotina volta então atrás. A figura 5 é um fluxograma de uma rotina para processar um pedido entrada/saida (1/0). A rotina, denominada IOS_Request, é invocada pela rotina FSD_Request. Esta rotina invoca o controlador de dispositivo componente identificado na primeira entrada CDT, passando um apontador para a memória tampão IOP. No passo 502, a rotina armazena na memória tampão IOS o endereço da primeira entrada CDT na tabela de chamada. No passo 503, a rotina invoca o controlador de dispositivo componente da entrada CDT seleccionada, passando a memória tampão IOP, o tamanho da memória tampão IOS, e o tamanho da memória tampão IOR. A rotina volta então atrás.
Figura 6 é um fluxograma representando o processamento executado por uma rotina de controlo de dispositivo componente. A rotina do controlador de dispositivo componente "mais acima" é invocada pela rotina FSD_Request para processar um pedido entrada/saida (1/0) para aceder a um dispositivo correspondente. 0 controlador de dispositivo componente mais acima invoca então o próximo controlador de dispositivo componente mais baixo, o qual invoca o próximo controlador de dispositivo componente mais baixo. No passo 601, a rotina selecciona a entrada CDT cujo endereço se encontra na memória tampão IOS. Este endereço corresponde à entrada para o controlador de dispositivo componente em si, e indica o endereço de um primeiro controlador de dispositivo componente no controlador de dispositivo. No passo 602, a rotina chama da entrada CDT seleccionada o deslocamento da memória tampão do controlador de dispositivo componente. No passo 603, a rotina determina o endereço da memória tampão para este controlador de dispositivo componente, adicionando o deslocamento ao endereço base. O endereço base é o endereço da memória tampão IOP mais o tamanho da memória tampão IOS, mais o tamanho da memória tampão IOR. No passo 604, a rotina processa o pedido de entrada/saida (I/O) executando uma 14 função específica de controlador de dispositivo componente. Esta função pode envolver, por exemplo, chamar dados da memória tampão do cache de disco ou cifrar dados.
No passo 605, se a entrada CDT seleccionada for a última entrada no CDT, então a rotina continua no passo 609. De outro modo, a rotina continua no passo 606. No passo 606, a rotina selecciona a próxima entrada CDT. No passo 607, a rotina armazena o endereço da entrada CDT seleccionada na memória tampão IOS. No passo 608, a rotina invoca o controlador de dispositivo componente da entrada CDT seleccionada, passando um apontador para a memória tampão IOP, o tamanho da memória tampão IOS, e o tamanho da memória tampão IOR. Cada controlador de dispositivo componente executa as suas tarefas tal como descrito na figura 6, excepto que para cada controlador de dispositivo componente, é executada uma função específica de controlador de dispositivo componente. No passo 609, a rotina executa o processamento específico do controlador do dispositivo componente do pedido de entrada/saída (I/O) para o controlador de dispositivo componente final no controlador de dispositivo. Este processamento pode envolver, por exemplo, o armazenamento de dados na memória tampão do cache de disco ou decifrar dados. A rotina volta então atrás.
Embora a presente invenção tenha sido descrita em termos de uma realização preferida, não se pretende que a invenção seja limitada a esta realização, e modificações dentro do âmbito da invenção serão visíveis para os técnicos. O alcance da presente invenção encontra-se definido pelas reivindicações seguintes.
Lisboa, 18 de Setembro de 2000 /agenue oficial da propriedade industrial 15
Claims (13)
- REIVINDICAÇÕES 1. Processo, num sistema informático (101), de atribuição de memória para várias rotinas de software (103 a 108), tendo cada rotina de software (103 a 108) exigências de memória, compreendendo o processo os seguintes passos: determinar (401, 402) um tamanho de memória tampão colectiva (212 a 214) suficiente para satisfazer um total de exigências de memória das rotinas de software (103 a 108) ; atribuir (403) memória para uma memória tampão colectiva (220) do tamanho da memória tampão colectiva (212 a 214) ; atribuir deslocamentos de uma memória tampão de uma rotina de software a cada uma das rotinas de software (103 a 108), deslocamentos da memória tampão da rotina de software para localizar dentro da memória tampão colectiva (220) um espaço de trabalho correspondendo a cada uma das rotinas software (103 a 108); e executar as rotinas de software (103 a 108), utilizando a memória atribuída à memória tampão colectiva (220) para satisfazer as exigências de memória das rotinas software (103 a 108).
- 2. Processo de acordo com a reivindicação 1, em que o passo de execução das rotinas de software (103 a 108) executa cada rotina de software (103 a 108) utilizando como espaço de trabalho, um troço (221 a 225) da memória tampão colectiva (220) identificado pela memória tampão da rotina de software correspondente em deslocamento, dentro da memória tampão colectiva (220). 1
- 3. Processo de acordo com as reivindicações 1 ou 2 em que o passo para atribuição de deslocamentos à memória tampão de rotina de software para cada uma das rotinas de software (103 a 108) inclui acumular (402) as exigências de memória de cada uma das rotinas de software (103 a 108) em um total das exigências de memória das rotinas de software (103 a 108).
- 4. Processo de acordo com qualquer das reivindicações 1 a 3 em que o passo de determinar (401, 402) o tamanho da memória tampão colectiva (212 a 214) inclui acumular as exigências de memória de cada uma das rotinas de software (103 a 108) para obter o tamanho da memória tampão colectiva (212 a 214).
- 5. Processo de acordo com qualquer das reivindicações 1 a 4, compreendendo adicionalmente o passo de retirar a atribuição (406) de memória para a memória tampão colectiva (220) após executar as rotinas de software (103 a 108).
- 6. Processo num sistema informático (101) para atribuir memória para controladores (drivers) de dispositivos componentes (106 a 108), tendo cada controlador de dispositivo componente (106 a 108) exigências de memória, compreendendo o processo os seguintes passos: organizar os controladores de dispositivo componentes (106 a 108) em camadas compondo um controlador de dispositivo (109): determinar (301 a 307) um tamanho de memória tampão de controlador de dispositivo (212) suficiente para satisfazer um total das exigências de memória dos controladores de dispositivos componentes (106 a 108); 2atribuir memória a uma memória tampão (226) de controlador de dispositivo do tamanho da memória tampão (212) do controlador de dispositivo; atribuir, em relação à memória tampão (226) do controlador de dispositivo, deslocamentos (202 a 204) da memória tampão de controlador de dispositivo, cada um para localizar espaço de trabalho dentro da memória tampão (226) de controlador de dispositivo correspondendo a cada um dos controladores de dispositivos componentes (106 a 108); e executar (601 a 609) os controladores de dispositivos componentes (106 a 108), utilizando a memória atribuída à memória tampão do controlador de dispositivo (226) para satisfazer as exigências de memória dos controladores de dispositivos componentes (106 a 108).
- 7. Processo de acordo com a reivindicação 6 em que o passo de executar (601 a 609) os controladores de dispositivos componentes (106 a 108) executa cada um dos controladores de dispositivos componentes (106 a 108) utilizando como o espaço de trabalho um troço (223 a 225) da memória tampão do controlador de dispositivo (226) identificado por um deslocamento correspondente (202 a 204) da memória tampão do controlador de dispositivo.
- 8. Processo de acordo com as reivindicações 6 ou 7 em que o passo de atribuição dos deslocamentos (202 a 204) das memórias tampão de controladores de dispositivos para cada um dos controladores de dispositivo componentes (106 a 108) inclui acumular (301 a 307) as exigências de memória de cada um dos controladores de dispositivos componentes (106 a 108) e atribuir as exigências de memória acumuladas como deslocamentos de memória tampão de controladores de dispositivos (202 a 204) para cada um 3dos controladores de dispositivos componentes (106 a 108) .
- 9. Processo que acordo com qualquer das reivindicações 6 a 8 em que o passo de determinar (301 a 307) o tamanho da memória tampão do controlador de dispositivo (212) inclui acumular (301, 305, 306, 307) as exigências de memória de cada controlador de dispositivo componente (106 a 108) para obter o tamanho da memória tampão de controlador de dispositivo (212).
- 10. Processo de acordo com qualquer das reivindicações 6 a 9 em que o passo para determinar o tamanho da memória tampão (301 a 307) do controlador de dispositivo (212) determina o tamanho da memória tampão do controlador de dispositivo (212) durante a configuração dos controladores de dispositivo componentes (106 a 108).
- 11. Processo num sistema informático (101) de atribuir memória necessária para processar (502, 503) um pedido de entrada/saida (1/0) de uma aplicação (103), compreendendo o processo os seguintes passos: receber o pedido de entrada/saida (I/O) da aplicação (103); seleccionar controladores de dispositivos componentes (106 a 108) para processar o pedido de entrada/saida (1/0); determinar (301 a 307) um tamanho da memória tampão de controlador de dispositivo (212) suficiente para satisfazer as exigências de memória dos controladores de dispositivos componentes seleccionados (106 a 108); 4 atribuir a memória a uma memória tampão de controlador de dispositivo (226) do tamanho da memória tampão de controlador de dispositivo determinado (212); atribuir um deslocamento (202 a 204) da memória tampão de controlador de dispositivo componente a cada um dos controladores de dispositivo componentes (106 a 108), deslocamento da memória tampão do controlador de dispositivo componentes em deslocamento (202 a 204) para localizar dentro da memória de controlador de dispositivo (226) um espaço de trabalho correspondendo a cada um dos controladores de dispositivo componentes seleccionados (106 a 108); e invocar os controladores de dispositivos componentes seleccionados (106 a 108) para processar (502, 503) os pedidos de entrada/saida (I/O) utilizando a memória tampão do controlador de dispositivo atribuído (226).
- 12. Processo de acordo com a reivindicação 11 em que cada controlador de dispositivo componente invocado (106 a 108) utiliza como espaço de trabalho um troço (223 a 225) da memória tampão de controlador de dispositivo atribuído (226) .
- 13. Processo de acordo com as reivindicações 11 ou 12 em que cada controlador de dispositivo componente invocado (106 a 108) localiza espaço de trabalho dentro da memória tampão do controlador de dispositivo (226) adicionando o deslocamento da memória tampão de controlador de dispositivo componente correspondente (202 a 204), a um 5 endereço base controlador de indicando o inicio da memória tampão do dispositivo atribuído (226).6
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US95447492A | 1992-09-30 | 1992-09-30 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| PT590645E true PT590645E (pt) | 2000-12-29 |
Family
ID=25495470
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PT93115741T PT590645E (pt) | 1992-09-30 | 1993-09-29 | Processo e sistema para reduzir os pedidos de atribuicao de memoria |
Country Status (11)
| Country | Link |
|---|---|
| US (1) | US5675793A (pt) |
| EP (1) | EP0590645B1 (pt) |
| JP (1) | JP3421092B2 (pt) |
| KR (1) | KR940007680A (pt) |
| AT (1) | ATE194874T1 (pt) |
| CA (1) | CA2107387C (pt) |
| DE (1) | DE69329047T2 (pt) |
| DK (1) | DK0590645T3 (pt) |
| ES (1) | ES2149795T3 (pt) |
| GR (1) | GR3034591T3 (pt) |
| PT (1) | PT590645E (pt) |
Families Citing this family (34)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1997028501A1 (en) * | 1996-01-31 | 1997-08-07 | International Business Machines Corporation | Monitor system and method |
| US5835737A (en) * | 1996-05-10 | 1998-11-10 | Apple Computer, Inc. | Method and apparatus for arbitrating access to selected computer system devices |
| US5787019A (en) * | 1996-05-10 | 1998-07-28 | Apple Computer, Inc. | System and method for handling dynamic changes in device states |
| US5758154A (en) * | 1996-06-05 | 1998-05-26 | Microsoft Corporation | Method and system for storing configuration data into a common registry |
| US6209041B1 (en) * | 1997-04-04 | 2001-03-27 | Microsoft Corporation | Method and computer program product for reducing inter-buffer data transfers between separate processing components |
| US5916309A (en) * | 1997-05-12 | 1999-06-29 | Lexmark International Inc. | System for dynamically determining the size and number of communication buffers based on communication parameters at the beginning of the reception of message |
| US5926227A (en) * | 1997-07-28 | 1999-07-20 | Lsi Logic Corporation | Video decoder dynamic memory allocation system and method with error recovery |
| US6023712A (en) * | 1997-07-30 | 2000-02-08 | Quarterdeck Corporation | Method and apparatus for brokering memory resources |
| KR100450957B1 (ko) * | 1997-12-30 | 2004-12-14 | 삼성전자주식회사 | 메인 통신 보드 상에서 서브 통신 보드 데이터를 일정하게읽기 위한 방법 |
| US6154822A (en) * | 1998-04-21 | 2000-11-28 | International Business Machines Corporation | Method and system for improving data storage and access for programs written in mid-level programming languages |
| GB2342470A (en) * | 1998-10-09 | 2000-04-12 | Ibm | A memory management system and method for a data processing system |
| US6463537B1 (en) * | 1999-01-04 | 2002-10-08 | Codex Technologies, Inc. | Modified computer motherboard security and identification system |
| US7000106B2 (en) * | 1999-03-26 | 2006-02-14 | Siemens Communications, Inc. | Methods and apparatus for kernel mode encryption of computer telephony |
| US6600493B1 (en) | 1999-12-29 | 2003-07-29 | Intel Corporation | Allocating memory based on memory device organization |
| US6724390B1 (en) * | 1999-12-29 | 2004-04-20 | Intel Corporation | Allocating memory |
| US7035916B1 (en) * | 2000-02-16 | 2006-04-25 | Microsoft Corporation | Coupling a filter graph space to a network driver space |
| EP1244221A1 (en) | 2001-03-23 | 2002-09-25 | Sun Microsystems, Inc. | Method and system for eliminating data redundancies |
| WO2003009144A1 (en) * | 2001-07-19 | 2003-01-30 | Wind River Systems, Inc. | Memory management system |
| US7055152B1 (en) * | 2001-08-15 | 2006-05-30 | Microsoft Corporation | Method and system for maintaining buffer registrations in a system area network |
| US7594265B2 (en) * | 2001-11-14 | 2009-09-22 | Ati Technologies, Inc. | System for preventing unauthorized access to sensitive data and a method thereof |
| US7024672B2 (en) * | 2002-06-26 | 2006-04-04 | Microsoft Corporation | Process-mode independent driver model |
| US7080172B1 (en) | 2003-05-27 | 2006-07-18 | Marvell Luternational Ltd. | Management of memory, hardware and associated device drivers using stacks |
| US7844758B1 (en) | 2003-06-18 | 2010-11-30 | Advanced Micro Devices, Inc. | Dynamic resource allocation scheme for efficient use of a queue |
| US7418716B2 (en) * | 2003-12-19 | 2008-08-26 | Intel Corporation | Method, apparatus, system, and article of manufacture for interfacing a device |
| US7421700B2 (en) * | 2004-03-15 | 2008-09-02 | Microsoft Corporation | Interprocess buffer management using a buffer delay time |
| CN100392621C (zh) * | 2005-10-14 | 2008-06-04 | 威盛电子股份有限公司 | 总线控制器及数据缓冲空间分配方法 |
| US20070214347A1 (en) * | 2006-03-13 | 2007-09-13 | Rothman Michael A | Method and apparatus for performing staged memory initialization |
| US7908412B2 (en) * | 2006-05-10 | 2011-03-15 | Microsoft Corporation | Buffer passing mechanisms |
| CN101996082B (zh) | 2009-08-28 | 2014-06-11 | 国际商业机器公司 | 协处理器系统和在本地存储器上加载应用程序的方法 |
| WO2011121168A1 (en) * | 2010-03-31 | 2011-10-06 | Nokia Corporation | System and method for allocating buffers |
| US9244828B2 (en) * | 2012-02-15 | 2016-01-26 | Advanced Micro Devices, Inc. | Allocating memory and using the allocated memory in a workgroup in a dispatched data parallel kernel |
| CN109213596B (zh) * | 2018-08-01 | 2023-03-10 | 青岛海信移动通信技术股份有限公司 | 一种分配终端内存的方法和设备 |
| CN111208933B (zh) * | 2018-11-21 | 2023-06-30 | 昆仑芯(北京)科技有限公司 | 数据访问的方法、装置、设备和存储介质 |
| CA3202714A1 (en) * | 2020-12-14 | 2022-06-23 | Devin Miller | Administering and automating a sponsored emergency savings program |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0418638A (ja) * | 1990-05-11 | 1992-01-22 | Fujitsu Ltd | 静的メモリ割当て処理方法 |
| US5367637A (en) * | 1992-03-26 | 1994-11-22 | International Business Machines Corporation | Self-tuning virtual storage management for dedicated real-time computer system |
-
1993
- 1993-09-28 KR KR1019930020110A patent/KR940007680A/ko not_active Withdrawn
- 1993-09-29 DK DK93115741T patent/DK0590645T3/da active
- 1993-09-29 ES ES93115741T patent/ES2149795T3/es not_active Expired - Lifetime
- 1993-09-29 CA CA002107387A patent/CA2107387C/en not_active Expired - Fee Related
- 1993-09-29 DE DE69329047T patent/DE69329047T2/de not_active Expired - Fee Related
- 1993-09-29 JP JP24303893A patent/JP3421092B2/ja not_active Expired - Lifetime
- 1993-09-29 PT PT93115741T patent/PT590645E/pt unknown
- 1993-09-29 AT AT93115741T patent/ATE194874T1/de active
- 1993-09-29 EP EP93115741A patent/EP0590645B1/en not_active Expired - Lifetime
-
1996
- 1996-01-03 US US08/582,219 patent/US5675793A/en not_active Expired - Lifetime
-
2000
- 2000-10-11 GR GR20000402280T patent/GR3034591T3/el not_active IP Right Cessation
Also Published As
| Publication number | Publication date |
|---|---|
| GR3034591T3 (en) | 2001-01-31 |
| CA2107387C (en) | 2001-02-27 |
| EP0590645A1 (en) | 1994-04-06 |
| ATE194874T1 (de) | 2000-08-15 |
| JPH06318173A (ja) | 1994-11-15 |
| ES2149795T3 (es) | 2000-11-16 |
| CA2107387A1 (en) | 1994-03-31 |
| KR940007680A (ko) | 1994-04-27 |
| EP0590645B1 (en) | 2000-07-19 |
| DK0590645T3 (da) | 2000-12-04 |
| DE69329047D1 (de) | 2000-08-24 |
| US5675793A (en) | 1997-10-07 |
| JP3421092B2 (ja) | 2003-06-30 |
| DE69329047T2 (de) | 2000-12-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0590645B1 (en) | Method and system for reducing memory allocation requests | |
| US5978892A (en) | Virtual memory allocation in a virtual address space having an inaccessible gap | |
| US5539899A (en) | System and method for handling a segmented program in a memory for a multitasking data processing system utilizing paged virtual storage | |
| US6061773A (en) | Virtual memory system with page table space separating a private space and a shared space in a virtual memory | |
| US5899994A (en) | Flexible translation storage buffers for virtual address translation | |
| KR100686418B1 (ko) | 멀티-스레드 가상머신에서 메모리 할당방법 및 그 장치 | |
| US4511964A (en) | Dynamic physical memory mapping and management of independent programming environments | |
| US5802341A (en) | Method for the dynamic allocation of page sizes in virtual memory | |
| US6412053B2 (en) | System method and apparatus for providing linearly scalable dynamic memory management in a multiprocessing system | |
| US5873127A (en) | Universal PTE backlinks for page table accesses | |
| US6460126B1 (en) | Computer resource management system | |
| US7587566B2 (en) | Realtime memory management via locking realtime threads and related data structures | |
| US5835961A (en) | System for non-current page table structure access | |
| US6366994B1 (en) | Cache aware memory allocation | |
| JPH0578857B2 (pt) | ||
| JPH04213129A (ja) | メモリ管理システム及びメモリ管理方法 | |
| US5873120A (en) | Variable split virtual address space allocation with multi-system compatibility | |
| US6961840B2 (en) | Method and apparatus for managing a dynamic alias page table | |
| US20200097392A1 (en) | Isolated heaps | |
| US6952760B2 (en) | Methods and systems for memory allocation | |
| EP0403124A2 (en) | Overlay swapping | |
| Liu et al. | CPS: A cooperative para-virtualized scheduling framework for manycore machines | |
| US11847052B2 (en) | Memory allocation apparatus and method | |
| WO2020005597A1 (en) | Managing global and local execution phases | |
| EP3794450A1 (en) | Managing global and local execution phases |