Você está na página 1de 13

Op

era
Rotinas do sistema operacional e System calls
Chamadas de rotinas do sistema operacional cio
nai
s

Professor: Sandro T. Pinto


 

Si
2º ano Sistemas de Informação
 
Alunos (a):

st Eduardo Oguido
Jader M. C. Garbelini

e
Vanessa Floriano
Willian C. Machado

m
as
Introdução
Uma grande preocupação no projeto de sistemas
operacionais se refere à implementação de
mecanismos de proteção ao núcleo do sistema e
também o controle de acesso aos serviços oferecidos
pelo sistema. Caso uma aplicação que tenha acesso ao núcleo realize alguma
operação que altere sua integridade, todo o sistema poderá ficar comprometido e
inoperante.
Por esse motivo a porta de entrada do núcleo do sistema operacional fica
protegida por um meio denominado Chamada de rotina do sistema operacional (
System Call).
Essas rotinas são muito importantes e por esse motivo são protegidas pelas
System call’s. Um programa não pode realizar uma tarefa que é de
responsabilidade do sistema operacional, se isso ocorresse, poderia comprometer
todo o sistema, veremos mais detalhes e exemplos dessas rotinas e chamadas.
Modo
Modo
Modo
protegido
protegid
protegido
o

Níveis de
(Kernel)
(Kernel)
(Kernel)

Modo
Modo Modo
Usuário
Usuário Usuário

Aplicações
Aplicações Aplicações
Aplicações
Privilégios Aplicaçõe
Aplicaçõe
s
Aplicações
Aplicações

• Os sistemas operacionais disponibilizam diferentes níveis de


privilégio que restringem as operações executadas pelos
programas, por razões de segurança e estabilidade. Dentre
estas operações podem ser incluídas o acesso a dispositivos
de hardware, habilitar e desabilitar interrupções ou alterar o
modo de privilégio do processador entre modo usuário e modo
protegido ( Kernel )
System call’s
As system calls podem ser entendidas como uma porta de entrada para acesso
ao núcleo do sistema e aos seus serviços. Sempre que um usuário ou uma
aplicação necessita de algum serviço do sistema, é realizada uma chamada a
uma de suas rotinas através de uma system call.

A melhor maneira de controlar o acesso às instruções privilegiadas é permitir


que apenas o sistema operacional tenha acesso a elas. Sempre que uma
aplicação necessita executar uma instrução privilegiada, a solicitação deve ser
feita através de uma system call. Ao término da execução da rotina do sistema,
o modo de acesso retorna para o modo usuário.

Aplicação System Call Núcleo do S.O. Hardware


Rotinas do sistema operacional
As System Call’s podem ser agrupadas em cinco categorias principais:

Gerencia de processos e threads.


É responsável pela criação,
eliminação,
alteração das características,
sincronização e obtenção de informações sobre processos e threads.
Gerenciamento de arquivos.
Criação e eliminação de arquivos e diretórios;
Alteração das suas características;
Abrir e fechar arquivos;
Leitura e gravação de arquivos
Obtenção de informações sobre arquivos e diretórios
Gerenciamento de dispositivos.
Alocação e desalocação de dispositivos
Operações de entrada e saída de dispositivo
Obtenção de informações sobre dispositivos
Gerencia de memória
Responsável pela alocação e desalocação de espaços da memória.
Comunicação.
criar, apagar conexão de comunicação
enviar e receber mensagens
informações sobre o estado de transferência
conectar ou desconectar os dispositivos remotos
Aplicação
Chamada de rotina Aplicação
• As rotinas do sistema operacional, podem
ser entendidas como funções especiais que
fazem parte de seu núcleo. Para que os
System programas possam usar essas funções , eles System
Call devem utilizar o system call, que muda o Call
modo de operação do processador entre
modo usuário e modo protegido (Kernel),
Núcleo para que o mesmo possa executá-la. O Núcleo
do S.O. núcleo deve ser executado no modo do S.O.
protegido e as aplicações em modo usuário.

Hardwar Hardwar
e e
Rotinas do sistema operacional
• As rotinas são basicamente funções que fazem parte do núcleo do
sistema e são responsáveis por tarefas importantes, intimamente
ligadas ao hardware. Sempre que um programa precisa acessar
uma rotina, ele fará uso de uma system call, passado parâmetros
para ela. Por sua vez, a system call recebe os parâmetros e os
repassa a função. A função é executada e depois retorna ao
mesmo ponto de onde estava antes da chamada. Por exemplo, o
comando mkdir, é uma chamada que aciona a rotina do núcleo do
sistema para a criação de diretórios. Esse comando recebe como
parâmetro o nome do diretório que se deseja criar e o repassa para
a rotina. A rotina é responsável por verificar o endereçamento e
alocar o espaço no disco. Depois de criado, o cursor é liberado
para se digitar novos comandos.
Biblioteca de rotinas
• Cada sistema operacional possui seu próprio conjunto de rotinas , com
nomes, parâmetros e formas de ativação específicos. Uma aplicação
desenvolvida utilizando serviços de um determinado sistema operacional
não pode ser portada diretamente para um outro sistema, exigindo algumas
correções no código-fonte.
• Para tentar resolver este impasse foi criado uma biblioteca de chamadas
objetivando uma padronização das chamadas pelos institutos ISO
(International Organization for Standardization) e IEEE (Institute of
Electrical and Electronics Engineers)que resultou num conjunto conhecido
como POSIX (Portable Operating System Interface for Unix). Isso permitiu
que uma aplicação desenvolvida seguindo esse conjunto de chamadas
pudesse ser portada para os demais sistemas.
• Alguns exemplos de sistemas operacionais que oferece algum suporte ao
padrão POSIX são : o MS Windows, IBM-AIX, Hp-UX e o SUN-Solaris.
Chamadas do Sistema
Operacional
• As chamadas, como foi dito anteriormente, são programas especiais
que enviam parâmetros para o núcleo do sistema operacional. O
processador trabalha com dois modos de execução de programas: o
modo usuário e o modo kernel. No modo usuário, o processador só
pode executar instruções não privilegiadas e tem acesso a um
número pequeno de instruções. Essas instruções não causam pane
no sistema. Já no modo kernel, o processador entra em modo
promiscuo e pode ter acesso as todas as suas funções. Essas
instruções podem causar pane no sistema. Para que isso não ocorra,
somente o sistema operacional tem a capacidade de mudar o
processador para o modo kernel, alterando o valor do registrador
psw. Esse registrador altera o modo de execução do processador de
acordo com seu valor.
Chamadas do Sistema
Operacional
Modo
Usuário Modo Kernel
Chamadas do Sistema
Operacional
• As chamadas a rotinas existem em todos os sistemas
operacionais, contudo, podem-se diferenciar em alguns. Nesse
trabalho, vamos citar somente as chamadas regulamentadas
pelo POSIX (Internacional Standard 99456-1). Segue abaixo
as chamadas as mais comuns:

Gerenciamento de pid = fork () Cria um processo filho idêntico ao pai


processos pid = waitpid Espera que um filho termine
(pid,&statloc,opts) versão antiga de waitpid
s = wait (&staus) Substitui a imagem de núcleo de um processo
s = execve (name,argv,envp) Termina a execução de um processo e retorna a status
exit (status) Define a tamanho do seguimento de dados
size = brk (addr) Retorna a identificação do processo que fez a chamada
pid = getpid () Retorna a identificação do grupo do processo que fez a chamada
pid = getpgrp () Cria uma nova sessão e retorna a identificação de seu grupo de
pid = setsid () processo
1 = ptrace Usado para depuração
(req,pid,addr,data)
s = sigaction (sig,&act,&oldact) Define a ação a ser executada nos sinais
Sinais s = sigreturn (&context) Retorna de um tratamento de sinal
s = sigprocmask (how,&set,&old) Examina ou alterar a máscara do sinal
s = sigpending (set) Obtém um conjunto de sinais bloqueados
s = sigsuspend (sigmask) Substitui a máscara do sinal e suspende o processo
s = kill (pid,sig) Envia um sinal para um processo
residual = alarm (seconds) Configura um temporizador
s = pause () Suspende o processo que fez a chamada até o próximo sinal

Gerenciamen fd = creat (name,mode)


fd = mknod (name,mode,addr)
Modo obsoleto de criar um novo arquivo
Cria um i-nome normal, especial ou de diretório
fd = open (file,how,...) Abre um arquivo para leitura, escrita ou ambos
to de s = close (fd)
n = read (fd,buffer,nbytes)
Fecha um arquivo aberto
Lê dados de um arquivo para um buffer
arquivos n = write (fd,buffer,nbytes)
pos = iseek (fd,offset,whence)
Escreva dados de um buffer em um arquivo
Move o ponteiro de arquivo
s = stat (name,&buf) Obtém informações de status de um arquivo
s = fstat (fd,&buf) Obtém informações de status de um arquivo
fd = dup (fd) Aloca um novo descritor de arquivo para uma arquivo aberto
s = pipe (&fd[0]) Cria um pipe
s = ioctl (fd,request,argp) Executa operações especiais em um arquivo
s = access (name,amode) Verifica a acessibilidade de um arquivo
s = rename (old,new) Atribui um nome nome a um arquivo
s = fcntl (fd,cmd,...) Travamento de um arquivo e outras operações
 

Gerenciamento ss == mkdir (name,mode)


rmdir (name)
Cria um novo diretório
Remove um diretório vazio
de s = link (name1, name2)
s = unlink (name)
Cria uma nova entrada, name2, apontando para name1
Remove uma entrada de diretório
diretórios e do s = mount (special,name,flag) Monta um sistema de arquivos
s = umount (special) Desmonta um sistema de arquivos
sistema s = sync () Transfere todos os blocos da cache para o disco
s = chdir (dirname) Muda o diretório de trabalho
de arquivos s = chroot (dirname) Muda o diretório raiz

Proteção s = chmod (name,mode)


uid = getuid ()
Altera os bits de proteção de um arquivo
Obtém a uid do processo que fez a chamada
gid = getgid () Obtém a gid do processo que fez a chamada
s = setuid (uid) Confegura a uid do processo que fez a chamada
s = setgid (gid) Configura a gid do do processo que fez a chamada
s = chown (name,owner,group) Altera o proprietário e o grupo de um arquivo
oldmask = umask (complmode) Altera a máscara de modo

Gerenciamento seconds = time (&seconds)


s = stime (tp)
Obtém o tempo decorrido desde 1º de janeiro de 1970
Configura o tempo decorrido desde 1º janeiro de 1970
de s = utime (file,timep)
s = times (buffer)
Configura o momento do “último acesso” de um arquivo
Obtém os tempos de usuário e do sistema usados até o momento
tempo
Conclusão
Pudemos concluir que as chamadas a rotinas do sistema operacional,
são peças chaves e essenciais para o funcionamento do S.O. São elas
que garantem a integridade do sistema, assegurando que o
processador execute somente códigos confiáveis, que provenham das
system calls. Ela também cria uma interface amigável e ao mesmo
tempo segura, para que programas acessem recursos de hardware,
inserindo uma camada de abstração entre eles.

Você também pode gostar