Trabalho de Sistemas Operacionais Prof. Fernando Luís Dotti IMPLEMENTAÇÃO DE UMA NOVA CHAMADA DE SISTEMA NO LINUX
|
|
- Maria Vitória Ávila Cavalheiro
- 7 Há anos
- Visualizações:
Transcrição
1 Trabalho de Sistemas Operacionais Prof. Fernando Luís Dotti IMPLEMENTAÇÃO DE UMA NOVA CHAMADA DE SISTEMA NO LINUX
2 Alunos: Andrio Spich Hugo A. W. Schmitt
3 Introdução A proposta deste trabalho de sistemas operacionais foi trabalhar com um sistema operacional real, no caso, o Linux. A idéia foi de aprender sobre o funcionamento interno do Linux, para que depois pudéssemos alterar o seu código fonte de modo a adicionar uma chamada de sistema simples e colocá-la em funcionamento. As chamadas de sistema são o modo padrão para que um programa de usuário possa utilizar os serviços do Sistema Operacional. Ambiente para o trabalho Nos laboratórios de rede possuímos acesso em modo de superusuário ao Linux, no caso a distribuição Kurumin. Infelizmente estes não possuíam o código fonte do sistema, necessário para a recompilação do mesmo, e o laboratório de rede não possui acesso à Internet para que pudéssemos realizar o download do mesmo. A solução encontrada foi trabalharmos em casa. Utilizamos a distribuição Red Hat 9, com versão do kernel , arquitetura i386 (PC). Recompilando o kernel Antes mesmo de implementarmos a chamada, preferimos recompilar o kernel sem nenhuma modificação para nos assegurarmos de que quaisquer problemas que apareçam durante ao trabalho sejam relacionados realmente ao trabalho. O kernel do linux (quando estiver instalado) se encontra no diretório /usr/src. Utilizando a ferramenta de montagem make, efetuamos a compilação do kernel nas seguintes etapas:
4 make clean para remover quaisquer arquivos.o antigos. make config para configurar as opções para o nosso kernel.(poderíamos executar make menuconfig e realizar a configuração toda (ou xconfig para um modo gráfico), mas como já possuímos um arquivo de configuração que funcionava, utilizamos oldconfig para que se realize a configuração a partir do arquivo.config. make dep para verificar as dependências corretamente. Aqui começa a compilação propriamente dita: make bzimage Temos agora a imagem do kernel nova bzimage no diretório./arch/i386/boot/ Para acabarmos a instalação devemos compilar os módulos e instalá-los: make modules make modules_install Por segurança, iremos deixar duas versões do kernel no sistema, a antiga e a nova, uma vez que uma compilação bem sucedida não significa que o kernel irá realmente funcionar. Copiamos a imagem do kernel da pasta local para /boot/ (devemos estar em modo superusuário) cp./arch/i386/boot/bzimage /boot Neste caso, a nova imagem se chama bzimage
5 No gerenciador de boot criaremos uma nova entrada correspondente ao kernel recompilado; se utilizamos o Grub devemos alterar o arquivo /boot/grub/menu.lst de modo que teremos algo como: #boot=/dev/hda default=2 timeout=10 splashimage=(hd0,1)/grub/splash.xpm.gz title Linux ( ) root (hd0,1) kernel /vmlinuz ro root=label=/ hdc=ide-scsi initrd /initrd img title Testing linux (new system call) root(hd0,1) kernel /bzimage ro root=/dev/hda3 Basta reiniciar agora o computador: reboot Preparando para uma nova chamada de sistema
6 As chamadas de sistema são chamadas indiretamente via interrupções. Temos uma tabela de interrupções que será acessada pelos processos de usuário para que encontrem a interrupção desejada. Temos que inserir uma nova entrada nesta tabela que se encontra no arquivo linux/arch/i386/kernel/entry.s. O nosso arquivo ficou assim:.long SYMBOL_NAME(sys_ni_syscall) /* 250 sys_alloc_hugepages */.long SYMBOL_NAME(sys_ni_syscall) /* sys_free_hugepages */.long SYMBOL_NAME(sys_exit_group).long SYMBOL_NAME(sys_lookup_dcookie).long SYMBOL_NAME(sys_userproc) /* Nossa syscall */.long SYMBOL_NAME(sys_ni_syscall) /* 255 sys_epoll_ctl */.long SYMBOL_NAME(sys_ni_syscall) /* sys_epoll_wait */.long SYMBOL_NAME(sys_ni_syscall) /* sys_remap_file_pages */ Normalmente se insere uma nova chamada de sistema na última posição, mas nós inserimos perto do fim, pois ali haviam algumas posições inutilizadas. Também temos que alterar o arquivo linux/include/asm-i386/unistd.h: #define NR_io_submit 248 #define NR_io_cancel 249 #define NR_alloc_hugepages 250 #define NR_free_hugepages 251 #define NR_exit_group 252 #define NR_lookup_dcookie 253 #define NR_userproc 254 #define NR_set_tid_address 258 Inserindo a nova chamada de sistema
7 Há várias maneiras de criarmos a chamada de sistema; nós optamos pelo modo mais simples e utilizamos apenas um arquivo userproc.c que colocamos, arbitrariamente, na pasta kernel. Devemos então modificar a Makefile desta pasta para que o código seja compilado e linkado corretamente. A modificação está em negrito: #Começo do arquivo O_TARGET := kernel.o export-objs = signal.o sys.o kmod.o context.o ksyms.o pm.o exec_domain.o printk.o cpufreq.o profile.o obj-y = sched.o dma.o fork.o exec_domain.o panic.o printk.o lowlat.o profile.o module.o exit.o itimer.o info.o time.o softirq.o resource.o sysctl.o acct.o capability.o ptrace.o timer.o user.o signal.o sys.o kmod.o context.o kksymoops.o futex.o pid.o userproc.o (...) O formato de uma chamada de sistema é o seguinte ( userproc.c ): #include <linux/unistd.h> #include <linux/linkage.h> #include <linux/errno.h> #include <linux/sched.h> #include <linux/kernel.h> asmlinkage int sys_userproc(int user_uid) { struct task_struct *pts; (1) //for_each_process(pts) for (pts = &init_task ; (pts = next_task(pts))!= &init_task; ) (2) { if ( pts-> uid == user_uid){ printk("user %d eh dono do processo %d\n",pts->uid,pts->pid); (3) return 0; A biblioteca linkage.h é necessário para que o compilador reconheça a palavra asmlinkage. Esta por sua vez é necessária para que as chamadas de sistema sejam linkadas corretamente. Também deve-se colocar sys_ na frente do header da função. Esta nossa chamada de sistema simplesmente lista os processos de um usuário:
8 - recebe como argumento um inteiro user_id, um ID de usuário( Por exemplo, o root tem UID = 0); - para cada processo existente, se o UID relacionado ao processo for igual a user_id, escreve na tela uma mensagem; Em (1), declara-se um ponteiro do tipo task_struct que iremos utilizar para acessarmos as estruturas que mantém os processos; Em (2), temos um for. Observa-se que o endereço init_task nos dá tanto o valor inicial como o limite final do loop. Isto acontece pois todas as tasks do sistema estão relacionadas em uma lista circular duplamente encadeada. Logo o limite final em init_task nós impede de começarmos uma segunda volta e passarmos mais uma vez por todos os processos.(pts = next_task(pts) seta o ponteiro pts para a próxima posição da lista encadeada) Em (3): se o UID do processo é o mesmo da entrada, escrevemos, usando printk, uma mensagem para o console. Testando a chamada de sistema Mostramos ainda um exemplo de como usar a chamada de sistema, pois do jeito que a implementamos o código fonte necessita de uma adição ( testeuserproc.c ): #include <linux/unistd.h> #include <errno.h> //syscalls podem retornar 'error codes' #include <stdio.h> #include <stdlib.h> //atoi
9 _syscall1(long, userproc, int, user_uid); main(int argc, char ** argv) { if (argc!= 2) { printf("lista os processos de alguem\n"); printf("sintaxe: %s uid\n", argv[0]); exit(1); my_syscall(atoi(argv[1])); A única linha interessante aqui é: _syscall1(long, userproc, int, user_uid); Necessitamos desta macro para que um programa de usuário possa usar a chamada de sistema. Nota-se que o número 1 em _syscall1 se refere ao número de argumentos que a função recebe, e há uma limitação máxima de 6 elementos. Esta macro na verdade gera um código assembler que chama a interrupção 80h com a chamada de sistema requerida e seus parâmetros nos registradores. Conclusão Neste trabalho pudemos trabalhar na prática com um sistema operacional moderno e popular. O Linux nunca foi um sistema operacional com fins educativos e no seu código as várias partes em programação assembly mostram que o objetivo é sempre o maior desempenho e não clareza ou elegância. Também notamos que a teoria dos livros sobre Linux de alguns anos atrás só vale para os princípios, pois a implementação já está muito alterada e só se consegue aprender na prática, com base nos comentários nos próprios fontes.
Universidade 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 Roteiro de Laboratório 12 Compilação Cruzada de um Kernel
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 Roteiro de Laboratório 11 Compilação Cruzada de um Kernel
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 Roteiro de Laboratório 11 Compilação Cruzada de um Kernel
Leia maisSEMPRE FAÇA BACKUP DOS ARQUIVOS DE DADOS DE UMA MÁQUINA ANTES DE INSTALAR OUTRO SISTEMA OPERACIONAL
Introdução O objetivo deste tutorial é preparar uma máquina para poder realizar o boot através de um sistema Windows ou um Sistema Linux. Para isto foram utilizadas as seguintes versões de Sistema Operacional
Leia maisComponentes do kernel Compilando o kernel Aplicando patch no kernel Configurar, compilar, instalar um kernel personalizado Gerenciar, consultar o
LPI 201 Componentes do kernel Compilando o kernel Aplicando patch no kernel Configurar, compilar, instalar um kernel personalizado Gerenciar, consultar o kernel e seus módulos. Componentes do Kernel Kernel
Leia maisAlguns conceitos de C++ que usaremos neste curso (para quem já conhece C) Suponha que se queira criar uma função que soma 1 numa variável inteira.
Alguns conceitos de C++ que usaremos neste curso (para quem já conhece C) Referência &. Suponha que se queira criar uma função que soma 1 numa variável inteira. 1) A seguinte solução está errada: void
Leia maisSua Primeira Modificação do Kernel
Peter Senna Tschudin Red Hat Certified Engineer peter@parahard.com 06/11/2006 Sua Primeira Modificação do Kernel v1.2 Introdução: Este documento é uma receita para criar duas chamadas de sistema e uma
Leia maisListas Ligadas (Encadeadas) Listas Simplesmente Encadeadas
Listas Ligadas (Encadeadas) Matrizes são estruturas de dados muito úteis fornecidas nas linguagens de programação. No entanto, elas têm pelo menos duas limitações: 1- Seu tamanho tem que ser conhecido
Leia maisIDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias
1 IDES E PROGRAMAÇÃO Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias {claudio,macdias}@icmc.usp.br 2 Agenda Conceitos Instalação e Configuração Compilação e Execução de Código IDEs Exemplo
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 maisIntrodução à Programação Aula 16. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Introdução à Programação Aula 16 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação COMO UM PROGRAMA C É COMPILADO? 2 Compilação de um Programa A compilação
Leia maisCurso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber 3/10/ :43 AM
Curso de C Introdução 1 Introdução Roteiro: Recordando Algoritmos Linguagem de Programação O computador Instruções de Máquina Níveis de Abstração Compilação 2 Algoritmos Recordando: Algoritmo: conjunto
Leia maisSobre o Visual C++ 2010
O Visual Studio é um pacote de programas da Microsoft para desenvolvimento de software, suportando diversas linguagens como C#, C++, C, Java, Visual Basic, etc. Nesta série de tutoriais vou focar apenas
Leia maisAula 2: Introdução a Linguagem C
Aula 2: Introdução a Linguagem C Prof. Sérgio Montazzolli Silva smsilva@uel.br 2 Sumário História Ponto de entrada de um programa (função main) Bibliotecas Blocos, encerramento de linha e identação Função
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 maisCompilando o Kernel Linux
Compilando o Kernel Linux Fonte: http://www.digitalhermit.com/linux/kernel- Build-HOWTO.html Atribuindo uma versão única Evitar que os módulos do kernel atual sejam modificados indevidamente Arquivo Makefile
Leia maisPreparatório LPIC-1 Tópico 102
Preparatório LPIC-1 Tópico 102 Professor Leandro Trindade leandro.a.trindade@gmail.com Tópico 102 Visão Geral Instalação do Linux e gerenciamento de pacotes Definir layout do disco rígido Instalação de
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 maisThreads em Ambiente LINUX. Estudo e testes com a biblioteca pthreads
Universidade Federal do ABC Disciplina: BC 1518 Sistemas Operacionais (SO) Prática: Threads Atividade 3 Threads em Ambiente LINUX Objetivo Estudo e testes com a biblioteca pthreads Threads Como vimos em
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 mais1 System Calls no Linux
Sistemas Operacionais Laboratorio - System Calls Adaptação do Laboratório 1 - Prof. Eduardo Zambon 1 System Calls no Linux Vamos mencionar aqui alguns pontos já discutidos em aula e introduzir novos conceitos
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 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 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 2 Ambiente de Desenvolvimento
Leia maisKERNEL LINUX. Por Jussara Reis
KERNEL LINUX Por Jussara Reis KERNEL O kernel do Linux foi idealizado pelo estudante de ciência da computação finlandês Linus Benedict Torvalds da Universidade de Helsinque na Finlândia, em 1991. Torvalds
Leia maisCompilação do Kernel
UNIVERSIDADE FEDERAL DO CEARÁ CAMPUS QUIXADÁ CURSO DE REDES DE COMPUTADORES EDIGLEISON DA SILVA BARBOSA FRANCISCO DE ASSIS DA SILVA MATHEUS MEDEIROS DA CRUZ OTÁVIO SILVA PIRES PAULO TARSO JUNIOR TUTORIAL
Leia maisALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal
ALGORITMOS AULA 01 Baseado nas aulas do Prof. Jorgiano Vidal LINGUAGEM C Uma das grandes vantagens do C é que ele possui tanto caracterìsticas de "alto nìvel" quanto de "baixo nìvel". Linguagem de propósito
Leia maisUniversidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real.
Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real 1 Pacotes Necessários RTAI Instalação Prof. Walter Fetter Lages 1 de outubro
Leia maisRecompilação do Núcleo como Atividade Prática no gerenciamento de Chamadas de Sistemas no Ensino de Sistemas Operacionais
Recompilação do Núcleo como Atividade Prática no gerenciamento de Chamadas de Sistemas no Ensino de Sistemas Operacionais Ian Andrade Moreira¹, Swami de Paula Lima¹, Hamilton José Brumatto¹ 1 Departamento
Leia maisDesenvolvimento 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 maisRTAI Instalação. Prof. Walter Fetter Lages 2 de maio de 2014
Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica Programa de Pós-Graduação em Engenharia Elétrica ELE213 Programação de Sistemas de Tempo Real RTAI Instalação
Leia maisFedora a fundo. Luís Felipe Bretas Marzagão
Fedora a fundo Luís Felipe Bretas Marzagão duli@easylifeproject.org O que é Fedora? É o nome de um chapéu Também. É um projeto Sim, mas um projeto que já saiu do papel e está em constante evolução. É um
Leia maisInstalação Wiser. Sistema Operacional Linux Red Hat
Instalação Wiser Sistema Operacional Linux Red Hat Pré-Requisitos Software Java JRE 1.8 Servidor de Aplicação: Tomcat7+ ou JBoss 6.1+ Banco de dados (Mysql, Postgres, SqlServer e Oracle) Release da Aplicação
Leia maisCompilando o Kernel Linux
Compilando o Kernel Linux Fonte: http://www.digitalhermit.com/linux/kernel- Build-HOWTO.html Atribuindo uma versão única Evitar que os módulos do kernel atual sejam modificados indevidamente Arquivo Makefile
Leia maisAdministração Central Cetec Capacitações Capacitação Sistema Operacional Linux Semana III
Capacitação Sistema Operacional Linux Semana III A estrutura dos diretórios do sistema GNU/Linux Gerenciador de diretórios e arquivos Para quem está acostumado a operar o Windows, vai notar que existe
Leia maisAdministração de sistemas Linux. Os níveis de inicialização do sistemas (runlevel)
Administração de sistemas Linux Os níveis de inicialização do sistemas (runlevel) Runlevel: No Linux e outros sistemas baseados no Unix o runlevel indica o modo de operação atual da máquina, definindo
Leia maisBoot gráfico no Debian com BootSplash
Boot gráfico no Debian com BootSplash Tiago Bortoletto Vaz 1.0 - Novembro de 2004 Resumo Este documento descreve como utilizar o bootsplash para obter um boot gráfico no Debian.
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 maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA Sistemas Operacionais I 2016/1
1 Descrição Geral Atividade Experimental 2 Programa para calcular o MÁXIMO ou o MÍNIMO dos números de um arquivo O objetivo desta atividade é implementar um programa para determinar o maior ou o menor
Leia maisLABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO
LABORATÓRIO DE SISTEMAS OPERACIONAIS PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO Sistema Operacional Conteúdo retirado do livro Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo
Leia mais1/16 MAKEFILES Makefiles Programação II
1/16 MAKEFILES Definição 2/16 Definição O makefile - é um arquivo para configuração de compilação utilizado pelo programa make, - a ideia é simplificar e agilizar a compilação de programas. Vantagens e
Leia maisMakefiles O que é mak a efi f le make
O que é O makefile é um arquivo para configuração de compilação utilizado pelo programa make, cuja ideia é simplificar e agilizar a compilação de programas. Vantagens e uso Evita a compilação de arquivos
Leia maisPonteiros e Tabelas. K&R: Capítulo 5
Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros
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 - Introdução Copyright 2014 IFRN Agenda Conceitos básicos ANSI C Hello World Funções em C Exercícios 2 /26 A linguagem
Leia maisLaboratório de Programação - Exercício 30
Laboratório de Programação - Exercício 30 Testes automáticos João Araujo Ribeiro jaraujo@uerj.br Universidade do Estado do Rio de Janeiro Departamento de Engenharia de Sistemas e Computação João Araujo
Leia maisCarlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Motivação para o uso da linguagem C Entendendo Estrutura de Dados Revisão da Linguagem C Tipos primitivos Vetores
Leia maisGalileo Gen2. Walter Fetter Lages
Galileo Gen2 Walter Fetter Lages fetter@ece.ufrgs.br Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia Semana Acadêmica 2015 Engenharia
Leia maisGerenciando sistemas de arquivos
Voltar Gerenciando sistemas de arquivos Criando um disquete de boot (inicialização) Os disquetes de boot são muito utilizados nos casos onde acontece algum problema na inicialização do sistema operacional.
Leia mais1º Exame 14 de Junho de Duração: 2h30 (+15 min) Número: Nome: Notas
Exame A Programação MEEC 2º Semestre 2017/18 1º Exame 14 de Junho de 2018. Duração: 2h30 (+15 min) Número: Nome: Notas Composição do teste: 4 folhas com problemas para resolver. Existem 9 problemas para
Leia maisComputação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas
Computação 2 Aula 10.1 Listas Duplamente Encadeadas Profª. Fabiany fabianyl@utfpr.edu.br ListaEncadeada.h #ifndef _LISTAENCADEADA_H_ #define _LISTAENCADEADA_H_ #include #include #include
Leia maisCriando uma System Call no Minix
Criando uma System Call no Minix Tarcísio E. M. Crocomo Universidade Federal de Santa Catarina 25 de Maio de 2011 Sumário Introdução ao sistema de mensagens. Criando nossa syscall Criando nossa função
Leia maisBoot e shutdown. Administração de Sistemas 2015/2016 Pedro Brandão. Referências dos slides
Boot e shutdown Administração de Sistemas 2015/2016 Pedro Brandão Referências dos slides O conteúdo destes slides é baseado no livro da disciplina: Unix and Linux System Administration Handbook (4ªEd)
Leia maisINSTALACAO PRODUTOS DIGIVOICE NO ISSABEL PREPARAÇÃO DO SISTEMA
======================================== INSTALACAO PRODUTOS DIGIVOICE NO ISSABEL ======================================== Suporte DigiVoice Versão testada: issabel4-usb-dvd-x86_64-20170714.iso
Leia maisFunções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná
em C Linguagem de Programação Estruturada I Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Sumário Funções: Conceitos; Forma Geral das funções; Regras de Escopo; Argumentos
Leia maisOpenWrt: modelagem do
Instituto Federal do Ceará Essas apresentação possui um acumulado de informações de mais de 9 meses de pesquisa e desenvolvimento em redes mesh utilizando o firmware Openwrt. OpenWrt: modelagem do 1 código
Leia maisDepartamento de Engenharia Informática. Sistemas Operativos 1. Utilitário Make
Departamento de Engenharia Informática Sistemas Operativos 1 Utilitário Make Março 2003 1. Modelo de Compilação da Linguagem C Compilar um programa muito simples em C requer, pelo menos, o ficheiro de
Leia maisMaterial sobre Funções AEDS 1
Material sobre Funções AEDS 1 1 Funções - revisão Funções definem operações que são usadas frequentemente Funções, na matemática, requerem parâmetros de entrada e definem um valor de saída 2 Funções -
Leia maisTAD: Tipo Abstrato de Dados (parte 2)
TAD: Tipo Abstrato de Dados (parte 2) SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Modularização em C Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c
Leia maisUniversidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula
Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula Tópicos Conceitos Modelos multithreads Bibliotecas Opções de criação
Leia maisSub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto
Sub-rotinas em C Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Sub-rotinas: Função e Procedimentos A função main Variáveis globais e locais Escopo de variáveis Passagem
Leia maisCurso de Programação C em Ambientes Linux Aula 05
Curso de Programação C em Ambientes Linux Aula 05 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo
Leia maisLinguagem de Programação. Thiago Leite Francisco Barretto
Linguagem de Programação Thiago Leite Francisco Barretto SCHILDT, H. C Completo e Total. 3ª Edição. São Paulo: Makron, 1997. Bibliografia Ementa
Leia maisCriação de Processos Fork( ) Exec( )
Criação de Processos Fork( ) Exec( ) 8/23/18 1 Chamadas de Sistema: Process Management 2 Chamada fork( ) / exec( ) 3 Esboço de uma shell while (TRUE) { /* repeat forever */ type_prompt( ); /* display prompt
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Leia maisTAD: Tipo Abstrato de Dados (parte 2)
TAD: Tipo Abstrato de Dados (parte 2) SCC0502 Algoritmos e Estruturas de Dados I Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c Denominados de módulos Cada módulo deve
Leia maisps: Process Status - Apresenta o estado dos processos ps a: Outros utilizadores ps u: Info Utilizador
Trivia Quantas partições primárias um disco pode ter? /dev/hda7 refere-se a uma partição primária ou estendida Qual será o nome do dispositivo relativo ao disco SCSI com o endereço mais baixo Quantas partições
Leia maisFedora para iniciantes. Luís Felipe Bretas Marzagão duli@easylifeproject.org
Fedora para iniciantes Luís Felipe Bretas Marzagão duli@easylifeproject.org O que é Fedora? É o nome de um chapéu Também. É um projeto Sim, mas um projeto que já saiu do papel e está em constante evolução.
Leia maisSSC300- Linguagens de Programação e Aplicações Profa Vânia de Oliveira Neves. ICMC/USP São Carlos
Funções SSC300- Linguagens de Programação e Aplicações Profa Vânia de Oliveira Neves ICMC/USP São Carlos Slides baseados no material gentilmente cedido pela Profa Simone Senger Souza 2 MODULARIZAÇÃO Um
Leia maisDepurando Programas. Prof. Alexandre Beletti Ferreira. Depurador. Programa que se conecta a outros programas de software e os controla, permitindo:
Depurando Programas Prof. Alexandre Beletti Ferreira Depurador Programa que se conecta a outros programas de software e os controla, permitindo: Executar passa à passo um código (single stepping) Rastrear
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 maisExercícios Avaliativos Memória Compartilhada
1ª Avaliação Faculdades Integradas de Caratinga Sistemas Distribuídos Jacson RC Silva Exercícios Avaliativos Memória Compartilhada Uma posição de memória compartilhada é identificada por uma chave. Essa
Leia maisComandos. Sistema Operacional GNU/Linux. Para Manipulação de Contas
Comandos Para Manipulação de Contas Instituto Federal de Educação, Ciência e Tecnologia do Triângulo Mineiro Prof. Edwar Saliba Júnior Agosto / 2017 1/23 Comando adduser Adiciona um usuário ou grupo no
Leia maisInstalador e Operador de Sistemas de Telefonia e Comunicação de Dados
Redes Gerência e a Internet de Redes Instalador e Operador de Sistemas de Telefonia e Comunicação de Dados Conceitos Básicos 01 E-mail: euberchaia@yahoo.com.br Site: www.echaia.com Sistema de Arquivos
Leia maisLPI nível 2: Aula 1 Conheça o kernel Linux e saiba como aplicar patches, configurá-lo, compilá-lo e manipular seus módulos. por Luciano Siqueira
TUTORIAL Primeira aula da preparação LPIC-2 Stefan Hellwig - www.sxc.hu LPI nível 2: Aula 1 Conheça o kernel Linux e saiba como aplicar patches, configurá-lo, compilá-lo e manipular seus módulos. por Luciano
Leia maisGerando um programa executável a partir de um módulo Python
Gerando um programa executável a partir de um módulo Python Wendel Melo (Departamento de Ciência da Computação UFRJ), Notas de aula de Computação II 15/03/2012 A linguagem de programação Python segue o
Leia maisProgramar com o CARMEN
Apêndice B Programar com o CARMEN Este anexo descreverá os passos básico para se criar um novo módulo utilizando CARMEN. O documento de referência utilizado, contendo mais informações sobre estilos de
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 maisAlgoritmos e Estruturas de Dados I (DCC/003) Funções
Algoritmos e Estruturas de Dados I (DCC/003) Funções Funções Funções definem operações que são usadas frequentemente Funções, na matemática, requerem parâmetros de entrada, e definem um valor de saída
Leia maisPreprocessador. Macros. #include. #define
Preprocessador O preprocessamento é uma das primeiras etapas na compilação do código em C. Toda linha que começa com # é uma diretiva para o preprocessador, e se extende até o fim da linha (diferentemente
Leia maisMINIX File System Visualização de i-nodes e blocos
Projeto 5 MINIX File System Visualização de i-nodes e blocos Prof. Jorge Kinoshita Grupo 06 Fabio Sendoda Yamate 5436238 Leandro Cordeiro David 5432391 Marcio Jun Hisamoto 5433281 Agosto/2008 Tabela de
Leia maisRevisão LPI101. Tópicos e Objetivos. - 1.102 Instalação e Gerenciamento de Pacotes do Linux. - 1.104 Dispositivos, Sistemas de Arquivos Linux e o FHS
Tópicos e Objetivos - 1.101 Hardware e Arquitetura - - 1.103 Comandos GNU e Unix - 1.104 Dispositivos, Sistemas de Arquivos Linux e o FHS - 1.1.10 Sistema Xwindow 65 Questões em 90 minutos = 1m24s por
Leia maisApêndice 1. Padrão de composição de módulos
Padrão de composição de módulos - 1 Apêndice 1. Padrão de composição de módulos O presente padrão tem por objetivos: Assegurar a existência de definições de interfaces entre módulos; Assegurar a consistência
Leia maisENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO Algoritmos Conceitos Iniciais. Prof. Luiz Fernando Laguardia Campos FMS
ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO Algoritmos Conceitos Iniciais Prof. Luiz Fernando Laguardia Campos FMS lflcampos@machadosobrinho.com.br Compilação/Interpretação Um compilador ao receber como entrada
Leia maisProgramação Estruturada
Programação Estruturada Ponteiros Parte 1 Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Ponteiros Ponteiro Ponteiros
Leia maisprim = A ; prim = &A[0];
57 12 - MAIS SOBRE APONTADOR 12.1 - Ponteiros e arrays Em C, ponteiros e matrizes são tratados de maneira semelhante. 12.1.1 - Nome O nome é um ponteiro, ou seja, aponta (contém o endereço) para o primeiro
Leia maisGilberto A. S. Segundo. 24 de agosto de 2011
Exercícios - Alocação Dinâmica Gilberto A. S. Segundo Programação Aplicada de Computadores Engenharia Elétrica Universidade Federal do Espírito Santo - UFES 24 de agosto de 2011 1 / 23 Grupo de e-mail
Leia maisInstalando o Ponto Secullum 4.0
Instalando o Ponto Secullum 4.0 Prerrequisitos e configurações do Sistema Operacional Primeiramente, precisamos de uma máquina com uma configuração adequada para trabalharmos com rapidez e segurança com
Leia maisSSC0640 Sistemas Operacionais I
SSC0640 Sistemas Operacionais I 2ª Aula Conceitos Básicos Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Slides adaptados de Marcos José Santana / Regina H. C. Santana / Luciana A. F. Martimiano baseados
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 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 maisADMINISTRAÇÃO DE SERVIÇOS EM SISTEMAS OPERACIONAIS DE ARQUITETURA ABERTA
ADMINISTRAÇÃO DE SERVIÇOS EM SISTEMAS OPERACIONAIS DE ARQUITETURA ABERTA AULA 01 APRESENTAÇÃO DO LINUX Prof. Othon Marcelo Nunes Batista Mestre em Informática Roteiro Introdução Linux Históriado Linux
Leia maisAula 10: Funções (Parte III)
Aula 10: Funções (Parte III) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Baseado nos slides do Prof. Guillermo Cámara-Chávez Aulas anteriores Funções Ponteiros
Leia maisAula 14 Listas Duplamente Encadeadas. prof Leticia Winkler
Aula 14 Listas Duplamente Encadeadas prof Leticia Winkler 1 Lista Duplamente Encadeada É um tipo de lista encadeada que pode ser vazia (NULL) ou que pode ter um ou mais nós, sendo que cada nó possui dois
Leia maisMétodos Computacionais em Física
Métodos Computacionais em Física Tatiana G. Rappoport tgrappoport@if.ufrj.br 2014-2 Determinação das raizes de uma função Em muitos problemas é necessáŕio encontrar a solução da equação f(x) = 0 e frequentemente
Leia maisProcessos. Conceitos Básicos
Processos Conceitos Básicos Processo Abstração usada pelo S.O. para designar a execução de um programa. (1) É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos
Leia maisGuia Rápido: GCC, Makefile e Valgrind.
Guia Rápido: GCC, Makefile e Valgrind. Alexandro Ramos 10 de setembro de 2015 1 Sumário 1 Introdução 3 2 GCC 3 2.1 Outros parâmetros úteis no GCC....................... 4 3 Makefiles 6 3.1 Makefile 1....................................
Leia maisComputadores de Programação (DCC/UFRJ)
Computadores de Programação (DCC/UFRJ) Aula 14: 04 de junho de 2013 1 2 ...antigamente.. No início da Computação, todos os programas eram escritos em linguagem de montagem Complexidade, propenso a erros,
Leia maisIntrodução à Lógica de Programação
Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação Programação Tradução de um algoritmo para uma linguagem de programação Cada linguagem de programação possui sua sintaxe
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 - Organização de um programa Copyright 2014 IFRN Agenda Escopo de variáveis Local Global Macros #define Organizando
Leia mais