Através de suas traduções de endereço virtual, as diferentes operações podem bloquear as mesmas páginas reais. Através de várias traduções virtuais das mesmas páginas ou solicitações de mlock empilhadas na faixa de endereço muito idêntica, um método solitário também pode ter várias páginas que são bloqueadas. Uma invocação para o Munmap () função que descongele o intervalo de endereços não rastreados faz o desbloqueio expressamente ou implicitamente.
Depois de apenas um garfo, as traduções bloqueadas não são passadas para o processo infantil. Os fios só podem fechar uma certa quantidade de carneiro físico, pois é uma mercadoria relativamente escassa. Tanto a restrição de ativos por processo rlimit_memlock quanto a limitação de “páginas com fio” em toda a plataforma podem ser bloqueadas por um único fio. Embora as implementações do NetBSD arredondassem para o múltiplo mais próximo do número de páginas, o código transportável deve garantir que talvez os argumentos adicionais e len sejam sincronizados com um.
Valores de retorno
Voltar 0 significa que a chamada é bem -sucedida e quase todas as páginas do escopo foram bloqueadas ou liberadas. O estado de bloqueio de cada página no domínio permanece inalterado se o valor numérico for -1, indicando uma exceção. O erro é indicado nesta situação, definindo o local global errno.
Erros
A função mlock () pode falhar devido a vários motivos. Nesta parte do artigo, discutiremos o número de exceções que obtivemos após o fracasso da função mlock () junto com suas razões para acontecer na execução. Aqui estão alguns dos erros que podemos encontrar até agora:
A função munlock () que é usada simultaneamente com a função mlock () pode falhar devido a vários motivos. Nesta parte do artigo, discutiremos o número de exceções que obtemos após o fracasso da função munlock (), juntamente com suas razões para acontecer na execução. Aqui estão alguns dos erros que podemos encontrar até agora:
Exemplo:
Para entender o conceito da função mlock () C, damos uma olhada em um exemplo simples. Criamos um novo arquivo C chamado “MSEG.C ”dentro da pasta Kali Linux“ Works ”.
Iniciamos este código com o uso das bibliotecas C padrão necessárias para a execução suave do código C, i.e. stdio.h e unistd.h. O SYS/MMAN.h cabeçalho é usado para permitir o uso das funções de bloqueio de memória. Depois disso, a execução começa a partir da inicialização de uma variável inteira Data_size para 2048. A matriz de caracteres "data_lock" do data_size é definida e passada para a função Memory_lock () definida pelo usuário junto com a variável Data_size como um argumento na primeira instrução "se".
A função Memory_lock () definida pelo usuário é executada e recebe o tamanho de uma página na variável page_size. O Page_Offset é calculado e o endereço é ajustado ao limite da página. O tamanho é ajustado com a função Page_Offset e a função mlock () é invocada e retornada usando as variáveis "tamanho" e "endereço". O método de instrução “se” perror () lançará um erro “Lock_memory” se o resultado retornado for igual a -1. Caso contrário, a declaração else imprimirá a “memória está bloqueada na RAM” através da função Printf.
Outra declaração "if-else" é usada para liberar a fechadura. A função Memory_unlock () é invocada na instrução "If", passando o Data_lock e o Data_size como seus argumentos. O mesmo procedimento é seguido por esta função que seguimos na função Memory_lock (). A única mudança é o uso da função munlock () com os mesmos argumentos para liberar o bloqueio e retornar o resultado. A segunda instrução "If" lançará uma exceção "desbloqueio_memory" usando a função Perror se o resultado for equivalente a -1. Caso contrário, a declaração else exibirá que "a memória é desbloqueada" usando a função Printf.
Criamos um arquivo de objeto deste arquivo C usando a opção GCC Compilers “-o”.
Depois de executar o arquivo de objeto, recebemos as mensagens de exibição enquanto a memória foi bloqueada e desbloqueada através do uso de funções Mlock () e Munlock ().
Conclusão
Trata -se do uso da função mlock de C no sistema operacional Kali Linux para mostrar a demonstração de como uma memória pode ser bloqueada e desbloqueada sem nenhum problema. Adicionamos a explicação, a sintaxe, os erros e o valor de retorno da função mlock junto com um exemplo detalhado. Este tutorial seria suficiente para os usuários conseguirem suas mãos com essa função na linguagem de programação C.