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.