Licenciatura em Eng.ª Informática Sistemas Operativos - 2º Ano - 1º Semestre. Trabalho Nº 1 - Linux e C

Documentos relacionados
Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009

Sobre o Visual C

FORMAÇÃO WORDPRESS. Desenvolvimento de sites com a plataforma Wordpress. Abel Soares abelbarbosasoares@gmail.com

Modelo Lógico: Tabelas, Chaves Primárias e Estrangeiras

aplicação arquivo Condições Gerais de Utilização

UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais

Gestão de Actas Escolares. Manual Utilizador. (Versão 4)

Conteúdo programático

INF1007: Programação 2 9 Tipos Abstratos de Dados. (c) Dept. Informática - PUC-Rio 1

Manual do Fénix. Gestão da ficha de unidade curricular (Portal de coordenador de ECTS) DSI (Versão 1.0)

Gestão de Sistemas Operacionais I

1. Como fazer uma pesquisa

Ferramentas para FSI

Módulo e-rede Magento v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Linguagem de Programação

OI CLOUD SEJA BEM-VINDO!

epucc.com.br SAIBA COMO INCLUIR INFORMAÇÕES DE COLABORADORES, CENTROS DE CUSTO E RATEIO DE DESPESAS

Gestão Documental. Gestão Documental

TUTORIAL MATLAB Victor Breder 2016

PREFEITURA DO MUNICÍPIO DE PORTO VELHO SECRETARIA MUNICIPAL DE ADMINISTRAÇÃO SEMAD DEPARTAMENTO DE RECURSOS DA TECNOLOGIA DA INFORMAÇÃO DRTI

Anabela Viegas, Recursos Humanos Portal de Gestão Documental do Colaborador Guia para consulta rápida

2 Segmentação de imagens e Componentes conexas

Tutorial para configurar as bibliotecas TerraView e Qt 3 no Visual Studio 2005

Módulo de Aprendizagem I

MANUAL DE INSTALAÇÃO SAT DIMEP PDV CAKE

FECHADURAS RFID PARA CACIFOS

MANUAL DO INSTALADOR XD EM AMBIENTES MICROSOFT WINDOWS

UNIVERSIDADE DO TOCANTINS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PRÁTICA EM PROGRAMAÇÃO DE SISTEMAS

Arquitecturas de Software Enunciado de Projecto

Manual FPO 22-Jan-2007 Actualizado em 03-Fev-2015

AULA 2: INTRODUÇÃO A LINGUAGEM DE C. Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme

GUIÃO DO TRABALHO PRÁTICO INTRODUÇÃO À PROGRAMAÇÃO WEB SISTEMAS DE INFORMAÇÃO EMPRESARIAIS. Faculdade de Engenharia da Universidade do Porto

atualização gratuita *para clientes Solutio com contrato de manutenção ativo.

Cadeira de Tecnologias de Informação. Ano lectivo 2009/2010. Sites dinâmicos. Com Expression Web TI2009/10 EWD_1. Filipa Pires da Silva (2009)

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

1. Introdução Principais pontos de impacto da certificação Entrada na Aplicação Aplicação Não certificada...

Aprenda a instalar a plataforma de monitorização Cacti

Orientações para Inscrição do Grupo e Projeto de Pesquisa

Sistema de Controlo com Acesso Remoto

CONTEÚDOS PROGRAMÁTICOS

UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO UNIVASF SECRETARIA DE TECNOLOGIA DA INFORMAÇÃO STI DEPARTAMENTO DE SISTEMAS DE INFORMAÇÕES

Software PHC com MapPoint 2007

LINGUAGEM C UMA INTRODUÇÃO

Apontamento técnico No. 5, Fevereiro de 2014 Como pedir apoio através do Ajuda Online do CAICC

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Introdução a Administração de Sistemas GNU/Linux

Driver Next Versão 1.0 de Português

Configuração para Uso do Tablet no GigaChef e Outros Dispositivos

Como aplicar permissões aos utilizadores?

PLANIFICAÇÃO INTRODUÇÃO ÀS TECNOLOGIAS DE INFORMAÇÃO BLOCO I

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18

Rentabilize a sua assistência pós-venda e, em simultâneo, surpreenda os seus clientes com o seu profissionalismo

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access

REITORA Ulrika Arns. VICE-REITOR Almir Barros da Silva Santos Neto. DIRETOR DO NTIC Leonardo Bidese de Pinho

Criando scanner para dectar BackupExec vulneráveis ao exploit do Metasploit. Inj3cti0n P4ck3t

,QVWDODomR. Dê um duplo clique para abrir o Meu Computador. Dê um duplo clique para abrir o Painel de Controle. Para Adicionar ou Remover programas

Manual Instalação Web Services Client Web.NewHotel

SISTEMAS OPERATIVOS I

Os passos a seguir servirão de guia para utilização da funcionalidade Acordo Financeiro do TOTVS Gestão Financeira.

Conhecendo o Delphi 2010

10. CPU (Central Processor Unit) Conjunto das instruções Estrutura interna Formato das instruções...

GUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS ENTIDADE GESTORA SOCIEDADE PONTO VERDE

ProLin V1.0. Programa de problemas de programação linear mista

Macros e Programação VBA

Curso de Inverno - CECID

Introdução à Informática

Banco de Dados. Banco de Dados Parte 2. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Curso C: Ponteiros e Arrays

Simulado de Linguagem de Programação Java

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

HEMOVIDA (CICLO DO SANGUE - Gerenciamento de estoque para grandes eventos)

Manual do Usuário (Firma Inspetora) Versão 1.8. CMCP - Controle da Marcação Compulsória de Produtos

Sistema de Recuperação da Senha nos Sistemas Informáticos da FEUP

Informática I. Aula Aula 19-20/06/06 1

Programação de Sistemas Carris

LOGO DO WEBSITE DA FUTURA APP

Instruções para utilização dos Fóruns pelo Grupo dos Consensos Psiquiátricos para Clínicos Gerais 2005

ENG1000 Introdução à Engenharia

Programação e Sistemas de Informação

Disciplina de Introdução à Computação para Engenharia Ambiental

Dicas de Segurança sobre Virus

MANUAL HAE - WEB MANUAL WEB HAE

MARINHA DO BRASIL COMANDO DO CONTROLE NAVAL DO TRÁFEGO MARÍTIMO GUIA RÁPIDO PARA MANUSEIO DO SISTEMA CRIPTOGRÁFICO ÁTRIA

Fundamentos de Sistemas Operacionais

Estrutura de Diretórios Linux. Rodrigo Gentini

Conceitos Básicos de C

ATuLCo. Manual de Instruções. Gestor de Agência de Viagens. ATuLCo Gestor de Agencia de Viagens. Horário Abreu Nr António Felgueiras Nr.

Manual de instalação do Microsoft SQL Server 2008 R2 Express no Windows 10

Manual do Usuário Sistema de Acuidade Visual Digital

Laboratório de Programação. Prof. Oscar Luiz Monteiro de Farias

1 Code::Blocks Criação de projetos

e Autorizador Odontológico

Programação 2009/2010 MEEC

Capítulo 1. Importação de Dados de Instituições Financeiras - Arquivo TXT 3

PROCEDIMENTO INSTALAÇÃO SINAI ALUGUEL

Current Contents Connect

Manual do Usuário. VpetConverter Ferramenta para adequação de documentos para Petições Eletrônicas.

Transcrição:

Trabalho Nº 1 - Linux e C 1. Introdução O sistema Linux e a linguagem C são as ferramentas essenciais de aprendizagem na cadeira de Sistemas Operativos. O sistema Linux é hoje em dia utilizado por milhões de pessoas e empresas em todo o mundo e constitui uma alternativa séria e robusta aos sistemas proprietários comerciais. Trata-se de um sistema avançado e completo, que além disso está em constante evolução. Uma das suas grandes vantagens é ser um sistema de código aberto (Freeware), ao qual qualquer um pode aceder. Por este motivo este sistema constitui uma excelente ferramenta pedagógica, pois a leitura e interpretação do seu código fonte permite compreender, através de exemplos reais, a forma como podem ser implementadas as funcionalidades que constituem um Sistema Operativo. Uma vez que o sistema Linux está essencialmente escrito em C, na maior parte dos casos utilizando os seus conceitos mais avançados, torna-se essencial adquirir rapidamente excelentes conhecimentos nessa linguagem. Com este trabalho pretende-se que os alunos adquiram ou revejam esses conhecimentos, através da realização de programas que irão utilizar directamente funcionalidades do sistema operativo. 2. Ambiente de Trabalho Cada aluno tem acesso a uma estação de trabalho individual, no qual está instalado o sistema Linux Fedora Core 7. Neste primeiro trabalho irá familiarizar-se com o ambiente gráfico (GDM) e os principais comandos do sistema, assim como com o ambiente de desenvolvimento que permite a edição, compilação e execução de programas. 2.1 Criação de Utilizador Cada aluno deverá escolher uma estação de trabalho individual que em princípio irá utilizar durante todas as aulas práticas da cadeira. Nessa estação deverá criar um utilizador que terá por login o seu identificador de aluno, ou seja: a1234567 Não deverão ser utilizados nomes próprios como identificadores de login. Para a criação do utilizador, deverá contactar o professor. 2.2 Pasta de trabalho Uma vez criado o utilizador, este irá dispor de uma pasta ou directoria de trabalho que estará situada em /home/a1234567 Sistemas Operativos 1/5 2007/2008

É aconselhado criar aí uma pasta por cada trabalho a realizar. Assim, o trabalho 1 irá ser realizado no directório: /home/a1234567/trabalho1 É aconselhável não utilizar espaços nos nomes de pastas ou ficheiros pois o interpretador de comandos (bash) não gere os nomes com espaços. Por outro lado maiúsculas e minúsculas são interpretados diferentemente (é case sensitive). 2.3 Interpretador de comandos Depois de realizar o login no sistema, o utilizador dispõe de um interpretador de comandos que lhe permite executar as tarefas pretendidas. Em Linux esse interpretador chama-se bash e deverá adquirir alguma experiência da sua utilização. Cada vez que se escreve um comando e se carrega em Enter, o bash executa o comando indicado, apresenta os resultados e volta a imprimir um prompt ($) que indica que está de novo pronto a receber um comando. Exemplos: $ pwd /a123456/trabalho1 $ date Sun Oct 1 02:08:45 WEST 2006 $ ls Desktop Downloads Examples hello hello.c $ mkdir trabalho1 $ ls -ld trabalho1 drwxr-xr-x 2 a1234567 users 4096 2006-10-01 02:11 trabalho1 3. Ambiente de desenvolvimento C Para escrever programas e os executar, é necessário utilizar um conjunto de ferramentas que no seu conjunto constituem um ambiente de desenvolvimento. O ambiente de desenvolvimento C em Linux pode ser extremamente simples, sendo no mínimo constituído pelas aplicações que a seguir se descrevem. 3.1 Editor de Texto É a aplicação que irá permitir a escrita do programa. Inúmeros editores de texto estão disponíveis em Linux, desde os mais simples (vi e jed) até aos mais complexos (emacs) passando pelos mais clássicos kate e kwrite, que fazem parte das aplicações disponíveis na barra de comandos do ambiente gráfico. Os ficheiros criados contendo programas em C deverão ser guardados com a extensão.c Assim, por exemplo para editar um programa hello.c com o editor kate pode-se escrever: $ kate hello.c Ou então abrir o editor através do menu de programas e procurar o programa na pasta de trabalho. Se este não existir deverá obviamente ser usada a opção Save as para o guardar. 3.2 Compilador C Sistemas Operativos 2/5 2007/2008

Uma vez criado o programa em C, é necessário transformá-lo num programa executável. Para isso é utilizado o compilador C (cc ou gcc) que irá realizar uma série de operações sobre o programa (pré-processamento, verificação do código, compilação, assemblagem, edição de ligações), para finalmente criar a imagem executável. Para realizar esta operação deve ser executado o comando: $ cc hello.c Se não for especificado o nome do ficheiro executável, este recebe o nome por defeito que é a.out. Para definir o nome do programa executável utiliza-se a opção: 3.3 Execução e Debug $ cc hello.c -o hello A execução de um programa é feita através da invocação do seu nome na linha de comandos. Assim para executar o programa acima criado: $./hello A utilização do./ em frente do nome é necessária para que o bash procure o nome na pasta em que foi criado o executável. Existe outra forma de definir a pasta onde se encontram os programas executáveis do utilizador, através da modificação da variável de ambiente (environment) PATH, que indica ao interpretador de comandos onde deve procurar os comandos executáveis. Por exemplo o comando: $ PATH=$PATH:/home/a1234567/trabalho1 adiciona à variável PATH o caminho para a pasta trabalho1 onde estão armazenados os ficheiros deste trabalho. No caso do programa apresentar erros na sua execução que sejam difíceis de encontrar, pode-se recorrer ao GNU Debugger, uma aplicação que permite realizar a execução do programa de forma controlada. Para tal é necessário compilar o programa com a opção -g de forma a que o executável guarde infomação adicional sobre o programa (tabela de símbolos, etc ): $ cc hello.c -g -o hello O debugger é de seguida invocado através do comando: $ gdb hello Desta forma o debugger toma o controlo da sessão, ou seja os comandos inseridos serão agora por ele interpretados, e não pelo bash. Assim, o prompt que aparece agora é o seguinte: (gdb) Sistemas Operativos 3/5 2007/2008

As opções desta ferramenta são múltiplas, e convém consultar o manual de utilização, através da invocação do comando man gdb (ou consultando o manual on-line). As opções mais utilizadas são as seguintes: p: para listar o código fonte do ficheiro b: para colocar um breakpoint (ponto de paragem) r: para lançar a execução do programa s: para executar o programa passo a passo Exemplo: (gdb) l 1 main() 2 { 3 printf("hello\n"); 4 } (gdb) b 3 Breakpoint 1 at 0x804837c: file hello.c, line 3. (gdb) r Starting program: /home/jrogado/programs/hello Breakpoint 1, main () at hello.c:3 3 printf("hello\n"); (gdb) s Hello 4 } Vemos no exemplo a listagem, inserção de um breakpoint, execução do programa que pára no breakpoint inserido, e a execução passo a passo da instrução printf. O programa poderia ser assim executado passo a passo até se descobrir a eventual causa de erro. 4. Trabalho a realizar Depois de se ter familiarizado com o ambiente de trabalho, irá agora abordar um trabalho de programação em C. O programa seguinte realiza uma série de operações sobre strings (cadeias de caracteres) utilizando conjunto de métodos ou funções auxiliares das quais só são fornecidas as definições. #include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #define BUFSIZE 512 int string_size(char *str); int string_compare(char *s1, char *s2); char *string_copy(char *dest, char *source); char *string_append(char *dest, char *source); main(int argc, char *argv[]) { char *str1, *str2; int size1, size2; char buffer[bufsize]; int equal, size; if (argc!= 3){ Sistemas Operativos 4/5 2007/2008

fprintf(stderr, "Usage %s <string1> <string2>\n", argv[0]); _exit(1); } str1 = argv[1]; str2 = argv[2]; // Calcular o comprimento de cada string e imprimir os valores size1 = string_size(str1); size2 = string_size(str2); printf("string 1: %s %d String 2: %s %d\n", str1, size1, str2, size2); // Comparar as duas strings e indicar se sao iguais ou diferentes equal = string_compare(str1, str2); // Copiar a primeira string para um novo buffer // testando primeiro se ha espaco para a copia string_copy(buffer, str1); // Juntar a segunda string ao final primeira da string_append(buffer, str2); size = string_size(buffer); } // Imprimir a string resultante e o seu tamanho // testando primeiro se ha espaco para a copia printf("string resultante: %s %d\n", buffer, size); 4.1 Copie o código acima para um ficheiro com o nome strings.c e experimente realizar a sua compilação. Interprete os erros que obtém. 4.2 Implemente as funções que faltam de forma a não obter erros de compilação e a que o programa implemente as funcionalidades esperadas. Não se esqueça de realizar os testes de coerência de forma a evitar ultrapassar o tamanho do buffer utilizado para a cópia. 4.3 Substitua as funções que implementou por funções da biblioteca C de forma a que as funcionalidades se mantenham. 5. Prazo de Entrega do Trabalho O prazo para a entrega dos trabalhos é de duas semanas a contar da aula em que o enunciado foi apresentado. Não serão aceites trabalhos fora do prazo. A entrega deverá ser feita por e-mail num ficheiro zip (ou rar) contendo um relatório em PDF e as listagens dos programas realizados, obedecendo OBRIGATORIAMENTE ao seguinte formato: 6. Referências a123456-trabalho-n.zip The C Programming Language, 2nd Edition (Ansi C) de by Brian W. Kernighan, Dennis M. Ritchie, ed. Prentice Hall. The C Book, second edition, by Mike Banahan, Declan Brady and Mark Doran, ed. Addison Wesley http://publications.gbdirect.co.uk/c_book Manual de Referência (man pages) Linux on-line: http://man.he.net Sistemas Operativos 5/5 2007/2008