Buscar

SOII_Materia_Parte10

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 125 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 125 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 125 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 1 
 
1) ENTRADA E SAÍDA 
 
Intel: Interrupções de E/S – IN/OUT. 
Portas de E/S: Porta Serial - 2F8H – 2FFH e Porta Paralela - 378H – 37FH. 
 
Exemplo de entrada: receber dados da rede via placa de rede 
Exemplo de saída: exibição de informação na tela 
 
A idéia é mandar dados e o dispositivo faz alguma coisa com esses dados, por exemplo, o disco 
grava, a impressora imprime. Apenas o so que roda em modo núcleo pode mandar o dispositivo parar 
de funcionar ou não, apenas o so consegue executar instruções de IN e OUT (entrada e saída) para o 
dispositivo, por segurança, por exemplo, vírus. Ou seja, apenas o so se comunica diretamente com o 
dispositivo. 
 
A idéia é mandar dados e o dispositivo faz alguma coisa com esses dados, por exemplo, o disco 
grava, a impressora imprime. 
 
Apenas o so que roda em modo núcleo pode mandar o dispositivo parar de funcionar ou não, apenas 
o so consegue executar instruções de IN e OUT (entrada e saída) para o dispositivo, por segurança, 
por exemplo, vírus. Ou seja, apenas o so se comunica diretamente com o dispositivo. 
 
2) ENTRADA E SAÍDA MAPEADA NA MEMÓRIA: 
 
Usada quando a CPU não tem instruções específicas de E/S. Um intervalo de endereço é reservado 
para E/S. Ex.: 1000 a 1999. Mov [1000], AH – significa enviar o dado para o dispositivo. 
 
A Intel tem instruções de E/S : IN e OUT e tem portas de E/S que são numeradas. 
 
Porta Serial: 2F8h – 2FFh 
Porta Paralela (impressora): 378h – 37Fh 
Drive de disquete: 3F0h – 3F7h 
 
Cada dispositivo tem um conjunto de portas. O SO usa instruções IN e OUT para acessar as portas e, 
conseqüentemente, seus respectivos dispositivos. Ex.: OUT 378h, 41h (envia para a impressora a 
letra “A”). 
 
Há portas de controle e portas que transmitem dados. Um programa que envia uma instrução errada 
para um dispositivo pode causar o não funcionamento dele. Programas não podem enviar comandos 
para os dispositivos. Só o SO quando roda em modo núcleo pode executar instruções de E/S. 
 
O SO é dividido em partes. Uma delas são os device drivers que controlam os dispositivos. Cada 
dispositivo tem seu próprio device driver. 
 
A CPU é muito mais rápida que um dispositivo. A CPU tem que esperar quando manda uma ordem 
para um dispositivo. Tem que existir no dispositivo uma porta de status para que a CPU saiba quando 
a informação já estiver disponível. A CPU fica em espera ocupada (executando o loop) até que 
obtenha a informação necessária. 
 
Ex.: OUT 3F0h, 80h; ler algo 
 VOLTA: IN 3F1h, AX; AX = 0  info não lida. AX <> 0  info lida. 3F1 (porta de status) 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 2 
 
 JZ VOLTA; enquanto AX = 0, fique em loop. 
 
3) DEVICE DRIVER 
 
Os device driver é um pedaço do sistema operacional que controla os dispositivos. Antigamente no 
Unix ao trocar um dispositivo tinha que trocar redigitar a linha de código do sistema operacional, 
hoje em dia, ficou uma coisa isolada do SO para que ao trocar o dispositivo basta trocar o device 
driver. Até porque hoje em dia quem programa o device drive muitas vezes não é quem desenvolve o 
so, mas sim quem desenvolve o dispositivo. 
 
Existe um device drive para cada tipo de dispositivo. O device drive fornece uma visão de mais alto 
nível para o sistema operacional. Todos os sistemas operacionais são assim, não precisam alterar 
uma linha de código ao alterar o dispositivo, pois basta trocar o device drive. 
 
 
 
 
 
 
 
 
Este módulo do SO responsável pela comunicação entre o SO e o dispositivo. Impede que ordens 
erradas sejam enviadas ao dispositivo. Tem os detalhes da comunicação dos dispositivos. 
Dois tipos de informação a ser enviada ao dispositivo: Dado e Controle / Status. 
 
Esses tipos de informação geram dois tipos de porta: Dado e Controle / Status. As instruções E/S são 
executadas no modo privilegiado, isto é, garante a execução feita so pelo SO. 
 
4) COMPATIBILIZANDO VELOCIDADE CPU E DISPOSITIVO 
 
A CPU é muito mais rápida que o dispositivo então tem que compatibilizar a velocidade. Existem 
algumas formas de fazer essa compatibilização: 
 
1ª) ESPERA OCUPADA OU POLLING 
 
Antes de enviar o dado a CPU verifica se o dispositivo pode receber. Problema: Desperdício da CPU, 
pois fica toda hora perguntando se o dispositivo está pronto. Usada quando SO roda um processo por 
vez. 
 
A CPU executa o loop e espera que o dispositivo venha estar disponível. E como a CPU sabe disso? 
Existe uma porta de status, que vai dizer isso a CPU. A CPU vai consultar essa porta de status e 
verificar se o dispositivo está disponível. Enquanto a CPU está esperando o dado ficar pronto no 
dispositivo, ela fica em loop ociosamente, só executando duas instruções uma de IN e outra de OUT. 
LOOP : IN Porta_status, AX 
 JZ LOOP //Loop enquanto AX=0 
IN PortaLeitora, BX 
 
Como dito acima, o problema de estar em loop é que a CPU não executa mais nada. Mas, existem 
outras formas de E/S mais eficientes de sincronizar a velocidade. 
 
 
SO 
Device Driver 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 3 
 
2ª) POR INTERRUPÇÃO 
 
O dispositivo avisa à CPU através da interrupção do estado OK. Não tem problema evidente, mas 
tem coisa melhor. 
 
O dispositivo avisa quando está pronto, ao invés da CPU perguntar se está pronto, o dispositivo tem 
a proatividade de avisar. Qual o mecanismo de hardware que identifica esse tipo de atividade? É a 
interrupção, a CPU pode estar executando qualquer coisa que será interrompida quando acontecer 
um evento. Esse é outro modo de fazer E/S. 
 
Na espera ocupada mantinha-se uma ordem de leitura. Depois executa um comando de leitura para 
receber o dado. A ordem para ler tem que continuar existindo para ler o disco. O que deixa de existir 
é o loop. Como fica? Tem uma parte que é o SO executando, conforme exemplo abaixo: 
 
Execução Normal 
 DO SO 
 OUT PORTA_CONTROLE, VALOR;ORDEM LEITORA 
 SO escalona outro processo. 
 
Quando o dado fica disponível no dispositivo é gerada uma interrupção. A CPU pára o que estava 
fazendo e executa a rotina de tratamento de interrupção e volta a executar o que estava executando 
antes da interrupção. 
 
No tratamento da interrupção a rotina que vai executar quando o dado estiver disponível no disco, 
quando o status muda gera uma interrupção. Salva as rotinas nos registradores antes da interrupção 
acontecer para que continue executando de onde parou ao terminar a interrupção, mas para isso, 
antes de terminar tem que restaurar os registradores. 
 
 IN PORTA_LEITORA, BX //Lê o conteúdo da porta e coloca em BX 
 MOV AX, [500] //Carrega o ponteiro 
 MOV [AX], BX //Salva o dado na memória 
 INC AX //Incrementa o ponteiro 
 INC AX 
 MOV [500], AX //Salva o ponteiro 
//Restauração dos Registradores 
 RET I //Acaba o tratamento da interrupção 
 
3º) POR DMA(DIRECT MEMORY ACCESS) 
 
É um acesso direto de memória. Como funciona? Existe uma comunicação entre a CPU e a memória, 
essa comunicação é feita por um componente chamado barramento de memória que sai da CPU e vai 
para memória. 
 
Existe outro barramento que é o de E/S. No desenho abaixo se termina de usar um dispositivo de 
E/S, o dado tem que estar na memória. No caso de fazer E/S com DMA existe um componente que 
se chama controlador de DMA, este se liga no barramento de E/S e no barramento de memória, a 
função deste controlador é capaz de fazer o dado transitar entre o dispositivo de E/S e a memória sem 
ter que passar pela CPU. 
 
 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 4 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A vantagem é que a CPU não gasta tempo possuindo o dado, lendo ou escrevendo no dispositivo, 
pois o controlador que faz isso e esse mecanismotorna mais rápido a E/S. 
 
Execução Normal do SO: 
 Bloquear o processo que motiva a leitura 
 Ordem para o dispositivo 
 Ordem para o controlador de DMA 
 Escalonar outro processo 
 
O SO dá a ordem do dispositivo para ler e dá ordem para o DMA para transferir e escalona o 
processo para executar. Após a execução normal da CPU num certo momento todo dado que o 
processo quer estará disponível na memória. 
 
Quando a memória encher poderá ser desbloqueado o processo, porque o dado que ele queria 
continua na memória como ele queria. Como o SO vai saber que o dado já esta disponível para o 
processo usar? 
 
Continuará existindo um tratador de interrupção, o objetivo deste é avisar que o dado está na 
memória. Antes que a interrupção transfeira o dado para a memória, agora ela só avisa que o dado 
está na memória e só ocorre no final. A transferência é feita pelo controlador de DMA. 
 
No processo de DMA, a CPU envolve-se em dois momentos, em disco e no desbloqueio do 
processo. 
 
 
Placa de vídeo 
CP
U 
Memória 
Controlador de DMA 
Barramento de E/S 
Barramento PCI 
Barramento AGP 
(Não existe mais) Barramento ISA 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 5 
 
5) DESVANTAGEM DA DMA 
 
Agora passa a ter duas entidades que estão mandando ordens: a CPU e a controladora de DMA, 
passando dados usando o barramento. O problema é a concorrência no uso do barramento, ou seja, a 
CPU e a controladora de DMA podem querer usar o barramento no mesmo instante, mas isso não 
poderá acontecer, então terá a convenção para uso do barramento, a CPU poderá ter que esperar a 
controladora de DMA, quando este largar então a CPU poderá usar o barramento. 
 
Apesar de ser uma perda de tempo a CPU ter que às vezes esperar a desocupação do barramento, 
mas é muito menos do que o tempo que se gastava antes quando transferia o dado por interrupção. 
 
Há prioridade para uso ou do controlador ou da CPU? Não sei (respondeu o professor!), mas 
respondeu que este não é um acesso longo, porque alguma coisa do tamanho do barramento, por isso 
mesmo que haja concorrência, o tempo de espera é pequeno. Existe um chip, que é o árbitro do 
barramento, onde pode configurar quem utilizará o barramento, a CPU ou o DMA. 
 
Existem outros dispositivos, por exemplo, a placa de vídeo, que não precisa compatibilizar 
velocidade, pois tem a memória da placa que é praticamente compatível com a CPU. 
 
Todos os dispositivos que precisa compatibilizar velocidade de transferência de dados com a CPU e 
cujo volume de dados é muito grande utiliza esse mecanismo, o DMA, que é o mais eficiente. 
Quando o volume de dados é pequeno é utilizada a interrupção, 1 byte, por exemplo. Exemplos de 
dispositivos que utiliza interrupção, por transferir 1 byte por vez: mouse, teclado, modem. 
 
6) VANTAGEM DA DMA 
 
Por DMA é vantajoso quando tem grande volume de informação. Enquanto a controladora de DMA 
faz transferência, a CPU está fazendo outras coisas. Processa transferências simultâneas e é mais 
rápido porque é dedicado para E/S. Não é 100% perfeito porque o canal entre a CPU e a memória é 
formada por um único conjunto de fios. Quando a DMA está fazendo acesso à memória, a CPU não 
pode usar. Tem interrupção para avisar que instrução acabou. 
 
7) DISPOSITIVO DE ARMAZENAMENTO OU DE BLOCO – DISCO (EXPLICAÇÃO 1) 
 
O disco tem que ser organizado de alguma forma para localizar um dado de forma eficiente. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Cabeça magnética capaz de 
ler/escrever e que se move ao 
longo do raio do disco 
Disco 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 6 
 
 
Os discos são divididos em trilhas (faixas do disco concêntricas). As trilhas se dividem em setores. 
 
 
 
 
 
 
 
 
 
 
 
 
 
Os discos não são mais assim. Só os disquetes. Nos discos antigos você precisa identificar qual a 
trilha e o setor que precisa ser acessado. O disco mais modernos tem vários pratos, um em cima do 
outro, com um espaçamento entre eles. Um prato tem 2 superfícies. Logo, precisam ser informados 
três informações para gravar/ler/apagar um dado: trilha, setor e superfície. 
 
Cada superfície tem uma cabeça magnética. Existe um motor só para todas as cabeças. Logo, se uma 
cabeça começa a se mover, as demais se mexem também. Se uma cabeça se move para se posicionar 
sobre a trilha 3, todas as outras cabeças magnéticas das outras superfícies também se moverão para 
se posicionarem na trilha 3, cada uma pra sua superfície. 
 
Isso influencia no uso do disco. Para ler um setor, a cabeça tem que se deslocar para a direção da 
trilha e o setor precisa passar embaixo da cabeça, através do giro do disco. Existem 3 tempos que 
somados dão o tempo total gasto para se obter um dado do disco: 
 
Tempo de seek: tempo gasto no movimento da cabeça ao longo do eixo para chegar na direção da 
trilha. 
 
Tempo de latência: tempo gasto para o setor passar embaixo da cabeça. 
 
Tempo de transferência: tempo gasto na leitura de todo um setor pela cabeça para que o dado possa 
ser transferido para a memória controladora. 
 
Geralmente o tempo de seek é de 10 ms. O tempo de latência depende do número de rotações do 
disco: 
 
Se o disco faz 12000 rpm (rotações por minuto), ele faz 200 rotações por segundo ou 0,2 rotação por 
milésimo de segundo. Portanto, para dar uma volta, o disco gasta 5 ms. Para dar meia volta, que é a 
distância média que o setor leva pra passar embaixo da cabeça magnética, leva-se 2,5 ms. 
 
O tempo de transferência é bem pequeno. 
 
8) LINEARIZAÇÃO DO DISCO 
 
O SO vê o disco como unidimensional. Essa linearização é feita pelo device driver do HD. Quais os 
tipos de acesso que podem ser feitos nos arquivos? Sequencial e Randômico. 
Setor 
Circular 
Setor 
Trilha 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 7 
 
 
Acesso sequencial: o arquivo é lido em seqüência por um programa (compilador ou acesso ao banco 
de dados de empregados cuja pesquisa é feita do início do disco) 
 
Acesso randômico: o arquivo é lido em uma ordem qualquer (acesso ao banco de dados de 
empregados com pesquisa através de índice que localiza diretamente o empregado). 
 
Para o acesso sequencial o arquivo precisa ser colocado na mesma trilha. Se o arquivo for maior, o 
ideal é que o resto do arquivo seja colocado na mesma trilha mas em superfícies diferentes, já que 
todas as cabeças se movimentam juntas e com esse esquema o dado é lido mais rápido (reduz o 
tempo de seek). 
 
O device driver é que faz a arrumação do arquivo na mesma trilha em várias superfícies, a fim de 
agilizar o acesso a um arquivo. Cilindro é o conjunto das mesma trilha em superfícies diferentes. 
Só se usa outro cilindro se a mesma trilha de todas as superfícies já foram usadas. 
 
Quando existem diferentes processos querendo ler dados do disco, os pedidos precisam ser 
cordenados para que possam ser atendidos. A idéia é fazer com que a cabeça magnética mexa o 
mínimo possível. 
 
9) DISPOSITIVO DE ARMAZENAMENTO OU DE BLOCO – DISCO (EXPLICAÇÃO 2) 
 
Dispositivos que armazenam dado ou 
dispositivos de bloco 
 
Dispositivos que não armazenam dado 
ou dispositivos de caracter 
 
CD ROM / Disco rígido / Disco Flexível 
 
Placa de Rede/ 
Teclado/Mouse/Modem 
 
 
Os dispositivos de não armazenamento de dados são chamados de dispositivos de caracter, pois não 
há a necessidade de ter a unidade localizável. E como é a forma que o Windows usa esse tipo de 
dispositivo? Esse tipo de dispositivo é usado indiretamente, terá um conjunto de rotinas do SO que 
existem para lidar com cada tipo de dispositivo (teclado, mouse e etc.) são chamadas que o 
programador pode fazer. 
 
A cada dispositivo que for inventado, ou usará uma API que já existe ou terá que inventar uma API 
nova. Enquanto isso, o Unix terá uma maneiradiferente na chamada ao dispositivo o Unix considera 
o dispositivo como um arquivo todo o dispositivo do Unix entra no C do arquivo poderá ser 
mandado dado aos dispositivos como se estivesse escrevendo ou lendo o arquivo, isso diferencia a 
programação. 
 
 
 
 
 
 
 
 
 
 
Velocidade angular constante 
CONSTANT 
ANGULAR 
VELOCITY 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 8 
 
Todo setor tem no final informação de controle para permitir a verificação da integridade do dado 
que foi gravado no setor é feito por soma dos bytes, isto é, controle matemático. A verificação é a 
primeira coisa ao acessar um setor pela primeira vez. 
 
Para fazer leitura e escrita, tem 3 tempos: Tempo de Acesso = Seek + Latência + Transferência 
 
Tempo de Seek: Tempo da cabeça alcançar a trilha correta. Obtido através de teste. 
 
Tempo de Latência: Tempo que demora pro setor passar embaixo da cabeça. Melhor caso: 0s. Pior 
caso: Tempo de 1 volta. Caso Médio: 0 + Tempo de 1 volta / 2 
 
Tempo de Transferência: Tempo da cabeça percorrer o setor inteiro. Tempo p percorrer n setores = 
Tempo de 1 volta. Tempo para percorrer 1 setor = x. x=tempo de 1 volta / n de setores. Pior caso: 1 
volta 
 
Um disco tem várias cabeças, mas o motor é único, por isso a cabeça mexe junto. Isto gera cilindro 
que é o conjunto de trilhas que possuem o mesmo raio. Tem que passar 3 informações par ao disco: 
N° da superfície, N° da trilha e N° do setor. 
 
É vantajoso salvar um arqvo em vários setores da mesma trilha. Tempo de seek e latência menor 
(não se gasta). Gasta apenas o de transferência. Quando a trilha acaba o melhor próximo setor é na 
superfície de baixo ou em outros pratos. De um cilindro para outro gasta tempo de seek. 
 
Hoje em dia, o disco é visto como um vetor de setores. Cada cilindro ocupa setores em sequencial. 
SO guarda arquivo de forma seqüencial em setores seqüenciais. No melhor caso, só terá seek e 
latência inicial. 
 
Capacidade de magnetização é proporcional a massa do material magnetizado 
 
Massa = densidade (constante K) * volume 
 
Volume = espessura (k) * largura (k) * comprimento 
 
Comprimento dos setores mais externos > mais internos (externo tem > capacidade de magnetização) 
O desperdício era a gravação da mesma qtd de bytes nos setores com comprimentos diferentes. 
 
Solução: Deixar o comprimento dos setores mais constantes (mais setores nas externas do que nas 
internas) 
 
Qual o problema? É de testar a capacidade de magnetização de um certo disco. Depende da massa de 
metal magnético que o disco tem. Quanto mais massa mais capacidade ele tem. Então, a capacidade 
de magnetização é proporcional à massa. 
 
A densidade é fixa, pois depende do material e a capacidade proporcional ao volume. 
 
 
Volume = espessura X comprimento X largura 
Onde: K = constante 
 
K K 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 9 
 
A espessura e a largura são constantes, mas o comprimento não é constante, pois cada setor tem um 
comprimento diferente. A capacidade é proporcional ao comprimento, o problema é que o 
comprimento não é constante ao longo do eixo. 
 
Então os setores mais externos eram subutilizados eram menos usados do que a capacidade de 
armazenar existia um desperdício dos setores mais externos. Como resolver essa deficiência? 
Mudando a rotação, exemplo do CD-ROM e outra solução usar um conversor analógico/digital que 
consigua converter a taxas diferentes. 
 
 
Freqüência de gravação: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
O setor mais interno tem um movimento menor que o setor mais externo. Existe uma capacidade de 
armazenamento maior no setor mais externo. 
 
A idéia é gravar a mesma quantidade de byte no setor mais externo e no mais interno e tem uma 
razão de ser isto: Para o disco ser lido o disco magnético, ele tem uma cabeça que lê o que está 
gravado lá. Esse magnetismo que é lido, por exemplo, poderá gerar um sinal às vezes de 1 às vezes 
de 0, como converter isso para digital? O conversor analógico digital faz a amostragem, lendo o bit e 
vendo qual o valor tem uma conversão analógica/digital para converter o bit que é essa razão de 
amostragem. 
 
Os conversores mais antigos eram obrigados a guardar a informação do mais interno, pois o tempo 
que roda para rodar o mais externo era igual, pois a rotação era a mesma, a velocidade angular 
constante, era igual, o tempo que demora a passar no mais interno é o mesmo para passar no mais 
externo, pois o fator é o mesmo. 
 
Com isso, se gravar mais informação no setor mais externo o que iria acontecer é que a onda ficaria 
mais apertada. No mais interno gastaria t-20 e no mais externo t+20. O problema é que o conversor 
analógico/digital usado normalmente, não conseguiu fazer a conversão em outra seqüência, 
conseguia converter em uma freqüência maior, a taxa de acoplagem menor. 
 
Hoje em dia, o conversor analógico/ digital já consegue fazer a conversão em qualquer freqüência, se 
tivermos lendo uma trilha mais externa lê-se em uma freqüência maior do que se tiver lendo no setor 
Conversor 
Analógico 
Digital 1 0 1 1 0 1 0 0 
1 1 
1 
1 
0 
0 
0 0 
Setor interno 
grava menos 
dados, texto os 
bits em uma 
freqüência mais 
lenta. 
Setor externo tem 
uma capacidade 
maior, gravam 
mais dados, testa 
os bits em uma 
freqüência mais 
rápida. 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 10 
 
mais interno. Atualmente nas trilhas mais internas existem menos setores, enquanto que nas trilhas 
mais externas tem mais setores. 
 
O número de setores é maior dos mais externos e menor do que os mais internos, enquanto nos 
discos antigos tinha 8 setores por trilha internamente e 8 externamente. Ao fazer a conversão das 
trilhas mais externas tem que fazer com que a conversão seja mais rápida. Hoje em dia as taxas de 
conversão são variadas. 
O problema é a taxa de conversão, antigamente tinha que ser a mesma porque o hardware não 
conseguia converter à taxas variadas, o que acontecia, por exemplo, com a relação ao CD-ROM? O 
setor mais interno ele tem um comprimento que é diferente do mais externo. Uma solução era poder 
fazer isso mudando a taxa de conversão. 
 
Uma solução intermediária, solução do CD-ROM, para resolver esse problema, o problema do 
desperdício, para isso é fazer a mesma taxa de conversão dos setores externos ou internos, alterando 
a rotação, fazendo o disco rodar a velocidades diferentes, se o disco roda mais devagar no lado de 
fora e mais rápido do lado de dentro, a idéia é fazer a velocidade linear ser constante. 
 
O tempo para ler a parte interna seja igual ao tempo da parte externa. O conversor analógico/digital 
sempre na mesma freqüência. Essa última solução é uma solução antiga. 
 
Os discos hoje em dia têm a velocidade angular constante - CAV, pois tem a mesma rotação, com 
taxas diferentes, evitando o desperdício, mantendo comprimento igual, a capacidade de 
armazenamento é a mesma. 
 
O CD-ROM tem a velocidade linear constante - CLV, pois alterava a rotação, mais devagar 
externamente e mais rápido internamente com um tempo igual para ler as duas partes era uma 
solução intermediária, pois diminuía o desperdício, mas o problema era ter que ficar freando o disco. 
 
Deixando o disco lento para acesso randômico, mais adequado para disco de música. Isto demora um 
tempo, mais tempo do que mexer a cabeça de leitura. Hoje em dia os discos são como mostrado 
abaixo. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
A idéia é ter comprimentos iguais 
para não rodar em velocidades 
diferentes 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 11 
 
A idéia é manter a mesma velocidade para ler o setor interno e externo. Tanto o interno como o 
externo fica como descrito no setor internodescrito acima. Isto acontece com o CD-ROM. 
 
 
 
 
 
 
 
 
 
 
 
 
 
O disco do CD-ROM tem um problema de lentidão. Não é a solução mais usada. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Nos discos simples quanto nos discos antigos em que os setores tinham que ser endereçados a uma 
certa unidade de gravação que é um setor, para isso tinha que ser especificado duas coisas: Qual a 
trilha? E Qual o setor? 
 
Mas isso é o lado do disco, o disco tem uma outra cabeça de gravação/leitura embaixo. O disco não 
tem só um lado, têm várias partes. Por isso, também tem que ser conhecido qual a superfície. 
 
Então são três coordenadas que identificam o disco: Trilha, Setor e Superfície. Cada superfície do 
desenho abaixo tem uma cabeça magnética. Tem um eixo também na parte de baixo que auxilia para 
ler e escrever naquela superfície. 
 
Quando uma cabeça se mexe todas as outras se mexem juntas, então só precisa de dois motores, um 
que gira e outro que mexe as cabeças. Quando vou ler ou escrever no setor, duas coisas acontecem: 
 
 
1 
2 
3 
4 
5 
CD-ROM=> velocidade linear constante 
 
CONSTANT 
LINEAR 
VELOCITY 
CLV 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 12 
 
1º - A cabeça tem que mexer por inteiro 
2º - O setor que será lido ou escrito tem que passar por baixo da cabeça 
 
 
 
 
 
 
 
 
 
 
 
Esses dois movimentos têm que esperar para que o setor seja lido, esses tempos são os abaixo: 
 
- Tempo de seek – tempo que leva para mover a cabeça de leitura. Tempo rápido de seek (10ms) 
- Tempo de latência – é o tempo que o setor correto demora a passar na cabeça de leitura. É menor 
que o tempo de seek. Então minimizará o tempo de seek é importante, pois demora mais. 
Ex.: Um disco com 12.000 RPM = 200RPS 
Isto significa que a cada 5 milésimos tem uma rotação – 1 volta a cada 0,005 s. 
Meia volta – 0,0025 = 2,5ms 
 
10) LINEARIZAÇÃO DO DISCO 
 
Esta é uma visão que é complicada para o SO, o SO não conhece, as três dimensões, então existe 
uma função no hardware que se chama linearização do disco que transforma o disco em uma coisa 
lógica com uma dimensão. O hardware dá a visão do disco como uma visão linear. 
 
O SO está vendo só isso: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tipo de acesso que se pode fazer em arquivo: 
- Seqüencial: quando tem o arquivo ele é lido em seqüência. Ex: Compilador que compila o 
código – fonte. 
- 
- Randômico ou aleatório: não existe ordem de leitura seqüencial, parece ser aleatória, mas tem 
uma lógica que faz isso. Ex: Arquivo de Banco de Dados: um arquivo com registros de 
empregados, que pode ser feito uma pesquisa. 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 13 
 
 
Tem que se organizar o arquivo para que o acesso seja rápido. O problema surge quando se esgota a 
trilha, onde se coloca o 9º setor deste arquivo? Fica na trilha debaixo, essa linearização também tem 
que ser transmitida ao disco lógico, para o SO reconhecer. 
 
Seis superfícies – São a mesma trilha se colar vira um cilindro. 
 
A ordenação da trilha do disco tem que está refletindo na linearização do disco, ou seja, no disco 
lógico. O device drive já conheceu o disco hoje em dia quem lineariza o disco é o LBA, que foi 
desenvolvido para evitar estourar o número de trilhas. 
 
Existe outro problema no disco que é quando existe diferente processo pedindo para ler o disco, terá 
que sequenciar os pedidos que são feitos. Se for seqüenciado de uma forma ruim pode se fazer a 
cabeça mexer muito. Em qual cilindro fica o pedido que o processo faz. 
 
Vamos supor que a cabeça esteja no cilindro 10 e chega a cabeça no cilindro 10. Primeiramente a 
cabeça está parada até chegar o pedido, quando chega o pedido à cabeça terá que se mexer até onde 
puder, então ela vai gastar o tempo se mexendo, outro tempo esperando a trilha passar embaixo do 
setor. Esse tempo envolve duas coisas, pois existem, na verdade, três tempos que fazem isto: Tempo 
de seek, tempo de latência e Tempo de Transferência. 
 
11) ALGORITMOS DE ESCALONAMENTO EM DISCO (2013) 
 
 Processo – escolha de próximo processo a executar. 
 Disco - escolha de próximo pedido do disco a ser atendido. Otimizar leitura do 
disco, tem vários algoritmos para isso: 
Tempo de transferência: é o tempo que demora a passar ao longo do setor para transferir o 
dado para a memória controladora (DMA, normalmente). 
Enquanto esta executando um pedido pode chegar outro pedido no cilindro10 e outro no 50 e 
ainda está atendendo o pedido 10, chegou outro pedido no 20. Neste caso, se for escolhido ordem de 
chegada, terá um seek maior. 
O hardware roda o algoritmo e o SO envia os pedidos. 
 
 
1) FCFS (First Come First Served) 
 
Primeiro a chegar é o primeiro a ser atendido. Isso é ruim porque pode gerar zigue-zague. Porém é 
mais justo que o SSTF, mas é mais lento; 
 
O mais simples, mas geralmente não fornece o serviço mais rápido. Ele atende a fila de pedido de 
acesso a disco na forma que ela está, ou seja, pode ocorrer caso desse escalonamento atender pedidos 
que movimentem muito a cabeça do disco, e não pedidos próximos. 
 
2) O SSTF (Shortest Seek Time) 
 
Evita o zigue-zague, ele vai para o pedido mais próximo ao que está sendo atendidos. Assim, pedidos 
distantes demoram a ser atendido. Embora com isso ele reduza o movimento da cabeça é mais 
injusto. 
 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 14 
 
O algoritmo SSTF seleciona o pedido com o tempo de busca mínimo a partir da posição atual da 
cabeça.Como o tempo de busca aumenta com o número de cilindros percorridos pela cabeça, o SSTF 
escolhe o pedido pendente mais próximo da posição atual da cabeça.Ele é basicamente uma forma de 
escalonamento shortest-job-first (SJF). 
 
Problema: Estarvation (paralização), como a chegada de pedido de acesso a disco é uma coisa que 
pode acontecer todo tempo, se os pedidos que estão entrando na fila forem pedidos próximo à 
posição atual da cabeça, ele pode ficar atendendo a esses pedidos, fazendo que um pedido velho mais 
longe da cabeça fique esperando indefinidamente. Embora o algoritmo SSTF seja uma melhoria 
substancial em relação ao algoritmo FCFS, ele não é ótimo. 
 
3) O elevador ou SCAN 
 
É menos eficiente que o SSTF, mas é mais justo que o SSTF. Problema: Ele é mais generoso para os 
pedidos do meio, pois como ele atende nos dois sentidos os pedidos do meio são atendidos na ida e 
na volta. Embora seja menos justo que o elevador circular é mais rápido que o mesmo, avaliando 
apenas os algoritmos do elevador e sua variação o circular. 
 
No algoritmo SCAN, o braço do disco começa em uma ponta do disco e se movimenta em direção à 
outra ponta, atendendo os pedidos assim que chega em cada cilindro, até atingir a outra ponta do 
disco. Na outra ponta, o sentido do movimento da cabeça é invertido percorrendo o disco no outro 
sentido. Ao chegar na ponta e voltar, no início dessa volta tem poucos pedidos, pois a cabeça do 
disco acabou de passar por ali, ficando um maior número de pedidos e mais velhos na outra ponta. 
Dessa forma os pedidos do meio serão privilegiados, serão atendidos mais rápidos. 
 
4) Elevador circular ou C-SCAN: 
 
Resolve o problema de privilegiar os cilindros do meio, pois só atende subindo ou descendo. É mais 
lento que o elevador, mas é mais justo. 
 
O algoritmo SCAN circular (C-SCAN) é uma variante de SCAN projetado para fornecer um tempo 
de espera mais uniforme. A diferença é que ao chegar na ponta do disco, ele move a cabeça 
imediatamente para o início da outra ponta sem atender nenhum pedido nesse trajeto. Só então ele 
percorre o disco atendendo os pedidos, ou seja, os pedidos só são atendidos em um sentido. 
O nome circular é devido a este comportamento, ou seja, trata os cilindros como uma lista circular,ligando o último ao primeiro. 
 
5) LOOK: 
 
No algoritmo look o braço do disco só vai até o último pedido e inverte o sentido. Ao contrário do 
algoritmo SCAN e C-SCAN que movem o braço do disco por toda a extensão do mesmo. Essas 
versões de SCAN e C-SCAN são chamadas de LOOK e C-LOOK, porque procuram por um pedido 
antes de continuar a mover em determinado sentido. 
 
Ao avaliar um algoritmo deste estamos avaliando velocidade e justiça. Dentro todos os algoritmos 
citados acima o SSTF é o mais rápido de todos. Quem roda o algoritmo é o disco, o SCSI, que aceita 
vários pedidos, pois o IDE aceita apenas um pedido por vez e trava o barramento quando está 
atendedo, como veremos a seguir e quem envia o pedido é o sistema operacional. Normalmente é o 
elevador o algoritmo utilizado. 
 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 15 
 
Seleção de um algoritmo de escalonamento de disco o SSTF é comum e tem um grande apelo. O 
SCAN e o C-SCAN têm desempenho melhor em sistemas com uso pesado de disco, porque têm 
menos probabilidade de ter o problema de paralisação. Com qualquer algoritmo de escalonamento, o 
desempenho depende muito do número e dos tipos de pedidos. 
Por exemplo, se a fila tiver um único pedido em espera, todos os algoritmos de escalonamento terão 
o mesmo comportamento, todos se comportarão como o escalonamento FCFS. O método de 
alocação de arquivo também influencia os pedidos de acesso a disco. 
 
A leitura de um arquivo alocado continuamente gerará vários pedidos próximos no disco, resultando 
em um movimento limitado da cabeça. Por outro lado, um arquivo indexado ou encadeado pode estar 
"espalhado" no disco, com isso, provocando muita movimentação da cabeça. 
 
A localização da estrutura de diretório e blocos de índices deve estar o mais próximo possível dos 
dados, evitando muita movimentação da cabeça entre a pesquisa e o acesso aos dados. Armazenar 
em cache na memória principal os diretórios e blocos de índice também pode ajudar a reduzir o 
movimento da cabeça para pedidos de leitura. 
 
Os algoritmos descritos acima estão levando em conta a distância de busca, mas um fator que 
também influencia muito é a latência rotacional. Os discos mais atuais não revelam a posição física 
dos blocos, logo fica difícil para o Sistema Operacional escalonar para melhorar a latência rotacional. 
Para resolver esse "problema", os fabricantes de disco incorporam no hardware de disco, hardware 
de controle com implementação de algoritmos de escalonamento de disco. 
 
Neste caso, o Sistema Operacional pode enviar um lote de pedido para a controladora, ela pode 
colocar na fila para escalonar e melhorar o tempo de busca e a latência rotacional. 
 
O hardware de disco melhora o desempenho de I/O. Porém só isso não basta, então entra o Sistema 
Operacional para controlar a ordem de serviço de pedidos. 
 
O Sistema Operacional pode escalonar os pedidos e enviar um a um para a controladora de disco, de 
acordo com a prioridade. Por exemplo, se o cache estiver com poucas páginas livres, ele pode dá 
preferência a escrita (na escolha de página vítima) en disco e não a leitura. 
 
Outro exemplo pode ser o temporizador, que de 30 em 30 segundos no UNIX e poucos segundos no 
Windows grava as informações dos blocos modificados da cache em disco. 
 
O sistema operacional também é responsável pela inicialização dos discos, a carga do sistema a partir 
do disco e a recuperação de blocos defeituosos. 
 
Enquanto esta executando um pedido pode chegar outro pedido no cilindro10 e outro no 50 e ainda 
está atendendo o pedido 10, chegou outro pedido no 20. Neste caso, se for escolhido ordem de 
chegada, terá um seek maior. 
 
O hardware roda o algoritmo e o SO envia os pedidos. 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 16 
 
 
 Processo – escolha de próximo processo a executar. 
 Disco - escolha de próximo pedido do disco a ser atendido. Otimizar leitura do 
disco, tem vários algoritmos para isso: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12) ARQUITETURA DO DISCO 
 
Problema dos setores com comprimentos diferentes. Duas soluções: 3 Dimensões Físicas e 1 
Dimensão Lógica. Quando têm mais de um pedido tem como escalonar os pedidos no disco para isto 
tem-se os algoritmo abaixo: 
o FCFS: atende por ordem de chegada 
o SSTF é mais rápido e mais injusto do que o FCFS atende os pedidos mais 
próximos. 
o Elevador. 
o Elevador Circular 
 
Existem dois tipos de hardware que faz a ligação entre a máquina e dispositivo: 
 
1) IDE – Integrated Device Eletronics: O software que roda o algoritmo para escalonamento. 
Normalmente quem faz o escalonamento tem que ser o mesmo software que faz a linearização do 
disco, pois tem que fazer o escalonamento antes de linearizar, pois depois que lineariza não tem o 
5 10 15 20 40 45 50 
Pedidos 
Cilind 10 
Cilind 50 
Cilind 20 
55 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 17 
 
conhecimento certo do cilindro, tem-se um array de blocos. Antigamente, quem fazia o 
escalonamento e linearizava era o device drive. 
 
Neste tipo de dispositivo pode enviar um pedido por vez. Ao enviar um pedido ele trava o 
barramento e vai apenas para um disco por vez este pedido. 
 
DE permite no máximo dois discos, a razão para isto é que o barramento IDE é mais simplificado, 
isto pelo que foi dito anteriormente, quando envia uma ordem pelo barramento este barramento é 
travado até que a ordem chegue no disco e seja atendida, isto dificulta ter mais de dois discos neste 
barramento. 
 
O ideal é colocar o cd-rom em outro barramento IDE, já que este é mais lento que o disco rígido e 
normalmente a máquina tem dois barramentos. 
 
 
 
 
 
2) SCSI - Small Computer System Interface: 
 
O próprio disco lineariza e roda o algoritmo para escalonamento diferente o IDE que quem faz isso é 
o software. 
 
A vantagem do SCSI é colocar mais disco e mandar vários pedidos no mesmo barramento e, além 
disso, posso enviar pedidos diferentes para discos diferentes ou para o mesmo disco. Quando a 
ordem chega ao disco o barramento é liberado. Enquanto um disco estiver atendendo um certo 
pedido a CPU pode enviar outro pedido para ser atendido por outro disco. Então o barramento não 
fica monopolizado como no IDE. 
 
Antigamente, existia mais uma vantagem que é ser mais rápido que o barramento IDE, mas hoje em 
dia o barramento IDE está tão rápido quanto o barramento SCSI. 
Tanto o barramento IDE quanto o SCSI são paralelos e este barramento é mais rápido do que o 
serial. 
 
 
 
 
3) Serial ATA funciona como o SCSI. 
 
Tem um barramento serial e consegue ser mais rápido do que o IDE e equivalente ao SCSI, porque 
roda em clock mais rápido. Ele manda pedidos diferentes para cada disco ou vários pedidos para um 
mesmo disco. 
 
 
 
 
 
 
 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 18 
 
Não tem muita diferença entre o SCSI e o IDE, a não ser pelo fato de poder acoplar mais discos 
rígidos do que o IDE. O Serial Ata tem uma equivalência em relação a poder acoplar mais disco e 
performance em relação ao SCSI devido aos clocks de hoje serem bem alto. 
 
Para fazer o escalonamento precisa saber onde estão os cilindros e depois que lineariza não tem 
como saber com certeza o que pode ser feito uma estimativa. 
 
O que existe hoje em dia é o LBA(Linear Block Address) que permite que o próprio disco já tenha 
uma visão linear. 
 
Saber onde está o cilindro depois que lineariza não é tão simples, pois não é constante o tamanho, 
pois trilhas mais interna tem menos setores e trilhas mais externas tem mais setores. Hoje em dia, o 
device drive já conhece o disco linearizado. 
 
Existe disco grande, mas é mais barato colocar vários discos menores do que um disco grande. Com 
dois discosa probabilidade de falha é maior do que um único disco. 
 
Exemplo: Um disco: falha após 10000 horas. Dois discos a falha média ocorre após 5000 horas. 
 
Quanto mais disco o tempo de falha cai, mas colocando a visão de vários discos como um único se 
um deles falhar falha tudo. 
 
Para se proteger contra as falhas deve ter redundância. O RAID soluciona este problema ocasionando 
a redundância de acordo com o seu tipo. 
 
RAID é a capacidade da máquina enxergar vários discos como um só e poder ter redundância da 
informação protegendo contra falhas, isto vai depender do tipo de RAID. O RAID só é útil quando 
tem redundância, pois enxergar vários discos como um só quando uma falha todos falha. 
 
O esquema abaixo mostra um disco lógico que é a junção de quatro disco menores: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Disco lógico 
setor 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 19 
 
13) TIPOS DE RAID (REDUNDANT ARRAY OF INEXPENSIVE DISKS). 
 
1) RAID 0 
É o tipo mais básico e não tem redundância.Pega um setor lógico do disco e quebra em setores 
menores que estão em discos diferentes. Um setor lógico do disco é chamado de scrip. A vantagem é 
poder fazer escrita e leitura em paralelo, quanto mais disco colocar mais rápido fica. 
 
O problema é que falha mais, pois se um disco falhar, falha tudo.Um esquema com quatro discos e 
cada um com os seguintes setores lógicos: scrip 0 no disco 0, scrip 1 no disco 1, scrip 2 no disco 2 e 
scrip 3 no disco 3 encontra-se a seguir: 
 
 
 
 
 
 
 
 
 
2) RAID 1 
 
Resolve o problema do RAID 0 que falha mais. Tem a mesma definição do RAID, onde se tem uma 
visão de vários discos que parece ser um só, mas o que acontece é que tem uma cópia do disco dois a 
dois. Se tiver quatro disco de 20Giga bytes parece que tem 80Giga bytes. 
 
Se falhar um disco o outro consegue responder. Mas, perde em capacidade. Manda a ordem em 
paralelo para disco diferente. 
 
Não quebra por setor, no esquema abaixo temos o disco A replicado em outro disco, o mesmo 
acontece com B. 
 
A mesma ordem é enviada para o disco 0 e disco 1, ou seja, dois discos diferentes, ou seja, duas 
ordens iguais ficarão no disco 0 e 1 e duas ordens iguais ficarão no disco 2 e 3. 
 
 
 
 
 
 
 
 
 
 
3) RAID 1 + 0 (não oficial) 
 
Ganha em tempo em relação ao RAID 1, porque manda a ordem tanto de leitura quanto escrita em 
paralelo para disco diferente já que é um barramento SCSI, parecido com o anterior, com a diferença 
que ele quebra o setor lógico em dois discos diferentes, mas continua perdendo metade da 
capacidade como o RAID 1. Por exemplo, se tem quatro disco de 20Giga bytes totalizando 80Giga 
Scrip 0 Scrip 1 
Scrip 2 Scrip 3 
0 1 2 3 
A A B B 
0 1 2 3 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 20 
 
bytes sendo que está com capacidade de 40Giga bytes para o disco lógico, já que existe a 
redundância. 
 
É parecido com o RAID1, mas antes de enviar a ordem ele quebra o setor em dois, por exemplo, ao 
enviar a ordem envia duas ordens iguais para o disco 0 e 1, onde o scrip é o 0 e o a segunda parte da 
ordem quebrada para o disco 2 e 3, onde está o scrip 1. 
 
 
 
 
 
 
 
 
 
 
 
4) RAID 5 
 
É o mais importante e eficiente. Ele divide o setor do discão é o mesmo esquema do RAID 1.Se 
falhar algum disco a partir dos demais discos e do disco de paridade se consegue regerar o disco que 
falhou. 
 
Por exemplo, se falhar o disco 0, com os outros strip mais paridade consegue recompor o strip0. Se o 
disco de paridade falhar, usando também, a função (f) abaixo recompõe o disco de paridade. Os 
exemplos abaixo são de funções para gerar os discos que falharam: 
 
- Regerando o disco de paridade: f(strip0, strip1, strip2, strip3) => paridade - IDE (0-3) 
 
- Regerando o disco com o scrip 0: f‟0(strip1,strip2,strip3,paridade(0-3)) => strip0 
 
- Regerando o disco com o scrip 1: f‟1(strip0, strip2, strip3, paridade(0-3)) => strip1 
 
A máquina não para se um disco falhar. A perda aqui é de 20%, pois quatro discos representam 80% 
e o último é o disco de paridade que é a perda de 20%. A paridade é espalhada por outros discos, ao 
mudar algum setor correspondente àquela paridade muda à paridade correspondente aquele setor 
também. 
 
O disco de paridade é sempre escrito ao escrever qualquer um dos quatro discos, pois ao mudar o 
setor muda a paridade. Pode adicionar também um disco SPARE, que serve para reconstruir o disco 
que perdeu, assim que um disco quebrar, este processo é automático, ou seja, ele entra em cena assim 
que um disco quebrar. 
 
Quem é o responsável pela reconstrução do disco é a controladora. Ao final da reconstrução o disco 
SPARE passa a ser o disco reconstruído. A vantagem do SPARE na máquina é que não precisa 
intervenção humana, pois ele mesmo entra no ar sozinho. O SPARE é automático. 
 
Outro disco que pode ser adicionado é o HOT SWAP, pode ser trocado com a máquina ligada, mas o 
processo não é automático ao falhar um disco, a sua utilidade é idêntica ao do SPARE. 
 
Scrip 0 Scrip 0 Scrip 1 Scrip 1 
0 1 2 3 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 21 
 
 
 
 
 
 
 
 
 
 
14) GERENCIAMENTO DE ARQUIVOS 
 
1) Visão Lógica de Arquivos: 
 
- Seqüência de bytes (Unix, Windows, MSDOS); 
- Seqüência de registros (OS/390 –Mainframe) é uma definição mais antiga. 
 
O sistema operacional pega uma seqüência de bytes e escreve. O único formato que o sistema 
operacional conhece é o arquivo executável, para poder fazer a amarração de endereço. Os demais 
formatos ele não conhece, a visão que ele tem é apenas de uma seqüência de bytes. 
 
Existe uma chamada que escreve e uma outra chamada que lê o conteúdo do arquivo. Quando o 
processo quer escrever o que o precisa passar para o sistema operacional? Variável a ser escrita, o 
nome do arquivo, o tamanho da variável, que é a quantidade de bytes a ser escrita no disco e a 
posição inicial no arquivo que deve ser escrita ou lida no caso da leitura. 
 
Exemplo (1): escrever(variável-a-ser-escrita, nome-arq, tamanho-da-variavel, pos-inicial-no-
arquivo) 
 
E quando o processo quer ler?Idem a escrita. 
 
Exemplo (2): ler (variável-onde-ficarão-dados-lidos, nome-arq, tamanho-da-variável, pos-inicial-no-
arquivo) 
 
Exemplo de leitura de arquivo por partes em C (3): 
 
 ler(&a, “dados.dat”, 100, 0); 
 . 
 . 
 . 
 ler (&b, “dados.dat”, 100, 100); 
 . 
 . 
 . 
 ler(&c, “dados.dat”, 100, 200); 
 
O sistema operacional tem que testar se o arquivo existe, caso não exista ele retornará um erro. 
Existe uma chamada que é a abertura do arquivo que testa se o arquivo existe, ela devolve 
identificador do arquivo. 
 
 
Scrip 0 Scrip 1 Scrip 2 Scrip 3 
0 1 2 3 
Scrip 4 Scrip 5 Scrip 6 Paridade 
(4-7) Scrip 7 
4 
Paridade 
(0-3) 
SPARE 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 22 
 
Exemplo (4): int identificadorarq; 
identificadorarq = abre(nomearq, modo-de-abertura); 
lerB(identificadorarq, variável-onde-ficarao-dados-lidos, tam-variavel); 
. 
. 
. 
ler(identificadorarq, &b, 100); 
close(identicadorarq); 
 
onde: modo-de-abertura pode ser: Para ler, Para escrever e Para ler e/ou escrever. 
 
No Unix: 
- abre equivale ao “open”; 
- ler equivale ao “read”; 
 
No Windows: 
- abre equivale ao “open”(? Não entendi 38‟ 22”); 
- ler equivale ao “lread”; 
- escrita equivale ao “lwrite”; 
 
Dois processos podem abrir o mesmo arquivo se o modo de abertura for de leitura. A leitura de um 
arquivo pode ser por parte em seqüência ou o arquivo inteiro ou saltando, sendo que para este último 
não é comum, mais veremos mais adiante uma chamada. 
 
Na leitura por partes é o programador que controla de quantos em quantos bytes será lido.O sistema 
operacional controla a próxima posição da seqüência a ser lida,desta forma pode ser eliminado este 
último parâmetro (pos-inicial-no-arquivo) de leitura, já que o próprio sistema operacional controla 
isto. Ele controla isto utilizando um ponteiro que indica o próximo bloco a ser lido. Assim a sintaxe 
de leitura ficaria: 
 
ler (variável-onde-ficarão-dados-lidos, nome-arq, tamanho-da-variável); 
 
Usando apenas a chamada de leitura a cada chamada ler é feito à verificação se o arquivo existe. 
Vide exemplo(3). Quando tem o “open” antes da chamada de leitura “read” é verificado uma única 
vez, apenas no arquivo. 
 
No Word ao abrir um arquivo não é só a chamada open que é feita. Na verdade é a chamada open 
seguido da chamada read se o arquivo for pequeno, se o arquivo for grande são vários reads, a cada 
scroll é feito um read. No wordpad a leitura é feita de uma só vez. 
 
Existe uma outra chamada que permite que seja lido o arquivo saltando, como descrito 
anteriormente, que é o lseek. Ela muda a posição corrente para a posição desejada, ou seja, altera a 
posição corrente do arquivo. 
 
As chamadas das bibliotecas em C que utilizam a biblioteca padrão não são as apresentadas acima, 
são chamadas de mais alto nível, e tem dois propósitos: 
 
1) Formatar o conteúdo lido e; 
2) Otimizar o conteúdo lido, pois é feito a leitura do arquivo a mais do que a 
quantidade informada na linha da instrução, e armazena em um buffer interno, 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 23 
 
para evitar chamadas ao sistema operacional, já que a chamada ao sistema 
operacional tem um custo de tempo, pois tem que mudar o modo de operação. Ou 
seja, essa chamada lêem a mais. 
 
Lembrando que o sistema operacional lê apenas seqüência de bytes. Quanto ao lseek é uma chamada 
de mais alto nível. 
 
Sintaxe: lseek (identificadorarq, nova-pos, a-partir-de-onde); 
Onde: a-partir-de-onde : 1) a partir do início do arquivo ou; 
 2) a partir da posição corrente ou; 
 3) a partir do fim do arquivo. 
 
Exemplo (5): lseek(identificadorarq, 0, dofimdoarq) => o ponteiro vai para o fim do arquivo; Este 
exemplo é interessante quando se quer adicionar mais informações a partir do fim do arquivo. 
 
Qual o propósito do close, fechar arquivo? Quando faz um open o sistema operacional devolve um 
número que é o identificador do arquivo, este número fica armazenado em um buffer interno no 
sistema operacional e se nenhum procedimento liberar este buffer o que vai ocorre e o mesmo 
estourar. Existe um limite máximo para o buffer que armazena os identificadores de arquivo. Então, 
o close serve para liberar a memória interna do sistema operacional sobre os dados de controle deste 
arquivo. 
 
Exemplo (6): 
1) Supondo um arquivo de 100 bytes. 
 char buf[200]; 
 int id = open(“dados.dat”, O-READ); 
 tam-lido = read(id, buf, 200); // não retorna erro! 
 
O sistema operacional não vai conseguir ler 200 bytes, pois o arquivo tem apenas 100 bytes, então o 
sistema operacional vai ler apenas os 100 bytes do arquivo. Por isso, existe a variável de retorno com 
a quantidade lida pelo sistema operacional. 
 
2) Supondo agora um arquivo de 1024 bytes. 
char buf1[100], buf2[1024], buf3[1024] 
int id = open (“dados.dat”, O-WRITE); 
write (id, buf1, 100); // vai sobrescrever ou altera os 100 primeiros bytes. 
lseek(id, 0, SEEK-END); //desloca a posição corrente para o fim do 
arquivo. 
tam-escrito = write(id, buf2, 1024);// faz crescer o arquivo. Agora ele terá 2048 bytes. 
lseek(id, 2048, SEEK-END); // aponta para a posição depois da 2048 que não existe, 
depois do fim. 
write(id, buf3, 1024); 
 
Onde: O SEEK-END do Unix indica que o deslocamento é a partir do fim. Qualquer escrita a partir 
do fim do arquivo faz o arquivo crescer. O único caso que o tamanho escrito é diferente do tamanho 
da variável é quando o disco encheu. Então o tamanho escrito é menor que o tamanho da variável. 
Não ocorre erro, mas retorna um valor diferente. 
 
Ele só ignora o que não conseguiu escrever. Por isso, é bom testar a instrução “write” verificando se 
o tamanho escrito foi igual ao indicado nesta instrução. Esta escreve no arquivo a partir da posição 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 24 
 
1024 a partir do fim do arquivo. Faz sentido isto? Depende do sistema operacional. No caso do Unix 
faz sentido. No caso do Windows, depende do sistema de arquivo FAT ou NFS. No caso do DOS 
não faz sentido. 
 
O sistema operacional completa o espaço em branco, este pedaço tem que existir pela definição de 
arquivo da visão lógica, que um arquivo é uma seqüência de byte. Mas, não existe fisicamente estes 
espaços em branco no disco, ou seja, o arquivo tem 5 Kbyte, mas fisicamente no disco ele ocupa 3 
Kbyte. A vantagem disso é não ocupar espaços desnecessários no disco com espaço em branco. Este 
tipo de arquivo é chamado de Arquivo Esparso. 
 
Lembrando que a visão lógica de um arquivo é um “array” de byte. 
 
O esquema do código acima que gera um arquivo ESPARSO – Visão Lógica do Arquivo. Segue 
abaixo o esquema do arquivo como um array de byte, sendo a primeira posição o tamanho inicial do 
arquivo 100 bytes, segunda posição houve crescimento do arquivo para mais 1024 bytes, a terceira 
posição está em branco, pois houve um deslocamento de 2048 bytes para depois do fim do arquivo, 
ficando 2048 bytes de espaço em branco e a quarta e última posição são 1024 bytes de informação. 
 
 
 
 
 
 
 
 
15) ARQUIVO ESPARSO 
 
É arquivo com espaço em branco e que ao ser salvo em disco é salva apenas a parte com informação. 
A parte em branco não é salva. Ao ler vai ser lido com um monte de zero pelo sistema operacional. É 
equivalente a matriz esparsa. 
 
Não pode ter arquivos esparsos em alocação encadeada, porque tem que ter encadeamento dos 
blocos em que faz parte o arquivo. 
 
16) DISCO LÓGICO (EXPLICAÇÃO 1) 
 
Para o SO é como se o disco lógico fosse como um disco físico, o device drive sabe que é lógico, 
mas os arquivos não sabem. Como os usuários identificam o disco lógico? Existem duas formas de 
usar e enxergar os disco lógicos: 
1ª - Identificação do disco lógico (windows, DOS). Ex.: C:, D: 
2ª - Uma única árvore de diretórios (UNIX) 
 
Diferença: A do windows é mais fácil de implementar, pois há uma marcação forte entre o nome e a 
posição física do disco lógico. No UNIX o disco onde está o arquivo não é identificável facilmente 
pelo nome, pois a árvore contém vários discos lógicos. 
 
Exemplo: C:\arquivos de programas\office\word.exe => Windows. É mais fácil de usar e de 
entender /bin/office/word => Unix 
 
 
 
 
100 1024 2048 1024 
 Cresc.Arq. 
 
 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 25 
 
Em qual disco que está?Se o disco enche o que é feito? No windows apaga alguma coisa ou 
transfere para outro disco vazio o D:, por exemplo. O problema é que se tiver que copiar o 
executável e houver referências a este nome, o arquivo que referenciou vai parar de funcionar. 
E no Unix? Não acontece isso, pois não há referências aos nomes dos arquivos. É possível 
configurar a máquina na qual o nome para o usuário permaneça o mesmo e o programa continua 
funcionando. Para isso acontecer é feito o ponto de montagem. Tem um disco principal (root device): 
têm alguns arquivos. 
 
A operação de montagem coloca um disco sobre um diretório dos diretórios existentes, se existir 
arquivo ou diretório vazio no processo de montagem vai pegar os dois e vai montar e o resultado 
final vai ser pegar o Disco 2 e pegar o device e em seguida juntar. Menciona o nome do device 
(arquivos especiais do Unix). Podem ser montados outros discos. 
 
Nesta operação menciona duas coisa: o device e o diretório destino 
Exemplo: mount /dev/hd2/ /bin/office.office 
bin etc 
word 
Montagem 
– Disco 2 
HD2 
apaga 
bin etc 
office 
device 
(hd2) 
diretório 
destino 
Root Device 
Operação 
de 
montagem 
é juntar 
Depois da montagem 
realizada: 
word 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 26 
 
Uma coisa que é difícil é salvar arquivo no disquete, pois como eu sei onde está identificado o 
disquete? Como montar o disquete na árvore? Em máquinas mais novas quando é colocado o 
disquete este é montado sozinho e para tirar o disquete terá que desmontar, mas se tiver algum 
arquivo desse disquete sendo usado por um programa ele não é desmontado (O SO não deixa). 
 
Depois que é feito o open o SO garante que o arquivo vai existir, se tirar o disco as operações de read 
e write não começam, o open tem que garantir que aquele arquivo permaneça existindo quando o 
arquivo tiver aberto. Se houver um arquivo referenciado no disquete e houver a retirada essas 
operações irão falhar(read e write). 
 
17) DIRETÓRIO 
 
O que posso fazer para ler um diretório? 
Read => listar os arquivos do diretório 
Write => criar, unlink, renomear 
Execute => poder fazer o diretório ser o corrente. 
Observação: diretório corrente serve para não precisar fazer referência ao caminho completo do 
arquivo que está neste diretório. Pode ser usado o nome curto. 
 
Dois tipos de nomes para arquivo: 
- Nome absoluto: a partir da raiz. 
- Nome relativo: a partir do diretório corrente. 
Exemplo: 
1) /user/maria/alo.c => neste exemplo alo.c tem está com nome absoluto 
2) cd /user/maria 
cat alo.c => neste exemplo alo.c está com nome relativo 
3) cd /user 
cat maria/alo.c => neste exemplo alo.c está com nome relativo 
4) cd /user/Maria 
es .../joão => neste exemplo joao está com nome relativo 
 
Operações de arquivo no NT(com NTFS): 
 
Se não houver permissão para um arquivo e houver para o grupo a qual ele pertence o acesso para o 
arquivo será negado. Resumindo: temos a idéia genérica de matriz de permissões, mas no Unix 
temos uma simplificação muito grande na versão original, pois limitam muito quais são os usuários. 
 
 
- execute 
- read 
- write 
- read attributes 
- write attributes 
- excluir arquivo(pelo arq 
e para diretório) 
- excluir arquivos 
contidos (vale para 
diretório) 
- alterar permissões 
- tornar-se dono 
 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 27 
 
Contém arquivos. É muito comum que o diretório possa conter 1 arquivo ou 10.000 arquivos.Coisa 
comum : um diretório é um arquivo com conteúdo especial, que conteúdo? Algumas variações que o 
diretório contém: 
 
- Nome dos arquivos e uma referência a estrutura de controle de cada arquivo. (Unix, NT com 
NTFS); 
- Nomes do arquivo e estrutura de controle de cada arquivo. (DOS, Windows 9x, NT com 
FAT); 
- Nomes de arquivo, as estruturas de controle e os dados de cada arquivo. (OS/390) Arquivo 
Particionado. Se comporta como diretório, mas é um grande arquivão. 
 
1º CASO 
 
Como é no unix e no nt com ntfs? Diretório com alo.c e nada.txt. 
 
Dados da estrutura do arquivo : hora de criação, tamanho do arquivo, etc. No caso do NT esses dados 
não estão contidos no diretório. Só tem 1 número que aponta para tais informações. O Nº interno de 
identificação aponta para uma outra estrutura que lá contém unidades de controle. 
 
a l O . C n A d a . t x t 
 
2º CASO 
 
Existe uma série de informações de estrutura de controle que vão estar no diretório 
 
 
a l o . C . n a d a . t x t 
 
 
 
Nº interno de 
identificação 
Nº interno de ID 
Nº do usuário 
que criou o 
arquivo 
Tamanho do 
arquivo 
Hora de criação 
Tamanho 
hora 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 28 
 
 
 
 
 
Quais as operações que podem ser feitas no diretório? 
1. Listar os arquivos 
2. Criar um arquivo 
3. Renomear arquivo 
4. Excluir arquivo 
 
Existem chamadas para cada uma das operações acima. Além disso, como diretório é um arquivo 
então começou a pensar em read e write, isso são usos dos diretórios como arquivo. Normalmente, o 
write não é permitido, pois não é seguro deixar um programador fazer. 
 
18) ÁRVORE DE DIRETÓRIO 
 
O esquema abaixo mostra a árvore de diretório no Unix: 
 
 
 
Já que diretório são arquivos então ele pode conter arquivos que são diretórios e estes contém 
arquivos. Por isso, poderá ter uma árvore de diretórios. No caso em que o diretório contém o controle 
interno. No caso acima, dois diretórios contém o arquivo que possuem o mesmo nº interno, isso 
causa algum, problema? Não, o mesmo arquivo está em dois diretórios diferentes, se chama link. 
 
Diretório A 
 
 
 
usuário 
a b 
2 Está no diretório b 
Apagável no Unix 
a l o . c 
58 em binário 
Id para estrutura de controle 
Contador 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 29 
 
Diretório B 
 
 
 
 
 
 
 
O mesmo arquivo está em dois diretórios diferentes. No Unix não existe chamada para apagar 
arquivos o que existe é uma chamada para remover um link. Chamada link : Cria o link e incrementa 
o contador. 
 
A instrução no Unix que faz um link é: ln /a/alo.c /b => faz um link do arquivo alo.c que está 
no diretório A para o diretório B. 
 
Quando o contador chega a zero, então o arquivo é apagado fisicamente do disco, ou seja, torna a 
área fica disponível para outros arquivos. 
 
O que deixar de existir é deixar de estar disponíveis para uns e indisponíveis para outro. 
 
Solução para esse problema é o link simbólico: 
 
 
O link simbólico é criar um arquivo no diretório que é o caminho para chegar ao arquivo. Ao tentar 
abrir esse tipo de arquivo, o SO verifica se existe uma marcação especial. Então o SO, sem que o 
usuário saiba, abre o arquivo, lê o arquivo, mas na verdade faz a abertura do arquivo p.pas. 
 
É parecido com o atalho do Windows, mas este só funciona para o Explorer, enquanto o mecanismo 
acima, no Unix, é controlado pelo SO, diferente do Windows que o mecanismo de atalho é 
controlado pelo Explorer e não pelo SO. 
 l o . c 
58 em 
binário 
s a p . p 
nº inteiro 
Não poderá fazer links com dispositivos 
diferentes 
p.pas 
a/c/p.pa
s 
Arquivo com link simbólico 
* 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 30 
 
 
19) PERMISSÃO DE ARQUIVOS 
 
Matriz de Permissões 
 
Formas de implementar a matriz de permissão: 
1) Para cada arquivo existe uma lista de usuários e suas operações permitidas (Lista de Controle 
de Acesso - ACL) (Unix, NT); 
2) Para cada usuário existe uma lista de arquivos e as operações permitidas para este arquivo 
para este usuário (Lista de capacidades); 
Variações 
1) Ter permissões associadas a grupo de usuários Windows NT, UNIX versões novas. 
2) Simplificação do UNIX original para cada arquivo existem somente três categorias de 
usuários dono (usuário que criou o arquivo), grupo, outras. 
Para cada categoria tem opção de ler, escrever e executar (read, write, execute). 
 
 Dono Grupo Outros 
Read 1 1 0 
Write 1 0 0 
Execute 0 0 0 
 
Ao invés de cada arquivo ter uma lista de usuários, no Unix original tem algo muito mais 
simplificado, só existem três categorias de usuário, dono, grupo e outros e três operações, read, write 
e execute. 
Por arquivo terá 9 bits mais a informação de quem é o dono do arquivo e qual grupo que pertence. 
Com 6 bytes controla-se a permissão para cada arquivo. 
Usa-se ls-l 
rwx-(dono) r--(grupo) ---(outros) 
 
 
- ler 
- escrever 
- excluir 
- criar 
- renomear 
- listar 
 
Unix original 
diretório 
 
 
Nada.txt 
 
Alô.txt 
. 
. 
. 
 
 
 
arquivo 
João Maria José 
Ler Ler 
Escrever 
 Ler 
 Escrever 
usuários 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SAAmancio Página 31 
 
 
 
20) ALOCAÇÃO DE ARQUIVOS NO DISCO 
 
Visão lógica do disco : como uma array de blocos. Vê-se com uma dimensão. Como eu sei onde está 
o arquivo nesses blocos? 
 
1) CONTÍNUA 
 
Para cada arquivo existe um registro de controle de alocação (nome, bloco inicial, qnt. De blocos) 
Vantagem: simples de gerenciar; os blocos seguintes, depois de primeiro, não gastam tempo de seek 
e latência; mais rápido. 
Desvantagem: sujeito a fragmentação; os arquivos não podem crescer. 
 
Uso de um conjunto de blocos seguidos no disco. 
 
Ex.: 
# bloco Arquivo 
1 A 
2 A 
3 A 
4 A 
5 A 
6 B 
7 B 
8 C 
9 C 
10 C 
11 C 
 
Problema: Arquivos contínuos e pode ocorrer fragmentação (explicação idêntica a da fragmentação 
de memória, pois pode ter vários espaços vazios . Se os blocos estiverem descontínuos, mas no 
mesmo cilindro não está tão ruim com relação ao tempo. 
 
2) ALOCAÇÃO ENCADEADA (EXPLICAÇÃO 1) 
 
Alocação Encadeada (nome, bloco inicial) 
Vantagem: conseguimos crescer os arquivos; 
Desvantagem: no acesso randômico – para chegar a um determinado bloco no centro do arquivo(em 
um bloco central) precisamos ler todos os blocos anteriores a ele.. logo, mesmo a alocação 
randômica se comporta como seqüencial. (-1: significa fim do arquivo) 
 
Fd=open(„data.dat”, o_rdonly); 
A 
B 
 
C 
 
 
 
Tabela de controle 
 
Nome Bloco inicial Número de blocos 
A 1 5 
B 6 2 
C 8 4 
 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 32 
 
Lseek(fd, 3500, seek_begin) 
Read (fd, &var,10) 
 
Alocação encadeada com estrutura de encadeamento separada: não mantém o encadeamento no 
fim de cada bloco e sim reserva um bloco para controlar o encadeamento (nome, bloco inicial) 
FAT – File Allocation Table (-2 indica bloco de controle) 
Vantagem: é menor e fica na memória que é muito mais rápida. Não precisa ler todos os blocos de 
um arquivo no disco e sim o encadeamento na memória. 
FAT 16: 2BYTES = 16 BITS 
FAT 32: 4 BYTES = 32 BITS 
Desvantagem: disco muito grandes 
 
Tabela tem que ter uma entrada para cada bloco: 
 
1TB = tamanho do volume 
Tamanho do bloco = 1KB 
 
Quant. De Blocos: TAM. do volume / tamanho do bloco = 1TB/1KB = 1GB 
Quant. De Entr. na FAT=Quant. de blocos no volume =1GB 
Tam da FAT = quant. de entr X TAM. da entr = 1GB * 4B =4GB (muito grande) 
A solução seria aumentar a quantidade de blocos. Surge outro problema: quando o bloco é muito 
grande temos fragmentação interna. 
 
A FAT controla os blocos de arquivos alocados e também os blocos que não pertencem a nenhum 
arquivo (representa por 0 os não alocados, -2 de controle) 
 
3) ALOCAÇÃO ENCADEADA (EXPLICAÇÃO 2) 
 
Tem um dado como um todo, um bit em cada bloco do disco e o disco diz qual o próximo bloco 
daquele arquivo. Ex.: Arquivo A começa no bloco 1 e N no 4. O próprio bloco do arquivo B é o 
bloco 5, tem um campo de controle do próprio bloco, por sua vez o bloco 5 tem um campo de 
controle... 
O arquivo A, por exemplo, começa como o bloco 1 do disco, o próximo bloco desse arquivo é o 2, 3, 
4 e depois o 7, 8 é último. A alocação encadeada não quer dizer que os arquivos não possam estar 
contínuos, eles podem estar mas não precisam estar, no caso do B o bloco está contínuo. É 
interessante para o Sistema Operacional alocar o disco internamente mesmo quando não pode alocar, 
pq? 
 
Porque se a alocação fosse do bloco 1 do arquivo basta que o acesso seja mais rápido pq blocos que 
são próximos, são blocos próximos fisicamente no disco, então para ler um bloco e depois ler o outro 
bloco é uma coisa rápida, então é interessante realocar arquivos em blocos vizinhos, pois o SO vai 
ser rápido. Tentam fazer alocação contínua se for possível. Os campos de controle obrigam que o 
arquivo seja contínuo, o arquivo não pode ser descontínuo. 
 
Nome Bloco Inicial 
A 1 
B 4 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 33 
 
Se cada bloco do arquivo tiver 1K então o arquivo que vai do byte 1 até o byte 5120. A visão do 
usuário é que o arquivo é uma seqüência de bytes. Não o importa se o arquivo é contínuo ou não o 
que importa é o tamanho do arquivo. Quanto à velocidade, se o acesso for randômico é interessante 
que o arquivo esteja contínuo. 
Um arquivo estar contínuo é mais fácil o que importa é que os blocos não sejam saltados. Dado um 
arquivo no bloco, o próximo bloco esteja no mesmo cilindro. Se isso for verdade, a leitura do 
próximo bloco vai ser rápida, o ideal, é que seja no próximo setor então vai ser mais rápido ainda, 
não precisa nem rodar o disco todo, mas se está no mesmo cilindro é uma grande coisa. 
 
 
 
 
 
O programador pode ver o disco assim; A visão lógica contínua; 5 blocos; O usuário vê 5120 
páginas. 
 
A alocação encadeada não é boa para acesso randômico, ou seja, que leia várias partes do arquivo, 
porque isso tem que andar em diferentes blocos desse arquivo, tem que ficar fazendo saltar os blocos 
para ler parte do arquivo para fazer leitura. 
 
Neste caso da alocação encadeada é ruim porque para saber onde está um certo dado do disco tenho 
que saber onde está o anterior, ou seja, precisa ler todos os blocos que vem antes. A alocação 
encadeada não existe na prática. 
 
Portanto, na alocação encadeada no final de cada bloco do disco, existe um campo de controle que 
diz o número do próximo bloco do arquivo. 
 
Ex.: 
# bloco Arquivo 
1 
A 
 
2 
2 
A 
 
3 
3 
A 
 
-1 
 
4 
B 
 
5 
5 
B 
 
-1 
6 
 
C 
-1 
 
Qualquer arquivo pode crescer no disco, desde que haja blocos físicos (blocos do disco) disponíveis. 
1 512
0 
Como saber qual é o 1o bloco do arquivo? 
 
É necessário ter uma tabela de controle que 
indique o nome do arquivo e seu bloco inicial. 
 
Tabela de Controle 
Nome Bloco inicial 
A 1 
B 4 
C 6 
 
Indica que este é o último 
bloco do disco utilizado por 
este arquivo. 
Indica que o próximo bloco 
utilizado pelo arquivo A é o 
bloco 2. 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 34 
 
O problema dessa 2
a
 solução é que, se existir um arquivo de 10.000 blocos e o usuário quiser ler uma 
informação que esteja no bloco 9.999, deverá percorrer toda a lista até chegar ao bloco desejado, 
gastando-se muito tempo. 
 
Essa 2
a
 solução não existe na prática. Os arquivos podem crescer sem problema, desde que haja 
bloco disponível. Na alocação contínua, a leitura é randômica e logo, é muito mais rápida. 
 
É bom que os blocos usados por um arquivo estejam próximos uns aos outros para que possam ser 
lidos mais rapidamente pois, se na visão lógica do disco (visto como um array) estiverem próximos, 
eles também estão próximos fisicamente (no mesmo cilindro ou nos cilindros próximos). 
 
4) ENCADEADA COM FAT (FILE ALLOCATION TABLE – EXPLICAÇÃO 1): 
 
Outra alocação: Encadeada com FAT (File Alocation Table) – Existe na prática 
 
 Disco 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Esse tipo de estrutura de controle retira o controle do bloco. 
 
Vantagem: A estrutura não é grande e pode ficar em memória do SO, estar na memória do SO é uma 
vantagem pois não precisa percorrer uma lista e ler os blocos que vem antes. É como se percorresse 
um array na memória se esse array for de inteiros, para descobrir o 5º bloco do arquivo A, só preciso 
saber onde começa o arquivo A, faz-se um loop e é lido somente o encadeamento até chegar no 5º 
bloco, percorrer o encadeamento não significa ler o disco e sim percorrer o encadeamento e retorno à 
memória, demora um pouco, mas é bem inferior do que se fosse fazer qualquer leitura no disco. 
 
Problema: 
1º - Se o disco for muito grande e quiser blocos de tamanho de 1 K. 
 
FAT 16: 16 bits por na FAT. Sendo 1 bit de sinal totalizando 32767 (maior nº de entradas) valor 
máximo com 15 bits; 
 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
2 
3 
7 
5 
6 
-1 
8-1 
0 
0 
 
 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
 
 32767 
- Os dados ao lado são retirados de 
cada bloco e é criada uma área 
preparada que contém somente 
esses números de controle. 
- Tem que ser pequeno 
- Está em lugar fixo no disco e 
contínuo 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 35 
 
Exemplo: 
Disco de 16 GB 
Nº máximo de estados na FAT 16 e 32767 
Tamanho mínimo do bloco = 16GB/32767 = 2
34
/2
15 
 = 2
19 
 = 512KB (bloco grande para arquivos 
pequenos) 
 
Se tiver um arquivo txt pequeno tem que ocupar um bloco de 512 KB 
Tamanho da FAT = 32767 entradas * tamanho da entrada = 32767*2B = 64KB. 
 
Blocos grandes para arquivo pequeno é um problema. A solução para este problema foi a FAT32. 
 
FAT 32: Cada entrada na FAT tem 32 bits. 31 bits para armazenar números de blocos 
 
2³¹ = 2G(maior nº de blocos que pode ser armazenado), tamanho máximo que a FAT pode ter. 
 
Exemplo: Disco de 16GB; 
Escolho tamanho do bloco = 1KB 
Se o bloco tem 1KB quantos blocos tem meu disco? 
Nº de blocos = tamanho do disco/tamanho do bloco = 16GB/1KB = 2
24
 blocos = 16MB blocos 
 
Problema: Tamanho da FAT = nº de entradas da FAT * tamanho da entrada=16M*4B = 64MB. 
 
O problema é que a FAT fica grande e acaba ocupando muita memória. E como ela é muito grande o 
sistema operacional tem ficar salvando parte da FAT em disco, então parte fica na memória e parte 
fica em disco. A FAT tem a pretensão de ter em uma única estrutura de controle as informações de 
todos os arquivos. Não tem relação com open e close porque está na memória 
 
 
 
 
 
 
 
 
 
 
 
5) ENCADEADA COM FAT (FILE ALLOCATION TABLE – EXPLICAÇÃO 2): 
 
Os dados de controle (que informam qual o próximo bloco de um determinado arquivo) são 
colocados em uma área separada. Estes dados ficam na memória, na área reservada para o SO. 
 
Ex.: Na alocação encadeada um arquivo A que usa os blocos 1,2 e 3, um arquivo B que usa os 
blocos 4 e 5 e um arquivo C que usa o bloco 6 estariam dispostos da seguinte forma: 
 
# bloco Arquivo 
1 
A 
 
2 
A 
1 
2 
3 
7 
8 
1 
2 
3 
4 
B 
4 
5 
6 
1 
2 
3 
C 
 
 
 
 
 
 
Nº de blocos que 
compõe o arquivo 
Bloco 
# bloco FAT 
1 2 
2 3 
3 -1 
4 5 
5 -1 
6 -1 
 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 36 
 
2 
A 
 
3 
3 
A 
 
-1 
 
4 
B 
 
5 
5 
B 
 
-1 
6 
 
C 
-1 
 
 
O encadeamento deve ser percorrido mas não envolve a leitura de todos os blocos no registro, e sim 
uma leitura de um array na memória. 
 
Quando chegar ao elemento do array que contém o valor do bloco do disco a ser acessado, o bloco 
indicado será acessado. 
 
O tempo para ler um array na memória é muito menor do que se percorresse os blocos do disco em 
busca do bloco desejado. 
 
Primeiro o array é criado em disco e depois é copiado para a memória para agilizar o processo de 
localização de um bloco. 
 
A FAT deve ser pequena para caber na memória. 
 
Problema: se o disco for muito grande (por exemplo, 20 GB) e quisermos blocos de tamanho 
pequeno (1 KB), a FAT ficaria muito grande. 
 
Se, por outro lado, quisermos que a FAT seja pequena, o bloco será muito grande e, com isso, poderá 
causar desperdício de espaço dentro de um bloco. 
 
Tipos de FAT: 
 
- FAT16 (16 bits por entrada na FAT) 
 
1 bit é usado para sinal ( no caso do –1 que indica que aquele bloco é o último pertencente a um 
determinado arquivo). 
 
Se usarmos um disco de 16GB, então o número máximo de entradas na FAT será de 2
16
 – 1 (32767). 
Então, cada bloco deve ter: 
 
Tamanho do disco: 16 GB = 2
10
 (1 KB) * 2
10
 (1 KB) * 2
10
 (1 KB) * 2
4
 (16) = 2
34
 
Número de entradas: 32767 = 2
10
 (1 KB) * 2
5
 (32) = 2
15
 
Tamanho do bloco = tamanho do disco / número de entradas = 2
34
 / 2
15 
= 2
19 
(512 KB) 
Usando FAT, o único dado guardado é o número 
do próximo bloco usado por determinado arquivo. 
Com isso, só é necessário percorrer o array de 
encadeamento (FAT) que está na memória sem 
precisar ler os blocos do disco para chegar ao 
bloco desejado. 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 37 
 
 
Se um arquivo tiver apenas 1 KB, ele ocupará 512KB que é a menor unidade do disco (1 bloco). 
Logo, se usarmos um bloco muito grande, a probabilidade de haver desperdício de espaço em disco 
será muito grande. 
 
Já o tamanho da FAT seria de 32767 entradas * 2 bytes (16 bits que é o tamanho da entrada da FAT) 
= 64 KB 
 
- FAT 32 (32 bits por entrada na FAT) 
 
Para resolver o problema de desperdício de espaço por bloco, a Microsoft criou, posteriormente, a 
FAT 32. 
 
Cada entrada na FAT32 tem 32 bits. 
Descontando o bit de sinal, existem 2
31 
entradas na FAT = 2 G entradas. 
Tamanho do disco: 16 GB = 2
10
 (1 KB) * 2
10
 (1 KB) * 2
10
 (1 KB) * 2
4
 (16) = 2
34
 
Número de entradas: 2 G = 2
10
 (1024) * 2
10
 (1024) * 2
10
 (1024) * 2 = 2
31
 
 
Se quisermos um bloco de tamanho 1KB, o número de blocos no disco será de : 
 
Número de blocos no disco = Tamanho do disco / tamanho do bloco 
 = 16GB/1KB = 16 M blocos 
 
Nesse exemplo, o problema é o tamanho da FAT pois: 
 
Tamanho da FAT = número de entradas da FAT * tamanho da entrada 
 = 16 M entradas * 4 bytes = 64 MB 
 
64MB é um espaço grande a ser ocupado na memória. 
 
Logo, o tamanho do bloco deve ser maior. As próximas soluções têm uma estrutura de controle para 
cada arquivo. 
 
21) ENCADEADA COM FAT (FILE ALLOCATION TABLE – EXPLICAÇÃO 3): 
 
Encadeada com FAT (File Allocation Table): 
 
Outra alocação: Encadeada com FAT (File Alocation Table) – Existe na prática 
- Os dados ao lado são retirados de cada bloco e é criada uma área preparada que contém somente 
esses números de controle. 
- Tem que ser pequeno 
- Está em lugar fixo no disco e contínuo 
 
Esse tipo de estrutura de controle retira o controle do bloco. 
 
Vantagem: A estrutura não é grande e pode ficar em memória do SO, estar na memória do SO é uma 
vantagem pois não precisa percorrer uma lista e ler os blocos que vem antes. É como se percorresse 
um array na memória se esse array for de inteiros, para descobrir o 5º bloco do arquivo A, só preciso 
saber onde começa o arquivo A, faz-se um loop e é lido somente o encadeamento até chegar no 5º 
SISTEMA OPERACIONAL II – PARTE 10 
 
Elaborado por Luciana SA Amancio Página 38 
 
bloco, percorrer o encadeamento não significa ler o disco e sim percorrer o encadeamento e retorno à 
memória, demora um pouco, mas é bem inferior do que se fosse fazer qualquer leitura no disco. 
 
Problema: 
1º - Se o disco for muito grande e quiser blocos de tamanho de 1 K. 
 FAT 16: 
16 bits por entrada na FAT. Sendo 1 bit de sinal totalizando 32767 (maior nº de entradas) valor 
máximo com 15 bits; 
 
Exemplo: Disco de 16 GB 
Nº máximo de estados na FAT 16 e 32767 
Tamanho mínimo do bloco = 16GB/32767 = 2
34
/2
15 
 = 2
19 
 = 512KB (bloco grande 
para arquivos pequenos) 
 
Se tiver um arquivo txt pequeno tem que ocupar um bloco de 512 KB 
Tamanho da FAT = 32767 entradas * tamanho da entrada = 32767*2B = 64KB. 
Blocos grandes para arquivo pequeno é um problema. A solução para este problema foi a FAT32. 
 
 FAT 32: 
Cada entrada na FAT tem 32 bits. 
31 bits para armazenar números de blocos 
2³¹ = 2G(maior nº de blocos que pode ser armazenado), tamanho máximo que a FAT pode ter. 
 
Exemplo: Disco de 16GB; 
Escolho tamanho do bloco = 1KB 
Se o bloco tem 1KB quantos blocos tem meu disco? 
Nº de blocos = tamanho do disco/tamanho do bloco = 16GB/1KB = 2
24
 blocos = 16MB blocos 
 
Problema: Tamanho da FAT = nº de entradas da FAT * tamanho da entrada=16M*4B = 64MB. 
 
O problema é que a FAT fica grande e acaba ocupando muita memória. E como ela é muito grande o 
sistema operacional tem ficar salvando parte da FAT em disco,

Outros materiais