Escolar Documentos
Profissional Documentos
Cultura Documentos
Gerncia de Memria
Entrada/Sada
Disco Magntico
Gerncia de Arquivos
Conceitos
Chamadas ao SO
Organizao interna
Desempenho do uso de arquivos
1) FAMLIAS DE SO
WINDONS UNIX
3.1 3.0 - BSD universidade de Berkley (capacidade de Ter um protocolo de rede TCP/IP
XP - AIX (IBM)
- HP/UX (HP)
SO simples feito em linguagem de programao de mquina da Intel. Hoje em dia isto no mais assim,
pois feito em C e porttil para outras mquinas.
A IBM pediu para MS criar o SO para sua mquina. Elas fizeram uma parceria.
OS/2
Desenvolvido por Microsoft+IBM. No obteve sucesso porque a maioria das mquinas no suportava.
Existia interface grfica. A IBM continuou sozinha o desenvolvimento desse SO aps a quebra da parceria
com a MS.
WINDOWS 3.0
Movimento das pessoas comuns usando PC. Era vendido separado do PC (+ caro)
Lanado programas que funcionassem nele, como editores de texto, planilhas,... (Switch Desktop)
Elaborado por Luciana Amancio merge com material da Soraia 2013/01 Pgina 1
SISTEMA OPERACIONAL II PARTE 1
WINDOWS 95
Interface mais nova. Permitia executar processos mltiplos.
WINDOWS 98
Windows ME. Toda essa famlia era executada em CPU Intel, feita em linguagem de mquina.
A Microsoft conseguiu fazer a transio das famlias e garantir que os programas continuariam sendo
executados devido a API.
WINDOWS NT
3, 4, 2000 (Mudana de nomenclatura de SO Desktop e Servidor), XP, Vista, 7 (Modo XP para funcionar
os programas que no funcionam no 7), 8 (Retirada do Modo XP). Famlia aps o NT, feita em linguagem
C.
Lder de projeto da IBM criou o CMM CMMI: Boas prticas para entrega de produtos. Testes,
versionamento, requisitos, controle de alterao de requisitos. Na UFRJ surgiu o similar MPS.BR Criado
devido ao insucesso no projeto do MVS.
Elaborado por Luciana Amancio merge com material da Soraia 2013/01 Pgina 2
SISTEMA OPERACIONAL II PARTE 1
2) PROGRAMA PROCESSO
Dentro de um processo existe: Cdigo e Dados (variveis etc.). H 3 tipos de variveis: Globais: variveis
que podem ser usadas por qualquer rotina. Locais: variveis que s podem ser usadas por rotinas que a
criaram. Dinmicas: variveis criadas pelo programador. D para calcular o espao a ser usado pelas
variveis globais antes do processo comear a executar.
Quando h recurso, os vrios valores da varivel N utilizada no exemplo da funo FAT acima devem
ser guardados na memria, pois eles so necessrios no clculo do fatorial. Uma parte da rea de dados
utilizada pelas variveis locais (pilha). Um exemplo de uso da pilha dado para mostrar a soluo da
funo recursiva anterior.
4 4 4 24
3 3 6
2 2
No exemplo acima, o valor da FAT colocado num registrador com o valor 1 e retirado da pilha. Depois
multiplica - se o seu valor com o valor da prxima posio da pilha e assim sucessivamente, at esvaziar a
pilha.
Elaborado por Luciana Amancio merge com material da Soraia 2013/01 Pgina 3
SISTEMA OPERACIONAL II PARTE 1
3) GERNCIA DE MEMRIA
O problema da amarrao de endereo est em como ser feita a localizao de um endereo dentro da
memria, pois um processo nem sempre carregado na posio zero da memria.
As solues para este problema so: Amarrao em tempo de carga, Endereos Relativos Base,
Endereos Relativos Instruo corrente, Segmentao e Paginao.
Um Sistema Operacional pouco sofisticado executa um programa por vez e assim teremos um nico
programa na memria conforme Figura 1.1. Na Figura 1.2 temos uma amostra de um Sistema operacional
um pouco mais sofisticado. Ele controla a execuo de mais de um programa por vez. Assim, esto na
memria dois ou mais processos sendo executado segundo controle do Sistema Operacional.
Ainda na Figura 1.2 podemos observar dois processos ocupando reas diferentes na memria: o processo
1 comea no endereo 0 at o endereo 9999, ocupando um tamanho de 10000; o processo 2 comea no
endereo 10000, ocupando um tamanho de 10000 tambm.
Memria Memria
SO SO
Proc2
Proc1
Proc1
10000
O problema que no to simples para 9999
o Sistema Operacional controlar um programa na memria, veja
o exemplo abaixo:
0
Exemplo em Assembly:
ADD AX, BX => Adicionar um registrador com outro (de BX para AX)
MOV AX, CX => Mover o contedo de um registrador para outro (de CX para AX) (1.1)
MOV AX, [1000] => Mover o contedo do endereo 1000 para o registrador AX.
JNZ 2000 => Desvia a execuo para o endereo 2000
CALL 3000 => Chamada de Sub-rotina.
Elaborado por Luciana Amancio merge com material da Soraia 2013/01 Pgina 4
SISTEMA OPERACIONAL II PARTE 1
A partir do exemplo acima verificamos que o programa acima s vai servir para o processo 1, para o
processo 2 no servir, pois este ltimo comea na posio 10000, e o endereo 1000 no faz parte do
processo 2. Porm, o arquivo executvel no sabe onde ser armazenado na memria depende da ordem
em que os processos foram chamados pelo usurio. Ento o cdigo acima no serviria para o processo 2.
Este problema faz parte de um problema chamado de amarrao de endereos (adress binding), a
amarrao entre um nome e um endereo. Geralmente, o programa tem nomes, veja exemplo abaixo:
SubRot: .
.
. (1.2)
Ret
CALL SubRot
A CPU no entende esta instruo CALL SubRot. Ela s entende endereos de memria, um array de
byte. O montador de Assembly transforma o label SubRot em endereo, em um valor da posio de
memria.
Porm, isto no tudo existe um problema anterior que o carregamento do programa na memria. O
programa pode ser carregado na posio 0 ou 10000. Se o programa (1.1) for carregado na posio 10000
ele no vai funcionar. Isto pode ser resolvido no seu carregamento na memria.
memria memria
1003
1002 Varivel "j"
19.999
1001 19.900
1000 }
Processo 2
10.000
9.999 }
Cdigo de rotina
verificar consistncia
500 }
}
Processo 1
4
3
2
1 0
0
Elaborado por Luciana Amancio merge com material da Soraia 2013/01 Pgina 5
SISTEMA OPERACIONAL II PARTE 1
medida que o programa carregado na memria, o SO corrige as posies de memria indicadas nas
instrues que fazem referncia a endereos da memria, somando o valor do endereo-base antes de
executar o processo. Com isso, o processo fica com dados consistentes.
Como saber quais instrues sero alteradas? Os arquivos .EXE tm dados de controle (que esto no
PCB) que dizem quais instrues e rotinas devero ser alteradas. Programas .EXE no MS-DOS utilizam
essa tcnica.
Tabela adicional gerada pelo compilador, que diz qual (is) endereo (s) sofreu (RAM) correo.
Altera o valor na instruo. Soma a cada instruo, vezes nicas, feita pelo SO.
Ex.: Arquivos executveis (Programa .exe) do MS-DOS.
memria
ADD EAX,
10 19.900
. Soma feita pelo HW (mais rpido)
MOV [1000],
Processo 2
EAX
.Perde desempenho
10.000 (imperceptivelmente)
Reg. de base 9.999 }
[1000] Ex. MSDOS, programas .com (por
limitaes de HW)
Processo 1
0 }
Elaborado por Luciana Amancio merge com material da Soraia 2013/01 Pgina 6
SISTEMA OPERACIONAL II PARTE 1
O montador ou compilador gera cdigo imaginando que o programa vai ser colocado em certo lugar na
memria, supondo no endereo 0, por exemplo. Com isso, simplificado o trabalho do montador ou
compilador.
O sistema operacional antes de colocar o arquivo na memria corrige o endereo. O sistema operacional
sabe onde ser carregado o arquivo que sai do disco e ser colocado na memria para execuo. Ele vai a
todos os endereos do programa e soma o endereo inicial daquele programa, segundo exemplo abaixo:
Agora o programa (1.1) pode ser carregado na posio 10000 que ir funcionar.
O programa executvel formado por cdigo mais informaes de controle que o sistema operacional usa
para a correo de endereo. Pois, o sistema operacional precisa de uma referncia de quais instrues ele
precisa alterar, essas informaes de controle dizem quais so as rotinas que precisam ser alteradas. Um
exemplo de sistema operacional que usa este tipo de soluo o MS-DOS e Windows 16 bits para
arquivos executveis (.exe). As verses do Windows 32 bits e superiores no so mais assim.
Digamos que o programa esteja dividido na memria, como mostra a figura abaixo, em trs pedaos.
Podemos observar que na memria temos o pedao 1 comeando na posio 0, o pedao 2 na posio
20000 e o pedao 3 na posio 30000:
Elaborado por Luciana Amancio merge com material da Soraia 2013/01 Pgina 7
SISTEMA OPERACIONAL II PARTE 1
Memria
O sistema operacional ao carregar o programa na memria ir somar a cada pedao o valor do endereo
inicial do pedao com o endereo da instruo.
Implementada pelo DOS para arquivos .com. Este mecanismo consiste em fazer o acerto de todos os
endereos do processo somando cada um deles com o endereo inicial de onde est sendo carregado o
processo na memria. Suporte apenas do sistema operacional.
Ao invs do programa usar endereos absolutos, por exemplo, endereo 0. Ele usa endereos relativos a
alguma coisa. O que acontece que a CPU durante a execuo ela soma o que a instruo tem mais certo
valor, este valor o endereo relativo. Ento esta correo no feita mais na carga. A correo feita
pelo hardware, pela CPU. Tem dois casos, veja abaixo:
Nesta soluo utilizado um registrador de base fixa, localizado na CPU. Quando o registrador de base
fixa tiver como contedo o valor 0 ento ser usado o valor absoluto.
No caso, se o sistema operacional carregar o programa (1.1) na posio 10000 este registrador conter o
valor 10000, por exemplo, ser somado a cada instruo que contenha valor de endereo absoluto o valor
relativo base (10000).
SO
10000 Proc 2
Elaborado por Luciana Amancio merge com material da Soraia 2013/01 Pgina 8
SISTEMA OPERACIONAL II PARTE 1
Proc 1:
. Proc 2:
.
. .
MOV AX, [1000]
.
JNZ 2000
CALL 3000 .
A vantagem desta soluo para a soluo anterior que o executvel no precisa ter nenhuma informao
de controle de endereo, simplificando a carga.
Quanto ao tempo de execuo em teoria seria mais lento devido a cada instruo que faa referncia a
endereos absolutos ter uma soma, porm esta soma feita pelo hardware, um hardware dedicado a fazer
isto. Com isso o tempo que leva esta soma irrelevante, no contribu para que a CPU que use registrador
de base seja mais lenta que a CPU que no use registrador de base. Se fosse uma operao feita por
software poderia ficar mais lento, mas no o caso.
Exemplos de sistemas operacionais que usam esta soluo: MS-DOS para programas (.COM. e .EXE). O
programa .EXE do MS-DOS uma mistura da soluo 1 e 2.1, ou seja, tm endereos que so
resolvidos em tempo de carga e tm endereos relativos base.
A CPU Intel tinha um problema que a distncia em relao base no podia ser muito grande, a limitao
era 64kbytes, distncia do endereo da base. Se o programa .EXE tivesse menos que 64kbytes ento
podia usar apenas a soluo 2.1. Caso o programa tivesse mais que 64kbytes ento tinha que usar uma
soluo mista.
A CPU Intel (at 80186) tem quatro registradores de base que para cada tipo de instruo reservado um
registrador de base diferente, veja abaixo, os registradores existentes:
cs code (instrues com endereos relativos a cdigo)
ds data (instrues com endereos relativos memria, varivel global)
ss stack (instrues com endereos relativos a variveis locais, pilha)
es extra
Observao:
A Intel chamou estes registradores de base de segmento que no tem haver com a terceira soluo
que a segmentao.
Depois da CPU Intel 80186 que passou para a segmentao tambm.
Esta soluo precisa de um suporte por hardware.
Elaborado por Luciana Amancio merge com material da Soraia 2013/01 Pgina 9
SISTEMA OPERACIONAL II PARTE 1
A CPU calcula a nova posio utilizada na instruo antes da execuo da instruo, somando o endereo-
base contido no registrador-base com o endereo contido na instruo. Registrador-base: registrador da
CPU que guarda o endereo da 1 instruo do processo a ser executado.
Teoricamente, essa tcnica aumentaria o tempo de execuo do processo, uma vez que, a CPU tem que
fazer uma nova soma para cada instruo que tenha referncia a um endereo de memria, mas como h
um hardware dedicado a esse tipo de operao, o tempo extra gasto irrelevante. Essa tcnica simplifica a
carga do processo na memria. Programas .COM e .EXE no MS-DOS utilizam essa tcnica.
O SO muda o valor do registrador-base quando o SO muda o processo a ser executado pela CPU.
Neste mecanismo tem-se um registrador base no chip da CPU que contm o endereo inicial do processo.
E esta informao do endereo inicial adicionada a cada endereo referenciado no processo. Possui
suporte de hardware e software (sistema operacional). Utilizado para arquivos.exe e .com.
A CPU tem que ter instrues cujo endereo no endereo que conta a partir do 0, a partir da base. So
endereos que contam a partir da prpria instruo. Por exemplo, se quiser fazer um loop o que conter na
instruo a distncia entre a instruo de loop e o endereo para onde se quer desviar, como mostrado
abaixo:
ADD AX, BX
MOV AX, CX
20 bytes MOV AX, [1000]
JNZ -20
CALL 3000
Isto um endereamento relativo instruo corrente. Nesta soluo no importa onde o programa foi
carregado na memria, pois a distncia de uma instruo desvia para o seu destino, como mostra o
exemplo acima, no se altera.
O cdigo que s usa este tipo de endereo chamado cdigo realocvel porque ele pode ser mudado de
posio na memria e continuar executando sem precisar fazer mais nada. A Intel tem tipo de instrues
que fazem isto, por exemplo, JNZ relativo e o absoluto, o compilador escolhe um ou outro.
Os endereos contidos nas instrues so gerados em tempo de carga. Essa tcnica no pode ser utilizada
em processos que estejam fragmentados na memria. O cdigo realocvel.
Elaborado por Luciana Amancio merge com material da Soraia 2013/01 Pgina 10