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 do 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 no kernel do sistema operacional. As chamadas do sistema expõem os recursos do sistema operacional aos programas de usuário por meio de uma API (Application Programming Interface). As chamadas do sistema só podem acessar a estrutura do kernel. São necessárias chamadas de sistema para todos os serviços que precisam de recursos.

O kernel Linux é um software proprietário que carrega e opera no dispositivo pelo menos estágio potencial. Seu trabalho é organizar tudo o que acontece na máquina, desde o teclado, unidade de disco e eventos de rede até o fornecimento de fatias de tempo para a execução simultânea de diferentes programas. A separação de software e hardware cria uma bolha segura que melhora a proteção e a confiabilidade. As aplicações não privilegiadas são incapazes de atingir o armazenamento de outros programas e, se um falhar, o kernel suspende o processo para que não danifique todo o sistema.

WAFER FINO WRAPRIDO:

As chamadas do sistema Linux não são renderizadas explicitamente ao kernel em determinados programas. Quase todos os programas usam a biblioteca C Basic e oferecem um invólucro leve, mas essencial, sobre o sistema Linux chama. O repositório fornece a chamada de máquina Linux que acompanha depois de garantir que os parâmetros do recurso sejam traduzidos para os registros de processador corretos. Sempre que o invólucro recebe dados da chamada do sistema, ele o analisa e o contribui claramente para o programa. Qualquer operação interativa da máquina em um programa é finalmente convertida em uma chamada do sistema. Então, vamos dar uma olhada em alguns deles. Há uma longa lista de chamadas do sistema Linux que podemos usar em nosso sistema Linux. Aqui está a lista de algumas chamadas de sistema Linux comuns e principalmente usadas.

  • Abrir
  • Fechar
  • Exec
  • Escrever
  • Ler
  • LSEEK
  • Selecione

Vamos discutir algumas chamadas do sistema Linux usando o idioma C em nosso artigo para se envolver com ele.

Chamada de sistema aberto:

Podemos usar a chamada do sistema "aberta" em nossa distribuição Linux para abrir rapidamente o documento, que especificaremos em nosso código de linguagem C. Inicie 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 começo, você deve criar um novo nome de arquivo do tipo C “Novo.C ”no terminal via Nano Editor. Portanto, experimente a instrução simples abaixo do nano.

$ nano novo.c

Agora, o editor de nano foi lançado. Digite o código abaixo da balança nele. Temos dois descritores de arquivo no código. Ambos os arquivos podem ser abertos usando a chamada do sistema aberto. O primeiro descritor contém uma chamada de leitura e a segunda contém a função de gravação. A primeira chamada aberta é abrir o arquivo de texto "Teste.txt ”e salvando seu conteúdo no descritor de arquivo“ FD ”. A segunda chamada de sistema aberto é criar um arquivo chamado "Target". O documento "Target" foi reembolsado a um descritor de arquivo "FD1". A instrução de gravação é usada para transcrever os bytes de dados no buffer. Toque em “Ctrl+S” para salvar o código e pressione a chave de atalho “Ctrl+X” para sair do arquivo.

Execute a instrução GCC compilar para compilar este código C.

$ gcc novo.c

Vamos executar o código usando o simples “a.OUT ”consulta na concha da seguinte forma:

$ ./a.fora

Os dados de saída foram transmitidos ao arquivo "Target". Vamos verificar o arquivo "Target" usando a consulta "CAT". A tela de saída está mostrando os dados de 20 caracteres no arquivo "Target".

$ CAT Target

Chamada do sistema EXEC:

A chamada do sistema EXEC está sendo expulso para executar um arquivo que está sendo processado atualmente. O antigo arquivo executável é substituído e o arquivo atual é operado sempre que o executivo é chamado. Ao usar uma chamada do sistema EXEC, podemos assumir que isso substituirá o documento ou aplicação antigo no loop com um novo. Novo software é usado para substituir o material de todo o processo. O documento cujo título é fornecido na declaração sempre que invocar o Exec () é substituído pela seção de informações do usuário que executa o sistema Exec () () Call (). Então abra o terminal de comando e, usando o editor Nano, crie um novo arquivo do tipo C da seguinte forma:

$ nano exp.c

O editor foi aberto agora. Escreva todo o código de idiomas abaixo C. Existem três bibliotecas principais incluídas nele. Depois disso, a função principal foi instanciada. A declaração de impressão está mostrando os dados da string e o ID do processo do arquivo “Exp.C ”. A função getpid () foi usada para esse fim. Então temos uma matriz do tipo de caractere com alguns valores. A chamada do sistema EXEC foi usada para pegar o nome do arquivo e a linha de uma linha acima como um argumento. Agora o arquivo “Olá.C ”será processado. Depois disso, outra declaração de impressão chega 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 na concha para fazer isso.

$ nano Olá.c

Escreva o código abaixo. Este código contém duas declarações de impressão na função principal. O primeiro é apenas imprimir uma string dada nela, e a segunda está imprimindo a string enquanto busca o ID do processo do arquivo atualmente usado, que é “Olá.C ”.

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

$ gcc -o exp exp.c
$ gcc -o hello hello.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 em todo o conceito de chamadas do sistema Linux e como elas podem ser usadas em seu sistema Linux. Usamos o Ubuntu 20.04 Ao implementar este conceito.