• Nenhum resultado encontrado

Capítulo 3 Entrada/Saída

N/A
N/A
Protected

Academic year: 2022

Share "Capítulo 3 Entrada/Saída"

Copied!
81
0
0

Texto

(1)

1

Entrada/Saída Capítulo 3

3.1 Princípios do hardware de E/S 3.2 Princípios do software de E/S 3.3 Camadas do software de E/S 3.4 Impasses

3.5 Discos

3.6 Terminais com base em caracteres

(2)

Introdução

O controle da E/S é uma das tarefas centrais de um sistema operacional, que:

•  emite comandos para os controladores de dispositivo, processa interrupções e trata de erros

•  esconde detalhes específicos dos diferentes dispoitivos para o resto do S.O. através de uma interface uniforme

•  tenta paralelizar E/S e processamento da CPU/Memória para minimizar latência e maximizar vazão de dados no acesso aos dispositivos de E/S

•  controla o acesso concorrente dos dispositivos O sub-sistema de E/S consiste de duas camadas:

•  Software independente dos dispositivos (para cada classe de dispositivo)

•  Software dependente do dispositivo (drivers)

(3)

3

Tipos de Dispositivo

O Dispositivo de E/S é definido por:

–  Conjunto de comandos básicos disponibilizados –  As funções que executa

–  As mensagens de status/erro que emite

Existem os seguintes tipos de dispositivo:

Dispositivos de bloco = transferem ou armazenam dados em blocos de tamanho fixo, cada bloco possui um endereço e cada bloco pode ser acessado independentemente (acesso aleatório).

Exemplos: Discos (SCSI, IDE), CD/DVD, Fitas, SSDs

Dispositivos de caractere = lê ou escreve uma sequência de

caracteres. Cada caractere não possui endereço e não pode ser acessado aleatoriamente. Para cada caractere (ou conjunto

pequeno deles), é gerada uma interrupção. Exemplos: Teclado, Mouse, etc.

Obs: Esta classificação é apenas geral: nem todo dispositivo de E/S se enquadra exatamente em uma dessas categorias. Por exemplo:

Fitas de backup, Vídeo mapeado em memória, Modem, Interface de Rede etc.

(4)

Categorias de Dispositivos


Outra classificação

•  Para Interação Homem-Computador

–  Teclado, mouse, Display –  Impressoras

•  Para armazenamento e processamento interno

–  Discos

–  Pen-drives –  Sensores

–  Controladores –  Atuadores

•  Para comunicação remota

–  Interfaces de rede (Ethernet, 802.11, Bluetooth, …) –  Modems

(5)

IO em camadas

5

(6)

Princípios do Hardware de E/S

(7)

7

Controladores de Dispositivos

•  Partes de dispositivos de E/S

–  Componente eletro-mecânico (e-motor, Electronic Speed Controller, cabeçote magnético, sensores, etc.)

–  controlador do dispositivo (um Circuito integrado ou processador)

•  A interface física (pinos) entre o controlador e a componente mecânica é padronizada (ISO, SCSI, IDE)

•  Um controlador pode fazer o controle conjunto de vários dispositivos (componentes eletro-mecânicas)

•  Tarefas do controlador

–  converter fluxo serial de bits para conjuntos de bytes

–  Verificação da consistência dos dados (checksum) e correção de erros –  Bufferização: agrupar bloco de bytes para transferência para a

memória principal

•  Do ponto de vista conceitual, o controlador é o dispositivo de E/S.

(8)

Arquitetura Conceitual

Conceitualmente, é como se houvesse conexão direta entre CPU/

Memória e todos os controladores

Em arquiteturas reais, existem vários barramentos e circuitos

(9)

10

Controladores de Dispositivos

•  Cada controlador possui registradores que são usados para fazer o controle da E/S (da parte eletro-mecânica) e para emitir informações sobre status e condições de erro.

•  Registradores que compõem uma porta de E/S:

–  Reg. de status (bits) –  Reg. de controle (bits)

–  Reg. de entrada de dados (1-4 bytes) –  Reg. de saída de dados (1-4 bytes)

(10)

Memory – I/O Bus

(11)

12

Controladores de Dispositivos

•  Em algumas arquiteturas, o espaço de endereçamento da

memória RAM e das portas de E/S é único (E/S mapeada em memória) Exemplo: Motorola 680x0

•  Em outras arquiteturas, existe um espaço de endereçamento específico para E/S (E/S fora da memória), usado apenas para interação com os controladores.

•  A associação de um endereço com a porta de E/S de um

controlador é feita no circuito de decodificação de endereços do barramento.

(12)

E/S mapeada na memória

Espaços de memória e E/S separados

•  As instruções de E/S (com esses endereços) ativam linhas do barramento para selecionar o dispositivo e transferir os bits de/para registradores da porta de E/S.

E/S mapeada na memória:

•  Portas de E/S do dispositivo estão mapeados no espaço de endereçamento do processador. Driver executa instruções para ler e escrever nas portas (=nos registradores da controladora)

Híbrido: alguns dispositivos usam portas separadas e também espaço mapeado na memória

(13)

Endereços de Portas de E/S em um PC

14

(14)

Passos de uma leitura de bloco controlada por CPU

1.  CPU escreve comando (p.ex., ler bloco de determinado endereço) em registrador do controlador de disco

2.  Controlador aciona a componente eletro-mecânica, e transfere os dados bit-a-bit do disco para um

buffer do controlador

3.  Controlador calcula a checksum para verificar se há dados corrompidos. Se houver, faz nova leitura.

4.  Quando bloco de dados foi completamente lido, controlador levanta uma interrupção

5.  Driver executa loop para copiar byte-by-byte o

bloco do controlador para a memória principal

(15)

19

Direct Memory Access (DMA)

Em várias arquiteturas existe uma componente de HW dedicada à transferência direta de blocos de dados para a memória - Direct Memory Access (DMA):

–  Evita que a CPU tenha que executar o loop para transferência do bloco de/para a memória principal.

–  CPU apenas inicia E/S informando: endereço inicial na memória, endereço do bloco no disco, número de bytes a serem transferidos.

(16)

Acesso Direto à Memória (DMA)

Fig.: Operação de uma transferência com DMA (iniciada pela CPU)

(17)

22

Funcionamento do DMA

Passo a passo de transferência de dados do dispositivo para a memória usando DMA

(18)

Acesso Direto à Memória (DMA)

Atenção: Uma controladora DMA acessa a memória diretamente:

não têm noção de memória virtual Duas alternativas:

1.  Cópia dos dados para buffer no driver do dispositivo e em seguida, cópia para a memória alocada ao processo

2.  Cópia dos dados diretamente para um endereço do processo, mas então precisa-se garantir que a(s) páginas destino

permaneçam na memória (não sejam swapped out)

(19)

25

Saida (Escrita em Impressora)

Passos da impressão de uma cadeia de caracteres

(20)

E/S Programada com Polling

Figura: Escrita de uma cadeia de caracteres para a impressora usando E/S programada (consulta ao printer_status_reg)

Driver consulta repetidamente o status do dispositivo para saber quando dispositivo está pronto (pronto pare receber comando ou dados)

Obs:

p[] o vetor de caracteres na memória e

printer_data_register e printer_status são a porta da controladora da impressora.

(21)

27

E/S Orientada à Interrupção

Escrita de uma cadeia de caracteres para a impressora usando E/S orientada à interrupção

a)  Código executado quando é feita a chamada ao sistema para impressão b)  Rotina de tratamento de interrupção

Interrupções indicam quando uma operacão de E/S está finalizada.

Gerenciamento é implementado pela interação entre o device driver e o procedimento de tratamento de interrupcões.

(22)

E/S Usando DMA

Impressão de uma cadeia de caracteres usando DMA

a)  Código executado quando quando é feita a chamada ao sistema para impressão b)  Rotina de tratamento de interrupção

(23)

31

Princípios/Objetivos do Software de E/S (1)

•  Independência de dispositivo

–  Programas podem acessar qualquer dispositivo de E/S sem especificar previamente qual tipo/modelo/ fabricante do

dispositivo

•  Nomeação uniforme

–  Em Unix, o accesso a drivers dá através de arquivos de dispositivo, que é uma interface para um driver de

dispositivo que aparece como se fosse um arquivo comum.

Em SOs tipo Unix, são normalmente encontrados sob o diretório /dev e também são chamados de nós de

dispositivo. Exemplos:

•  /dev/hda, /dev/hdb, /dev/ttya

•  Tratamento de erro

–  Erros devem ser tratados o mais próximo possível do hardware

(24)

Objetivos do Software de E/S (2)

•  Transferências Síncronas vs. Assíncronas

–  transferências bloqueantes vs. orientadas a interrupção

–  utilização de buffers para armazenamento temporário

–  dados provenientes de um dispositivo muitas

vezes não podem ser copiados diretamente para o destino final (memória do processo)

•  Gerenciar o acesso concorrente (e otimizado) a dispositivos de E/S compartilhados

–  HD, monitor, teclado, mouse e rede são

dispositivos de E/S compartilhados

(25)

Modelo de Operação de E/S

(26)

Drivers de Dispositivo

Características/Tarefas dos Drivers:

–  Software para controle básico da controladora do dispositivo –  Faz o tratamento das interrupções geradas pelo dispositivo

–  Encapsulam as especificidades do controle básico do dispositivo (escrita e leitura das portas de E/S)

–  Em alguns casos mantém uma fila de requisições pendentes e um buffer de dados a serem copiados

–  Para discos, traduz requisições lógicas (leia bloco EndereçoX) em comandos específicos da controladora (p.exemplo: mova para cilindro 3; leia a transfira dados dos setores 34-35 da trilha 6)

–  Espera a chegada de interrupção, verifica integridade dos dados e transfere dados de/para a região de memória do processo

(27)

36

Drivers de Dispositivos

•  Drivers escrevem e lêm as portas de E/S (comandos específicos, parâmetros de controle e estado do dispositivo)

Quando é carregado, cada driver:

•  Se registra junto ao núcleo e verifica se o controlador do seu dispositivo está conectado

(ativo).

•  Se não, o driver simplesmente permanece inativo.

(28)

Drivers de Dispositivo

•  Disponibiliza uma interface API padrão (de sistema de arquivos) para o restante do sistema

•  As operações sobre arquivos open(), read(), write(), close(), seek(),

release(), mmap() etc. são

mapeadas para os procedimentos específicos de cada driver.

•  Cada dispositivo possum um:

–  major device number = índice para uma Device Diver Table e um

–  minor device number = parâmetro que caracteriza o aparelho (mas interpretação pode variar de driver para driver)

(29)

41

Camadas do Software de E/S

Fig.: Camadas do software de E/S

(30)

Software de E/S Independente de Dispositivo

Implementa funções e estruturas de dados usadas por

vários tipos de E/S e fornece uma interface uniforme para as aplicações.

Funções típicas do software de E/S independente de dipositivo

✔ API uniforme para os drivers dos dispositivos

✔ Bufferização

✔ Tratamento e notificação de falhas

✔ Alocação e liberação de dispositivos dedicados

✔ Definição de tamanho único de bloco, independente

(31)

API e nomes uniformes

•  Drivers precisam implementar uma interface (API) uniforme. Isso permite isolar as especificidades dos dispositivos e instalar novos drivers

•  Chamadas de sistema para E/S como as de arquivos simplifica o uso

•  Arquivos de dispositivo (em /dev) representam drivers de E/S

43

Seus i-nodes contém:

Major device number = número do driver

Minor device number = parâmetro do driver (a unidade do dispositivo)

•  Bits de controle de acesso rwx definem as permissões de acesso ao dispositivo

API para block devices: open, close, strategy, size e xhalt;

API para character devices: open, close, read, write, ioctl, mmap, segmap, xpoll, xhalt

(32)

Software Independente do Dispositivo

Provê vários serviços relacionados à E/S: escalonamento, uso de buffers e caches, spooling, alocação e liberacão de dispositivo e tratamento de erros

Escalonamento de E/S:

–  Quando processo faz requisição de E/S em bloco essa é enfileirada, por dispositivo

–  O Escalonador de E/S decide sobre a ordem de envio das

requisições para os discos, p/ otimizar acesso (aumentar vazão, baixar o tempo médio de resposta das requisições)

–  Faz a busca antecipada de blocos para cache

Escalonador de E/S (de disco) pode ter vários objetivos:

–  Minimizar seek time do disco –  Priorizar E/S de certos processos

–  Garantir iguais taxas de transferência de dados para cada processo –  Garantir que certas requisicões serão procesadas antes de um certo

tempo 49

(33)

Escalonador de E/S (Block devices)

50

(34)

Software Independente do Dispositivo

Tratamento de falhas:

•  chamadas de E/S retornam não só um valor de sucesso (0/1), mas também um código de erro (em Unix errno), com informação sobre natureza da falha

•  Para falhas transitórias, pode-se tentar repetir a operação de E/S, mas erros permanentes precisam ser tratados

Alguns controladores/drivers:

•  informam a natureza da falha de hardware (tipo de erro de hardware, ou requisição ilegal)

•  geram logs de erros, que podem ser consultados.

Exemplos de falhas:

•  Requisição para um setor inexistente

•  Setor de disco fisicamente danificado

•  Impureza na superfície do disco

(35)

52

Software Independente de Dispositivo

a.  Sem buffer: E/S bloqueante e mono-programação

b.  Buffer em espaço do usuário: E/S assíncrona, mono-programação c.  Buffer no driver e no processo: permite multi-programação

d.  Dois ou mais buffers no driver: permite paralelizar transferência dos dados do dispositivo e cópia para processo

A Bufferização é essencial para:

•  compensar diferenças nas taxas de transmissão (produção vs consumo) de dados pelos dispositivos. Exemplo: RAM versus teclado.

•  para mapear quantidade de bytes da requisição ao tamanho de blocos

(36)

Buffer Circular

•  É a generalização do buffer duplo

•  Desacopla a taxa de transferência de dados da E/S da taxa de consumo dos dados pelo processo destinatário

•  Usado para fazer a busca antecipada de blocos (provável necessidade de blocos vizinhos)

•  Permite atender requisições de leitura de vários processos

(37)

E/S com buffers

•  E/S Orientada a bloco (block-oriented)

–  Processo pode processar um bloco enquanto o outro está sendo lido para memória

–  Buffers ficam residentes em memória RAM

–  Subsistema de E/S mantém associação entre requisições (c/ seus blocos) e processos do usuário

–  Escalonador de E/S otimiza transferência de/para disco

•  E/S Orientada a caracteres (character-oriented)

–  Uma linha é lida/escrita de cada vez (com CR- Carriage return) sinalizando fim da linha

–  Os caracteres no buffer podem ser pré processados antes de serem entregues para o processo (raw & cooked mode)

–  Exemplo: na E/S de teclado: processar o efeito de DEL, ou CTRL, ESC, etc.

(38)

Character-Oriented I/O

(39)

57

Software Independente do Dispositivo

Principais Funções

:

Mapeamento de nomes simbólicos (/

dev/tty00) para os drivers correspondentes

Permissões para acesso aos dispositivos como de arquivos

Mapeamento de tamanho de bloco único para tamanhos de setores variados em discos

diferentes.

Transferência controlada de bytes do disco para interface de rede, compensando

diferentes taxas de dados de cada dispositivo Gerenciamento de blocos livres nos

dispositivos de bloco (discos)

Funções para a bloqueio e liberação de dispositivos dedicados

Se erro não pode ser compensado/contornado pelo driver, deve informar ao programa do usuário o tipo e erro

Exemplos

:

APIs genéricas mapeadas para funções específicas.

(40)

Suporte a E/S em modo usuário

Há suporte a E/S nas bibliotecas ligadas a programas do usuário (stdio, ioctl, etc.)

Por exemplo a formatação da entrada e saída,

printf e scanf efetuam a contatenacão de strings, e a conversão de octetos para caracteres, inteiros, float, etc.

Mas também há programas utilitários e processos (daemons), responsáveis por realizar uma tarefa específica relacionada à E/S

(41)

59

Disco 3

E/S orientada a bloco: Estrutura do Disco

•  Cilindro: coleção de N trilhas (uma em cada superfície de disco)

•  Trilha: uma circunferência de raio T completa em uma superfície de disco; contém número variável de setores

•  Setor: uma parte de uma trilha (com número fixo de bytes)

O tempo de acesso a um setor depende essencialmente do tempo de posicionamento do pente de leitores até o cilindro

correspondente e da velocidade de rotação do disco.

Disco 2 cilindro

Disco1

setor trilha

(42)

Setores em um Disco

Geometria física de um disco (com dois tamanhos de setor) vs geometria virtual

A controladora conhece a geometria física e faz o mapeamento de um

Geometria física Geometria lógica

(43)

Desempenho no acesso ao Disco

O cabeçote precisa ser posicionado na trilha, no início do setor alvo.

Isso envolve:

•  Tempo de posicionamento (Seek time)

–  Tempo para posicionar o cabeçote na trilha

•  Latência rotacional

–  Tempo necessário para que o início do setor apareça abaixo do cabeçote

•  A fim de minimizar o seek time médio para várias requisições pendentes, deve-se escalonar as mesmas

•  O Escalonador de E/S de bloco executa um algoritmo de

escalonamento de disco

(44)

Algoritmos de Escalonamento de Disco

2) Algoritmo Mais-Próximo-Primeiro (Shortest Seek Time First - SSTF) :

–  Usa tabela indexada por cilindro com lista de requisições para cada cilindro –  Enquanto move o cabeçote para um cilindro, novos pedidos vão chegando –  Escolhe sempre o cilindro mais próximo do atual

–  Atende todos os pedidos para o cilindro corrente

Posição inicial

Pedidos pendentes

1) First-Come-First Served (FCFS): não há como otimizar tempo de posicionamento (seek time).

Ordem de Requisições:

11 1 36 16 34 9

(45)

64

Algoritmos de Escalonamento de Disco

Principal problema do Shortest Seek Time First:

•  Se a chegada dos pedidos ocorre com distribuição uniforme em todos os cilindros, então:

•  Para discos muito utilizados, o cabeçote tenderá a permanecer nos cilindros do meio, e mover-se com menor probabilidade (PB) para os cilindros nos extremos.

•  Portanto, dados gravados em cilindros das extremidades levarão mais tempo para serem acessados do que dados em cilindros centrais.

Disco

Posição atual

PB PA PA > PB Posição

atual

PB

PA PA > PB

(46)

Algoritmos de Escalonamento de Disco

Algoritmo do elevador (SCAN):

•  Manter o sentido da movimentação até que não haja mais pedidos para acesso em “cilindros a diante”

•  No sentido de movimentação, atende primeiro os cilindros mais próximos

•  Um flag (UP/DOWN) registra o sentido de movimentação.

Ordem chegada:

11 1 36 16 34 9 12

Sequência de posicionamentos

(47)

Algoritmo do Elevador

Variantes:

1.  Mover o cabeçote somente até o cilindro mais afastado para qual exista uma requisição

•  Vantagem: ganha-se eficiência no atendimento global das requisições

2.  Mover o cabeçote até o cilindro mais afastado, independente de haver requisição

•  Vantagem: garante-se um tempo médio igual de atendimento para requisições nos cilindros centrais e extremos do disco

•  Desvantagem: se não há blocos escritos nos cilindros além dos limites, é improvável que cheguem requisições para lá.

3.  Registrar quais foram os cilindros mais extremos usados

até então (cil

min

, cil

max

), e fazer a varredura dentro desse

intervalo.

(48)

Algoritmos de Escalonamento de Disco

Algoritmo Circular SCAN (C-SCAN)

•  Objetivo: prover um tempo de espera mais uniforme para todas as trilhas

•  Como o SCAN, move o cabeçote de uma extremidade para outra, atendendo todas as requisições no caminho.

•  Mas quando o cabeçote atinge o cilindro mais extremo, ele retorna ao início do disco (sem atender a requisições)

Ordem chegada:

11 1 36 16 34 9 12

Sequência de posicionamentos

(49)

69

Desempenho de Acesso: Formatação de Disco

Algumas controladoras são incapazes de fazer entrada e saida de seu buffer em paralelo.

•  Por isso, discos são formatados com setores entrelaçados (b) e (c), para permitir E/S mais eficiente de setores consecutivos

•  Enquanto controladora copia blocos do setor 0 para memória, disco faz a rotação e quando cabeçote está sobre o setor 1, controladora já está pronta para receber esse setor.

(50)

Aumento de desempenho por paralelismo

•  Redundant Array of Inexpensive Disks (RAID)

•  A controladora RAID opera vários discos sincronamente e multiplica a taxa de atendimento de requisições

•  Mais discos è maior probabilidade de falha do conjunto è requer redundância de informacão

•  Possibilita também a troca de discos sem parar o sistema (hot swap)

•  Faixa = conjunto de blocos (bytes, ou bits)

Faixas espelhadas em discos

•  garante redundância

Como aumentar a taxa de atendimento de requisições ao disco?

Faixas consecutivas podem ser atendidas

em paralelo (sem redundância)

(51)

75

Redundância de Disco

Faixas de paridade espalhadas por todos os discos.

•  Corrige blocos com defeito

•  Requisições concorrentes de escrita podem ser executadas em paralelo

RAID nivel 6

Semelhante a RAID 5 mas com dupla paridade: redundância de faixas de redundância

•  Pode tolerar a falha de até dois discos.

•  Mais discos estarão envolvidos em um update de um bloco (B1) ->

diminuindo a possibilidade de paralelismo

Fatiamento em blocos faz com que escrita possa ocorrer somente no disco do bloco e no disco de paridade.

Mas o bloco a ser atualizado e o de paridade precisam ser previamente lidos para a controladora para permitir o re- calculo do bloco de paridade.

Fatiamento em nível de blocos: blocos de paridade (XOR sobre o conteúdo dos blocos) em disco separado:

•  Corrige blocos com defeito

•  Disco único de paridade torna-se o gargalo em requisições paralelas (acabam sendo sequenciais)

(52)

RAID 1+0 e 5+0

(53)

E/S Orientada a caracteres

•  Para dispositivos como:

–  Teclado –  Mouse

–  Terminal orientado a caracter –  Portas Seriais

–  Interface de rede

•  As requisições são para leitura/escrita caracter a caracter (e.g.

put(c), get (c))

•  Para compensar diferentes taxas de produção e consumo de caracteres, utiliza-se buffers

•  Alguns caracteres são de controle e precisam ser interpretados antes de serem consumidos pelo processo alvo.

83

(54)

Teclado: Funcionamento de uma entrada de dados

•  Controlador gera uma interrupção para avisar que tecla foi acionada (e seu # obtido)

•  Driver copia um número (código de tecla

pressionada/solta) da controladora para buffer interno

–  driver converte para código ASCII

–  muitos SOs fornecem mapas de teclas ou páginas de códigos carregáveis (pois teclados têm códigos de teclas não padronizadas)

•  Núcleo recebe uma requisição de leitura de um

processo, e repassa para driver

(55)

Etapas Entrada de um Teclado

(56)

Software de Entrada

•  Processamento de caracteres –  Usuário digita “hella← o” –  Teclado gera: “hellactrl-Ho”

–  Processo deve receber “hellactrl-Ho” ou “hello” ?

•  Modo crú (raw mode)

–  Driver entrega diretamente cada caracter ao processo (incl. teclas ctrl, alt, f1-f10, alt, shift,…)

–  Sem modificações, sem eco (=mostrar o caracter digitado)

–  Alguns programas usuários requerem esse modo: shell, vi, emacs, login (p/ senha)

•  Modo processado (cooked mode)

–  Caracteres são armazenados em buffer até que uma linha toda tenha sido acumulada

–  Driver faz o processamento de caracteres especiais no buffer, e ecoa o resultado na tela

–  POSIX padroniza o efeito de teclas especiais

(57)

88

Software de Entrada

Caracteres tratados de forma especial no modo canônico

(58)

Modo Cozido

•  Driver precisa...

–  Bufferizar uma linha inteira antes de passa-la para o processo

–  Processar caracteres de controle especiais

•  Ctrl-C, ERASE, Del, line-erase, Tab, shift

–  Ecoar o caracter digitado

–  Nova linha pode ser procesada em paralelo com o processamento de linha anterior

•  Para isso, precisa de buffers internos de entrada

•  Bufferização é necessária para lidar com digitação antecipada:

•  enquanto linha está sendo processada, outra linha é digitada e já pode ser lida)

•  processo consumidor ainda não está executando

(59)

90

Pool de buffers Buffer dedicado para cada terminal

Software de Entrada

Buffers no Driver de terminal

Duas abordagens de bufferização p/ digitação antecipada:

•  para computadores com muitos terminais

Manter um pool de buffers a serem usados por demanda

•  para computadores com 1 usuário:

Manter um buffer por terminal (e.g., 500 bytes)

(60)

E/S de Terminais orientados a caracter

“ echo ” de caracteres no monitor

Driver teclado

Driver monitor

ESC seq.

echo

Interrupts and key numbers read(mode,buff,1)

Raw/cooked Echo (Y/N)

controllers

Questões:

•  Onde colocar o echo? Dado que outros programa tambem podem estar escrevendo no terminal?

•  E quando a entrada ultrapassa a largura da linha do terminal? Troca de linha ou truncar linha?

(61)

Saida para um terminal

•  O terminal aceita sequencias de escape (escape sequence), que embutem controles especiais (para cursor)

Exemplo:

esc [ 3 ; 1 H esc [ 0 K esc [ 1 M

•  Cada fabricante de terminal define sequencias ligeiramente diferentes –  Dificulta fazer software independente do dispositivo

–  Unix usa arquivo “termcap”

•  É uma base de dados que gera as sequencias de escape para cada fabricante.

Vá p/

posição (3,1) Da tela

Apague a linha

Suba linhas seguintes em 1 linha

ESCAPE:

0x1B

(62)

Papel do termcap

Fazer a tradução de comandos genéricos de saída

para sequências de escape específicas para o tipo

de terminal sendo usado.

(63)

99

Software de Saída

Seqüências de escapes ANSI são usadas para

controlar navegação e edição em editores de texto

•  reconhecidas pelo driver do terminal

•  ESC é o caractere de escape ASCII (0x1B)

•  n,m, e s são parâmetros numéricos opcionais

(64)

Hardware de Vídeo (1)

Para terminais/monitores mapeados na memória

•  driver escreve diretamente na RAM de vídeo do monitor

(65)

101

Hardware de Vídeo (2)

•  Uma imagem da RAM de vídeo

–  tela monocromática simples –  modo caractere

•  Tela correspondente

–  os x´s são bytes de atributos

•  Para rolagem da tela: controladora mantém um registro de qual palavra na memória VRAM corresponde ao início da tela

(66)

Terminais conectados por rede

X Window System (X11)

X windows (MIT) foi um sistema cliente-servidor, onde terminais podiam ser compartilhados por várias máquinas na rede.

Usuário do terminal X precisava autorizar seus programas remotos (nos clientes) a jogarem a saída para uma janela do terminal.

(67)

116

Impasses (Deadlocks)

Em várias situações o sistema operacional (ou um programa do usuário) precisa ter acesso exclusivo a mais de um recurso ou dispositivo. Por exemplo, para cópia direta de dados entre dois dispositivos de E/S

Impasses podem ocorrer para vários tipos de recurso: arquivos, dispositivo de E/S, ou bases de dados

•  Exemplo:

–  Processo A faz lock em arquivo F1, e B faz lock em arquivo F2. Quando A tenta adquirir F2, é bloqueado, e não libera F1. Assim, B pode ficar bloqueado também

Recurso:: qualquer coisa que pode ser acessada por um único processo a cada vez.

Um sistema tem vários tipos de recursos, e geralmente várias

instâncias de cada tipo. Cada instância poderá ser usada por

um único processo.

(68)

Impasses

Recurso preemptivo:: que pode ser tirado do processo que o está usando sem causar problemas

Exemplo de recurso: memória principal

–  Processo pode ser swapped out

Recurso não-preemptivo:: não pode ser tirado do processo que o está usando sem causar uma falha no processamento ou inconsistência no estado do recurso

Exemplo de recursos: impressora, ou fita

•  Impasses só ocorrem com recursos não-preemptivos!

•  Recursos não-preemptivos são acessados em sessão crítica:

(Requisita recurso; Usa recurso; Libera recurso)

A requisição bloqueia enquanto o recurso está em uso por outro processo.

(69)

118

Impasses

Definição de Impasse:

Se todos os processos de um conjunto estão bloqueados e esperando por um recurso atribuído a outro processo do mesmo conjunto.

Quatro condições são necessárias para existência de um impasse:

1.  Exclusão Mútua: cada recurso só pode ser atribuído por vez a no máximo um processo;

2.  Condição segura&pede: O processo que é detentor de um recurso pode solicitar novos recursos.

3.  Os recursos são não-preemtivos: apenas o processo detentor do recurso pode liberá-lo;

4.  Espera circular: existe uma cadeia circular de dois ou mais processos, cada um esperando por recursos alocados a outro processo;

(70)

Modelando Impasses

Essas 4 condições podem ser modeladas usando um Grafo direcionado de Recursos (e processos)

Grafos de Recursos podem seu usados para verificar se uma certa sequência de requisições de recursos leva a um impasse:

Existe Impasse se houver um ciclo no grafo!

(71)

120

Exemplo

Se existe possibilidade de ocorrência de impasse o S.O. precisa criar um escalonamento seguro de processos, i.e. suspender temporariamente um processo.

è No exemplo: executar primeiro A e C, depois B.

A ordem de alocação de recursos (escalonamento) determina ocorrência de impasse!

Sejam 3 processos:

(72)

Estratégias para lidar com impasses

1.  Ignore o problema, e torça para que não ocorra!

•  Abordagem prática

•  Compromisso entre: probabilidade de ocorrência vs impacto negativo sobre uso do sistema vs custo de implementação

•  A maioria dos Sistemas Operacionais (incl. Unix/Minix) seguem essa abordagem

2.  Detecção e Recuperação

•  Antes de cada alocação de recurso (ou periodicamente) verifique o Grafo de Recursos;

•  se houver um ciclo, termine/suspenda um dos processos, libere um de seus recursos e volte ao seu estado original

3.  Prevenção de impasses

•  evite qualquer uma das 4 condições necessárias para impasses

(73)

122

Prevenção de Impasses

Idéia: impor restrições sobre os processos/ recursos para evitar ocorrência de qualquer uma das 4 condições necessárias:

1.  Exclusão Mútua: cada recurso é associado por vez no máximo a um processo;

2.  Condição segura & pede: O processo que é detentor de um recurso pode solicitar novos recursos.

3.  Todos os recursos são não-preemtivos: somente o processo de posse do recurso pode liberá-lo;

4.  Espera circular: deve existir uma cadeia circular de dois ou mais processos, cada um esperando por recursos sendo mantidos por outro processo;

Vejamos como evitar cada condição...

(74)

Prevenção de Impasses

1.  Evitar exclusão mútua:

Limite o acesso ao recurso a um único processo (gerenciador que cria fila de requisições), e.g. spooler de impressora

...mas nem todos os recursos podem ser gerenciados dessa forma

(75)

124

Prevenção de Impasses

2.  Evitar condição Segura&Pede:

Alternativa 1: Faça com que cada processo requisite todos os recursos antes de iniciar a execução.

Problemas:

•  Pode ser impossível conhecer de antemão todos os recursos que processo irá acessar.

•  Alocação de recursos não será eficiente: recursos serão bloqueados (lock) mesmo enquanto o processo estiver acessando outros

recursos

Alternativa 2: Se um processo quer requisitar um novo recurso, precisa antes liberar todos os recursos já alocados

Problemas:

•  Os recursos alocados têm um estado (relacionado ao acesso) que precisa ser mantido. Então, a liberação temporária teria que

desfazer esse estado. Os processos seriam frequentemente

interrompidos e teriam que refazer suas operações (èaumentaria a sobrecarga)

(76)

Prevenção de Impasses

3.  Evite nâo-preempção:

Todos os recursos teriam que ser preemptivos, mas isso é impossível (p.ex. Impressora, fita backup)

4.  Eliminar condição de espera circular – de alguma forma:

Alternativa 1: garanta que cada processo tenha alocado um único recurso a cada momento (isso limitaria o grau de compartilhamento de

recursos)

Alternativa 2: defina uma ordem global dos recursos e garanta que todas as alocações são feitas sempre seguindo essa ordem. Ciclo é

evitado pois se ij então: se A mantém Ri não irá requisitar Rj, ou se B mantém Rj não irá requisitar Pi.

Variante: Em vez de impor uma ordem estrita de requisições garanta que nenhum processo requisite um recurso com numero maior do que um recurso que já possui. Problema:

(77)

128

Alocação segura de recursos

Mesmo se todas as condições necessárias para a sua

ocorrência estejam presentes, é possível evitar impasses.

O Algoritmo do Banqueiro (Dijkstra,65) determina uma alocação segura de recursos de forma que impasses nunca irão ocorrer.

Idéia princial:

–  Mantenha sempre suficientes recursos (estado seguro) de

maneira que sempre exista um processo que possa alocar todos os recursos que precisa, possa terminar e liberar os recursos para os demais processos também terminarem

•  Estado seguro:: é um estado de alocação de recursos tal

que exista uma sequência de estados futuros de alocação

dos recursos (e finalização dos processos) que garanta

que todos os processos em algum momento obterão

todos os recursos necessários e terminarão.

(78)

Algoritmo do Banqueiro

Caso para 1 tipo de recurso (por exemplo, $$):

Um banco dá crédito a fazendeiros até um limite máximo; clientes

sacam o dinheiro à medida que precisam; o banco precisa garantir que sempre haverá suficiente dinheiro disponível em face dos

créditos concedidos.

Exemplo: Banco tem um total de 10 unidades (p.ex. R$ 10 milhões) para todos os seus clientes.

(79)

130

Algoritmo do Banqueiro

Generalizando para recursos de vários tipos

•  Usa 2 matrizes (de recursos alocados/e recursos ainda não alocados) e 3 vetores:

–  E: total de instâncias de cada tipo de recurso

–  P: total de instâncias alocadas de cada tipo de recurso –  A: quantidades disponíveis de cada tipo de recurso

Existe a sequência de processos que conseguem terminar:

D ; A; {C, E}; {E,C}, B

(80)

Algoritmo do Banqueiro

Verificação se uma nova requisição de recursos vai levar a um estado seguro:

1.  Procure por processo P (linha da matriz de recursos não alocados) cuja demanda restante de recursos é menor do que A. Se não existe tal processo, então sistema pode entrar em impasse;

2.  Senão, assuma que P terminou, marque-o como tal, e adicione o número máximo de recursos de P ao vetor A.

3.  Repita passos 1 e 2 até que todos os processos foram marcados como terminados, ou então verificou-se que estado não é seguro è requisição não deve ser

atendida.

(81)

132

Algoritmo do Banqueiro

Trata-se de um trabalho teórico interessante ... Mas raramente aplicado na prática.

Principais problemas:

–  Impossibilidade de conhecer de antemão as quantidades máximas de recursos necessários para cada processo;

–  Teria que analisar todos os processos no sistema –  O conjunto de instâncias de recursos é dinâmico

Existem abordagens mais pragmáticas para a

Prevenção de Impasses (p.ex. Bloqueio em 2 fases, principalmente para bancos de dados)

–  Processo tenta bloquear todos os registros que precisa (fase 1) de uma vez. Se um (ou mais) dos registros já está

bloqueado, processo aborta e tenta alocar novamente mais tarde

–  Se tiver sucesso, faz os acessos e libera todos os registros simultaneamente (fase 2).

Referências

Documentos relacionados

Harry nos responde logo em seguida: “Talvez ela não precisasse ser salva se não tivéssemos trancado a coisa com ela – lembra Harry.” (ROWLING, 1997, p. Ou seja, podemos perceber

Objetivou-se, com este trabalho, avaliar o efeito da adição de superfosfato simples à composição do substrato sobre o crescimento e o teor de macronutrientes na parte aérea de

ISH/IRL/ST/Chestnut/04 / OBOS Quality x OBOS Flower POR Denis Coakley EL.

10.1 Após a Comprovação de Títulos, será realizada a distribuição de aulas/vagas por Setor ou Município de inscrição, em Sessão Pública, coordenada pelo NRE, nos

Ressalvando-se que a responsabilidade do profissional contabilista fica restrita apenas ao aspecto meramente técnico, tendo em vista que, reconhecidamente operou com elementos,

3.2 Tratamento: 3.2.1 Opção de tratamento para pacientes com Câncer de Mama Metastático com Receptores hormonais positivos e Her-2 Negativo – sem crise visceral: 3.2.1.1 Pacientes

O acréscimo do aditivo do leite materno humano na dieta de recém-nascidos pré-termos pode ser de grande importância para a recuperação e evolução do

PERU para o IHRU.. A CÂMARA VU.07) (DESPACHO DE 20/10/2017); formulação de observações, as sugestões e os Tomado conhecimento pedidos de esclarecimento, bem como a