O que são Chamadas de Sistema (System Calls)
Quando falamos sobre os Sistemas Operacionais sob o ponto de vista da programação, citamos que uma de suas funções é fornecer algumas abstrações, de modo que o usuário não tenha que se preocupar com coisas específicas e complexas, além de gerenciar recursos de hardware (como memória e processamento).Tendo isso em mente, podemos definir chamadas de sistemas como funções, porém, são funções específicas que invocam o sistema operacional para que este faça algo, como a criação de um processo.
Geralmente, essas tarefas que pedimos para que o sistema operacional faça são bem complexas e que exijam uma permissão maior do sistema, pois geralmente lidam com ferramentas em baixo nível, como gerenciamento de memória, processos e outros recursos que o usuário comum não tem acesso.
Podemos dividir as chamadas de sistema entre quatro grandes grupos:
- Chamadas de sistemas para gerenciamento de processos
- Chamadas de sistemas para gerenciamento de diretórios
- Chamadas de sistemas para gerenciamento de arquivos
- Chamadas de sistemas restantes
Chamadas de Sistema (System Calls) do Unix
A seguir, vamos dar exemplos de funções de chamadas de sistema, que invocam o SO para fazer alguma tarefa específica, em ambientes do tipo Unix.Daremos uma breve explicação sobre cada uma, e no decorrer de nossos estudos sobre sistemas operacionais, entraremos em mais detalhes sobre elas. Não se preocupe em decorar elas muito menos seus parâmetros, é um trabalho gigante.
Apenas saiba que existem, para que servem e onde são usadas, para que um dia caso venha precisar, saber que tipos de tarefas você pode pedir para que seu sistema operacional realize, em seus programas.
- pid = fork() - Essa chamada cria um processo (filho), idêntico ao pai
- pid = waitpid(pid, &statloc, options) - O processo pai volta a rodar somente após o término do filho, ou seja, o processo pai aguarda o filho ser finalizado
- s = execv(name, argv, enrionp) - É realizado, no processo, a substituição da imagem do núcleo
- exit( num ) - Termina um processo e retorna um status (um número identificado algo, como sucesso, erro etc)
- fd = open (file, abertura ...) - Abre um arquivo (leitura, escrita ou os dois)
- s = close(fd) - Fecha o arquivo anteriormente aberto
- n = read (fd, buffer, nbytes) - Lê dados do arquivo 'fd' no 'buffer', de 'nbytes' valores de bytes
- n = write(fd, buffer, nbytes) - Analogamente ao read, mas escreve
- position = lseek(fd, offset, whence) - Move o ponteiro de 'fd'
- s = stat(name, &buf) - Retornar informações do arquivo
- s = chdir(nome) - Altera o diretório em que se está trabalhando
- s = kill(pid, sinal) - Envia um sinal 'sinal' para o processo de PID 'pid'
- seconds = time(&seconds) - Essa chamada retorna o tempo, em segundos, desde 1o de janeiro de 1970
- s = chmod(nome, modo) - Altera o sistema de proteção do arquivo 'nome'
- s = mkdir(nome, modo) - Cria uma pasta (diretório)
- s = rmdir(nome) - Apaga o diretório de nome "nome", previamente criado
- s = mount(special, nome, flag) - Cria um sistema de arquivos (como um dvd ou pendrive)
- s = umount(special) - Desmonta o sistema de arquivos previamente criado
- s = link(nome1, nome2) - Cria a entrada 'nome2' apontando pra 'nome1'
- s = unlink(nome) - Desfaz a entrada 'nome'
Chamadas de Sistema (System Calls) do Windows
Embora seja um sistema mais fechado (o que atrapalha um estudo mais aprofundado), o sistema operacional Windows também possui importantes chamadas de sistemas, essenciais para todos os programadores que desejam trabalhar com este tipo de SO.A seguir, vamos mostrar algumas chamadas de sistemas do Windows, e que system calls do Linux elas são correspondentes.
- CreateProcess - fork
- WaitForSingleObject - waipid
- ExitProcess - exit
- CreateFile - open
- ReadFile - read
- WriteFile - write
- CloseHandle - close
- SetFilePointer - lseek
- GetFileAttributesEx - stat
- CreateDirectory - mkdir
- RemoveDirectory - rmdir
- SetCurrentDirectory - chdir
- GetLocalTime - time
- DeleteFile - unlink
As seguintes system calls do Unix não possuem uma correspondente no Windows:
- kill
- chmod
- mount
- umount
- link
- execve
3 comentários:
Considerando o código em assembly de um programa desenvolvido em C, como funciona essa ligação para a função do sistema? Quero dizer, como o programa sabe na hora da execução onde estão essas funções? Vai ter isso mais pra frente? :)
System Calls ou Chamada de Sistema nada mais é que funções(interfaces) podem ser entendidas como uma porta de entrada para o acesso ao núcleo do Sistema Operacional e os seus serviços.Para cada serviço disponível existe uma system call associada e cada Sistema Operacional tem seu próprio conjunto de chamadas,com nomes,parâmetros e formas de ativação específicos. Ao bem entender os benefícios do System Calls é proteger o Sistema Operacional de vírus.
Li tudo só não compreendi tanto porque não participe da aula toda por conta da internet q tava só saindo do meet
Postar um comentário