Trabalho de Sistemas Operacionais Prof. Fernando Luís Dotti IMPLEMENTAÇÃO DE UMA NOVA CHAMADA DE SISTEMA NO LINUX

Tamanho: px
Começar a partir da página:

Download "Trabalho de Sistemas Operacionais Prof. Fernando Luís Dotti IMPLEMENTAÇÃO DE UMA NOVA CHAMADA DE SISTEMA NO LINUX"

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 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 mais

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 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 mais

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 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 mais

SEMPRE FAÇA BACKUP DOS ARQUIVOS DE DADOS DE UMA MÁQUINA ANTES DE INSTALAR OUTRO SISTEMA OPERACIONAL

SEMPRE 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 mais

Componentes do kernel Compilando o kernel Aplicando patch no kernel Configurar, compilar, instalar um kernel personalizado Gerenciar, consultar o

Componentes 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 mais

Alguns 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) 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 mais

Sua Primeira Modificação do Kernel

Sua 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 mais

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Listas 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 mais

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

IDES 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 mais

COS Sistemas Operacionais. SystemCalls() [Linux Kernel Development, 2 nd edition] Prof. Vítor Santos Costa

COS 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 mais

Introduçã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 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 mais

Curso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber 3/10/ :43 AM

Curso 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 mais

Sobre o Visual C++ 2010

Sobre 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 mais

Aula 2: Introdução a Linguagem C

Aula 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 mais

Sistemas Operacionais. Laboratório 1 (Ambiente de Aprendizado)

Sistemas 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 mais

Compilando o Kernel Linux

Compilando 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 mais

Preparatório LPIC-1 Tópico 102

Preparató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 mais

16. Compilação no Linux

16. 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

Threads em Ambiente LINUX. Estudo e testes com a biblioteca pthreads

Threads 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 mais

Sistemas Operacionais II. Linux - Introdução

Sistemas 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 mais

1 System Calls no Linux

1 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 mais

Básico: estrutura de programa, sintaxe Interface com linha de comando

Bá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 mais

Arquitetura e Organização de Computadores. Compiladores e processamento

Arquitetura 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 mais

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 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 mais

KERNEL LINUX. Por Jussara Reis

KERNEL 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 mais

Compilação do Kernel

Compilaçã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 mais

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

ALGORITMOS 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 mais

Universidade 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. 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 mais

Recompilaçã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 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 mais

Desenvolvimento para Sistemas Embarcados (CEA 513) Sistema de Arquivos Raiz & Componentes do Kernel

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 mais

RTAI Instalação. Prof. Walter Fetter Lages 2 de maio de 2014

RTAI 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 mais

Fedora a fundo. Luís Felipe Bretas Marzagão

Fedora 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 mais

Instalação Wiser. Sistema Operacional Linux Red Hat

Instalaçã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 mais

Compilando o Kernel Linux

Compilando 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 mais

Administração Central Cetec Capacitações Capacitação Sistema Operacional Linux Semana III

Administraçã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 mais

Administraçã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) 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 mais

Boot gráfico no Debian com BootSplash

Boot 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 mais

2 SYSCALLs: O que são

2 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 mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA Sistemas Operacionais I 2016/1

UNIVERSIDADE 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 mais

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

LABORATÓ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 mais

1/16 MAKEFILES Makefiles Programação II

1/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 mais

Makefiles O que é mak a efi f le make

Makefiles 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 mais

Ponteiros e Tabelas. K&R: Capítulo 5

Ponteiros 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 mais

INSTITUTO 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 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 mais

Laboratório de Programação - Exercício 30

Laborató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 mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos 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 mais

Galileo Gen2. Walter Fetter Lages

Galileo 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 mais

Gerenciando sistemas de arquivos

Gerenciando 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 mais

1º Exame 14 de Junho de Duração: 2h30 (+15 min) Número: Nome: Notas

1º 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 mais

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

Computaçã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 mais

Criando uma System Call no Minix

Criando 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 mais

Boot 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 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 mais

INSTALACAO PRODUTOS DIGIVOICE NO ISSABEL PREPARAÇÃO DO SISTEMA

INSTALACAO 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 mais

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

Funçõ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 mais

OpenWrt: modelagem do

OpenWrt: 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 mais

Departamento de Engenharia Informática. Sistemas Operativos 1. Utilitário Make

Departamento 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 mais

Material sobre Funções AEDS 1

Material 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 mais

TAD: Tipo Abstrato de Dados (parte 2)

TAD: 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 mais

Universidade 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 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 mais

Sub-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 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 mais

Curso de Programação C em Ambientes Linux Aula 05

Curso 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 mais

Linguagem de Programação. Thiago Leite Francisco Barretto

Linguagem 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 mais

Criação de Processos Fork( ) Exec( )

Criaçã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 mais

Algoritmos e Programação

Algoritmos 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 mais

TAD: Tipo Abstrato de Dados (parte 2)

TAD: 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 mais

ps: Process Status - Apresenta o estado dos processos ps a: Outros utilizadores ps u: Info Utilizador

ps: 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 mais

Fedora para iniciantes. Luís Felipe Bretas Marzagão duli@easylifeproject.org

Fedora 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 mais

SSC300- Linguagens de Programação e Aplicações Profa Vânia de Oliveira Neves. ICMC/USP São Carlos

SSC300- 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 mais

Depurando 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: 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 mais

Estrutura do Sistema Operacional

Estrutura 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 mais

Exercícios Avaliativos Memória Compartilhada

Exercí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 mais

Comandos. Sistema Operacional GNU/Linux. Para Manipulação de Contas

Comandos. 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 mais

Instalador e Operador de Sistemas de Telefonia e Comunicação de Dados

Instalador 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 mais

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 Siqueira

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 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 mais

Gerando um programa executável a partir de um módulo Python

Gerando 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 mais

Programar com o CARMEN

Programar 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 mais

Introdução à Programação

Introduçã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 mais

Algoritmos e Estruturas de Dados I (DCC/003) Funções

Algoritmos 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 mais

Preprocessador. Macros. #include. #define

Preprocessador. 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 mais

MINIX File System Visualização de i-nodes e blocos

MINIX 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 mais

Revisã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

Revisã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 mais

Apêndice 1. Padrão de composição de módulos

Apê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 mais

ENGENHARIA 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 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 mais

Programação Estruturada

Programaçã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 mais

prim = A ; prim = &A[0];

prim = 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 mais

Gilberto A. S. Segundo. 24 de agosto de 2011

Gilberto 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 mais

Instalando o Ponto Secullum 4.0

Instalando 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 mais

SSC0640 Sistemas Operacionais I

SSC0640 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 mais

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Anhanguera 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 <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 mais

ADMINISTRAÇÃO DE SERVIÇOS EM SISTEMAS OPERACIONAIS DE ARQUITETURA ABERTA

ADMINISTRAÇÃ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 mais

Aula 10: Funções (Parte III)

Aula 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 mais

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Aula 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 mais

Métodos Computacionais em Física

Mé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 mais

Processos. Conceitos Básicos

Processos. 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 mais

Guia Rápido: GCC, Makefile e Valgrind.

Guia 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 mais

Computadores de Programação (DCC/UFRJ)

Computadores 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 mais

Introdução à Lógica de Programação

Introduçã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 mais

INSTITUTO 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 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