You are on page 1of 10

SISTEMA OPERACIONAL II PARTE 1

Email Professor: galucio@ime.uerj.br

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

MS-DOS -AT&T (Fabricante original)

3.0 NT - SCO (fornecedor atual)

3.1 3.0 - BSD universidade de Berkley (capacidade de Ter um protocolo de rede TCP/IP

95 3.5 - Linux gratuito

98 4.0 - Free BSD gratuito

ME 2000 - SOLARIS (SUN)

XP - AIX (IBM)

- HP/UX (HP)

MS DOS (Windows Antigo)


Disk Operating System / SO Textual, IBM PC (8086 - 16 bits), Hardware no proprietrio, Processador
Intel Versionado de 1.0 a 6.0 (dcada de 80). Um processo por vez inicialmente.

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.

WINDOWS NT (NEW TECHNOLOGY SO de Servidor)


Linguagem de Alto nvel. API (Application Program Interface Conjunto de mtodos que posso chamar)
- Usar para mudar o componente de software sem mudar quem o usa. Exemplo: Word = API = SO. Ou
seja, o conjunto de chamadas ao SO que um programa pode fazer (criar um processo novo, abrir um
arquivo, fecha-lo, etc.).

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.

LINUX (Baseado no Minix)


POSIX Padro Unix
AT ET Linguagem de Programao criada em C para fazer o UNIX. No podia vender o SO ento deu.
Depois passou a cobrar o uso quando pode vender o SO.
Cdigo fonte aberto em C, sucesso em mquina servidor (grtis).
Padro OSI No implementado, mas importante na teoria.
BSD (Berkeley) Unix Paga pelo governo, verso do Unix. Forma de comunicao entre as mquinas
com o SO Linux a linguagem C e o TCP/IP sugiram por causa do Linux.
Camadas OSI, padro que no foi seguido para comunicao entre BSDs Unix. OSI 7 camadas; TCP/IP
4 camadas. BSD programaram TCP/IP. Microsoft passou a usar a partir do Windows 95.

MVS (Z/OS - Mainframe IBM)


Softwares de mainframe importantes para processamento massivo de dados (Banco, servios pblicos).
Aluguel de mainframe. Algumas empresas ainda usam por segurana e risco. Por um tempo,
mainframes processavam mais rpido e faziam E/S mais rpido. CPU especfica E/S. Hoje em dia existe
multi-core. Primeiro a trazer benefcios para informtica. Linguagem de mquina e no em C. No
melhor do que os Pcs atuais e por comodidade as empresas mantem hoje em dia. Devido o insucesso do
MVS sugiram as boas praticas e o padro MPS.BR, CMI, CMMI.

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

Programa Arquivo executvel.


Processo Programa carregado na memria p/ execuo.

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.

FUNCTION FAT (N: INTEGER): INTEGER


BEGIN
IF N = 1 THEN
FAT:= 1;
ELSE
FAT:= N * FAT (N-1);
END;
END.

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.

3.1) SOLUES PARA O PROBLEMA DE CARREGAMENTO DE PROGRAMAS EM


QUALQUER ENDEREO DE MEMRIA

3.1.1) AMARRAO DE ENDEREOS (ADRESS BINDING)

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

Fig. 1.1 Fig. 1.2

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

3.1.2) CORREO DE ENDEREOS EM TEMPO DE CARGA

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.

O processo comea no endereo de memria 10000.

Antes da carga Depois da carga

MOV AX, [1000] MOV AX, [11000]


JNZ 2000 JNZ 12000

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

. SO coloca o valor no reg. De base.


HW faz o resto (somas)
MOV EAX
[1000]

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:

Endereo Inicial do programa = 10000


.
.
.
MOV AX, [11000] => 10000 + 1000 = 11000
JNZ 12000 => 10000 + 2000 = 12000
CALL 3000 => 10000 + 3000 = 13000

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

PEDAO 3 SO soma 30000


30000 Programa

SO soma 20000 PEDAO 3


PEDAO 2
20000 PEDAO 2
SO soma 0
PEDAO 1
PEDAO 1

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.

3.1.3) USO DE ENDEREOS RELATIVOS

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:

3.1.3.1) ENDEREOS RELATIVOS A UMA BASE FIXA

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).

Exemplo: Registrador de Base:


0 Proc 1

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 .

O sistema operacional no faz nada com relao correo


MOV AX,de endereo, mas a cada instruo executada a
[11000]
CPU soma o valor do endereo absoluto da instruo mais o endereo contido no registrador de base. Por
JNZ 12000
exemplo, se o processo 2 foi bloqueado e o escalonador elege o processo 1 para execuo, o valor do
registrador de base passar de 10000 para 0. O responsvel pela alterao do endereo do registrador de
base o sistema operacional. CALL 13000

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.

3.1.3.2) ENDEREOS RELATIVOS INSTRUO CORRENTE

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.

Antes da carga Depois da carga


Endereo de memria Endereo de memria
64 ADD AX, BX 64 ADD AX, BX
80 JNZ 1000 80 JNZ -16

Neste mecanismo o montador da linguagem de programao substitui o endereo pela distncia da


instruo corrente para o endereo que se deseja desviar.

Elaborado por Luciana Amancio merge com material da Soraia 2013/01 Pgina 10