Uma chamada de sistema é uma forma de um programa de usuário interagir com o sistema operacional. O programa solicita vários serviços e o sistema operacional responde invocando uma série de chamadas de sistema para satisfazer a solicitação. Uma chamada de sistema pode ser escrita em linguagem assembly ou em uma linguagem de alto nível como C ou Pascal . Chamadas de sistema são funções predefinidas que o sistema operacional pode invocar diretamente se uma linguagem de alto nível for usada.
Neste artigo, você aprenderá sobre as chamadas de sistema no sistema operacional e discutirá seus tipos e muitas outras coisas.
O que é uma chamada de sistema?
Uma chamada de sistema é um método para um programa de computador solicitar um serviço do kernel do sistema operacional no qual está sendo executado. Uma chamada de sistema é um método de interação com o sistema operacional por meio de programas. Uma chamada de sistema é uma solicitação do software de computador ao kernel de um sistema operacional.
O Interface de programa de aplicativo (API) conecta as funções do sistema operacional aos programas do usuário. Ele atua como um link entre o sistema operacional e um processo, permitindo que programas em nível de usuário solicitem serviços do sistema operacional. O sistema kernel só pode ser acessado usando chamadas de sistema. As chamadas do sistema são necessárias para qualquer programa que utilize recursos.
Como são feitas as chamadas do sistema?
Quando um software de computador precisa acessar o kernel do sistema operacional, ele faz uma chamada de sistema. A chamada do sistema usa uma API para expor os serviços do sistema operacional aos programas do usuário. É o único método para acessar o sistema kernel. Todos os programas ou processos que necessitam de recursos para execução devem utilizar chamadas de sistema, pois servem como interface entre o sistema operacional e os programas do usuário.
Abaixo estão alguns exemplos de como uma chamada de sistema varia de uma função de usuário.
precedência do operador java
- Uma função de chamada de sistema pode criar e usar processos de kernel para executar o processamento assíncrono.
- Uma chamada de sistema tem maior autoridade que uma sub-rotina padrão. Uma chamada de sistema com privilégio de modo kernel é executada no domínio de proteção do kernel.
- As chamadas do sistema não têm permissão para usar bibliotecas compartilhadas ou quaisquer símbolos que não estejam presentes no domínio de proteção do kernel.
- O código e os dados das chamadas do sistema são armazenados na memória global do kernel.
Por que você precisa de chamadas de sistema no sistema operacional?
Existem várias situações em que você deve exigir chamadas de sistema no sistema operacional. As seguintes situações são as seguintes:
- É obrigatório quando um sistema de arquivos deseja criar ou excluir um arquivo.
- As conexões de rede exigem chamadas do sistema para enviar e receber pacotes de dados.
- Se quiser ler ou gravar um arquivo, você precisa fazer chamadas de sistema.
- Se quiser acessar dispositivos de hardware, incluindo impressora ou scanner, você precisará de uma chamada de sistema.
- As chamadas do sistema são usadas para criar e gerenciar novos processos.
Como funcionam as chamadas do sistema
Os aplicativos são executados em uma área da memória conhecida como espaço do usuário. Uma chamada de sistema se conecta ao kernel do sistema operacional, que é executado no espaço do kernel. Quando um aplicativo cria uma chamada de sistema, ele deve primeiro obter permissão do kernel. Isso é conseguido usando uma solicitação de interrupção, que pausa o processo atual e transfere o controle para o kernel.
Se a solicitação for permitida, o kernel executa a ação solicitada, como criar ou excluir um arquivo. Como entrada, a aplicação recebe a saída do kernel. O aplicativo retoma o procedimento após o recebimento da entrada. Quando a operação é concluída, o kernel retorna os resultados para o aplicativo e então move os dados do espaço do kernel para o espaço do usuário na memória.
Uma simples chamada de sistema pode levar alguns nanossegundos para fornecer o resultado, como recuperar a data e hora do sistema. Uma chamada de sistema mais complicada, como conectar-se a um dispositivo de rede, pode demorar alguns segundos. A maioria dos sistemas operacionais lança um thread de kernel distinto para cada chamada de sistema para evitar gargalos. Os sistemas operacionais modernos são multithread, o que significa que podem lidar com várias chamadas de sistema ao mesmo tempo.
contém substring java
Tipos de chamadas de sistema
Geralmente existem cinco tipos de chamadas de sistema. São os seguintes:
Agora, você aprenderá sobre todos os diferentes tipos de chamadas de sistema, um por um.
Controle do processo
O controle de processo é a chamada do sistema usada para direcionar os processos. Alguns exemplos de controle de processo incluem criar, carregar, abortar, encerrar, executar, processar, encerrar o processo, etc.
Gerenciamento de arquivos
O gerenciamento de arquivos é uma chamada de sistema usada para manipular os arquivos. Alguns exemplos de gerenciamento de arquivos incluem criar arquivos, excluir arquivos, abrir, fechar, ler, gravar, etc.
Gerenciamento de dispositivo
O gerenciamento de dispositivos é uma chamada de sistema usada para lidar com dispositivos. Alguns exemplos de gerenciamento de dispositivos incluem leitura, dispositivo, gravação, obtenção de atributos de dispositivo, liberação de dispositivo, etc.
Manutenção de informações
A manutenção de informações é uma chamada de sistema usada para manter informações. Existem alguns exemplos de manutenção de informações, incluindo obtenção de dados do sistema, definição de hora ou data, obtenção de hora ou data, definição de dados do sistema, etc.
Comunicação
Comunicação é uma chamada de sistema usada para comunicação. Existem alguns exemplos de comunicação, incluindo criar, excluir conexões de comunicação, enviar, receber mensagens, etc.
Exemplos de chamadas de sistema Windows e Unix
Existem vários exemplos de chamadas de sistema Windows e Unix. Eles estão listados abaixo na tabela:
baixe o reprodutor de mídia vlc do youtube
Processo | janelas | Unix |
---|---|---|
Controle do processo | CriarProcesso() SairProcesso() WaitForSingleObject() | Garfo() Saída() Espere() |
Manipulação de arquivos | CriarArquivo() LerArquivo() EscreverArquivo() FecharHandle() | Abrir() Ler() Escrever() Fechar() |
Gerenciamento de dispositivo | SetConsoleMode() LerConsole() WriteConsole() | Ioctl() Ler() Escrever() |
Manutenção de informações | ObterCurrentProcessID() Definir temporizador() Dormir() | Obterpid() Alarme() Dormir() |
Comunicação | CriarPipe() CreateFileMapping() MapViewOfFile() | Cano() Shmget() Mmap() |
Proteção | SetFileSegurança() InicializarSecurityDescriptor() SetSecurityDescriptorgroup() | Chmod() umask() Chown() |
Aqui, você aprenderá brevemente sobre alguns métodos:
abrir()
O abrir() chamada de sistema permite que você acesse um arquivo em um sistema de arquivos. Ele aloca recursos para o arquivo e fornece um identificador ao qual o processo pode se referir. Muitos processos podem abrir um arquivo de uma só vez ou apenas por um único processo. Tudo é baseado no sistema de arquivos e na estrutura.
ler()
É usado para obter dados de um arquivo no sistema de arquivos. Aceita três argumentos em geral:
- Um descritor de arquivo.
- Um buffer para armazenar dados lidos.
- O número de bytes a serem lidos do arquivo.
O descritor do arquivo a ser lido pode ser usado para identificá-lo e abri-lo usando abrir() antes de ler.
espere()
Em alguns sistemas, um processo pode ter que esperar que outro processo complete a sua execução antes de prosseguir. Quando um processo pai cria um processo filho, a execução do processo pai é suspensa até que o processo filho seja concluído. O espere() a chamada do sistema é usada para suspender o processo pai. Depois que o processo filho tiver concluído sua execução, o controle será retornado ao processo pai.
escrever()
É usado para gravar dados de um buffer do usuário em um dispositivo como um arquivo. Esta chamada de sistema é uma forma de um programa gerar dados. São necessários três argumentos em geral:
o que é hashset java
- Um descritor de arquivo.
- Um ponteiro para o buffer no qual os dados são salvos.
- O número de bytes a serem gravados no buffer.
garfo()
Os processos geram clones de si mesmos usando o garfo() chamada do sistema. É uma das formas mais comuns de criar processos em sistemas operacionais. Quando um processo pai gera um processo filho, a execução do processo pai é interrompida até que o processo filho seja concluído. Depois que o processo filho tiver concluído sua execução, o controle será retornado ao processo pai.
fechar()
É usado para encerrar o acesso ao sistema de arquivos. Quando esta chamada de sistema é invocada, significa que o programa não requer mais o arquivo e os buffers são liberados, as informações do arquivo são alteradas e, como resultado, os recursos do arquivo são desalocados.
executar()
Quando um arquivo executável substitui um arquivo executável anterior em um processo já em execução, esta função do sistema é invocada. Como um novo processo não é construído, a identificação do processo antigo permanece, mas o novo processo substitui dados, pilha, dados, cabeça, etc.
saída()
O saída() é uma chamada de sistema usada para finalizar a execução do programa. Esta chamada indica que a execução do thread foi concluída, o que é especialmente útil em ambientes multithread. O sistema operacional recupera recursos gastos pelo processo após o uso do saída() função do sistema.