Sistemas Operacionais

Conteúdo:

  1. Introdução
    • Conceitos
    • Objetivo
    • História
  2. Tipos de Sistemas Operacionais
    • Monotarefa
    • Multitarefa
    • Multiprocessados
  3. Multiprogramação
    • Conceitos
    • Processos
    • Interrupção
  4. Programação Concorrente
    • Conceitos
    • Paralelismo
    • Seção crítica
    • Deadlocks
  5. Estrutura do Sistema Operacional
    • Chamadas de sistema
    • Kernel
    • Tipos de Kernell
  6. Gerência de Processador
    • Escalonamento de processo
    • Theads
    • Algoritmos de escalonamento
  7. Entrada e Saída
    • Princípio básico de Hardware
    • Princípio básico de software E/S
    • Dispositivos periféricos típicos
  8. Discos
    • Organização
    • Formatação
    • Gerência de acesso
  9. RAID
    • Conceitos
    • Tipos de RAID
  10. Gerência de Memória
    • Memória lógica X memória física
    • Partições físicas X variáveis
    • Swapping
    • Paginação
    • Segmentação
  11. Memória Virtual
    • Conceitos
    • Alocação de memória
    • Substituição de páginas
    • Algoritmos de substituição
  12. Sistemas de Arquivos
    • Conceitos (arquivos, diretórios e partições
    • Gerência de espaço
    • Tipos de sistemas de arquivos
  13. Bibliografia
    • Sistemas Operacionais Modernos
      Andrew S Tanenbaum
      Ed. Prentice Hall
    • Sistemas Operacionais
      Rômulo Silva de Oliveira
      Ed. Sagra Luzzatto

Voltar ao Início



1. Introdução

O que são sistemas operacionais?

  • É uma camada de software colocada entre o Hardware e os programas de usuários:
  • Tarefas básicas
    • Gerenciar bem os recursos de hardware
  •  
    • Prover funções básicas para facilitar o trabalho dos programadores

Quais são os objetivos do sistema operacional?

  • Tornar a ulitização do computador, ao mesmo tempo:
    • Mais eficiente
    • Mais conveniente

Sistema Operacional

  • Dispositivos Físicos - placas de rede, vídeo, etc...
  • Microprogramação - para cada chip tem um software que faz com que funcione como o processador.
  • Linguagem de máquina - forma que computador reconhece (processador) onde as informações e instruções são dadas em binário (zero e uns).
  • Sistema Operacional - programa que gerencia o hardware.
  • Debugger - acompanhador passo a passo de programa, para análise detalhada desse programa.
  • Shell - interprete entre sistema operacional e usuário (interpretador de comandos).
  • Programas de usuários - Softwares usados pelos usuários, que não tem muitos previlégios sobre o Sistema Operacional.

História dos Sistemas Operacionais
  • Década de 40
    - Não existem Sistemas Operacionais
    - O operador é o programador
    - Surgimento dos cartões perfurados
    - Surgiu o conceito do operador
    - Surgimento do conceito de "JOBS" através de "batches"
    - Surgimento das fitas magnéticas
    - Utilização de Biblioteca
  • Década de 50
    - Surge o monitor residente
    - Chamada de sistema
  • Década de 60 - Surge o conceito de multiprogramação
    - Interrupções
    - Discos magnéticos
  • Década de 70
    - Time sharing - conceito de mainframe.
    - Depuração (DEBUG).
  • Década de 80
    - Abandonado o conceito de time-sharing.
    - Diponibilidade de 1 (uma) CPU para cada usuário.
  • Década de 90
    - Avanço significativo da Internet.
    - Volta conceito de time-sharing, usando o "Thin client", acessando não uma main frame, mas sim um servidor de aplicação.
  • Nos dias Atuais
    - Sistemas operacionais distribuidos.
    - Sistemas operacionais em tempo real (embargados).
Conclusão

O Desenvolvimento de software é impulsionado pela tecnologia.
Como desenvolvimento de hardware é contínuo os sistemas operacionais tendem a acompanhar.

Voltar ao Início



2. Tipos de Sistemas Operacionais
  • Monotarefas / Monoprogramáveis - Sistemas que executam somente uma tarefa por vez. Desperdício de recursos. Exemplo: MS-DOS.


  • Multitarefa - Sistemas que executam vária tarefas ao mesmo tempo. Aproveitando recursos de Hardware disponíveis

    • Sistema Batch
      - As tarefas são executadas uma na seqüência da outra através de batchs.
      - Foram os primeiros sistemas multitarefas.
      - Programas esperam para ser executados sequencialmente.
      - Não exigem interação com usuários.

    • Tempo Compartilhado
      - Divide o tempo em vários processos e gerenciamento de ambientes.
      - Interação com usuários baseada em terminais.
      - Para cada usuário/terminal, o Sistema Operacional aloca uma "fatia de tempo".
      - Cria um ambiente para cada usuário/terminal.

    • Tempo Real
      - O tempo de resposta é altamente exigido no processamento das aplicações.
      - Trabalha baseado em prioridades e não fatias de tempo.
      Exemplo: Controle de tráfego aéreo, trens, metrô.


  • Múltiplos Processadores
    - Duas ou mais CPU´s integradas, trabalhando em conjunto.
    - Aumentam o desempenho e também permitem reconfiguração e balanceamento.

    • Fortemente Acoplados
      Várias CPU´s compartilham a mesma memória e gerenciados pelo mesmo Sistema Operacional
      Podem ser:

      • Assimétricos: onde somente um processador executa o Sistema Operacional e demais executam tarefas distintas.

      • Simétricos: onde os processadores trabalham juntos tanto para execução do Sistema Operacional com tarefas em geral. Fazzendo balanceamento entre eles.

    • Fracamente Acoplados
      Dois ou mais computadores interligados, cada um com seu próprio Sistema Operacional.
      Podem ser:

      • Sistema Operacional de Rede.
      • Sistemas Operacionais Distribuídos.

Voltar ao Início



3. Multiprogramação

Em um sistema multiprogramado, onde vários programas são mantidos na memória ao mesmo tempo

Quando um programa em execução solicita um peração de E/S (chamada de sistema), o Sistema Operacional inicia a execução de outro programa.

Quando termina a operação de E/S do primeiro programa, ele pode voltar a ocupar o processador ou não (dependendo do Sistema Operacional).

Processador e periféricos trabalham ao mesmo tempo.

Processo

Programa: uma seqüência de instruções faz com que algo passivo dentro do Sistema Operacional, não altere seu estado.

Processo:
É um elemento ativo altera seu estado a medida, que executa o programa.

Cliclos do Processo
- Ciclo de Processador
- Ciclo E/S

Relacionamento de um Processo
- Associado a um mesmo terminal
- Herarquia de Processo

O que acontece quando o segundo processo solicita E/S antes que o pedido do primeiro conteúdo seja concluído? Resposta:
- Se for outro periférico, o mesmo procedimento será refeito
- Se for para o mesmo periférico, não será possível enviar o comando imediatamente
- Deve haver um fila associada a cada periférico, como mostra imagem abaixo.

Interrupções

É um evento externo que faz o processador parar a execução do programa corrente e desviar a execução para atender a interrupção.Após isso, volta extamente ao ponto onde estava.

Fontes de Interrupções
- Periféricos no CHIP: temporizadores, portas paralelas, portas seriais.
- Linhas de interrupção externas: IRQ´s.
- Interrupção por software: divisão por zero, OverFlow.
- Falhas de Hardware: erros de paridade, defeitos em disco.

Tipos de interrupção
- Quanto ao tratamento: - Mascaráveis - Não mascaráveis
- Quanto à origem: - Vetoradas - Não Vetoradas

Proteção entre processos
- Modo de operação de processo
- Modo superior (Kernel)
- Modo usuário

Voltar ao Início

4. Programação Concorrente

Conceito

- Um programa executado por apenas um processo‚ um "programa seqüencial".
- Um programa concorrente‚ executado simultaneamente por vários processos que cooperam entre si.
- Variáveis compartilhadas.
- Troca de mensagens.

Programa seqüencial


Programa concorrente


Problema de compartilhamento de recursos


Exclusão mútua

- Enquanto um processo estiver acessando um determinado recurso, todos os outros que queiram acessá-lo deverão esperar que o primeiro processo termine o acesso.
- A parte do código do programa onde‚ feito o acesso ao recurso compartilhado‚ chamada "seção crítica".

Problema de sincronização

- Velocidade de execução dos processos - A velocidade de execução do sistema como um todo ‚ limitada pela velocidade do processo mais lento.

- "Starvation" - Termo usado quando um processo que não consegue acessar um recurso compartilhamento, pois sempre está bloqueado por outro processo que o está  bloqueando. É a situação onde um processo nunca executa sua "seção crítica", ou seja, acessar o recurso compartilhado.

- Problema do Produtor / Consumidor - Os processos envolvidos devem estar sincronizados de forma que um processo não tente gravar dados em um buffer cheio e nem deixe lento um buffer vazio.

Soluções para os problemas de compartilhamento de recursos.
  • Soluções de Hardware
    • Desabilitação de interrupções
      Consiste em fazer com que o processo, antes de entrar em sua seção crítica, desabilite todas as interrupções externas e as reabilite após deixar a seção crítica.
    • Instruções test-and-set
      Permite ler uma variável, armazenar seu conteúdo em outra área e atribuir um novo valor a esta variável.
      É Executada sem interrup‡äes (indivisível).
  • Soluções de Software
    • Semáforos
    • Monitores
      Conjunto de procedimentos, variáveis estruturas e estruturas de dados definido dentro de um módulo.
      Exclusão múltipla automática, entre os procedimentos (somente um dos processos podem executar um dos procedimentos do monitor em um certo instante).
      Implantação realizada pelo computador
    • Troca de mensagens
Deadlock

4 ocorrências para ocorrência de DEADLOCK

- Existir recursos que precisam ser acessadas de maneira exclusiva.
- Processos que mantém recursos alocados enquanto esperam por recursos adicionais.
- Necessidade de que recursos sejam liberados pelas próprios processos que os estão utilizando.
- Formação de uma espera circular.

Voltar ao Início

5. Estrutura do Sistema Operacional

Introdução

- Estrutura do Sistema Operacional é bastante complexa
- O Sistema Operacional é formado por conjunto de rotinas que oferecem serviços dos usuários e programas.
- Esse conjunto de rotinas é chamado de KERNEL

As principais funções do KERNEL :
- Tratamento de interrupções.
- Criação e eliminação de processos.
- Escalonamento de processos.
- Gerência de memória.
- Gerência de sistema de arquivos.
- Operações de E/S
- Segurança

Chamadas de sistema

São as portas de entrada para se ter acesso ao núcleo do Sistema Operacional.

Quando uma aplicação deseja solicitar algum serviço de Sistema Operacional, realiza uma chamada de sistema.

As demandas de sistema protegem o Sistema Operacional e seus serviços.

S D K (Software Development Kit)
D D K (Device Driver Kit)

As chamada de sistema podem ser divididas em grupo de funções:
- Gerência de processo;
- Gerência de memória, alocação e liberação de memória;
- Gerência de E/S
Operações de E/S
Arquivos e diretórios

Estrutura do kernel

- Sistema em camadas;
- Sistemas monolíticos;
- Sistema cliente-servidor

1. Sistemas em Camadas

Operador

Programas de usuários

Entrada / Saída

Comunicação

Gerência de memória

Multiprogramação

 2. Sistemas monolíticos

O Sistema Operacional é escrito como um coleção de rotinas, onde qualquer uma pode chamar qualquer outra

Pode ser comparada a um programa formado por vários procedimentos compilados separadamente e "linkados" em um grande arquivo.

3. Sistema cliente - servidor

 

Voltar ao Início

6. Gerência de Processador

Todo sistema multiprogramável possui um critério para determinar a ordem de escolha dos processos para execução.

Esse processo de seleção é feito pelo Sistema Operacional e é chamado de escalonamento.

Objetivos do escalonamento

Manter a CPU ocupada o maior parte do tempo.

Balancear o uso do processador entre os vários processos

Maximizar o "Throughput" do sistema

Oferecer tempos de resposta satisfatórios aos usuários

Critérios de escalonamento

- Utilização da CPU
- Throughput
- Tempo de turnaround
- Tempo de resposta

Modos de decisão

Não PREEMPITIVO: um processo ativo continua ativo até terminar ou bloquear numa solicitação de E/S.

PREEMPITIVO: processos podem ser retirados do estado "executando" para o estado "apto" pelo escalonamento.

A execução é sempre feita por processo que esteja na fila com menor tempo calculado

Cooperativo - Não PREEMPITIVO

A liberação de um processo é uma tarefa realizada pelo processo em execução de maneira cooperativa

Exemplos: Windows 3.1/3.11 (Multitarefa cooperativa)

quantum - tempo necessário para trocar o processo que será executado.

Escalonamento por prioridade

Os processos de maior prioridade são escalonados preferencialmente.

Toda vez que um processo for para a fila de apto com prioridade superior do próximo deverá interromper o processo e colocá-lo em estado "apto".

- Diversas filas estão no estado "apto".

- Cada fila possui mecanismos

- Os processos são classificados antes de serem enviados a um determinada fila

- Cada fila possui uma prioridade

- O sistema Operacional só escalona um fila se todos os processos, forem de maior prioridade

Escalonamento por multiplas (filas com realcionamento)

- Diversas filas onde cada uma tem uma prioridade

- O sistema tenta identificar dinamicamente o comportamento de cada processo.

- Ao ser criado, o processo vai para o final da fila de maior prioridade e quanto mais CPU usa, mais vai caindo para outras filas.

Voltar ao Início

7. Entrada e Saída

Voltar ao Início

8. Discos

Introdução

O disco é organizado em uma seqüência de círculos concêntricos (trilhas)

A transferência de dados é feita e blocos (um bloco é geralmente menor que a trilha).

Uma trilha é dividida em unidades de tamanho fixo (setores).

A definição de trilhas e setores é feito na formação física ( na fábrica).

Característica físicas

- Braço do cabeçote por trilha.
- Móvel: cabeçote se desloca.
- Removível X Não removível.
- Densidade dupla X densidade simples.

Multiplos discos pratos

- Vários discos compartilhados.
- Um cabeçote para cada prato.
- Conceito cilindrico

Mecanismo do cabeçote

- Contato físico (floppy).
- Distância Física (air gap).

Especificação de um disco - CHS (Cylinder Heads Sectors)

- 255 cabeças
- 63 setores de 512 bytes
- 525 clilindros
- 255 x 63 x 525 - 4.1 Gbytes

LBA (Linear Block Address)

Desempenho de disco

- Três tempos envolvidos.
- Tempo de posicionamento.

- Tempo de latência rotacional.
- Tempo de transferência

Entrelaçamento (interleaving)

Escalonamento de disco

Tratar E/S em disco de forma eficiente: minimizar o tempo de posicionamento (seek time)

Algoritmos para reduzir o tempo de posicionamento:
- FCFS, SSTF, SCAN, C-SCAN

Exemplo:
- Disco com 200 trilhas (a-199)
- Posição inicial do cabeçote; trilha 53.
- Atender a seguinte fila de requisições: 98, 183, 37, 122, 14, 124, 65, 67.

 

Voltar ao Início

9. RAID

Introdução

RAID: Redundant Array of Independent Disks

Combina vários discos rígidos para formarem uma única unidade lógica, fornecendo tolerância a falhas.

Para que o RAID seja formada é necessário pelo menos 2(dois) discos rígidos.

O Sistema Operacional "Enxerga" os vários discos como uma única unidade lógica.

Quando há gravação dos dados os mesmos são espelhados entre discos (melhor performance e balanceamento).

Níveis de RAID

- RAID nível 0
- RAID nível 1
- RAID nível 2
- RAID nível 3
- RAID nível 4
- RAID nível 5
- RAID nível 6

RAID 0 (striping ou fracionamento)

- Sem tolerância a falha

-  Focado em performance

- Caso um deles para o sistema todo para
 

RAID 1 (Mirroring ou Espelhamento)

- Menor performance na gravação

- Menor performance na leitura

 

RAID 2

- Adapta o mecanismo de detecção de falhas em discos rígidos para funcionar em memória

- Assim todos os discos da matriz ficam sendo monitorados pelo mecanismo

- Pouco usado, pois os discos rígidos saem com mecanismo de detecção de falhas de fábrica.

RAID 3

- Mínimo de 3 HD´s

- Volume lógico formado somente com os discos de dados

- 1 HD é redundante que armazena as paridades

RAID 4

- Mesmo conceito da RAID 3

- Reconstroi em tempo Real ( com SO rodando )

 

RAID 5

- Mesmo conceito que RAID 3 e 4

- Paridade dividida entre os discos e não somente em um único disco.

 

RAID 6

- Mesmo conceito dos anteriores.

- Com duas informações de paridade. Podendo danificar até dois discos ao mesmo tempo.

 

RAID 0 + RAID 1

RAID 1 + RAID 0

RAID por software

- Não é muito utilizado, pois apesar de mais barato.

- Depende exclusivamente do sistema operacional

- Normalmente implementa RAID 1

Voltar ao Início

10. Gerência de Memória

Voltar ao Início

11. Memória Virtual

Introdução

Memória virtual é uma técnica que combina memória principal e secundária, dando impressão de que é uma só.

Vantagens

Maximiza o número de processos da memória
Reduz a fragmentação
Permite estruturas e dados maiores que a memória

Espaço de endereçamento virtual

Alocação

O programa pode ficar parte da memória principal e parte na memória secundária.
Um programa pode fazer referência a endereços de memória virtual que estejam fora dos limites da memória principal.
O programador não se preocupa com esse aspecto ao desenvolver um programa.

Mapeamento

Um programa não precisa estar contíguo na memória.

Tabela de mapeamento individual

Não contém todos endereços possíveis, pois ocuparia um espaço enorme.
Para isso utiliza-se o conceito de blocos, que vão sendo alocados conforme a necessidade.

Tamanho do bloco

Blocos de tamanho fixo: PAGINAÇÃO
Blocos de tamanho variável: SEGMENTAÇÃO
Combinação de dus técnicas: SEGMENTAÇÃO com PAGINAÇÃO

Memória Virtual por paginação

Páginas: Blocos da memória
Espaço de endereçamento virtual - páginas virtuais
Espaço de enderaçamento real - frames
Todo o mapeamento virtual X real é feito pela tabela de páginas de cada processo.
Quando executado, o programa deve ser transferido da memória secundária para a memória principal.

Tabelas de páginas

Page Fault

Se endereço desejado está fora da memória principal, ocorre um Page Fault
Ocorre um Page in (processo bloqueado)
O número de Page Faults quando aumenta provoca lentidão no sistema.

Política de busca de páginas

Determina quando uma página dever ser carregada para a memória.
Paginação por demanda.
Paginação antecipada.

Política de alocação de páginas

Determina quantos frames um processo pode ter na memória.
Aloção fixa.
Alocação variável

Política de substituição de páginas

Para escolher qual página será descartada, exitem 2 (duas) abordagens:
- Substituição local.
- Substituição global.
Obs.: Páginas do Kernel são bloqueadas.

Algorítmo d esubstituição de páginas

Selecionam qual página vai sair da memória para ceder lugar a outra.
Idealmente, a página escolhida não deve ser referenciada em um futuro próximo.
Porém, quanto mais sofisticado o algorítmo, maior o OverHead.

Algorítmos

- FIFO (First In First Out)
- LFU  (Least Frequently Used)
- LRU  (Least Recently Used)
- NRU  (Not Recently Used)

Segmentação

Divisão correspondente à logica do programa.
A definição dos segmentos é feita pelo compilador.

Voltar ao Início

12. Sistemas de Arquivos

Introdução

O sistema de arquivos é a parte mais visível do Sistema Operacional.
Cria recurso lógico a partir de recursos físicos.
Mecanismo para armazenamento e acesso a dados e programa.
Possui 2 partes básicas: arquivos, diretórios (partições).

Objetivos

Fornecer mecanismos para vários manipularem arquivos e diretórios.
Garantir a validade e ocorrência dos dados.
Minimizar / Eliminar o risco de perda ou alteração de dados.
Otimizar o acesso.
Fornecer suporte a diferentes dispositivos e múltiplos usuários.

Requisitos

Cada usuário dever ser capaz de :
- Criar, apagar, ler ou alterar arquivos;
- Controlar as permissões de acesso aos seus arquivos;
- Estruturar o sistema de arquivos de acordo com suas necessidades;
- Transferir dados entre arquivos;
- Realizar backups e restaurar os arquivos em caso suas necessidades;
- Nomear arquivos de forma simbólica;
- Identificar e localizar um determinado arquivo;
- Gerenciar espaço físico do disco.

Conceitos básicos

Arquivo: recipiente que contém dados;
Diretório: conjunto de referência a arquivos;
Partição: abstração que permite a partir do disco físico, criar disco lógicos.

Conceito de arquivos

Menor unidade do sistema de arquivos.
Seqüência de bytes, linhas ou registros.
Possui uma estrutura interna que depende do Sistema Operacional ou do Programa que manipula.

Tipos de Arquivos

ASCII: arquivo somente texto (somente caracteres imprimíveis)
Binário: arquivo estruturado (XLS, EXE, DOC)

Atributos de Arquivos

Nome
Extensão
Tamanho
Data ; Hora
Arquivamento no diretório

Operações básicas sobre arquivos

Criação
Abertura / Fechamento
Alteração
Leitura
Apagar
Escrita
Execução ...

Diretório

Problema: Grande quantidade de arquivos gera a necessidade de organizá-los.
O sistema de arquivos oferece 2 formas de organização: partição e diretório.
Participação não resolve a organização de arquivos no disco.

O conceito de diretório

Estrutura de dados que contém informações sobre arquivos:
- Atributos
- Localização
- Propriedade

Fornece o mapeamento entre o nome do arquivo e o arquivo propriamente dito.

Tipos de diretório

Linear: somente um nível, onde NÃO suporta nomes duplicados.
Em árvore: vários níveis de diretórios, onde temos diretórios com subdiretórios.

 

O conceito da participação

Um partição é um disco lógico.
Cada partição contém: Diretórios; Arquivos; Blocos de dados; Lista; Blocos Livres.
Formatação lógica incicializa essas estruturas de dados.
Normalmente um setor especial de disco informa quais são as partições e onde começam e terminam. (MBR - Master Boot Record).

Alocação de arquivos

Uma das principais tarefas do Sistema de arquivos.


Duas estratégias são possíveis para armazenar um arquivo de N bytes:
- N bytes consecutivos.
- Espalhar o arquivo por um número de blocos de tamanho fixo e não necessariamente contínuos.

O tamanho do bloco tem uma grande influência na eficiência de utilização e de acesso a disco.

  • Bloco Grande:
    • Melhor desempenho
    • Menor fragmentação
  • Bloco Pequeno
    • Desempenho prejudicado
    • Maior fragmentação

Gerenciamento de espaco em disco

Como saber quais blocos estão libres?
- Mapa de bits
- Lista encadeada
- Tabela de blocos livres

Alocação de espaço em disco

Como saber a localização dos arquivos em disco?
- Alocação contigua
- Alocação encadeada
- Alocação indexada

Alocação contígua: O arquivo é uma seqüência de blocos lógicos contíguos alocados no momento da criação.
Normalmente usado em gravação de CD

Problema 1: Determinar o tamanho do arquivo
Problema 2: Crescimento do arquivo

Alocação encadeada: Contém tabela onde mostra primeiro bloco e quantos blocos tem o arquivo. Onde o bloco indicado é direcionado para o bloco seguinte.
Usado em partições FAT - File Alocation Table. FAT16 e FAT32

Alocação indexada: Cada arquivo possui um índice com blocos que ocupa no disco.
Problema: O tamanho do arquivo é limitado pelo tamanho do índice.
Solução: Foi criado o encadeamento de índices.
Usado em partições NTFS, imodes e EXT).

Voltar ao Início