Mostrando postagens com marcador Sistemas Operacionais. Mostrar todas as postagens
Mostrando postagens com marcador Sistemas Operacionais. Mostrar todas as postagens

Aulas de Computação Grátis

Essa semana o Ilvo me passou uma dica muito interessante:

Para quem não compreendeu 100% algum conteúdo ou quem queira estudar novamente o conteúdo da faculdade, segue um link muito interessante.

Obs: Envio esse pois achei a estrutura de ensino muito bem elaborada.

http://www.compcederj.com.br/aulas/

É isso ai, todo o conteúdo da faculdade em vídeo e de graça, bom proveito.

Agendar Backups Linux: crontab tar date

Comando tar: serve basicamente para compactar arquivos, criar backups etc.

tar -c
serve pra criar um arquivo novo

tar -p
serve para listar o conteudo

tar -x

serve para extrair um arquivo

Normalmente uma destas 3 letras é acompanhado de:
v para mostrar na tela o que esta sendo feito
f para jogar o conteudo do arquivo para um novo
j para compactar igual ao 7zip, mais nova, GZ2, muito bom
z tambem serve para compactar, mas nao tao bom...

Então, para criar arquivo novo + ver + compactar + dizer que o resultado eh um file (arquivo)

tar -cvjf nome_novo_arquivo o_q_vai_ser_compactado


Ex.: fazer um bkp de todos os dados do usuario bolivar

tar -cvjf bkp_bolivar_2011_11_11.tar.gz2 /home/bolivar/*


Agora com data e hora automática

tar -cvjf bkp_bolivar_`date +%Y_%m_%d_%H_%M`.tar.gz2 /home/bolivar/*


Para listar o conteúdo

tar -tvf bkp_bolivar_2011_11_11.tar.gz2


Para extrair o conteúdo

tar -xvf bkp_bolivar_2011_11_11.tar.gz2





comando date: pega a data do sistema

Pode-se formatar a data em diferentes formatos, Y-m-d H-M ou d/m/Y ... mas lembre-se de em nomes de arquivo nao pode usar / entre outros...

date +%y
date +%Y
date +%m
date +%d
date +%H
date +%M



Comando crontab: faz o agendamento de tarefas

Para ver o que já está agendado para executar:

crontab -l

Para editar agendamentos:

crontab -e

Provavelmente ao editar vai pedir qual editar de texto voce deseja usar, fui com o nano, opcão 2, que é mais fácil.
Configura: m h dom mon dow command
Que significa: Minuto Hora DiaDoMes Mes DiaDaSemana Comando

Para gravar um log, como temos no comando TAR o V, ele mostraria na tela o que foi feito, podemos jogar em um arquivo o bkp semanalmente, diariamente, de 15 em 15 minutos ficaria assim:

0-15-30-45 * * * * tar -cvjf /home/bolivar/bkp_bolivar_`date +%Y_%m_%d_%H_%M`.tar.gz2 /home/bolivar/* > /home/bolivar/bkpLog.txt

Comandos Unix: ps, grep, sed, cut, awk, chmod, mysql, crontab

Anotecões aula de Sistemas Operacionais, ajustadas para virar um tutorial de como criar um script para salvar logs do uso de memória e processador por determinado processo.


Uso do VI

i para escrever
:q para sair
:wq para salvar e sair
:w <nome arquivo> para salvar como

Atividades escrever script para armazenar em arquivo a cada minuto a % de CPU e qtde de memória usada por um processo.

Ver os processos e salvar no arquivo texto o resultado:

ps -faux > arquivo.txt

ps pega os processos, grep compiz busca apenas linhas com 'compiz', sed pra apagar tudo menos a linha 1, linha 2 em diante, >> add no log.txt

ps aux | grep compiz | sed '2,$ d' | cut -b 16-24 >> log.txt

cut serve pra cortar a string, -b corta bytes, pegando apenas do caracter (cada caracter é um byte) 16 ao 24

ps aux | grep compiz | sed '2,$ d' | cut -b 16-24 | awk '{print $1,";",$2}' >> log.csv

ou pode-se mudar as colunas pelo awk, pegando diretamente as corretas sem usar o cut.

ps aux | grep compiz | sed '2,$ d' | awk '{print $3,";",$4}' >> /home/bolivar/visamples/log.csv


crontab -e para adicionar o comando, dizendo pra executar a cada minuto.

* * * * * ps aux | grep compiz | sed '2,$ d' | awk '{print $3,";",$4}' >> /home/bolivar/visamples/log.csv


Agora pra salvar em um banco MySQL, crie um banco chamado logs e uma tabela chamada log com dois campos decimais, uma pra cpu e outro pra memoria. criar um script Shel log_processo_mysql.sh com o sql insert:

ps aux | grep mysql | sed '2,$ d' | awk '{print "INSERT INTO log (cpu,mem) VALUES (",$3,",",$4,");"}' > /home/bolivar/log_insert.sql

mysql -u root --password='root' -D logs < /home/bolivar/log_insert.sql

De permissao de execucao pro script

chmod +x log_processo_mysql.sh

No crontab agora ficou assim.

* * * * * /home/bolivar/log_processo_mysql.sh

Pra verificar se está funcionando, acessa o mysql:

mysql -u root --password='suasenha'

depois selecione o banco:

use logs;

e execute o select:

select * from log;

pra ver os bancos:

show databases;

pra ver as tabelas, primeiro selecione o database e depois:

show tables;

pra sair do mysql:

quit

pra sair do prompt:

exit

Sistemas Operacionais - Anotações de 23/09/2011

Princípios básicos de hardware

- Periférico é um dispositivo conectado a um computador de forma a possbilitar sua interação com o mundo externo.
- Os periféricos são conectados ao computador através de um componente de hardware denominado de interface.
- As interfaces são interconectadas aos barramentos internos de um computador, elemento chave na coordenação da transferência de dados.
- Interfaces se utilizam de um processador dedicado a realização e controle das operações de entrada e saída, são as controladoras.
- Driver é um software que permite/explica ao sistema operacional se comunicar com cada periférico através dos comandos das controladores.

*** O computador de verdade é o processador, todo o resto é periférico, interno ou externo, conectado de alguma forma com o processador.

Retângulos cinzas são controladores



 * Classificados como:

- Orientado a caracter: cada caracter causa uma ação no dispositivo, exemplo teclado e interface serial.
- Orientado a bloco: bloco de caracteres, exemplo disco, fitas DAT.

 * Classificados também como:

- Com usuário
- Eletrônicos
- Remotos

Os periféricos possuem características próprias como taxa de transferência de dados, complexidade de controle, unidade de transferência (caracter, bloco ou stream), representação de dados e tratamento de erros.

 * Tipo de conexão e transferência de dados

- Serial: bit a bit, uma linha de transferência
- Paralela: n x 8 bits, mais de uma linha de transferência

O sistema operacional interage com os periféricos pela controladora, escrevendo nas memórias próprias do periférico os comandos dizendo o que precisa, estas memórias são chamadas de registradores de configuração. O SO sabe quais comandos pode executar nos registradores através dos drivers.

Os registradores de configuração das controladoras recebem ordens do processador, fornecem estados de operação e fazem a leitura e escrita de dados do periférico. Registradores são vistos pelo SO como posições de memória "a parte", quando o SO vai interagir ele grava os comandos no endereço de memória do registrador. Dependendo do tipo de controladora pode fazer mapeamento em memória, com comandos iguais aos utilizados para mapear RAM, outros tem uma mapeamento de entrada e saída que utiliza alguns comandos diferentes.

 * E/S programada

É mais simples de implementar, mais leve, mas tem busy waiting, enquanto as controladoras estão ocupadas o processador fica esperando elas terminarem para então passar ao próximo tarefa.

 * E/S orientada a interrupção

Processa outras tarefas enquanto aguarda a controladora terminar sua atividade, é avisado via interrupções.

 * DMA - Acesso direto a memória

É uma maneira de diminuir o número de interrupções, fazendo isso após executar uma gama de comandos como a leitura de vários blocos em um HD, no normal faz uma interrupção a cada bloco lido.

Gerência de entrada e saída

Tem como objetivo a eficiência, generacidade é importante, esconder os detalhes do serviço de entrada e saída em camadas de baixo nível, ...

*** Os driver são instalados na camada do sistema operacional, podemos dizer que é o manual que o SO olha pra saber como usar as controladoras, e os drivers possuem direitos de execução administrativos (são inseridos no kernel) podendo causar panes nos sistemas quando mal desenvolvidos. Placas de vídeos tem alguns fabricantes alternativos que visam tirar mais das placas e lançam versões de driver não oficiais e esculhambam o sistema. O ideal é utilizar drivers homologados pelo fabricante do sistema operacional além da homologação do desenvolvedor do periférico.

 * Subsitema de entrada e saída

É aquela porção do núcleo do SO que controla a parte independente e interage com o driver de dispositivo.



Tem como funcionalidades básicas:

- Escalonamento de E/S:
- Bufferização:
- Cache:
- Spooling:
- Reserva de dispositivos:

*** Buffer armazena somente dados somente enquanto está utilizando e já libera memória, cache mantém os dados enquanto houver memória disponível, quando acaba vai liberando os dados mais antigos a medida que necessita de mais.

 * Interface de programação

- Bloqueante:
- Não bloqueante:
- Assíncrono:

... continua próxima aula ...

### Aula que vem acaba capítulo 5 e teremos uma revisão, na outra semana jé é prova. Pra prova pode levar uma folha A4 com anotações feitas a mão para consulta.

Sistemas Operacionais Parte II

SISTEMAS MULTITAREFA - Resumão

 - PROCESSO: dinâmico, em memória RAM, ocupa área de código + dados + pilha de memória
      x
 - PROGRAMA: estático, em memória secundária, ocupa só o espaço do código

 - BCP: Bloco de Controle de Processo -
      x
 - PCB: Pilha de Controle de Processo -

Existem duas abordagens nos SO multitarefa, sistemas cooperativos e preemptivos.

Nos cooperativos é determinado um tempo igual para executar cada tarefa, se há 20 processos rodando e o ciclo é feito em um segundo, cada um vai receber 1/20 de segundo.

Nos preemptivos nem todos são iguais, alguns tem prioridade maior do que outros, iniciando pelos que rodam no modo núcleo. no windows existem 32 filas de prioridade, 16 para modo núcleo e 16 para modo usuário. Processos que usam mais processamento, mais tempo processando, vão subindo a prioridade e ganham cada vez mais tempo para processar, caso contrário sua prioridade cai e consequentemente tem cada vez menos tempo para executar quando chega sua vez.

Interrupções: evitar busy waiting, que é quando um processo precisa esperar terminar uma tarefa, gravar dados no HD por exemplo, o processador fica passando pelo processo sem que o mesmo tenha algo para processar perdendo seu tempo. Para evitar perder tempo estes processos são deixados de lado até o momento em que a tarefa (gravar HD) seja concluída, quando isso acontece o HD faz uma interrupção, que serve para fazer o processador voltar a executar o processo. As interrupções são numeradas, a que tiver valor menor tem prioridade maior. Se tiver valor 0 (zero) é a RTC, de maior prioridade, Real Time Clock, que é o relógio. Esta interrupção RTC é feita a cada intervalo fixo de tempo e serve para o processador saber a hora de parar de executar um processo e ir para outro.

Dentro do Gerenciador de Dispositivos há uma opção para "Exibir recursos por tipo" no Windows para ver as prioridades de execução das interrupções, minha placa de vídeo estava com prioridade (-2), achei estranho este windows...

Prioridades de Interrupções do Meu Note
Timesharing compartilha tempo de processamento entre diversos terminais burros.

Ciclo de Vida de um Processo -> Estudar que vai cair na prova, tem que saber.

Ciclo vida processo utilizando 5 estados
O primeiro ciclo de um processo é sempre de processador, mas durante sua vida um processo pode ter dois estados, processando ou aguardando entrada/saída de dados. Processos que fazem muito processamento são chamados de CPU BOUND e ficam muito tempo processando. Processos que fazem grande movimentação de dados são I/O BOUND e ficam pouco tempo processando e logo voltam a esperar uma entrada ou saída de dados. A tendência é os CPU Bound irem subindo sua prioridade pois ficam mais tempo processando e o I/O Bound cair na fila de prioridade.

Qual a sequencia que um processo sai do estado de bloqueado? Quando dispositivo/periférico diz que terminou a tarefa.

Chaveamento de contexto: o processador precisa estar preparado/organizado da mesma maneira que estava quando parou de processar determinada tarefa para poder continuar o processamento. Então o chaveamento é salvar o contexto antes de sair de uma tarefa e ir para outra E carregar o contexto para a próxima tarefa a ser executada. Assim as tarefas "pensam" que estão sendo executadas sem interrupções. Quem faz este trabalho é o chaveador de contexto.

Buffer e Cache servem para minimizar gargalos de velocidade, já leu a meta? A diferença entre buffer e cache é que o Buffer, logo após ser utilizado é limpado/apagado memória, exemplo impressoras. Já o cache, enquanto tem espaço ele vai deixando tudo armazenado, quando começa encher vai tirando o que está a mais tempo sem ser utilizado.

Sistemas Operacionais Parte I

SISTEMAS OPERACIONAIS - Minhas Anotações da Aula 1 - Prof. Helmuth

No início não havia sistemas operacionais nas máquinas, o primeiro sistema que surgiu era um gerenciador de fila para tarefas a serem executadas, era mono tarefa e monousuário. Este sistema ajudava pois antes era necessário que um programador/cientista ficasse monitorando o computador para que quando terminasse de executar uma tarefa fosse iniciada a próxima, então este SO fazia isso automaticamente e aproveitava melhor a capacidade de processamento.

A segunda evolução proporcionada pelos sistemas operacionais foi fazer executar mais de uma tarefa ao mesmo tempo, tornado-se multitarefa, isso levou vários anos para ser desenvolvido, mas foi um grande avanço na área da computação. Nesta segunda geração o SO torna-se um gerente de recursos, gerenciando memória, armazenamento em disco ou fitas, processamento entre outros. Agora os programas não conversam mais com o hardware e sim com o sistema operacional para alocar memória etc.

Um problema dos sistemas operacionais eram escritos para determinadas máquinas e quando você trocava de hardware os softwares precisam ser reescritos pois não funcionavam mais. A primeira a criar uma solução para este problema foi a IBM com o Multics que dava bastante pau, mas permitia trocar de hardware e manter os softwares, geração 360, depois veio o Unics que mais adiante deu nome para os Unix.

A terceira geração de S.O. além de serem multitarefa, podiam ser acessados por vários usuários, ou seja, eram multiusuário. Nesta geração ainda dominavam os computadores de grande porte.

Finalmente na quarta geração de SO vieram os microcomputadores, foi necessário desenvolver um novo sistema operacional, a IBM que dominava nesta época não conseguiam criar um sistema para máquinas com tão pouco processamento, eles estavam acostumados a pensar grande. Pra resolver a IBM contratou uma empresinha chamada Microsoft, que tinha comprado um SO para microcomputador recentemente e estava concluindo ele. Nesta geração os SO precisavam rodar com poucos recursos e precisam ter mais usabilidade para que usuários domésticos pudessem usar. Em 84 a Apple revolucionou o mercado lançando o Macintosh, com ambiente gráfico, mouse, disquete 3/2 entre outros, melhorando muito a usabilidade, foi o primeiro computador que bastava tirar da caixa e ligar na tomada para usar, os outros praticamente precisavam de um engenheiro do lado pra instalar, se você pesquisar pode ver o comercial no youtube.

A quinta geração é a geração dos sistemas operacionais modernos, que são os que usamos atualmente. Contam com acesso a rede, ambiente gráficos, são multitarefa e multiusuário e possuem uma alta usabilidade.


Porque estudar essa história?

É interessante estudar a história dos sistemas operacionais porque essa história se repete sempre que é lançado algum hardware massivamente como quando começou a ser utilizado computadores pessoais, eles tinham pouca capacidade de processamento e por isso os sistemas operacionais eram bem básicos, com a evolução da capacidade de processamento nos PCs pode-se criar sistemas operacionais multitarefa, depois multiusuários etc. Da mesma maneira os celulares, logo que foram lançados nem sistema operacional tinham, apenas a aplicação que controlava uma lista de contatos e permitia receber e fazer chamadas. Hoje os celulares já contam com sistemas multitarefa e já se preocupa com a segurança nestes sistemas, temos SO's muito bons como Android e IOS conectados com a Internet e sujeitos a pegar vírus.

Atividades
Atividades

Observação: respostas mal e mal anotadas durante falas do professor, as gerações variam conforme o autor, seguimos a classificação do Tanenbaum nestas respostas.


1) Defina Sistema Operacional.
Um sistema operacional deve gerenciar e distribuir recursos de hardware entre os processos que estão rodando, também deve funcionar como uma camada intermediária entre o hardware e o usuário para facilitar o desenvolvimento de programas.

2) O que é e qual a diferença entre o modo núcleo e o modo usuário dos programas do Sistema Operacional?
No modo núcleo o processo rodando tem acesso a toda memória e a todos comandos que o processador dispõem. Os processos comuns rodados pelo usuário rodam em modo "usuário", só podendo acessar a área da memória que foi definida para ele e não tem acesso a todos os comandos do processador. Alguns sistemas operacionais rodam em modo "real" e outros em modo "protegido". EM modo real são sistemas operacionais mais antigos que não utilizam o recurso de escolher entre modo núcleo ou usuário, então todos os processos tem acesso a todo o hardware. Nestes sistemas que rodam modo real, antigos, era muito comum a tela azul porque muitas vezes um processo do usuário acabava tentando utilizar espaços da memória que eram dos processos do sistema dando erro, tratando de Microsoft, este problema foi resolvido a partir do windows 2000, se pegar o win98 e rodar um programa C alocando bastante memória (malloc) provavelmente verá  uma tela azul de erro, nos windows mais novos isso gera a mensagem de erro que o programa tentou executar uma operação ilegal e é fechado antes da tela azul.

3) Que tipo de complexidade de hardware o sistema operacional esconde? Dê um exemplo. 
 Na hora de gravar um arquivo, o sistema operacional esconde do usuário as trilhas do HD em que está gravando os dados etc

4) Quais são as principais características da primeira geração dos S.O.?
 Painéis de programação sem sistema operacional.

5) Quais são as principais características da segunda geração dos S.O.?
 Sistema em lote, S.O. funcionava como gereciador de filas de programas.

6) Quais são as principais características da terceira geração dos S.O.?
 Entra conceito de circuito integrado e torna-se multitarefa, vários programas rodando ao mesmo tempo.

7) Quais são as principais características da quarta geração dos S.O.?
 Computadores pessoais, preocupação com usabilidade.

8) O que diferencia um S.O. de computador de grande porte para um S.O. de servidor?
S.O. para computador de grande porte (grande mesmo, imagina o pc que roda o banco de dados do SISBB - Banco do Brasil) processa muitas transações, normalmente pequenas, precisa gerenciar uma capacidade gigante de memória, muitos terabytes de memória RAM. Quando se liga uma máquina dessas levam horas carregando as memórias, cache etc, até pouco tempo não podia ser Windows simplesmente porque nenhuma das melhores versões do windows conseguia gerenciar tanta memória, parece que agora há uma versão Windows HPC Server... Então, são sistemas operacionais especiais, normalmente versões modificadas de SUSE, RED HAT, SOLARIS etc para conseguir gerenciar esta enorme quantidade de memória, processadores e executar as milhares de transações executadas em paralelo. Estes SO não podem travar/trancar/dar pau e também não podem necessitar ser reiniciados pois levaria muito tempo para religar.

SO para servidor precisam ser bons em serviços de rede como servidor de arquivos, e-mail, DNS etc. As tarefas podem ser bem variáveis, ou seja, o tamanho das transações variam e existem diversos sistemas para isso, Windows Server, Ubuntu Server, Red Hat etc.

9) No que os S.O. de tempo real são diferentes de todos os demais?
Normalmente são linux modificados, são diferentes dos outros no fato de que estes garantem um tempo máximo para a execução. Nos SO normal há um sistema de prioridade nos processos, sendo que a execução pode ser postergada por um tempo indeterminado, já nos SO de tempo real você tem uma certeza sobre essa demora para execução. No ethernet também há este problema pois o tempo de envio dos dados é incerto, pesquise CSMA-CD, então em problemas que exigem S.O. de tempo real normalmente utilizam uma rede Token Ring onde os tempos de comunicação podem ser determinados.

10) Qual é a categoria dos SO dos palmtops ou handhelds?
Embarcado

11) Um SO pode ser independente de hardware, ou seja, funcionar em qualquer plataforma?
Não. Um SO é escrito para um processador específico, normalmente essa parte é escrita em Assembler, e os comandos Assembler podem variar conforme o processador. O que pode ser mais universal é que os SO normalmente são escritos em C e existem compiladores de C para diversos processadores.

12) O que é um "barramento" de hardware?
Proporciona comunicação em CPU, memória e demais dispositivos do hardware.

13) Diferencie organização "pipeline" de superescalar.
Pipeline é quando faz tipo uma linha de produção para executar as tarefas, superescalar  tem várias unidade de execução, podendo executar paralelamente.

14) Qual é o principal componente de hardware de um computador?
O Processador.