Compartilhar via


Registrando memória para operações em uma SAN

A opção Windows Sockets chama as funções de extensão de um provedor de serviços SAN para registrar todos os buffers de dados para enviar e receber mensagens e para operações RDMA em uma rede de área do sistema. Essas funções de extensão registram um buffer em uma região de memória física para uso em um soquete SAN específico conectado a um par remoto. Para obter uma descrição dessas funções de extensão, consulte As Extensões de SPI do Windows Sockets para SANs.

Registrando buffers de dados

A opção chama a função de extensão WSPRegisterMemory de um provedor de serviços SAN em nome de um aplicativo executado em um processo local para registrar buffers de dados que só podem ser acessados por esse processo. Os identificadores de buffer que WSPRegisterMemory retorna são válidos somente no contexto do processo local que executou o registro. A opção chama WSPRegisterMemory para registrar buffers que servem como o buffer de recebimento de mensagens em uma chamada para a função WSPRecv ou a mensagem que envia buffer em uma chamada para a função WSPSend . A opção também chama WSPRegisterMemory para registrar buffers que servem como o buffer RDMA de recebimento local em uma chamada para a função de extensão WSPRdmaRead ou a origem RDMA local em uma chamada para a função de extensão WSPRdmaWrite . Depois que o processo local for concluído usando buffers registrados com WSPRegisterMemory, a opção chamará a função de extensão WSPDeregisterMemory para liberar esses buffers.

A opção chama a função de extensão WSPRegisterRdmaMemory do provedor de serviços SAN em nome de um aplicativo executado em um processo local para registrar buffers RDMA que os processos locais e remotos podem acessar. Os descritores de buffer que WSPRegisterRdmaMemory retorna são válidos apenas para operações de transferência de dados RDMA iniciadas por um par remoto no contexto da conexão do par com o soquete SAN no qual o registro foi executado. A opção na conexão de par remoto usa esses buffers RDMA como o destino em uma chamada para a função de extensão WSPRdmaWrite ou a origem em uma chamada para a função de extensão WSPRdmaRead . Depois que os processos locais e remotos terminarem de usar buffers registrados com WSPRegisterRdmaMemory, a opção chamará a função de extensão WSPDeregisterRdmaMemory para liberar esses buffers.

Gerenciando o acesso à memória

Um provedor de serviços SAN deve impedir o acesso não autorizado à memória registrada.

A memória deve ser registrada e acessível da seguinte maneira:

A memória registrada para acesso local deve estar disponível apenas para o processo no qual a opção chamada WSPRegisterMemory.

A memória registrada para acesso local e remoto pode ser acessada pelo processo no qual a opção chamada WSPRegisterRdmaMemory para registrar memória ou pelo par remoto conectado ao soquete SAN ao qual a memória está registrada.

A memória deve ser acessível somente quando registrada e enquanto a conexão é estabelecida. Um provedor de serviços san deve garantir que ele não torne inadvertidamente essa memória acessível a outros processos em execução no mesmo computador ou em outros computadores na SAN.

A memória registrada somente para acesso de leitura não deve estar disponível para acesso de gravação. A memória registrada somente para acesso de gravação não deve estar disponível para acesso de leitura.

Usando memória registrada

A opção registra duas regiões virtualmente contíguas de memória para cada soquete TCP conectado a ser usado para negociar uma sessão de transferência de dados. A opção usa uma região de memória para fornecer buffers de mensagens que contêm enviar dados ao chamar a função WSPSend de um provedor de serviços SAN. A opção usa a outra região da memória para postar buffers de mensagens para receber dados ao chamar a função WSPRecv de um provedor de serviços SAN.

A opção normalmente registra buffers RDMA somente se transferir dados do aplicativo em operações RDMA.

Antes que o comutador feche um soquete, a opção chama as funções WSPDeregisterMemory ou WSPDeregisterRdmaMemory de um provedor de serviços SAN para liberar qualquer memória que uma operação de transferência de dados pendente não esteja usando no momento. O provedor de serviços SAN também deve liberar memória associada a operações de transferência de dados pendentes.