Buscar

Criando uma chamada de sistema no MINIX

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Outros materiais

Outros materiais