Introdução ao Desenvolvimento com LINUX: Módulos do Kernel
|
|
- Luana Barata Imperial
- 6 Há anos
- Visualizações:
Transcrição
1 Introdução ao Desenvolvimento com LINUX: Módulos do Kernel Lucas Wanner, Antônio Augusto Fröhlich 16 de Jul de
2 Desmotivação para Desenvolver Software de Sistema Já temos Windows e Unix e MacOS! Que são sistemas multiusuário, multitarefa com interfaces gráficas legais que nos permitem acessar a Web... E fazem uso de modernas técnicas de engenharia de software, como programação estruturada! E há inúmeras histórias de SOs fracassados... E temos ótimos padrões de SO! APIs fortes como Posix e Win32 Hardware se fixando na novíssima arquitetura IA 32 Como disse Pike: pesquisa em SO é irrelevante! 2
3 Motivação para Desenvolver Software de Sistema Sistemas de propósito geral Prontos para o que der e vier Qualquer aplicação Muitos serviços Sistemas dedicados Where are the processors? (Tennenhouse, CACM 43(5):44) embedded 80% Aplicações particulares Requisitos específicos e interactive 2% robots 6% vehicles 12% poucos serviços São a grande MAIORIA! 8 bit 63% 4 bit 22% >= 32 bit 3% 16 bit 12% 3
4 Sistemas Dedicados na Forma de Placas PCI 4
5 Drivers de dispositivos Caixa preta que esconde a interação com o hardware atrás de uma interface de software comum (API/SPI) Implementados através de módulos carregáveis no kernel dos UNIXes modernos (e.g. LINUX) 5
6 Kernel LINUX 6
7 Kernel LINUX 7
8 Drivers de dispositivos no LINUX API inspirada em arquivos Dispositivos representados por pseudo arquivos Operações típicas de arquivos Open / Close, Read / Write Implementados através de módulos carregáveis ou lincados diretamente ao kernel Categorias Dispositivos orientados à caractere Dispositivos orientados a bloco Dispositivos de rede 8
9 Pseudo Arquivos de Dispositivos de Hardware Por convenção, no diretório /dev Kernel redireciona as operações realizadas nos pseudo arquivos para os serviços correspondentes do driver do dispositivo Pseudo arquivos são amarrados com os dispositivos através dos números major e minor 9
10 Pseudo Arquivos de Dispositivos de Hardware Número Major Identifica o driver (módulo) que deve ser acessado Número de 8 bits Número Minor Identifica o dispositivo (unidade) dentro do contexto do módulo Exemplo Driver IDE: major = 3 Primeira partição do primeiro disco IDE: minor = 1 10
11 Dispositivos Orientados à Caractere Vistos como fluxos de bytes Operação similar a arquivos comuns Exceção: não é possível avançar/retroceder na leitura/escrita (i.e. seek) Exemplos /dev/console /dev/ttys0 11
12 Dispositivos orientados a blocos Dispositivos que, durante as operações de I/O, acessam dados em blocos Dispositivos relacionados com sistemas de arquivos (e.g. discos) Interface comum com dispositivos orientados à caractere, mas com semântica distinta Orientados a blocos Poder avançar ou retroceder a leitura/escrita Operações adicionais para suportar sistemas de arquivos 12
13 Dispositivos de Rede Não se encaixam no esquema de pseudoarquivos Geralmente não são um nodo no sistema de arquivos Integrados a uma pilha de protocolos Interface de rede genérica Operações relacionadas a comunicação (e.g. envio de dados, recepção, manipulação de time outs, agrupamento de estatísticas) Otimizada para integração a pilha TCP/IP 13
14 Inicialização de Módulos Inicialização int init_module(void) Ponto de entrada do módulo Chamado na carga (pelo comando insmod) Registra o módulo no kernel Finalização void cleanup_module(void) Ponto de saída do módulo Chamado na finalização (pelo comando rmmod) Deregistra o módulo 14
15 Compilação de Módulos Sistema de compilação do Kernel 2.6 Usa um sistema estendido de make com Makefiles simplificados para os drivers: $ cat Makefile obj-m := hello.o Compilando módulos de fora da árvore do kernel make -C $LINUX_SRC/ M='pwd' modules Exige uma árvore configurada do kernel! 15
16 Compilando o Kernel LINUX Preparação Pacotes necessários sudo apt-get install linux-kernel-devel fakeroot qt3-dev-tools libqt3-mt-dev (Ubuntu) Download do código fonte do kernel sudo apt-get install linux-source (Ubuntu) Download disponível em kernel.org Criação de diretório para compilação mkdir ~/src cd ~/src tar xjvf /usr/src/linux-source-versao.tar.bz2 cd linux-source-versao 16
17 Compilando o Kernel LINUX Processo de Compiliação Cópia da configuração atual cp -vi /boot/config-`uname -r`.config Configuração make xconfig Compilação make Utilização do kernel compilado (não é necessário para compilar os módulos) make kernel-image Atualização da configuração do bootloader 17
18 Exercício: Hello Module Crie um módulo Hello World Defina as funções de entrada e saída do módulo: static int hello_init(void) static void hello_exit(void) No corpo destas funções, imprima uma mensagem Exemplo: printk(kern_alert "Hello, world.\n"); Registre as funções com as macros module_init(x) e module_exit(y) Crie um módulo Hello World Headers #include <linux/init.h>, #include <linux/module.h> 18
19 Exercício: Hello Module #include <linux/init.h> #include <linux/module.h> static int hello_init(void) { printk(kern_alert "Hello, kernel\n"); return 0; } static void hello_exit(void) { printk(kern_alert "Goodbye, kernel\n"); } module_init(hello_init); module_exit(hello_exit); 19
20 Exercício: Hello Module $ ls hello.c Makefile $ make -C /lib/modules/`uname -r`/build M=`pwd` modules make: Entering directory `~/src/linux-source ' CC [M] /home/lucas/tmp/linux-dev/modules/hello/hello.o Building modules, stage 2. MODPOST 1 modules CC /home/lucas/tmp/linux-dev/modules/hello/hello.mod.o LD [M] /home/lucas/tmp/linux-dev/modules/hello/hello.ko make: Leaving directory `~/src/linux-source ' $ ls hello.c hello.ko hello.mod.c hello.mod.o hello.o Makefile Module.symvers 20
21 Hello Module: Saída Saída gerada pela biblioteca do kernel (método printk) Mensagens visíveis através do comando dmesg $ sudo insmod hello.ko $ dmesg grep Hello [ ] Hello, kernel $ sudo rmmod hello $ dmesg grep Goodbye [ ] Goodbye, kernel 21
22 Hello Module: Trace Quando insmod é chamado, o kernel Aloca memória para o módulo Abre o arquivo que contem o código Lê o arquivo para a memória alocada Chama o método init_module() 22
23 Hello Module: Trace sudo strace insmod hello.ko execve("/sbin/insmod", ["insmod", "hello.ko"], [/* 16 vars */]) = 0 brk(0) = 0x804a000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap2(null, 8192, PROT_READ PROT_WRITE, MAP_PRIVATE MAP_ANONYMOUS, -1, 0) = 0xb7f0a000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=s_ifreg 0644, st_size=78806,...}) = 0 mmap2(null, 78806, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7ef6000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260e\1"..., 512) = 512 fstat64(3, {st_mode=s_ifreg 0755, st_size= ,...}) = 0 mmap2(null, , PROT_READ PROT_EXEC, MAP_PRIVATE MAP_DENYWRITE, 3, 0) = 0xb7da7000 mmap2(0xb7ef0000, 12288, PROT_READ PROT_WRITE, MAP_PRIVATE MAP_FIXED MAP_DENYWRITE, 3, 0x149) = 0xb7ef0000 mmap2(0xb7ef3000, 9840, PROT_READ PROT_WRITE, MAP_PRIVATE MAP_FIXED MAP_ANONYMOUS, -1, 0) = 0xb7ef3000 close(3) = 0 mmap2(null, 4096, PROT_READ PROT_WRITE, MAP_PRIVATE MAP_ANONYMOUS, -1, 0) = 0xb7da6000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7da66b0, limit: , seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 mprotect(0xb7ef0000, 4096, PROT_READ) = 0 munmap(0xb7ef6000, 78806) = 0 brk(0) = 0x804a000 brk(0x806b000) = 0x806b000 open("hello.ko", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\1\0\3\0\1\0\0\0\0\0\0\0"..., 16384) = read(3, "\0\0\rM\1$\0\0\0\3#\354@\32\325\31\0\0\rN\1\3\n\0\0\3#"..., 16384) = read(3, "r_cpu_pages\0 vm86_gs\0io_bitmap"..., 32768) = read(3, "", 15700) = 0 close(3) = 0 init_module(0x804a018, 49836, "") = 0 exit_group(0) =? Process detached 23
24 Registro de Módulos Liga um módulo à interface de chamadas de sistema do kernel Registro int register_chrdev(unsigned int major, const char *name, struct file_operations *fops) Deregistro int unregister_chrdev(unsigned int major, const char *name) Pseudo arquivo mknod /dev/devname0 c major minor 24
25 Parâmetros do Módulo Variáveis globais acessíveis externamente Declaradas através da macro MODULE_PARM(variavel, tipo, permissões) int irq = 10; char * name = Unknown ; /*declara irq como int */ MODULE_PARM(irq, i, 0); /*declara name como string */ MODULE_PARM(name, s, 0); Definidas em tempo de carga insmod mod.o irq=9 name= The Module 25
26 Informações do Módulo Declarações do módulo visíveis externamente, que fornecem informações aos clientes do módulo Macros MODULE_LICENSE("GPL"); MODULE_AUTHOR("Alguem"); MODULE_DESCRIPTION("Este modulo não faz nada"); MODULE_PARM_DESC(irq, "Device IRQ (3/4)" 26
27 Operações de arquivo struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write) (struct file *, const char *, size_t, loff_t *); int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll) (struct file *, struct poll_table_struct *); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, struct dentry *, int datasync); int (*fasync) (int, struct file *, int); int (*lock) (struct file *, int, struct file_lock *); : : }; 27
28 Estrutura arquivo struct file { struct list_head f_list; struct dentry *f_dentry; struct vfsmount *f_vfsmnt; struct file_operations *f_op; atomic_t f_count; unsigned int f_flags; mode_t f_mode; loff_t f_pos; unsigned long f_reada, f_ramax, f_raend,f_ralen,f_rawin; struct fown_struct f_owner; unsigned int f_uid, f_gid; int f_error; : }; MINOR(f_dentry->d_inode->i_rdev) 28
29 Contador de Referências Contador de Referências do Módulo Contabiliza automaticamente o número de clientes que um módulo tem em um determinado momento Evita que um modulo que está sendo utilizado seja descarregado Manipulado pelas funções: int try_module_get(&module); module_put(); 29
30 Gerência de Memória Código do kernel roda no contexto do processo de usuário que fez a chamada #include <asm/uaccess.h> unsigned long copy_to_user(to, from, count); unsigned long copy_from_user(to, from, count); Alocação de memória dentro do kernel #include <linux/malloc.h> void *kmalloc(unsigned int size, int priority); void kfree(void *obj); 30
31 Dicas de Programação Não utilizar bibliotecas (e cabeçalhos) padrão printk no lugar de printf #include <linux/x.h> #include <asm/y.h> Sinalizar código de kernel #define KERNEL Evitar conflitos de nomes Símbolos locais (static) Símbolos pré fixados (mod_sym) EXPORT_NO_SYMBOLS; 31
Desenvolvimento para Sistemas Embarcados (CEA 513) Sistema de Arquivos Raiz & Componentes do Kernel
Universidade Federal de Ouro Preto Departamento de Computação e Sistemas - DECSI Desenvolvimento para Sistemas Embarcados (CEA 513) Sistema de Arquivos Raiz & Vicente Amorim vicente.amorim.ufop@gmail.com
Leia maisIntrodução aos Sistemas Operacionais. Subsistema de Entrada e Saída
Introdução aos Sistemas Operacionais Subsistema de Entrada e Saída Eleri Cardozo FEEC/Unicamp Entrada e Saída O subsistema de entrada e saída é responsável pela interface entre o sistema operacional e
Leia maisProgramação de Sistemas
Programação de Sistemas Módulos do núcleo Programação de Sistemas Módulos : 1/15 Introdução (1) Desenvolvimentos do núcleo, como a criação de novos dispositivos, podem ser incorporados no Linux em duas
Leia maisSistemas Operacionais. Laboratório 1 (Ambiente de Aprendizado)
Sistemas Operacionais Laboratório 1 () Roteiro Linux em modo texto Acesso Interpretador de comandos Comandos Básicos Tratamento de Arquivos e Diretórios (Pasta*) Permissões Processos Editor de Texto Criação
Leia maisInterfaces e Periféricos 2005/2006
Interfaces e Periféricos 2005/2006 Device drivers Paulo Pedreiras, V1.0, Fev/2006 Device Drivers: Introdução O número de periféricos existentes é muito vasto: Teclado, rato, carta gráfica, carta de rede,
Leia maisBásico: estrutura de programa, sintaxe Interface com linha de comando
Programação em C Sintaxe Básico: estrutura de programa, sintaxe Interface com linha de comando Preprocessamento e compilação Makefiles Ponteiros e estruturas Bibliotecas, ficheiros include e funções Referências
Leia maisSistemas de Arquivos. (Aula 23)
Sistemas de Arquivos (Aula 23) 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 2 Sistemas Operacionais 2008/1 Necessidade de Armazenamento
Leia maisSistemas Operacionais 2014 Prática 8 Linux Drivers. Alexandre Augusto Giron
Sistemas Operacionais 2014 Prática 8 Linux Drivers Alexandre Augusto Giron Objetivos da Prática Introdução aos drivers de dispositivos no Linux Como programar um driver no Linux Acesso direto aos dispositivos
Leia maisGerência de Entrada e Saída
Gerência de Entrada e Saída Dispositivos de Entrada e Saída (1) Constituídos de 2 partes: Mecânica Eletrônica Controladora ou Adaptadora Controladora Placa ligada a um slot livre, ou inserida diretamente
Leia maisEstruturas de Sistemas Operacionais
Estruturas de Sistemas Operacionais Sistemas Operacionais - Tópicos Componentes do Sistema Serviços de Sistemas Operacionais Chamadas ao Sistema Estrutura do Sistema Máquinas Virtuais Chamadas ao Sistema
Leia maisDESENVOLVIMENTO DE UM SISTEMA DE ARQUIVOS INSTALÁVEL PARA LINUX. Thiago Klein Flach Orientador: Mauro Marcelo Mattos
DESENVOLVIMENTO DE UM SISTEMA DE ARQUIVOS INSTALÁVEL PARA LINUX Thiago Klein Flach Orientador: Mauro Marcelo Mattos ROTEIRO 1 Introdução: 1.1 Objetivos. 2 Fundamentação Teórica: 2.1 Conceitos Básicos;
Leia maisProgramação de Computadores II
Programação de Computadores II 2018.2 Bibliotecas Biblioteca é uma conjunto de subprogramas utilizados na programação que contém código e dados auxiliares externos ao programa principal, o que permite
Leia maisProgramação de Sistemas
Programação de Sistemas Introdução aos Gestores de dispositivos Programação de Sistemas DD : 1/44 Introdução (1) O Linux acede a elevado número periféricos, ou dispositivos ( device ) de entrada saída
Leia maisIntrodução a C. Para saber quais os procedimento ou funções que existem em cada biblioteca, acesse
Introdução a C Formatação do codigo em C Todos os códigos em C possuem a seguinte formatação: bibliotecas variáveis globais procedimentos ou funções (se necessário) função principal E sempre são salvos
Leia maisProgramação no kernel Linux. Felipe W Dam asio
Programação no kernel Linux Felipe W Dam asio 1 Visão Geral Linux é um kernel monolítico Símbolos exportados para todo o sistema Dificuldade de adição de APIs, hardware Problemas com escalabilidade 2 Visão
Leia maisINSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Arquivos Copyright 2014 IFRN Agenda Conceito Tipos de arquivos Texto Binário Stream Principais funções Exemplos
Leia maisEntrada/Saída. Capítulo 5. Sistemas Operacionais João Bosco Junior -
Capítulo 5 Afirmações Entrada/Saída Introdução Processos se comunicam com o mundo externo através de dispositivos de E/S. Processos não querem ou não precisam entender como funciona o hardware. Função
Leia maisExame de. Arquitectura de Computadores. (Duração minutos) Classifique cada uma das alíneas seguintes como Verdadeira ou Falsa.
Exame de (Duração 45+45 minutos) Nome: Número: 1. (4) Classifique cada uma das alíneas seguintes como Verdadeira ou Falsa. 1.1. Num sistema baseado no processador Intel 80386DX em modo protegido, a) o
Leia maisV 1.6. LPI 101 Arquitetura do Sistema
LPI 101 Arquitetura do Sistema 101 Arquitetura do Sistema 101.1 Hardware Skills Configurar hardware no sistema Habilita e desabilitar periféricos integrados Configurar systemas com ou sem periféricos externos
Leia maisIntrodução ao Desenvolvimento do Kernel Linux
Introdução ao Desenvolvimento do Kernel Linux Versões 2.6.X http://www.tchelinux.org Palestrante: Douglas Schilling Landgraf Email: dougsland@gmail.com Sobre o palestrante Sobre a palestra Dicas iniciais
Leia mais3 CONCEITOS DE SISTEMAS OPERACIONAIS
3 CONCEITOS DE SISTEMAS OPERACIONAIS 3.1 COMPONENTES DO SISTEMA Os Sistemas Operacionais são divididos em algumas partes básicas, conforme ilustrado na Figura 3.1. 1. Gerente de Processos; 2. Gerente de
Leia maisGestor de Sistemas de Ficheiros
Gestor de Sistemas de Ficheiros 8/28/2003 Sistemas Operativos 1 Memória Persistente 8/28/2003 Sistemas Operativos 2 Dispositivos de Memória Persistente dispositivos lógicos: um dispositivo físico subdivide-se
Leia maisProgramação Estruturada
Programação Estruturada Organização de um ambiente computacional Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC
Leia maisUniversidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores
Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores 1 Objetivo Roteiro de Laboratório 10 Inter Integrated
Leia maisSistemas Operacionais II. Linux - Introdução
Sistemas Operacionais II Linux - Introdução 2 Histórico Em 1991, um estudante de computação da Finlândia chamado Linus Torvalds desenvolveu um kernel compatível com o Unix para um processador 80386 que
Leia maisSistemas Operacionais Aula 15: Sistemas de I/O. Ezequiel R. Zorzal
Sistemas Operacionais Aula 15: Sistemas de I/O Ezequiel R. Zorzal ezorzal@unifesp.br www.realidadeaumentada.com.br Objetivos Explorar a estrutura do subsistema de E/S de um sistema operacional Discutir
Leia maisSistemas Operacionais. Introdução a Sistemas Operacionais
Introdução a arliones.hoeller@ifsc.edu.br baseado no material do Prof. Fröhlich em http://www.lisha.ufsc.br/~guto 1 Sistemas de computação Hardware CPU + memória + dispositivos de E/S Aplicações Objetivo
Leia maisArquitetura e Organização de Computadores. Compiladores e processamento
Arquitetura e Organização de Computadores Compiladores e processamento Verificar a existência dos pacotes: - GCC (Gnu C Compiler); - GDB (Gnu Debuger); - Libc (blibliotecas C); - nano, vi, emacs ou outro
Leia maisLinguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Leia maisAplicações em CUDA. Medialab Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center
Aplicações em CUDA Medialab Instituto de Computação Universidade Federal Fluminense NVIDIA CUDA Research Center Roteiro l Introdução l Eventos l Aspectos históricos l Operações atômicas l Introdução sobre
Leia mais1. (5) Arquitectura de Computadores. Classifique cada uma das alíneas seguintes como Verdadeira ou Falsa.
Exame de Época Normal (Duração 45+45 minutos) Nome: Número: 1. (5) Classifique cada uma das alíneas seguintes como Verdadeira ou Falsa. 1.1. Num sistema baseado no processador Intel Pentium em modo protegido,
Leia maisADTs (Abstract Data Types): Motivação
ADTs (Abstract Data Types): Motivação Mesmas estruturas são usadas com vários tipos de dados Listas Pilhas Amontoado FIFOs Inteiros Reais Strings Estruturas O procedimento para inserir um inteiro, real,
Leia maisReal Time Application Interface
Real Time Application Interface RTAI-3.x Walter Fetter Lages w.fetter@ieee.org Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo
Leia maisUniversidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores
Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores 1 Objetivo Roteiro de Laboratório 13 Drivers Prof. Walter
Leia maisUniversidade Federal de Pernambuco Centro de Informática. Aluno: Anderson L. S. Moreira alsm4@cin.ufpe.br Orientador: Paulo R. R.
Sistemas RTAI Universidade Federal de Pernambuco Centro de Informática Aluno: Anderson L. S. Moreira alsm4@cin.ufpe.br Orientador: Paulo R. R. Maciel Agenda Introdução O que é um SOTR Como funciona Exemplo
Leia maisFundamentos de Programação
Fundamentos de Programação ET42G Aula 21 Prof. Daniel Cavalcanti Jeronymo Conversão de tipos. Alocação dinâmica de memória. Recursão. Criação de bibliotecas, arquivos de cabeçalhos e variáveis globais.
Leia maisMétodos Computacionais
Métodos Computacionais Objetivos da Disciplina e Introdução a Linguagem C Construções Básicas Objetivos da Disciplina Objetivo Geral Discutir técnicas de programação e estruturação de dados para o desenvolvimento
Leia maisSistemas de Arquivos. Diretórios Gerenciamento de Espaço em Disco
Sistemas de Arquivos Diretórios Gerenciamento de Espaço em Disco Implementação de Diretórios (1) Contém informações que permitem acessar os arquivos As entradas do diretório fornecem informações para encontrar
Leia maisTipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas
Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisProgramação Shell Script: como dominar seu terminal
Programação Shell Script: como dominar seu terminal 14 de Outubro de 2008 1 2 Sistemas Operacionais Shell 3 4 5 O que é Shell? Programa interpretador de instruções Por que utilizar o Shell? Facilidade
Leia maisSistemas Operacionais Abertos. Prof. MSc. André Yoshimi Kusumoto
Sistemas Operacionais Abertos Prof. MSc. André Yoshimi Kusumoto andrekusumoto.unip@gmail.com Processos Periódicos Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Cron O cron é um programa de agendamento
Leia maisProgramação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?
Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? 1 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa o
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011
Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisAmbientes de Execução
KERNEL Conceitos Conceitos POSIX Portable Operating System Interface for UNIX. Um conjunto de padrões da IEEE e ISO que definem como programas e sistemas operacionais de interface com os outros. Sistemas
Leia maisINTRODUÇÃO A SISTEMAS DE ARQUIVO E GERENCIA DE MEMÓRIA
INTRODUÇÃO A SISTEMAS DE ARQUIVO E GERENCIA DE MEMÓRIA Prof. Hélio Esperidião DEFINIÇÕES DE ARQUIVOS Um arquivo é basicamente um conjunto de dados armazenados em um dispositivo físico não-volátil, com
Leia maisProgramação de Computadores II
Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para
Leia maisUFRJ IM - DCC. Departamento de Ciência da Computação. Sistemas Operacionais II. 25/10/2016 Profª Valeria Menezes Bastos 1
UFRJ IM - DCC Departamento de Ciência da Computação Sistemas Operacionais II 25/10/2016 Profª Valeria Menezes Bastos 1 File System no UNIX Provê armazenamento persistente Facilidades no gerenciamento de
Leia mais2 SYSCALLs: O que são
Trabalho de Software Básico - Turma 2010-1 Nome: Francisco Panis Kaseker GRR20071909 Título: Explicação e implementação de uma SYSCALL Data: 30/06/2010 1 Introdução Basicamente uma SYSCALL é uma chamada
Leia maisRoteiro 20/9/2010. Serviço do sistema operacional. Interface. Chamadas de sistemas (System Call) Programas do sistema Projeto e Implementação
BC1518 - Sistemas Operacionais Estrutura de S.O. Aula 02 3 Quadrimestre de 2010 Prof. Marcelo Z. do Nascimento Email: marcelo.nascimento@ufabc.edu.br Roteiro Serviço do sistema operacional Interface Chamadas
Leia maisIntrodução à Informática
Introdução à Informática Professor: Jailson Torquato Sistema Operacional - Linux Conhecimentos básicos em informática O que é Linux? Sistema operacional: é o componente de software que faz a interface
Leia maisLinux Básico. Prof. Gutemberg Gonçalves dos Santos Júnior. Center of Electrical Engineering and Informatics Federal University of Campina Grande
Linux Básico Prof. Gutemberg Gonçalves dos Santos Júnior Center of Electrical Engineering and Informatics Federal University of Campina Grande História do Linux A história começa em 1991 com o estudante
Leia maisThe Cyclops Project. Introdução: C++
The Cyclops Project Introdução: C++ Aula 1 Visão Geral Histórico da Linguagem Programa C++: header, source função main() GCC Arquivos objeto, bibliotecas dinâmicas e estáticas #include, #define, namespaces,
Leia maisCOS Sistemas Operacionais. SystemCalls() [Linux Kernel Development, 2 nd edition] Prof. Vítor Santos Costa
COS 773 - Sistemas Operacionais SystemCalls() [Linux Kernel Development, 2 nd edition] Elias Bareinboim [eliasb@cos.ufrj.br] Prof. Vítor Santos Costa PESC - Programa de Engenharia de Sistemas e Computação
Leia maisSistema de arquivos. Adriano J. Holanda 24/5/2016
Sistema de arquivos Adriano J. Holanda 24/5/2016 Sistema de arquivos Definição Interface entre os processos e os meios de armazenamento que fornece as abstrações e operações para a manipulação de bytes.
Leia maisThe Virtual File System (VFS) Andrey Matheus Coppieters Profº. Vitor Santos Sistemas Operacionais I
The Virtual File System (VFS) Andrey Matheus Coppieters Profº. Vitor Santos Sistemas Operacionais I Arquivos - Introdução Necessidade de armazenamento de informações que precisam estar disponíveis após
Leia maisAnhanguera Educacional S.A. Centro Universitário Ibero-Americano
O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Exemplos de Aplicações
Leia maisIntrodução aos Sistemas Operacionais. Subsistema de Arquivos
Introdução aos Sistemas Operacionais Subsistema de Arquivos Eleri Cardozo FEEC/Unicamp Subsistema de Arquivos O subsistema de arquivos deve prover soluções para as seguintes questões: Como a informação
Leia maisSistemas Operacionais II Unix: Memória e E/S. Geraldo Braz Junior
Sistemas Operacionais II Unix: Memória e E/S Geraldo Braz Junior Gerenciamento de Memória Gerenciamento de Memória Espaço de Endereçamento 1. Segmento de código Instruções de máquina que formam o código
Leia maisPCS-2042 Sistemas Operacionais. Projeto 3: Drivers
PCS-2042 Sistemas Operacionais Projeto 3: Drivers Mark Hodgkin Pedro d Aquino Rafael da Silva 13/07/2008 CONTEÚDO Objetivo... 3 Drivers no Minix... 4 Criando um Driver... 4 Proposta do Projeto... 5 Bibliografia...
Leia maisSistemas de Arquivos
Sistemas de Arquivos Problemas da alocação em RAM Baixa capacidade Volatilidade Solução: uso de arquivos Conceito de arquivo Espaço endereços lógico contíguo Coleção informações correlatas com mesmo nome
Leia maisTécnico Subsequente em Redes de Computadores Introdução a Sistemas Abertos (ISA)
Técnico Subsequente em Redes de Computadores Introdução a Sistemas Abertos (ISA) Aula 03 Visão Geral do Linux Objetivos Entender de forma básica o funcionamento do sistema Linux; Aprender as principais
Leia maisAdministração de Sistemas Operacionais
Administração de Sistemas Operacionais Linux - Introdução Alex Furtunato CEFET/RN alex@cefetrn.br http://www.cefetrn.br/~alex Sumário Histórico Características principais Distribuições Partições Sistema
Leia maisMoisés Souto docente.ifrn.edu.br/moisessouto
Moisés Souto docente.ifrn.edu.br/moisessouto moises.souto@ifrn.edu.br Aula 02 Acesso ao sistema e comandos básicos Software O que torna o computador reutilizável para diferentes propósitos Sem software,
Leia maisEstruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C
Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos
Leia mais16. Compilação no Linux
16. Compilação no Linux 16.1 Compilador X Interpretador Um código fonte pode ser compilado ou interpretado. Compiladores e interpretadores tratam o código de maneira diferente. Interpretador: Lê o código
Leia mais#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C
#include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que
Leia maisLinguagens de Programação
Linguagens de Programação Paradigma Imperativo Matheus Hafner Tiago Xavier CET 087 - Conceitos de Linguagens de Programação (CLP) 17 de novembro de 2011 Aula Prática Instalação Fortran sudo apt-get install
Leia maisLinguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux
Linguagem C Introdução Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Porquê C em AC? A linguagem C fornece um modelo de programação próximo da máquina física
Leia maisO Linux Possui varias características que diferenciam dos outros sistemas operacionais e que aproximam do UNIX, sendo um dos motivos da sua escolha
O Linux Possui varias características que diferenciam dos outros sistemas operacionais e que aproximam do UNIX, sendo um dos motivos da sua escolha em várias aplicações nas quais são necessárias estabilidade
Leia maisLinguagem de Programação C
Linguagem de Programação C Aula 08 Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais 13 de novembro de 2009 Introdução O que é uma linguagem
Leia maisNoções de Processos. Plano da aula. Serviços oferecidos. Definição & Objetivos. Definição & Objetivos. Sistemas Operacionais : introdução
Plano da aula Noções de Processos Marcelo Johann Introdução Histórico Multiprogramação Noção de processo Definição Ciclo de vida do processo Suporte de Hardware para multi-programação Mecanismo de interrupção
Leia maisLinguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná
Linguagem C IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Sabemos construir algoritmos que tenham: Variáveis Comandos sequenciais Entrada e saída
Leia maisUniversidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton
Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton nilton@comp.uems.br Introdução A linguagem C foi inventada por Dennis Ritchie e
Leia maisINF1007: Programação 2. 2 Alocação Dinâmica. 17/02/2014 (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 2 Alocação Dinâmica 17/02/2014 (c) Dept. Informática - PUC-Rio 1 Tópicos Alocação dinâmica Vetores locais e funções 17/02/2014 (c) Dept. Informática - PUC-Rio 2 Alocação Dinâmica
Leia maisExiste uma quantidade de informação que pode ser armazenada para resolver o problema.
Arquivos Introdução As estruturas vistas anteriormente armazenam as informações na memória principal do computador. Nem sempre é conveniente. Problemas: A informação é perdida; As estruturas de dados são
Leia maisProgramação de Sistemas
Programação de Sistemas Controlador de impressora por interface paralela Programação de Sistemas Centronics : 1/33 Introdução (1) A interface paralela IEEE1284, ou Centronics, permite dois equipamentos
Leia maisModulo 12: alocação dinâmica de memória
PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 12: alocação dinâmica de memória Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro porque e como utilizar a alocação dinâmica funções: malloc (
Leia maisCapítulo 13: Sistemas de E/S. Operating System Concepts with Java 7th Edition, Nov 15, 2006
Capítulo 13: Sistemas de E/S Capítulo 13: Sistemas de E/S Hardware de E/S Interface de E/S da aplicação Subsistema de E/S do kernel Transformando requisições de E/S em operações de hardware Fluxos Desempenho
Leia maisRoteiro de Comunicação Raspberry Arduino/ESP8266 com I2C
Roteiro de Comunicação Raspberry Arduino/ESP8266 com I2C Existem diversas aplicações e motivos para comunicar um Raspberry Pi com um ESP8266: aplicações com módulos heterogêneos, usando um Raspberry Pi
Leia maisSistemas Operacionais. Prof. André Y. Kusumoto
Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Introdução O sistema de arquivos é a parte mais visível do sistema operacional. Cria um recurso lógico a partir de recursos físicos
Leia maisGRUPO: Rafael Igor Vanderlei Vieira
GRUPO: Rafael Igor Vanderlei Vieira C# INTRODUÇÃO Paradigmas: Orientado a objeto; Estruturado; Imperativo; Surgimento: 2002. Criador: Anders Hejlsberg. Principais Compiladores:.NET Framework (Windows),
Leia maisPlanificação Anual da Disciplina de Sistemas Operativos - 12º 1PI
Módulo3-24Blocos Planificação Anual da Disciplina de Sistemas Operativos - 12º 1PI. Conhecer o enquadramento Sistema Operativo Windows Server Introdução ao S. O. Windows Server histórico do Windows Server
Leia maisACL s Linux POSIX. João Paulo Ozório Leandro Pereira Paulo César Ferreira
ACL s Linux POSIX João Paulo Ozório Leandro Pereira Paulo César Ferreira O que são ACL s O sistema de permissões do Linux é considerado muito seguro e simples de utilizar. Cada arquivo ou diretório pode
Leia maisGerência do Sistema de Arquivos. Adão de Melo Neto
Gerência do Sistema de Arquivos Adão de Melo Neto 1 Gerência do Sistema de Arquivos Organização dos arquivos Estrutura de diretório Gerência de espaço livre Gerência de alocação de arquivos em disco Proteção
Leia maisComunicação Inter-Processo em Unix. Pipes FIFO (Named Pipes) Pipes
Comunicação Inter-Processo em Unix Pipes FIFO (Named Pipes) 1 Pipes 2 1! Comunicação entre pai e filho Ao chamar um fork(), processos pai e filho deixam de compartilhar memória Como fazer então para que
Leia maisAula 1 Apresentação do Curso
Departamento de Sistemas de Computação Universidade de São Paulo SSC 502 Laboratório de Introdução a Ciência de Computação I Aula 1 Apresentação do Curso Responsável Prof. Seiji Isotani (sisotani@icmc.usp.br)
Leia maisSistema de Ficheiros. Sistema de Ficheiros
Sistema de Ficheiros Descrição genérica introdução organização de nomes tipos de ficheiros protecção no acesso relação com E/S Estrutura Interna Sistema de Ficheiros Linux 20/11/2008 Sistemas Operativos
Leia maisINTRODUÇÃO AOS SISTEMAS DE ARQUIVO. Prof. Hélio Esperidião
INTRODUÇÃO AOS SISTEMAS DE ARQUIVO Prof. Hélio Esperidião Definições de Arquivos Um arquivo é basicamente um conjunto de dados armazenados em um dispositivo físico não-volátil, com um nome ou outra referência
Leia maisUniversidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Profa Rosana Braga
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Profa Rosana Braga 1º semestre de 2010 1 Arquivo-FONTE /*******************************/ /* Primeiro exemplo arq exemplo1.c
Leia maisEstrutura do Sistema Operacional
Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Aula 04 Estrutura do Sistema Operacional 2 1 Estrutura do Sistema Operacional
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação
Leia maisIntrodução aos Sistemas Operacionais
1 Introdução aos Sistemas Operacionais 1.1 O que é um sistema operacional 1.2 História dos sistemas operacionais 1.3 O zoológico de sistemas operacionais 1.4 Conceitos sobre sistemas operacionais 1.5 Chamadas
Leia maisIntrodução à Programação
Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5
Leia maisLINUX. Uma visão geral
LINUX Uma visão geral O QUE É? Sistema Operacional Código aberto Criado por Linus Torvalds em 1991 Estudante de computação, 20 anos Linguagem C Variação do Minix Criado por Andrew S. Tanenbaum em 1987
Leia maisNota de Aplicação NA#10. Instalando driver USB para comunicação com no-breaks Engetron.
Nota de Aplicação Instalando driver USB para comunicação com no-breaks Engetron NA#10 Engetron Engenharia Eletrônica Ind. e Com. Ltda Atendimento ao consumidor: (31) 3359-5800 www.engetron.com.br 2008,
Leia mais