ICO-2011-2-tiago

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Diário de aula de ICO - 2011-1 - Prof. Tiago Semprebom

Instrutor

Professor: Tiago Semprebom
Email: tisemp@ifsc.edu.br
Diretório web:: tele.sj.ifsc.edu.br/~tisemp
Atendimento paralelo: 2a feira 17:30h - 18:30h e 4a feira 14:00h - 15:00h (Lab. de Desenvolvimento de Tele)

Referências adicionais

Softwares

Será usado como plataforma de estudo o sistema operacional Ubuntu Linux 10.04 LTS. Para obtê-lo há essas opções:

  1. Fazer o download por conta própria (aprox. 700 MB)
  2. Trazer um CD-R virgem para fazer cópia aqui no IFSC
  3. Usar uma máquina virtual do VirtualBox (menos recomendado, pois o Linux roda mais lento)
  4. Instalar o VirtualBox em seu computador para executar a máquina virtual

Sistemas Operacionais

05/08: Apresentação

  • Visita à RBS

Tópicos: Apresentação da disciplina, plano de aula, trabalhos e métodos de avaliação.

Videos ilustrativos

Atividades

  1. Leia a Parte I - Evolução do Computador contida na História do Computador. Na próxima aula será feita uma mini-avaliação sobre esse conteúdo !
  2. Existem atualmente muitos tipos de de computadores, que vão desde celulares e PDAs até grandes computadores modulares. Faça uma pesquisa sobre tipos de computadores que podem ser encontrados hoje em dia. Busque informações sobre suas características, fotografias, que tipos de programas são neles usados, que pessoas os utilizam e como são suas interfaces com o usuário. O resultado de sua pesquisa deve estar em um documento .odt com no máximo 5 páginas em fonte tamanho 11.

Computadores atuais

Cada contribuição ficará registrada na wiki, e será considerada para sua avaliação na disciplina.

Obs: para poder editar a wiki você precisa primeiro se cadastrar no Portal do Aluno.

25/03: Introdução aos sistemas computacionais

  • Sistemas computacionais; visão geral de sistemas operacionais; histórico de sistemas operacionais (resumo).
  • Estrutura de um computador
    • Hardware: componentes físicos (processador, video, memória, HD, ...)
    • Software: componenter lógicos, referenciados como programas ... incluindo o sistema operacional

Atividade

Pesquise a estrutura (hardware e sistema operacional) dos seguintes computadores:

  • Computadores Dell Precision
  • iPad
  • Console Xbox
  • Console Wii
  • Console Playstation 3
  • Notebook Sony Vaio
  • iPhone
  • Roteador Cisco série 800
  • Amazon Kindle
  • Algum telefone celular
  • Tabblet Motorola Xoom
  • Laptop Intelbras

Videos ilustrativos

Alguns textos interessantes sobre história dos sistemas operacionais:

Reproduzindo o voo dos pássaros: Festo


01/04: Introdução aos sistemas computacionais

  • Continuação, exercícios
  • Particionamento de disco utilizando gparted

08/04: Introdução ao Linux

  • Instalação do Linux em máquinas virtuais

15/04: Introdução ao Linux

  • Iniciar e encerrar uma sessão no Linux;
  • Se familizarizar com a interface do GNOME;
  • Usar o navegador de arquivos Nautilus;
  • Operar sobre diretórios: navegar, criar, remover, remover recursivamente, listar, copiar e renomear;
  • Trabalhar o conceito de nomes absolutos e relativos usando ".", "..", "~" e "-"
  • Trabalhar o conceito de diretório de trabalho e de diretório de entrada;
  • Criar, remover, renomear e listar arquivos ordinários;
  • Outros: trabalhar o conceito de arquivo escondido e usar TAB para autocompletar nomes no shell;
  • Usar o manual online (man);

Roteiro desta aula:

Exercícios Extras:

  1. Partindo do subdiretório /home/aluno/Desktop, e usando somente caminhos (pathnames) relativos, indique a sequência de comandos necessária para visitar sucessivamente os seguintes subdiretórios:
    • /home/aluno
    • /home/visita
    • /home/visita/Documentos
    • /home/visita/public_html/imagens
    • /etc/default
    • /usr/share/docs
    • /usr/share/docs/python/manual/html
    • /usr/lib/browser-plugins
    • /usr/local/etc
    • /usr/local/man/man1
    • /home/aluno
    • /home/aluno/Desktop
  2. Partindo do subdiretório /home/aluno/Desktop, informe a sequência de subdiretórios (indique-os com seus caminhos absolutos) visitados se forem seguidos os seguintes caminhos relativos:
    • ../Imagens/Fotos
    • 2010/07
    • ../../2009
    • ../../../bin
    • ../../manuel/docs
    • ../../../etc/init.d
    • ../rc5.d
    • ../../var/log/apache2
    • ../../tmp
    • ../../lib/modules
    • ../../usr/bin
    • ../lib/X11
    • ../..

22/04: Introdução ao Linux

  • Rever as operações sobre arquivos e diretórios com mais detalhes;
  • Compreender o que é shell e a expansão do shell;
  • Operar sobre diretórios e arquivos usando os coringas: *, ? e [ ];
  • Remover recursivamente diretórios e seus conteúdos;
  • Usar seta para recuperar comandos da história de comandos;

Roteiros desta aula:

Exercícios Extras:

  1. Usando a interface gráfica, organize os arquivos contidos aqui. Eles devem ser colocados nos subdiretórios Imagens, Videos e Documentos, de acordo com seus tipos.
  2. Refaça a questão anterior, porém usando a interface de linha de comando (o shell).

Obs: para extrair os arquivos do exercício faça assim:

aluno@DX~$ tar xjf sop.tar.bz2

... e veja que aparecerá um subdiretório sop com todos os arquivos do exercício lá dentro.

29/04 e 06/05 Introdução ao Linux

  • Rever operações sobre diretórios
  • Usar editores de texto para criar e editar arquivos
  • Uso dos comandos cat, more e less para visualizar o conteúdo de arquivo
  • Fazer, remover e visualizar links simbólicos

Roteiro desta aula:

20: Utilização Editor de texto vi e redirecionamento

  • Aprender a utilizar minimamente o editor vi
  • Redirecionamento de saída padrão

Entrada e saída padrão

Todo processo possui uma saída padrão, que corresponde a um arquivo ou dispositivo onde os dados de saída do processo (ex: mensagens de texto) serão mostrados. E assim como existe uma saída padrão, todo processo possui uma entrada padrão que corresponde ao arquivo ou dispositivo de onde por default são obtidos os dados de entrada.

Sop-redir.png

Redirecionamento de saída padrão

Normalmente a saída padrão de um processo é a tela do terminal, mas ela pode ser redirecionada para um arquivo ou para outro dispositivo. Assim, as mensagens de texto que um processo gera podem ser guardadas em um arquivo para posterior utilização. No exemplo abaixo, a listagem dos processos foi guardada no arquivo processos.txt:

aluno@D1:~$ ps ax > processos.txt
aluno@D1:~$

O redirecionamento de saída padrão se faz com o símbolo > seguido do nome do arquivo. Note que nada aparece na tela, uma vez que a saída se tornou o arquivo processos.txt. Após executar o comando acima, veja o conteúdo de processos.txt:

aluno@D1:~$ less processos.txt
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:03 /sbin/init
    2 ?        S<     0:00 [kthreadd]
    3 ?        S<     0:00 [migration/0]
    4 ?        S<     0:00 [ksoftirqd/0]
    5 ?        S<     0:00 [watchdog/0]
    6 ?        S<     0:00 [migration/1]
    7 ?        S<     0:00 [ksoftirqd/1]
    8 ?        S<     0:00 [watchdog/1]
    9 ?        S<     0:00 [events/0]
   10 ?        S<     0:00 [events/1]
   11 ?        S<     0:00 [khelper]
   12 ?        S<     0:00 [kstop/0]
   13 ?        S<     0:00 [kstop/1]
   14 ?        S<     0:00 [kintegrityd/0]
   15 ?        S<     0:00 [kintegrityd/1]
   16 ?        S<     0:00 [kblockd/0]
   17 ?        S<     0:00 [kblockd/1]
   18 ?        S<     0:00 [kacpid]
   19 ?        S<     0:00 [kacpi_notify]
   20 ?        S<     0:00 [cqueue]
   21 ?        S<     0:00 [ata/0]
   22 ?        S<     0:00 [ata/1]
processos.txt

Como se pode ver, o texto que apareceria na tela foi guardado em processos.txt. Experimente executar novamente o comando ps ax > processos.txt e veja o resultado. O que aconteceu com o arquivo processos.txt ?

Quando se deseja redirecionar a saída de um processo para um arquivo, porém preservando o conteúdo original desse arquivo, deve-se executar o comando da seguinte forma:

aluno@D1:~$ ps ax >> processos.txt
aluno@D1:~$

... quer dizer, em vez de usar > usa-se >>.

Redirecionamento de entrada padrão

Normalmente a entrada padrão corresponde ao teclado do terminal, mas pode ser redirecionada para outro arquivo ou dispositivo. No exemplo abaixo, usa-se o programa wc para contar as linhas, palavras e caracteres contidos no arquivo processos.txt:

aluno@D1:~$ ps ax > processos.txt
aluno@D1:~$ wc < processos.txt
 137  810 7807 begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting begin_of_the_skype_highlighting              137 810 7807      end_of_the_skype_highlighting processos.txt
aluno@D1:~$

No exemplo acima, gravou-se em processos.txt o resultado do comando ps ax' , e depois usou-se wc para contar linhas, palavras e caracteres desse arquivo. O efeito combinado é a contagem de quantos processos existem no sistema nesse momento (representado pelo número de linhas contidas em processos.txt).

Ao contrário do caso da saída padrão, não é tão comum se usar redirecionamento de entrada padrão. No entanto há um recurso adicional provido pelo sistema operacional que explora a combinação de ambas, e que possibilita combinar as funcionalidades de diferentes programas.

Pipes

Em sistemas operacionais Unix, é possível conectar a saída padrão de um processo à entrada padrão de outro processo, e a isto se chama pipe (que pode ser traduzido como duto ou tubo). Com isto, os dados de saída de um processo serão os dados de entrada de outro processo, o que pode ser explorado para realizar diferentes tarefas. Por exemplo, retomando a contagem de processos vista na seção anterior:

aluno@D1:~$ ps ax | wc
 137  810 7807
aluno@D1:~$

O símbolo de pipe é a barra vertical |. Ao se executarem os comandos acima unidos pelo pipe, a listagem de processos gerada pelo ps ax é automaticamente enviada para a entrada padrão do comando wc. O resultado é a contagem de processos existentes no sistema.

Podem-se ligar mais de dois processos usando pipes. Assim, cria-se um encadeamento de processos, em que a saída padrão de um processo alimenta a entrada padrão do próximo processo. Por exemplo, para se contarem os processos do usuário aluno:

aluno@D1:~$ ps aux | grep aluno | wc
     47     568    5195
aluno@D1:~$

Roteiros desta aula:

Material complementar sobre editor vi

27/05: Avaliação ICO - Teórica e Prática

  • Primeira avaliação de ICO:
  • Todo o conteúdo abordado em sala, listas de exercícios e slides.

03/06: Gerenciamento de processos

Processos e multiprogramação: uma visão geral sobre programas, processos, ciclos de um processo, multiprogramação e escalonamento. Ver apostila do prof. Odilson, capítulo 3, e capítulo 5 do Guia Foca Linux Iniciante.

Gerência de memória: visão geral sobre o uso de memória no sistema operacional e pelos processos Uso do laboratório para ilustrar conceitos.

Vários utilitários (programas auxiliares) existem para obter informações do sistema operacional sobre processos e memória. Alguns trabalham em modo texto, como:

  • ps: lista os processos existentes
  • pstree: lista os processos existentes mas de forma hierárquica
  • top: lista os processos mais ativos, junto com informações globais sobre uso dos recursos no sistema operacional (memória, processador, memória virtual, quantidade de processos, carga de trabalho)
  • atop: o mesmo que top, mas com maior detalhamento do uso de recursos mantidos pelo sistema operacional
  • mpstat: mostra estatísticas de uso do processador
  • free: mostra o uso de memória
  • vmstat: mostra o uso de memória, discos e processador no último intervalo de tempo.

Existem também utilitários no modo gráfico. Por exemplo, no Ubuntu há o "Monitor do sistema":

Monitor1.png
Para executar o Monitor do Sistema



Monitor2.png Monitor3.png

Telas do monitor do Sistema

Roteiros desta aula:

17/06: Permissionamento Unix

  • Expor os conceitos associados as permissões de acesso a arquivos e diretórios
  • Explorar as permissões em nível do usuário proprietário

Roteiro desta aula:

ATENÇÃO: 20-22 de 1a Semana de Telecomunicações

Participem da 1a Semana de Telecomunicações IFSC, Campus São José

Chamada da 1a Semana de Telecomunicações do IFSC - São José clique aqui
Programação do evento: clique aqui

05/07: Compactação de arquivos (terça-feira, 13:30, Lab. Redes 2)

Uma primeira forma de compactar arquivos no Linux é usando o gerenciador de arquivos nautilus. Por exemplo, ra compactar um diretório deve-se selecioná-lo e em seguida chamar o pop-up menu (botão direito do mouse):


Compress1.png


Ao se escolher a opção Comprimir, uma janela irá surgir para que se defina o nome do arquivo compactado e o tipo de compactação a ser usada:


Compress2.png


O arquivo compactado aparecerá na listagem de arquivos do nautilus:


Compress3.png


Para descompactá-lo e visualizar seu conteúdo, basta clicar duas vezes nele:


Compress4.png

Compactadores no modo texto

Vários compactadores de arquivos existem no Linux, e o nautilus simplifica sua seleção e uso. Esses compactadores podem ser usados também no modo texto ... aliás, eles originalmente foram criados para serem usados dessa forma ! O que o nautilus faz é facilitar seu uso por meio de uma interface gráfica.

Os principais compactadores são:

  • compress: compactador mais antigo e comum nos Unix em geral, porém em desuso. Gera arquivos compactados com extensão .Z. Precisa do pacote de software ncompress no Ubuntu. Exemplo de uso:
    msobral@dell-iron:~$ ls -l API-changes.txt 
    -rw-r--r-- 1 msobral professores 51759 2010-03-24 11:32 API-changes.txt
    msobral@dell-iron:~$ compress API-changes.txt
    msobral@dell-iron:~$ ls -l API* 
    -rw-r--r-- 1 msobral professores 22781 2010-03-24 11:32 API-changes.txt.Z
    msobral@dell-iron:~$ uncompress API-changes.txt.Z 
    msobral@dell-iron:~$ ls -l API*
    -rw-r--r-- 1 msobral professores 51759 2010-03-24 11:32 API-changes.txt
    msobral@dell-iron:~$
    
  • GNU zip: compactador bastante utilizado, com maior poder de compactação que compress. Gera arquivos compactados com extensão .gz. Já vem instalado no Ubuntu. Exemplo de uso:
    msobral@dell-iron:~$ gzip API-changes.txt
    msobral@dell-iron:~$ ls -l API* 
    -rw-r--r-- 1 msobral professores 17651 2010-03-24 11:32 API-changes.txt.gz
    msobral@dell-iron:~$ gunzip API-changes.txt.gz
    msobral@dell-iron:~$ ls -l API*
    -rw-r--r-- 1 msobral professores 51759 2010-03-24 11:32 API-changes.txt
    msobral@dell-iron:~$
    
  • bzip2: vem sendo bastante usado por ter um poder de compactação ainda maior, porém à custa de maior processamento (compactação fica mais lenta). Gera arquivos compactados com extensão .bz2. Também já vem instalado no Ubuntu.
    msobral@dell-iron:~$ bzip2 API-changes.txt
    msobral@dell-iron:~$ ls -l API* 
    -rw-r--r-- 1 msobral professores 15804 2010-03-24 11:32 API-changes.txt.bz2
    msobral@dell-iron:~$ bunzip2 API-changes.txt.gz
    msobral@dell-iron:~$ ls -l API*
    -rw-r--r-- 1 msobral professores 51759 2010-03-24 11:32 API-changes.txt
    msobral@dell-iron:~$
    
  • ... outros menos populares no mundo do Linux, tais como zip, rar e zoo.

Note que os compactadores compress, gzip, e bzip2 compactam um arquivo por vez. Assim, com eles não é possível juntar vários arquivos e diretórios dentro de um único arquivo compactado (o que se faz corriqueiramente com zip ou rar ...). Portanto, se for necessário compactar um diretório ou um conjunto de arquivos, o melhor é combinar um compactador com o programa tar.

tar

O programa tar é um utilitário do mundo Unix originalmente criado para backups em fita (daí seu nome: TApe aRchiver, se bem que tar é também um trocadilho que pode significar piche, pois ele de certa forma gruda um arquivo ao outro). O resultado da execução do tar é um arquivo contendo todos os arquivos e diretórios que foram selecionados para inclusão. Esse arquivo tar pode ser então compactado, obtendo-se algo parecido com o que faz zip ou rar.

Mas porque não usar então zip e rar ? Afinal, eles existem também no Linux ... No entanto, esses compactadores nasceram no mundo do antigo MS-DOS, e assim não são capazes de armazenar todos os atributos de arquivos que existem em sistemas Unix (informações tais como usuário e grupo dono do arquivo, permissões de acesso, tipo do arquivo, datas de último acesso e modificação). O tar, pelo contrário, consegue preservar esses atributos, e por isto se torna mais adequado para uso no Unix em geral.

Uso do tar:

  • Criação de arquivo tar:
    tar cf nome_arquivo.tar arquivo_ou_diretorio1 [arquivo_ou_diretorio2 ...]
    
  • Mostrar o conteúdo de arquivo tar:
    tar tvf nome_arquivo.tar
    
  • Extrair conteúdo de arquivo tar:
    tar xf nome_arquivo.tar
    

Os usos acima não compactam os arquivos incluídos dentro do arquivo tar. Para compactá-los deve-se adicionar uma opção de compactação:

  • Criação de arquivo tar compactado:
    • Com compress:
      tar cZf nome_arquivo.tar.Z arquivo_ou_diretorio1 [arquivo_ou_diretorio2 ...]
      
    • Com gzip:
      tar czf nome_arquivo.tar.gz arquivo_ou_diretorio1 [arquivo_ou_diretorio2 ...]
      
    • Com bzip2:
      tar cjf nome_arquivo.tar.bz2 arquivo_ou_diretorio1 [arquivo_ou_diretorio2 ...]
      
  • Mostrar o conteúdo de arquivo tar:
    • Com compress:
      tar tvZf nome_arquivo.tar.Z
      
    • Com gzip:
      tar tvzf nome_arquivo.tar.gz
      
    • Com bzip2:
      tar tvjf nome_arquivo.tar.bz2
      
  • Extrair conteúdo de arquivo tar:
    • Com compress:
      tar xZf nome_arquivo.tar.Z
      
    • Com gzip:
      tar xzf nome_arquivo.tar.gz
      
    • Com bzip2:
      tar xjf nome_arquivo.tar.bz2
      

Roteiro desta aula:

08/07: Avaliação ICO

  1. Conceitos avaliação final ICO clique aqui

12/07: Encerramento Disciplina