MC504 - Sistemas Operacionais. Chamadas de Sistema



Documentos relacionados
Tópicos em Sistemas Operacionais. Chamadas de Sistema. Islene Calciolari Garcia. Segundo Semestre de Instituto de Computação - Unicamp

MC504/MC514 - Sistemas Operacionais. Chamadas de Sistema

Conceitos. Pedro Cruz. EEL770 Sistemas Operacionais

2 SYSCALLs: O que são

MC514 Sistemas Operacionais: Teoria e Prática. Islene Calciolari Garcia Instituto de Computação UNICAMP

TUTORIAL VMWARE WORKSTATION 8. Aprenda a instalar e configurar corretamente uma máquina virtual utilizando VMware Workstation com este tutorial

Sistemas Operativos: Introdução. March 14, 2011

Organização do Curso. Instalação e Configuração. Módulo II. Pós Graduação em Projeto e Gerencia de Redes de Computadores

4 Estrutura do Sistema Operacional Kernel

SECRETARIA DA JUSTIÇA E DEFESA DA CIDADANIA FUNDAÇÃO DE PROTEÇÃO E DEFESA DO CONSUMIDOR - PROCON/SP MANUAL DE INSTALAÇÃO DO SISTEMA

Sistemas Operacionais 1/66

Sistemas Operacionais. Roteiro. Sistemas de Computadores. Os sistemas de computadores são projetados com basicamente 3 componentes: Marcos Laureano

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Como instalar o sistema operacional pfsense no Citrix Xen Server

Aplicações. Sistema Operacional Hardware. Os sistemas de computadores são projetados com basicamente 3 componentes: Máquinas Virtuais e Emuladores

VMware workstation e Windows 7. Instalação de máquina virtual e sistema operacional

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Agenda. Histórico Máquinas virtuais X Emuladores Vantagens & Desvantagens Vmware Quemu Xen UML Comparação entre VM's Conclusão

Aspectos de Sistemas Operativos

UFBA Universidade Federal da Bahia CPD Central de Processamento de Dados. Rede VPN UFBA. Procedimento para configuração

IBM SPSS Modeler - Princípios Básicos do R: Instruções de Instalação

2. O AMBIENTE DE PROGRAMAÇÃO EM C

Lazarus pelo SVN Linux/Windows

VirtualBox Mario Hato Instituto de Computação UNICAMP VirtualBox

Para continuar, baixe o linux-vm aqui:

Capítulo 1. Introdução

MINIX Manual de Instalação de MINIX no LINUX

IBM SPSS Modeler - Princípios Básicos do R: Instruções de Instalação

Introdução à Ciência da Computação

Estrutura do Sistema Operacional. Inicialmente... Inicialmente... 17/08/2011. Ademar Alves Trindade

Origin manual. 1.1 Cadastrando usuário : Get manager License ID. Quem deve se cadastrar: Como se cadastrar. origin manual. 1 de 14

Criar e confgurar as opções do sistema de arquivos

6 programas para criar pendrives bootáveis

Processos e Sinais - Linux

Instruções de Instalação do Agente RMON2

INTRODUÇÃO. Sistemas Operacionais. Vinícius Pádua

INTRODUÇÃO. Sistemas Operacionais. Vinícius Pádua

Configurando o TFTP em plataformas do NMS

Infra-Estrutura de Software. Introdução. (cont.)

Instruções para Instalação dos Utilitários Intel

CURSO BÁSICO DE PROGRAMAÇÃO AULA 8. Introdução ao Linux Introdução a linguagem C

Configure seu Linux pela Web! Instalação à partir de um.tar.gz. Autor: Carlos Eduardo Ribeiro de Melo <eduardo at unisulma.edu.br> Data: 05/10/2004

Manual de Instalação: Agente do OCS Inventory NG

ENDEREÇOS DE REDE PRIVADOS até até até Kernel

Agente local Aranda GNU/Linux. [Manual Instalación] Todos los derechos reservados Aranda Software [1]

ROTEIRO: IMPLANTANDO O SISTEMA OPERACIONAL LINUX. Introdução: FERRAMENTAS. Abaixo segue relação de aplicativos utilizados para realizar este roteiro:

Nota de Aplicação. Exemplo de log de usuários utilizando IHM Magelis e o leitor biometrico XB5S5B2L2. Suporte Técnico Brasil. Versão: 1.

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção

Guia de instalação para ambiente de Desenvolvimento LINUX

Hyper-V e Intel HAXM. Ativando a virtualização

Desenvolvimento de Aplicativos com ASR para Android

Sistemas Operacionais. Conceitos de um Sistema Operacional

Perguntas Freqüentes (FAQs)

Secure Client. Manual do Usuário. IPNv2. Secure Client IPNv2

Instalando o Debian em modo texto

SOFTWARE LIVRE. Distribuições Live CD. Kernel. Distribuição Linux

Guia de administração para a integração do Portrait Dialogue 6.0. Versão 7.0A

PROVA DE PRÉ-REQUISITO

Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração:

Virtualização Gerencia de Redes Redes de Computadores II

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Sistemas Operacionais

Conceitos Básicos sobre Programação Prática

É o UniNorte facilitando a vida de nossos docentes e discentes.

Usando o simulador MIPS

Com o Gnu/Linux, vamos trabalhar com. terminal de linha de comando. navegador e interface grafica (GUI)

ROTEIRO: IMPLANTANDO O SISTEMA OPERACIONAL WINDOWS 7

Windows NT 4.0. Centro de Computação

Gerenciando sistemas de arquivos

Comunicação entre pai e filho

Prof. Rossano Pablo Pinto Dezembro/2012 Versão 0.2 (em construção) Prof. Rossano Pablo Pinto - 1

Suporte Técnico. Procedimento de Abertura de Chamados Siemens Product Lifecycle Management Software Inc. All rights reserved

Prof. Victor Halla. Unidade IV FUNDAMENTOS DE SISTEMAS

PPTPCONFIG. Altamir Dias. 29 de junho de Instalando o Programa pptpconfig

Planeamento. Introdução ao Sistema Operativo UNIX. Java: Ferramentas, Entradas/Saídas, Excepções. Threads e Semáforos. Problemas de Sincronização

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 03. Prof. Gabriel Silva

Instalando o plugin CDT 4.0

Máquinas Virtuais com o VirtualBox

Sistemas Operativos 2001/2002

Google File System. Danilo Silva Marshall Érika R. C. de Almeida

Projeto SAT FISCAL Sistema Autenticador e Transmissor CF-e Cupons Fiscais Eletrônicos SAT - FISCAL

Virtualização e kernel, vistos por dentro

MoreDoc. Guia de Instalação. Edição Community Versão 3.0

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Sistemas Operacionais. Introdução

Conceitos e Chamadas de Sistema

Prova de pré-requisitos: A Arte da Virtualização de Sistemas Operacionais utilizando Xen

Universidade Estadual de Feira de Santana

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32

Redes de Computadores

HOW TO Procedimento para instalar Aker Firewall virtualizado no ESXi 5.0

Ciclo de Vida de um Processo

Sistemas Operacionais

Introdução a Informática - 1º semestre AULA 02 Prof. André Moraes

INSTALANDO E CONFIGURANDO NAGIOS NO LINUX DEBIAN 6.0

Gerenciador de Conteúdo Magellan 2.0

Ativação padrão Factory Talk, via Internet

Transcrição:

MC504 - Sistemas Operacionais Chamadas de Sistema Islene Calciolari Garcia Instituto de Computação - Unicamp Primeiro Semestre de 2014

Sumário 1 Objetivos 2 Ambiente de testes 3 printk 4 kmalloc 5 Teoria: Chamadas de Sistema 6 Prática: Chamadas de Sistema 7 Conclusão

Objetivos Configurar um ambiente para testes Teste inicial: printk Criar uma nova chamada de sistema

QEMU QEMU is a generic and open source machine emulator and virtualizer. When used as a machine emulator, QEMU can run OSes and programs made for one machine (e.g. an ARM board) on a different machine (e.g. your own PC). By using dynamic translation, it achieves very good performance. When used as a virtualizer, QEMU achieves near native performances by executing the guest code directly on the host CPU. QEMU supports virtualization when executing under the Xen hypervisor or using the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86, server and embedded PowerPC, and S390 guests. Fonte: www.qemu.org

QEMU Imagem disponível no site do QEMU Testing QEMU kernel muito antigo: 2.6.20 Uso: $ qemu-system-i386 linux-0.2.img

Como rodar um kernel (ainda não) alterado QEMU Crie uma imagem de disco vazio com o comando $ qemu-img create -f qcow disco.img 5G qcow: QEMU copy on write Imagem terá no máximo 5G Este passo é fácil. ;-)

Como rodar um kernel (ainda não) alterado QEMU Faça uma instalação a partir de um CD real, colocado na máquina hospedeira. $ qemu-system-i386 -hda disco.img -cd-rom /dev/cdrom -boot d ou a partir de um arquivo qualquer com uma imagem de CD: $ qemu-system-i386 -hda disco.img -cd-rom image-cd.iso -boot d A maioria das distribuições não funciona. :-( Debian parece ser uma exceção. Veja mais dicas no site Fedora: how to use QEMU

Uma distribuição que funcionou em 2s2013... Dica de Fernando Ferraz * link da distro lubuntu (x86): http://cdimage.ubuntu.com/lubuntu/releases/13.04/ release/lubuntu-13.04-desktop-x86_64.iso * criando imagem do qemu qemu-img create lubuntu-13.04-desktop-x86_64.iso -f qcow 10G * carregando install CD do lubuntu qemu-system-x86_64 -hda lubuntu-13.04-desktop-x86_64.iso -boot d -cdrom./lubuntu-13.04-desktop-x86_64.iso -m 512 * carregando lubuntu instalado no disco virtual: qemu-system-x86_64 -hda lubuntu-13.04-desktop-x86_64.iso -m 51

Como rodar um kernel (ainda não) alterado QEMU Para rodar um kernel diferente do da imagem, faça: $ qemu-system-i386 -hda disco.img -kernel bzimage -append ro root=/dev/hda Obtenha uma versão do kernel Linux a partir de kernel.org Execute tar -xjvf linux.3.x.y.xz Gere um.config adequado Primeira tentativa: make ARCH=i386 defconfig make -j 4 ARCH=i386 O kernel estará em arch/x86/boot/bzimage Tempo de compilação nesta máquina: cerca de 10 minutos

Obtendo um arquivo de configuração mais adequado O arquivo utilizado na imagem está disponível em /boot/config-2.6.20 Como obter uma cópia do arquivo? Abrir imagem e copiar o trecho O comando make irá perceber que o arquivo está desatualizado e irá fazer uma série de perguntas. Abordagem: escolher valor padrão para todas. Veja o arquivo: config-3.14.4.i386

Primeiro printk Alternativa do kernel para o printf Saída será exibida na tela e/ou irá para um arquivo de log Comando dmesg mostra as mensagens Imagem linux.0.2.img não tem dmesg. :-( Podemos utilizar mc504.img criada por Glauber de Oliveira Costa para a turma de 2008 Sugestão: alterar arquivo init/calibrate.c

Espaço de endereçamento e kmalloc Verificar endereços das variáveis Como funciona o kmalloc? Sugestão: alterar arquivo init/calibrate.c

Chamadas de Sistema Fronteira entre o espaço de usuário e o espaço do kernel (modo privilegiado) Tabela de chamadas Deslocamento via número da chamada

Address 0xFFFFFFFF Return to caller Trap to the kernel 5 Put code for read in register Library procedure read 4 10 User space 3 2 1 Increment SP Call read Push fd Push &buffer Push nbytes 11 User program calling read 6 9 Kernel space (Operating system) Dispatch 7 8 Sys call handler 0 Tanenbaum: Figure 1-17

Process management Call Description pid = fork( ) Create a child process identical to the parent pid = waitpid(pid, &statloc, options) Wait for a child to terminate s = execve(name, argv, environp) Replace a process core image exit(status) Terminate process execution and return status File management Call Description fd = open(file, how,...) Open a file for reading, writing or both s = close(fd) Close an open file n = read(fd, buffer, nbytes) Read data from a file into a buffer n = write(fd, buffer, nbytes) Write data from a buffer into a file position = lseek(fd, offset, whence) Move the file pointer s = stat(name, &buf) Get a file s status information Directory and file systemmanagement Call Description s = mkdir(name, mode) Create a new directory s = rmdir(name) Remove an empty directory s = link(name1, name2) Create a new entry, name2, pointing to name1 s = unlink(name) Remove a directory entry s = mount(special, name, flag) Mount a file system s = umount(special) Unmount a file system Miscellaneous Call Description s = chdir(dirname) Change the working directory s = chmod(name, mode) Change a file s protection bits s = kill(pid, signal) Send a signal to a process seconds = time(&seconds) Get the elapsed time since Jan. 1, 1970 Tanenbaum: Figure 1-18

Chamadas de Sistema Normalmente utilizadas via wrapper functions Outra alternativa: syscall Veja exemplo: myfutex

Adição de uma nova entrada na tabela Incluir linha em arch/x86/syscalls/syscall 32.tlb Incluir declaração de função em include/linux/syscalls.h Incluir código em arch/x86/kernel/ Alterar o Makefile Recompilar o kernel

Como testar a nova chamada Criar um arquivo exemplo: ex-mycall.c Compilar fora da imagem com $ gcc -m32 -static ex-mycall.c -o ex-mycall Opção -m32 nem sempre habilitada corretamente... Tentar ccplusplus Deixar o executável visível como se fosse um disco $ qemu... -hdb ex-mycall Execute no sistema sendo emulado: $ cat /dev/hdb/ > ex-mycall $ chmod +x > ex-mycall $./ex-mycall

Conclusão É relativamente fácil incluir uma nova funcionalidade no kernel via chamadas de sistema. Por que esta abordagem não é sempre a melhor?