Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Sistemas Operacionais 
Criando uma chamada de sistema no 
MINIX 
Prof. Sílvio Fernandes 
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO 
DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS 
CURSO DE CIÊNCIA DA COMPUTAÇÃO 
Introdução 
 Usaremos a versão 3.2.1 do MINIX 
 A chamada deverá imprimir uma mensagem 
na saída padrão 
 Para isso será necessário 
 Criar a chamada de sistema propriamente dita 
 Criar um biblioteca para o usuário 
2 
Criando a chamada de sistema 
 Edite “/usr/src/include/minix/callnr.h” e 
encontre um slot não usado (ex: 35) 
 Defina um nome da sua chamada 
 #define MYCALL 35 
 Vamos associar essa chamada ao servidor PM, 
então vamos associar a chamada na tabela 
dele 
 Edite “/usr/src/servers/pm/table.c” 
 Modifique o mesmo slot escolhido anteriormente (35): 
 do_mycall, /* 35 = mycall */ 
3 
Criando a chamada de sistema 
 Agora é preciso incluir a assinatura da sua 
função no arquivo dos protótipos de função do 
PM 
 Abra “/usr/src/servers/pm/proto.h” 
 Procure a seção no arquivo /* misc.c */ e incllua: 
 int do_mycall(); /* Minha chamada */ 
 Inclua em “/usr/src/servers/pm/misc.c”: 
 
4 
/*=================================================* 
 *do_mycall * 
 *================================================*/ 
int do_mycall(){ 
 printf("Ola mundo! Esta é minha chamada de sistema!\n"); 
 return(OK); 
} 
Criando a chamada de sistema 
 Sua função pode ser criada em um arquivo 
separado, para isso é necessário salvá-lo no 
mesmo diretório e incluir o nome do seu 
arquivo no Makefile na seção “SRCS=” 
 No diretório “/usr/src/servers/pm/” compile e 
veja se há algum erro 
 #make 
 
 
5 
Criando a biblioteca 
 No diretório “/usr/include” crie o arquivo 
“mycalllib.h” 
 
 
 
 
 
 A definição dos tipos de mensagem e quais campos 
elas possuem são encontradas em 
 /usr/src/include/minix/ipc.h 
6 
#include <lib.h> 
#include <unistd.h> 
 
int mycall(){ 
 message m; 
 return ( _syscall(PM_PROC_NR, MYCALL, &m ); 
} 
Recompilando o Kernel 
 Entre no diretório “/usr/src/releasetools” 
 Para ver as opções de compilação faça 
 make 
 Para compilar e instalar use 
 make hdboot 
 Reinicie o sistema 
 reboot 
7 
Criando o programa de teste 
 No diretório do usuário crie o código e salve como 
teste.c 
 
 
 
 
 
 Compile-o 
 cc teste.c –o teste 
 Execute-o 
 ./teste 
 A mensagem será impressa no terminal principal (tty 1) - em 
um terminal remoto a mensagem não será vista 
8 
#include <mycalllib.h> 
#include <stdio.h> 
 
int main(int argc, char** args) { 
 mycall(); 
 return 0; 
} 
Exercício 
 Baseado no tutorial anterior construa uma 
chamada de sistema e uma biblioteca onde o 
usuário envia um valor inteiro (pela função da 
biblioteca) e chamada imprime o valor 
recebido por meio da mensagem recebida do 
syscall. 
 Crie a nova função em um arquivo separado e 
o inclua no Makefile do servidor 
9 
Referências 
 TANENBAUM, Andrew S. Sistemas Operacionais 
Modernos. 3ª Ed., Prentice Hall, 2009. 
 TANENBAUM, Andrew S.; WOODHULL, Albert S. 
Sistemas Operacionais: Projeto e 
Implementação. 3ª Ed., Prentice Hall, 2008. 
 MACHADO, Francis B.; MAIA, Luiz P. Arquitetura 
de Sistemas Operacionais. 3a. Edição. LTC, 
2004. 
 SILBERSCHATZ, Abraham; GALVIN, Peter; 
GAGNE, Greg. Fundamentos de Sistemas 
Operacionais. 6ª. Edição. LTC, 2004. 
10

Mais conteúdos dessa disciplina