Chamadas de sistema

O que é uma chamada de sistema no Linux e como funciona com exemplos

O que é uma chamada de sistema no Linux e como funciona com exemplos

Uma chamada de sistema é uma função que permite que um processo se comunique com o kernel Linux. É apenas uma maneira programática de um programa de computador solicitar uma instalação do kernel do sistema operacional. As chamadas do sistema expõem os recursos do sistema operacional aos programas do usuário por meio de uma API (Interface de Programação de Aplicativo). As chamadas do sistema só podem acessar a estrutura do kernel. As chamadas do sistema são necessárias para todos os serviços que precisam de recursos.

O kernel Linux é um software proprietário que carrega e opera no dispositivo no mínimo estágio potencial. Seu trabalho é organizar tudo o que acontece na máquina, desde o teclado, unidade de disco e eventos de rede para fornecer fatias de tempo para execução simultânea de diferentes programas. A separação de software e hardware cria uma bolha segura que melhora a proteção e confiabilidade. Aplicativos sem privilégios são incapazes de alcançar o armazenamento de outro programa e, se um falhar, o kernel suspende o processo para que não danifique todo o sistema.

Wrapper Fino Wafer:

As chamadas do sistema Linux não são processadas explicitamente para o kernel em certos programas. Quase todos os programas usam a biblioteca C básica e oferecem um invólucro leve, mas essencial sobre as chamadas do sistema Linux. O repositório, então, fornece a chamada de máquina Linux que acompanha depois de garantir que os parâmetros do recurso sejam traduzidos nos registros de processador corretos. Sempre que o wrapper recebe dados da chamada do sistema, ele os analisa e os contribui para o programa de forma clara. Qualquer operação de máquina interativa em um programa é, em última análise, convertida em uma chamada de sistema. Então, vamos dar uma olhada em alguns deles. Há uma longa lista de chamadas de sistema Linux que podemos usar em nosso sistema Linux. Aqui está a lista de algumas chamadas de sistema Linux comuns e mais usadas.

Vamos discutir algumas das chamadas de sistema Linux usando a linguagem C em nosso artigo para colocá-lo em prática.

Chamada de sistema aberta:

Podemos usar a chamada de sistema “Open” em nossa distribuição Linux para abrir rapidamente o documento, que iremos especificar em nosso código de linguagem C. Lance o terminal de comando primeiro. Você pode usar o atalho “Ctrl + Alt + T”. Suponha que você tenha um arquivo de texto “teste.txt ”no diretório inicial, e contém algum conteúdo nele. Então, no início, você deve criar um novo nome de arquivo do tipo C “novo.c ”no terminal via editor nano. Portanto, experimente a instrução nano simples abaixo.

$ nano novo.c

Agora, o editor Nano foi lançado. Digite o código mostrado abaixo nele. Temos dois descritores de arquivo no código. Ambos os arquivos podem ser abertos usando a chamada de sistema aberta. O primeiro descritor contém uma chamada de leitura e o segundo contém a função de gravação. A primeira chamada aberta está abrindo o arquivo de texto “teste.txt ”e salvando seu conteúdo no descritor de arquivo“ fd ”. A segunda chamada de sistema aberto está criando um arquivo chamado “destino”. O documento “destino” foi reembolsado para um descritor de arquivo “fd1”. A instrução de escrita é usada para transcrever os bytes de dados no buffer. Toque em “Ctrl + S” para salvar o código e pressione a tecla de atalho “Ctrl + X” para sair do arquivo.

Execute a instrução de compilação gcc para compilar este código C.

$ gcc new.c

Vamos executar o código usando o simples “a.out ”consulta no shell da seguinte forma:

$ ./uma.Fora

Os dados de saída foram transmitidos para o arquivo "destino". Vamos verificar o arquivo “destino” usando a consulta “cat”. A tela de saída está mostrando os dados de 20 caracteres no arquivo "destino".

alvo $ cat

Chamada Exec System:

A chamada de sistema exec está sendo lançada para executar um arquivo que está sendo processado. O arquivo executável anterior é substituído e o arquivo atual é operado sempre que exec é chamado. Ao usar uma chamada de sistema exec, podemos supor que isso irá sobrescrever o documento ou aplicativo antigo no loop por um novo. Novo software é usado para substituir todo o material do processo. O documento cujo título é fornecido na instrução sempre que executar exec () é substituído pela seção de informações do usuário que executa a chamada de sistema exec () (). Portanto, abra o terminal de comando e, usando o editor nano, crie um novo arquivo do tipo C da seguinte maneira:

$ nano exp.c

O editor foi aberto agora. Escreva todo o código da linguagem C abaixo nele. Existem três bibliotecas principais incluídas nele. Depois disso, a função principal foi instanciada. A declaração de impressão tem mostrado os dados da string e o Id do processo do arquivo “exp.c ”. A função getpid () foi usada para este propósito. Então temos uma matriz de tipo de caractere com alguns valores nela. A chamada de sistema exec foi usada para tomar o nome do arquivo e a matriz de uma linha acima como um argumento. Agora o arquivo “olá.c ”será processado. Depois disso, outra instrução de impressão vem até agora, mas nunca será executada. Pressione “Ctrl + S” para salvar este arquivo. Pressione “Ctrl + X” para sair.

Agora é hora de criar outro arquivo c, “olá.c ”usando o editor nano. Use a consulta abaixo no shell para fazer isso.

$ nano olá.c

Escreva o código abaixo nele. Este código contém duas instruções de impressão na função principal. O primeiro está apenas imprimindo uma string fornecida nele, e o segundo está imprimindo a string enquanto busca o ID do processo do arquivo usado atualmente, que é “olá.c ”.

Vamos compilar os dois arquivos um após o outro usando o gcc.

$ gcc -o exp exp.c

$ gcc -o olá olá.c

Quando executamos o exp.arquivo c, ele produzirá a primeira instrução de impressão do exp.arquivo c e ambas as linhas de impressão do hello.arquivo c.

$ ./ exp

Conclusão:

Elaboramos todo o conceito de chamadas de sistema Linux e como elas podem ser usadas em seu sistema Linux. Usamos Ubuntu 20.04 ao implementar este conceito.

SuperTuxKart para Linux
SuperTuxKart é um ótimo título projetado para trazer a você a experiência Mario Kart gratuitamente em seu sistema Linux. É bastante desafiador e diver...
Tutorial de Battle for Wesnoth
The Battle for Wesnoth é um dos jogos de estratégia de código aberto mais populares que você pode jogar no momento. Este jogo não está apenas em desen...
0 A.D. Tutorial
Dos muitos jogos de estratégia que existem, 0 A.D. consegue se destacar como um título abrangente e um jogo muito profundo e tático, apesar de ser de ...