Buscar

Resumo da disciplina de Sistemas Operacioanis

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 228 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 6, do total de 228 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 9, do total de 228 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

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
Sistemas Operacionais
Prof. MSc. Leandro KravczukProf. MSc. Leandro Kravczuk
proflkv@gmail.comproflkv@gmail.com
www.facebook.com/profleandrokvwww.facebook.com/profleandrokv
2
Bibliografia
Básica
Tanenbaum, A. S. Sistemas Operacionais Modernos. Ed. Pearson, 3ª Edição, 
2010.
Machado, F. B., Maia, L. P. Arquitetura de Sistemas Operacionais. LTC Editora, 4ª 
Edição 2007.
Silberschatz, A., Galvin, P. B., Gaine, G. Fundamentos de Sistemas Operacionais. 
LTC, 8ª Edição, 2010. 
Complementar
Deitel, H.M., Deitel, P. J., CHOFFNES, D. R. Sistemas Operacionais. Ed. Pearson, 3ª Edição, 2005.
Flynn, I. M., Mchoes, A. M. Introdução aos Sistemas Operacionais, Cengage Learning, 2002.
Tanenbaum, A. S., Woodhull, A. S. Sistemas Operacionais – Projeto e Implementação. Grupo A Editoras, 3ª 
Edição, 2008.
Silberchatz, A., Galvin, P. B., Gagne, G. Sistemas Operacionais com Java. 7ª Edição Campus, 2008.
Oliveira, R. S, Carissimi, A., Toscani, S. Sistemas Operacionais, Coleção Livros Didáticos Informática 
UFRGS, Vol 11, Grupo A Editoras, 4ª Edição, 2010.
3
Provas S.O.
1ºAV – 01 de Outubro
2ºAV – 03 de Dezembro
Obs: Entrega da parte escrita do P.I. II
4
Projeto Interdisciplinar II - Conteúdo Programático
• Levantamento histórico de dois Sistemas Operacionais;
• Vantagens e desvantagens da utilização dos Sistemas 
Operacionais escolhidos;
• Aplicabilidade dos Sistemas Operacionais escolhidos no meio 
acadêmico, doméstico e profissional;
• Comparativo entre os dois Sistemas Operacionais escolhidos (no 
meio acadêmico, doméstico e profissional);
• Estudo de caso de uma empresa existente, mostrando qual Sistema 
Operacional é atualmente utilizado (clientes e servidores) e qual o 
Sistema Operacional que melhor se adequaria para realidade da 
empresa escolhida.
5
Proj Interdisciplinar II
Quantidade de Alunos:
• Máximo de 10 pessoas por equipe
• Reuniões
Agendar pelo proflkv@gmail.com
Disponibilidade:
Segundas - 18:00 às 18:45 e/ou
Terças - 18:00 às 18:45 e/ou
por email proflkv@gmail.com
6
- Entrega do trabalho [impresso (encadernado) e por email 
(arquivo .doc ou .docx)] completo composto de capa, folha de 
rosto sumário, introdução, metodologia, referencial teórico (em 
média de oito a quinze folhas) e referências; 
- Apresentação do trabalho através de um pôster.
- Apresentação do PowerPoint utilizando o DataShow para toda turma.
- Entrega trabalho impresso: No dia da 2º AV
- Data para Apresentação do Pôster e DataShow: A combinar com o Prof.
7
Introdução
O que compõem um Sistemas Computacional?
Processadores; Memória; Discos; Impressora; Teclado; Monitor, 
Placas de Rede e outros dispositivos de entrada e saida.
Para gerenciar esses recursos existe o sistema operacional, cujo trabalho
é fornecer aos programas do usuário um modelo de computador melhor, 
mais simples e limpo e lidar com o gerenciamento de todos os recursos
mencionados.
8
Windows? Linux? Mac OS X?
O programa que os usuários interagem:
• Shell: interpretador de comandos
• GUI: Interface gráfica com o usuário
Eles não fazem parte do SO, embora o utilize para 
realizar seu trabalho.
Introdução
9
Introdução
A maioria dos computadores tem dois níveis de operação: modo 
núcleo e modo usuário.
O S.O. é a peça mais básica de software e opera em modo núcleo 
(modo supervisor). Nesse modo ele tem acesso completo a todo o 
hardware e pode executar qualquer instrução que a máquina seja 
capaz de executar. 
O resto do software opera em modo usuário, no qual apenas um 
subconjunto de instruções da máquina está disponível. As 
instruções que afetam o controle da máquina ou realizam E/S são 
proibidas para programas de modo usuário. 
10
Onde o SO se encaixa
11
O programa de interface com o usuário, shell ou GUI, é 
o nível mais inferior do software de modo usuário e 
permite que este inicie programas, como o navegador 
Web. Esses programas também usam muito o S.O.
Sistemas Operacionais ≠ Aplicações
SO: Grandes, complexos e têm vida longa. 
Difíceis de escrever; Evoluem com o tempo.
Introdução
12
É um software que executa em modo núcleo, ou 
seja, fornece aos aplicativos um conjunto de 
recursos abstratos claro em vez de recursos 
confusos de hardware e também gerencia esses 
recursos de hardware.
O que é um SO?
13
É uma máquina estendida
– Oculta os detalhes 
complicados que têm quer ser 
executados
– Apresenta ao usuário uma 
máquina virtual, mais fácil de 
usar
Exemplo: =>
O que é um SO?
14
SO transformam hardware feio em abstrações bonitas
15
O que é um SO?
É um gerenciador de recurso
• Cada programa tem um tempo com o recurso
Diferentes programas aguardam sua vez para utilizá-lo;
Ex: Múltiplas saídas são enfileiradas para imprimir em uma única 
impressora. O SO decide qual será a próxima saída a ser impressa.
• Cada programa tem um espaço no recurso
Cada um ocupa uma parte do recurso. 
Ex: A memória principal é dividida entre vários 
programas em execução, assim cada um pode residir 
ao mesmo tempo na memória. É mais eficiente 
mantê-los nela em vez de destinar toda memória a 
um só programa, principalmente se ele precisar de 
apenas uma pequena fração do total.
16
A História dos SOs
• Primeira geração 1945 - 1955
– Válvulas, painéis de programação
• Segunda geração 1955 - 1965
– transistores, sistemas em lote
• Terceira geração 1965 – 1980
– CIs e multiprogramação
• Quarta geração 1980 – presente
– Computadores pessoais
17
Aspectos Históricos dos S.O.’s
1ª Geração (1945-1955): Válvulas e Painéis de Programação
• Máquinas imensas com milhares de válvulas e 
milhões de vezes mais lentas que os mais 
lentos computadores atuais;
• Um mesmo grupo de pessoas projetava, 
construía, programava, operava e realizava a 
manutenção de cada máquina;
• No início da década de 50 a programação em 
painéis deu lugar à programação em cartões.
18
Aspectos Históricos dos S.O.’s
1ª Geração (1945-1955): Válvulas e Painéis de Programação
* Toda programação era feita em código de máquina absoluto e 
muitas vezes conectando plugs em painéis para controlar as 
funções básicas da máquina. 
• Não havia linguagens de programação (nem mesmo a linguagem 
assembly);
• Os S.O.s também não haviam sido inventados. 
• O programador reservava antecipadamente tempo de máquina em 
uma planilha, ia para a sala da máquina, inseria seu painel de 
programação no computador e passava algumas horas torcendo 
para que nenhuma das 20 mil válvulas queimasse durante a 
execução.
19
Aspectos Históricos dos S.O.’s
1ªGeração (1945-1955): Válvulas e Painéis de Programação
20
2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch)
– Computadores de grande porte (mainframes), 
fabricados e comercializados com a 
expectativa de maior tempo de 
funcionamento.
- Separação entre projetistas, fabricantes, 
programadores e técnicos da manutenção;
– Sistemas operacionais típicos desta época: 
FMS (Fortran Monitor System) e o IBSYS, do 
IBM-7094.
Aspectos Históricos dos S.O.’s
21
2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch)
– Ficavam isolados em salas especiais com ar-
condicionado, operadas por equipes 
profissionais;
– Somente grandes corporações, governo ou 
universidades podiam pagar vários milhões 
de dólares por estes computadores;
Aspectos Históricos dos S.O.’s
22
2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch)
– Para uma tarefa se executada, o programador 
primeiro escrevia o programa em um papel e depois 
perfurava em cartões. Então levava o maço de 
cartões para a sala de entradas e entregava-o a um 
dos operadores. 
– Ao fim da execução, o operador ia até a impressora, 
retirava sua saídae levava para a sala de saídas, de 
modo que o programador pudesse retirá-la mais 
tarde.
Aspectos Históricos dos S.O.’s
23
2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch)
• Sistema em Lote (batch): registro de vários jobs 
em fita magnética.
Aspectos Históricos dos S.O.’s
24
2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch)
IBM1401
Aspectos Históricos dos S.O.’s
25
2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch)
IBM7094
Aspectos Históricos dos S.O.’s
26
Aspectos Históricos dos S.O.’s
3ªGeração (1965-1980): Circuitos Integrados e Multiprogramação
– System/360 da IBM. Série de máquinas compatíveis (teoricamente), 
com a mesma arquitetura e conjunto de instruções, voltada tanto para 
a computação numérica quanto para a comercial
27
Aspectos Históricos dos S.O.’s
3ªGeração (1965-1980): CI’s e Multiprogramação
• Sistema Operacional: OS/360. Requisitos de Software: ser 
executado em sistemas pequenos e em sistemas muito grandes; 
ser eficiente em máquinas com poucos periféricos e também em 
computadores com muitos periféricos; ser eficaz em todos os 
diferentes usos.
• OS/360, “batendo”: milhões de linhas escritas em linguagem de 
montagem por milhares de programadores com milhares de erros e 
muitas correções (versões).
• OS/360, “assoprando”: atendia razoavelmente bem à maioria dos 
clientes; popularizava técnicas novas como a multiprogramação e 
spooling (simultaneous peripheral operation online).
28
Aspectos Históricos dos S.O.’s
3ªGeração (1965-1980): CI’s e Multiprogramação
• Multiprogramação: divisão da memória em vários jobs, 
com um job para cada partição. Enquanto um job 
esperava que a operação de E/S se completasse, um 
outro poderia usar a CPU.
• Spooling: job transferido do cartão para discos 
magnéticos, e, após a execução, liberados da partição 
destes discos, possibilitando a carga de um novo job. Os 
1401 já não eram mais necessários...
29
Aspectos Históricos dos S.O.’s
3ªGeração (1965-1980): CI’s e Multiprogramação
• Timesharing: variante da multiprogramação na qual 
cada usuário se conectava por meio de um terminal on-
line.
– CTSS (compatible time sharing system): 1º sistema 
timesharing, desenvolvido no MIT.
• MULTICS(Serviço de computação e de informação 
multiplexada): MIT, Bell Labs e General Electric e o 
fornecimento de “energia computacional”.
30
Aspectos Históricos dos S.O.’s
3ª Geração (1965-1980): CI’s e Multiprogramação
– MULTICS: 
• Projetado para suportar centenas de usuários em uma única 
máquina; 
• Bells Labs e General Eletric deixaram o projeto;
• Usuários extremamente leais;
• Várias idéias influenciaram positivamente os S.O.’s 
subseqüentes..
31
Aspectos Históricos dos S.O.’s
3ª Geração (1965-1980): CI’s e Multiprogramação
– Ken Thompson, do Bell Labs, escreveu uma versão 
monousuário do MULTICS denominada... UNIX.
– Após inúmeras versões incompatíveis do UNIX, foi 
desenvolvido o padrão POSIX (Portable Operating 
System-IX): interface mínima de chamadas ao 
sistema.
– Tanenbaum e o seu MINIX, em 1987-> Linus 
Torvalds escreve o LINUX.
32
Aspectos Históricos dos S.O.’s
4ª Geração (1980-Presente): Computadores Pessoais
– Em 1974, a Intel lançou a 1ª CPU de 8 bits, a 8080.
– Gary Kildall, consultor Intel, escreve um S.O. para a 
8080: CP/M (programa de controle para 
microcomputadores).
– A Intel abre mão dos direitos do CP/M para a firma de 
Kildall, a Digital Research.
– Em 1977, a Digital Research lança um remodelado 
CP/M e domina a microcomputação por cinco anos.
33
Aspectos Históricos dos S.O.’s
4ª Geração (1980 - Presente): Computadores Pessoais
CP/M
34
Aspectos Históricos dos S.O.’s
4ª Geração ( 1980 - Presente): Computadores Pessoais
– Início dos anos 80: Projeto do IBM PC. Bill Gates é 
procurado pela IBM para licenciar o BASIC e... 
Requisitar um S.O..
– Bill Gates recomenda o S.O. da Digital Research de 
Gary Kildall, que... Se recusa a se reunir com a IBM! 
IBM procura Mr. Gates novamente.
– Gates adquire o DOS (disk operating system) da 
Seattle Computer Products. Na verdade ele compra a 
Seatlle, empresa de Tim Paterson por 50 mil dólares.
35
Aspectos Históricos dos S.O.’s
4ª Geração ( 1980 – Presente ): Computadores Pessoais
– Atendendo a um pedido da IBM, Gates modifica o 
DOS. Dono da Microsoft, Gates contrata Tim 
Paterson para modificar o projeto original do DOS. 
Lança-se então o MS-DOS (Microsoft...Disk 
Operating System).
– MS-DOS lançado com o 80286, 80386 e 80486. O 
MS-DOS foi se aperfeiçoando, com aspectos cada 
vez mais avançados, muitos deles derivados do 
UNIX.
36
Aspectos Históricos dos S.O.’s
4ª Geração (1980-Presente) : Computadores Pessoais
– MS-DOS
37
4ª Geração (1980-Presente): Computadores Pessoais
– Doug Engelbart no Stanford Research Institute nos 
anos 60 criou a GUI (graphical user interface), que 
fora incorporada às máquinas do Xerox PARC.
– Steve Jobs incorporou a GUI ao Apple – Projeto Lisa: 
fracasso comercial!
– Steve Jobs e a 2ª tentativa com a GUI: Apple 
Macintosh...
38
Aspectos Históricos dos S.O.’s
MAC OS
39
Aspectos Históricos dos S.O.’s
4ª Geração (1980 - Presente): Computadores Pessoais
– Bill Gates lança o Windows, baseado na interface 
GUI e influenciado pelo sucesso do Macintosh. De 
1985 a 1995, o Windows foi apenas um interpretador 
de comandos.
– A seguir, Windows 95, com vários aspectos de um 
S.O., mas com boot e alguns programas do MS-DOS.
– Windows 98, versão levemente modificada do 95.
– Windows NT (new tecnology): totalmente 32 bits.
40
Aspectos Históricos dos S.O.’s
41
Aspectos Históricos dos S.O.’s
4ª Geração (1980-Presente): Computadores Pessoais
– Versão 5 do Windows NT renomeada para Windows 
2000. A expectativa de suceder tanto o Windows NT 
4.0 quanto o Windows 98 não obteve êxito.
– Lançou-se mais uma versão do Windows 98, 
denominada Windows Me (Millenium Edition).
– Windows XP, Windows Vista e Windows 7
– Unix e as máquinas RISC. MIT escreveu um sistema 
de janelas para UNIX denominada X Windows
42
Aspectos Históricos dos S.O.’s
43
Aspectos Históricos dos S.O.’s
44
4ª Geração ( 1980 - Presente): Computadores Pessoais
– Meados dos Anos 80: Sistemas Operacionais de 
Rede. Usuários podem conectar-se a máquinas 
remotas. Cada máquina executa seu próprio S.O. 
(local) e tem seu próprio usuário.
– Sistema Operacional Distribuído: composto de 
múltiplos processadores. Os usuários não precisam 
saber onde estão seus programas e arquivos. Tudo é 
tratado pelo S.O..
Aspectos Históricos dos S.O.’s
45
Hardware de Computadores
Um S.O. está intimamente ligado ao hardware do computador no qual ele é 
executado. Ele estende o conjunto de instruções do computador e gerencia 
seus recursos.
46
Processadores
O ‘cérebro’ do computador é a CPU. Ela busca 
instruções na memória e as executa. O ciclo básico de 
execução de qualquer CPU é: buscar a primeira 
instrução da memória, decodificá-la para determinar 
seus operandos e qual operação executar com esses, 
executá-la e então buscar, decodificar e executar as 
instruções subsequentes. O ciclo é repetido até que o 
programa pare. É dessa maneira que os programas são 
executados.
47
Conceitos em S.O.
Processos
– Essencialmente um Processo é um programa em execução;
– Associado a cada processo está o seu espaço de endereçamento , 
isto é, uma lista de locais da memória em que o processo pode ler e 
gravar. 
– Processo é um contêiner que armazena todas as informações 
necessárias para executar um programa.
Ex: Edição de vídeo, navegador da web e o receptor de email.
- Processos possuem ponteiros que sãoresponsáveis por mostrar a 
posição atual (o número do próximo byte ou registro a ser lido)
- Tabela de Processos: Tabela do S.O. onde todas informações 
relativas a um processo são armazenadas.
48
Conceitos em S.O.
– As principais chamadas de sistema de gerenciamento 
de processos são aquelas que lidam com a criação e o 
término de processos (ex: interpretador de comandos 
ou shell)
– Um processo pode criar outros processos (processos 
filhos), determinando uma estrutura de processos.
49
Conceitos em S.O.
– Processos relacionados que estiverem cooperando 
em alguma tarefa, precisam se comunicar e 
sintonizar suas ações. É a chamada comunicação 
entre processos.
Ex: processos remoto em redes
– A cada pessoa autorizada a usar um sistema é 
atribuida uma UID (identificação do usuário). A UID 
com poderes especiais e que pode violar muitas das 
regras de proteção é chamada de superusuário (em 
UNIX)
50
Conceitos em S.O.
Deadlock
– Ao interagirem, dois ou mais processos podem , 
algumas vezes, entrar em uma situação da qual eles 
não conseguem sair. É o chamado Deadlock.
– Imagine um computador, uma unidade de fita e um 
gravador de CD. A requisita a fita e é atendido. B 
requisita o gravador e é atendido. A requisita o 
gravador e espera. B requisita a fita e espera. Ambos 
esperam... deadlock!
51
Conceitos em S.O.
52
Conceitos em S.O.
Gerenciamento de Memória
– No uso compartilhado da memória, qualquer 
programa residente deve manter-se livre de 
interferências dos outros programas. O 
gerenciamento de memória é responsável por esse 
mecanismo de proteção.
– O gerenciamento de memória é responsável também 
pelo controle do espaço de endereçamento dos 
processos.
• Memória Virtual
53
Conceitos em S.O.
Arquivos
– Uma característica importante de um S.O. é a 
capacidade de esconder peculiaridades de discos e 
outros elementos de E/S e apresentar um modelo 
abstrato de arquivos independentes de dispositivo.
– Diretório: forma de agrupamento de arquivos.
– As entradas de diretório podem ser arquivos ou 
outros diretórios. Esta possibilidade determina uma 
hierarquia - o sistema de arquivo.
54
Conceitos em S.O.
Sistema de Arquivos
55
Conceitos em S.O.
– Cada arquivo dentro da hierarquia de 
diretórios pode ser especificado fornecendo-
se o caminho a partir do topo da hierarquia 
de diretórios, o diretório-raiz.
• Ex: CS101, slide anterior
• Antes que possa ser trabalhado, um arquivo 
precisa ser aberto e, nesse momento, as 
permissões são verificadas.
56
Conceitos em S.O.
– Montagem do sistema de 
arquivos.
Ex: Cd-ROM, Pen Drive
57
Conceitos em S.O.
Pipe: é um tipo de pseudoarquivo que pode ser 
usado para conectar dois processos. 
58
Conceitos em S.O.
Entrada e Saída (E/S)
– O S.O. deve gerenciar os dispositivos de E/S. 
– Alguns programas se aplicam a qualquer recurso de E/S; 
outros, como os drives, são específicos a cada dispositivo.
• Ex: Teclado, Monitores e impressoras.
59
• Segurança
– É tarefa do S.O. gerenciar o sistema de 
segurança para que os arquivos, p.e., sejam 
acessíveis apenas por usuários autorizados.
• Ex: Proprietário, membros do grupo do proprietário 
e qualquer usuário.
Os 3 bits são conhecidos como bits rwx
Conceitos em S.O.
60
Conceitos em S.O.
• Shell: interpretador de comando do UNIX. 
– Não é parte do Sistema Operacional, porém é um software 
importante que trabalha junto ao S.O. 
– É a interface principal entre o usuário à frente de seu terminal e 
o S.O. (a menos que o usuário esteja usando uma GUI). A 
Interface GUI é um programa sendo executado na camada 
superior do S.O., como um shell. 
Exemplos: COMMAND.COM, EXPLORER.EXE, 
BShell, CShell.
61
Conceitos em S.O.
– Exemplos de comandos interpretados pelo 
Command.com:
• dir; cd; md;
– Exemplos de comandos interpretados pelo 
Shell do Linux:
• ls; cd; mkdir; rm; find
62
Conceitos em S.O.
• Os Sistemas Operacionais têm duas 
funções principais: 
– Fornecer abstrações aos programas de 
usuários;
– Administrar os recursos do computador 
(transparente para os usuários e feita 
automaticamente).
63
Conceitos em S.O.
Chamada de Sistema (System Call): interface entre o sistema 
operacional e os programas de usuário.
64
Conceitos em S.O.
System Call
65
Modo Kernel e de Usuário do Processador:
para que os programas de usuário não tenham acesso a 
determinadas instruções do processador, foram criados 
modos de acesso a estas instruções. O Modo Kernel ou 
Modo Protegido é restrito ao Sistema Operacional.
66
Estrutura UNIX
– Kernel: é o núcleo do sistema operacional, controla o 
hardware traduzindo comandos UNIX em instruções 
de hardware. O usuário não trabalha diretamente 
com o kernel.
– Sistema de arquivos: é o modo do UNIX armazenar 
informações de qualquer tipo, como por exemplo, 
gráficos, textos, etc.
– Shell: é um programa que atua como interface entre 
o kernel e o usuário.
– Aplicativos: são programas que podem ser 
invocados pelo shell para realizar diversas tarefas.
67
Aspectos Sobre a Estrutura dos 
Sistemas Operacionais
• As rotinas do S.O. oferecem serviços aos 
usuários e às suas aplicações. O conjunto 
destas rotinas é chamado de núcleo, ou 
kernel.
• Os usuários podem interagir com o 
núcleo do S.O. por meio de: aplicações, 
utilitários ou linguagem de comando.
68
Estrutura do S.O.
• Funções essenciais do núcleo do S.O.
– Tratamento de interrupções e exceções
– Criação e eliminação de processos.
– Sincronização e comunicação entre processos.
– Escalonamento e controle dos processos.
– Gerência de memória
– Gerência de sistemas de arquivos
– Gerência de dispositivos de E/S
– Suporte a redes locais e distribuídas
– Contabilização do uso do sistema, além de auditoria 
e segurança
69
Estrutura do S.O.
• Estrutura de um Sistema Operacional
• É a maneira como o código do sistema é 
organizado e o inter-relacionamento entre seus 
diversos componentes. Esta estrutura pode variar 
conforme a concepção do projeto.
• Abordaremos: Sistemas Monolíticos, Sistemas 
de Camadas, Micronúcleo, sistemas cliente-
servidor, Máquinas Virtuais e exonúcleo.
70
Estrutura do S.O.
Sistemas Monolíticos:
• O S.O. inteiro é executado como um único programa no modo 
núcleo. O S.O. é escrito como uma coleção de rotinas, ligadas 
a um único grande programa binário executável. Exs: linux, 
MS-DOS.
71
Estrutura do S.O.
Sistemas Monolíticos:
Sua estrutura básica para o S.O. é a seguinte:
1) Um programa principal invoca a rotina do serviço requisitado;
2) Um conjunto de rotinas de serviço executam as chamadas de sistema;
3) Um conjunto de rotinas utilitárias auxiliam as rotinas de serviço.
Segundo esse modelo, para cada chamada de sistema há uma rotina de serviço 
que se encarrega dela. As rotinas utilitárias realizam tarefas necessárias para as 
várias rotinas de serviço, como buscar dados dos programas dos usuários. 
72
Estrutura do S.O.
Sistemas de Camadas: 
Sistema é dividido em níveis sobrepostos. Cada nível oferece 
funcionalidades que podem ser acessadas somente pelas camadas 
superiores. Exs: MULTICS, THE (Technishe Hogeschool Eindhoven), 
WINDOWS, maioria das versões UNIX.
arquitetura do OpenVMS
73
Estrutura do S.O.
Arquitetura em Camadas:
– Tem como vantagem isolar as funções do sistema operacional, 
facilitando a manutenção e a depuração, além de criar uma 
hierarquia de níveis de modos de acesso, protegendo as 
camadas mais internas.
– Uma desvantagem deste modelo é o desempenho. Cada nova 
camada implica em novo modo de acesso.
– A maioria dos atuais sistemas comerciais utiliza duas camadas,onde existem os modos de acesso usuário (não-privilegiado) e 
kernel (privilegiado).
74
• Tradicionalmente, todas camadas entram no núcleo, 
mas isso não é necessário. 
• Erros no núcleo podem derrubar o sistema 
instantaneamente. Entretanto, processo de usuário 
podem ser configurados com menos potência de modo 
que um erro não seja fatal. 
• A densidade de erro por mil linha de código: dez erros. 
Nem todos fatais...
Por conta disso, os fabricantes inserem botões de 
reinicialização nos computadores. 
75
Estrutura do S.O.
Micronúcleo
Idéia: alcançar alta confiabilidade por meio da divisão do 
S.O. em módulos pequenos, bem definidos, e apenas 
um desses módulos – o micronúcleo – é executado no 
modo núcleo e o restante é executado como processos 
de usuário comum. 
* 10 erros por 1000 linhas de código. Em um S.O. monolítico de 5 milhões de linhas 
de código contenha 50 mil erros no núcleo (nem todos fatais).
* botão de reset
Ex: Erro no áudio em um sistema micronúcleo x Erro no áudio no sistema monolítico.
Próximo Slide
76
Estrutura do S.O.
Micronúcleo
Ex: Erro no áudio em um sistema micronúcleo x Erro no áudio no sistema monolítico. 
Quando há a execução de cada driver de dispositivo e de cada sistema de arquivos 
como um processo de usuário separado, um erro em um deles pode quebrar aquele 
componente, mas não pode quebrar o sistema inteiro. Desse modo, um erro na 
unidade de áudio fará com que o som seja adulterado ou interrompido, mas não 
travará o computador. 
Por outro lado, em um sistema monolítico, com todas unidades no núcleo, uma 
unidade de áudio defeituosa pode facilmente dar como referência um endereço de 
memória inválido e para o sistema instantaneamente. 
Muitos foram implementados e utilizados, e são especialmente comuns em 
aplicações de tempo real, industriais, de aviônica e militares, que são cruciais e têm 
requisitos de confiabilidade muito altos. 
77
Estrutura do S.O.
Modelo cliente-servidor:
Idéia: Os servidores prestam algum serviço, e os clientes usam esses 
serviços. Frequentemente a camada inferior é micronúcleo, mas ele 
não é obrigatório. 
A comunicação entre clientes e servidores é feita por meio de troca de 
mensagens. Para obter um serviço, um processo cliente constrói uma 
mensagem dizendo o que deseja e a envia ao serviço apropriado. Este 
faz o trabalho e envia a resposta de volta.
Ex: Páginas na Web
78
Estrutura do S.O.
• Máquina Virtual:
– Cria uma camada intermediária entre o hardware e o 
sistema operacional chamada Monitor de Máquina 
Virtual. Esta camada oferece, para cada máquina 
virtual, uma cópia virtual do hardware. 
• Exemplos: VM/370, JVM.
79
• Como cada máquina virtual é uma cópia exata do hardware, cada uma 
delas pode executar qualquer S.O.. 
• Ex: Servidores de correio, web, ftp 
- Computadores diferentes x virtualizado. 
- Com a Virtualização, executa-se todos eles na mesma máquina sem que 
uma falha em um servidor afete o resto.
• Ex: Hospedagem na Web: 
- Hospedagem compartilhada: o cliente recebe uma conta de acesso a um 
servidor da web, mas não é permitido controlar o software do servidor
- Hospedagem dedicada: o cliente terá uma maquina própria (pouco 
econômico)
Quando uma cia aluga máquinas virtuais, uma única máquina física pode 
executar muitas máquinas virtuais e cada uma delas parece ser uma 
maquina completa.
• Ex: Usuários finais que querem executar dois ou mais S.O.s ao mesmo 
tempo. 
80
Estrutura do S.O.
81
Estrutura do S.O.
Monitor de Maquina Virtual
- Hipervisor tipo 1 x Hipervisor tipo 2
Máquina Virtual Java 
82
Estrutura do S.O.
Exonúcleo
A máquina real é dividida, ou seja, cada usuário 
recebe um subconjunto de recursos. 
Na camada mais inferior, executando em modo 
núcleo, há um programa denominado 
exonúcleo. 
Sua tarefa é alocar recursos às máquinas 
virtuais e então verificar as tentativas de usá-los 
para assegurar-se de que nenhuma máquina 
esteja tentando usar recursos de outra.
83
Estrutura do S.O.
Exonúcleo
• Vantagem: poupa uma camada de 
mapeamento.
– Nos outros projetos, cada máquina virtual pensa que 
tem seu próprio HD, com blocos indo de 0 a um valor 
máximo, de modo que o monitor de MV deve manter 
tabelas para remapear os endereços de disco( e 
todos recursos).
– Com o exonúcleo, ele precisa manter somente o 
registro de para qual máquina virtual foi atribuído qual 
recurso. 
84
Resumo
• Sistemas operacionais podem ser 
analisados de dois pontos de vista:
– Gerenciadores de recursos 
• O trabalho do S.O. é gerenciar as diferentes 
partes do sistema.
– Máquinas estendidas
• Oferece aos usuários abstrações que sejam mais 
convenientes ao uso do que a máquina real 
(incluem processos, espaços de endereçamento e 
arquivos)
85
Resumo
• Os S.O.s tem longa história. 
• Os computadores são constituídos de processadores, 
memórias e dispositivos de E/S.
• Os conceitos básicos sobre os quais todos S.O.s são 
construídos são: processos, gerenciamento de memória, 
gerenciamento de E/S, sistema de arquivos e 
segurança.
• Os S.O.s podem ser estruturados: Como Sistemas 
monolíticos, como hierarquia de camadas, como 
micronúcleo, como um sistema de máquina virtual, como 
um exonúcleo ou por meio do modelo cliente-servidor
86
Processos
• Processo: uma abstração de um programa em 
execução;
ex: múltiplas solicitações em um servidor web
chegada de emails, atualização de antivírus, 
imprimindo arquivos, gravando dvds e navegando na web
• Processo é um programa em execução, e seu conceito 
pode ser definido como o conjunto necessário de 
informações para a implementação da concorrência de 
programas. Estas informações estão reunidas nos 
contextos de software e de hardware e no espaço de 
endereçamento.
• Cada processo tem sua própria CPU virtual.
87
A parte de imagem com identificação de relação rId2 não foi encontrada no arquivo.
88
Processos
• Cada cpu só pode executar um processo por vez;
• A diferença entre um processo e o programa é sutil, mas 
crucial.
– Ex: Analogia Cientista confeiteiro (receita =programa, cientista = 
processador e ingredientes = dados de entrada)
• Processo constitui uma atividade. Ele possui programa, 
entrada, saída e um estado. Um único processador pode 
ser compartilhado entre vários processos, com algum 
algoritmo de escalonamento usado para determinar quando 
para o trabalho sobre um processo e servir outro
89
Processos
• Um programa executado duas vezes conta como dois 
processos. 
• S.O.s precisam de mecanismos para criar processos. 
Há quatro eventos principais que fazem com que 
processos sejam criados:
– Início do sistema (processos em primeiro plano e segundo 
plano);
– Execução de uma chamada de sistema de criação de processo 
por um processo em execução;
– Uma requisição do usuário para criar um novo processo;
– Início de uma tarefa em lote (batch job)
Daemons: Processos que ficam em background com a finalidade 
de lidar com alguma atividade. 
Como vê-los? ps (UNIX) ou gerenciador de tarefas (win)
90
Processos
– Um processo sem execução pode fazer chamadas de sistema (system 
calls) para criar um ou mais novos processos para ajudá-lo em seu 
trabalho. 
– Usuários podem iniciar um programa digitando um comando ou clicando 
em um ícone. Cada ação inicia um novo processo e executa nele o 
programa selecionado. 
» Janela Programas Windows
– Um novo processo (processo filho) é criado por um processo existente 
(processo pai) executando uma chamada de sistema para a criação de 
processo. Esse processo (pai) pode ser um processo de usuário que 
está executando, um processo de sistema invocado a partir do 
teclado/mouse ou um processo gerenciador de lotes.
91Processos
• Término de um processo:
– Saída normal (voluntária);
• Exit (unix) / ExitProcess (Windows). Fechar qualquer 
programa.
– Saída por erro (voluntária);
• Cc foo.c / erro ao fornecer parâmetros errados
– Erro Fatal (involuntário);
• Execução de uma instrução ilegal
– Cancelamento por outro processo (involuntário).
• Um processo executa uma chamada de sistema dizendo ao 
S.O. para cancelar algum outro processo (Unix Kill/ Windows 
TerminateProcess).
92
Processos
Estados de Processos
93
Processos
– Processos Foregroun de Background: Foreground: 
permite comunicação direta do usuário com o processo 
durante a sua execução.
– Background: não existe interatividade com usuário.
94
Processos
Processo PIPE
95
Thread
Thread é uma forma de um processo dividir a si mesmo em duas ou 
mais tarefas que podem ser executadas concorrentemente. 
Em hardwares equipados com uma única CPU, cada thread é 
processada de forma aparentemente simultânea, pois a mudança 
entre uma thread e outra é feita de forma tão rápida que para o 
utilizador isso está acontecendo paralelamente. Em hardwares com 
múltiplos CPUs ou multi-cores, as threads são realizadas realmente 
de forma simultânea;
96
Threads
Um thread é um fluxo único de controle sequencial dentro de um programa. 
Principais razões para existência dos threads:
• Tornar o modelo de programação mais simples. As aplicações são 
decompostas em múltiplos threads sequenciais que executam em quase 
paralelo. Isso deve-se ao fato de que em muitas aplicações ocorrem 
múltiplas atividades ao mesmo tempo.
• São mais fáceis (mais rápidos) de criar e destruir que os processos, 
pois não têm nenhum recurso associados a eles. 
• Ganho de desempenho. O uso de threads não resulta em ganho de 
desempenho quando todos eles são CPU-bound (muito processamento 
com pouca E/S). No entanto, quando há grande quantidade de 
computação e de E/S, os threads permitem que essas atividades se 
sobreponham e acelerem a aplicação.
97
Threads
Ex: Processador de textos. 
1º Usuário escrevendo um livro. Arquivo único/Divide em diversos arquivos
2º Altera frase na primeira folha, doc de 1000 páginas.
3º Figura abaixo.
98
Modelo de Thread Clássico
• Um modo de ver um processo é encará-lo como um meio de 
agrupar recursos relacionados. Um processo apresenta um espaço 
de endereçamento que contém o código e os dados do programa. 
• Outro conceito que um processo apresenta é o thread. Este tem um 
contador de programa que mantém o controle de qual instrução ele 
deve executar em seguida. Ele tem registradores, que contêm suas 
variáveis de trabalho atuais. Apresenta uma pilha que traz a história 
da execução.
• Apesar de um thread ter de executar um processo, ambos (o thread 
e seu processo) são conceitos diferentes. Processos são usados 
para agrupar recursos; threads são as entidas escalonadas para a 
execução sobre a CPU.
99
O que os threads acrescentam ao modelo de processo é permitir 
que múltiplas execuções ocorram no mesmo ambiente do processo, 
com um grande grau de independência uma da outra. 
Ter múltiplos threads executando em paralelo é análogo a múltiplos 
processos executando em paralelo em um único computador. No 
primeiro caso, os threads compartilham um mesmo espaço de 
endereçamento e outros recursos. No último, os processos 
compartilham um espaço físico de memória, discos, impressoras e 
outros recursos. 
Multithread é o termo usado para descrever a situação em que se 
permite a existência de múltiplos threads no mesmo processo.
Modelo de Thread Clássico
100
Modelo de Thread Clássico
101
Modelo de Thread Clássico
Threads distintos não são tão independentes quanto 
processos distintos.
Todos os threads têm exatamente o mesmo espaço de 
endereçamento, o que significa que eles também 
compartilham as mesmas variáveis globais. 
Cada thread pode ter acesso a qualquer endereço do 
processo. 
102
Escalonamento
Quando um computador é multiprogramado, ele muitas vezes 
tem múltiplos processos ou threads que competem pela CPU 
ao mesmo tempo. Essa situação ocorre sempre que dois 
processos estão simultaneamente no estado pronto. Se 
somente uma CPU estiver disponível, deverá ser feita uma 
escolha de qual processo executará em seguida. A parte do 
SO que faz a escolha é chamada de Escalonador, e o 
algoritmo que ele usa é o algoritmo de escalonamento. 
Escalonamento: seleção de um processo que deverá 
ser executado;
103
Introdução ao Escalonamento
Um bom escalonador pode fazer uma grande diferença no 
desempenho observado e na satisfação do usuário.
Computadores pessoais: geralmente existe apenas um processo 
ativo. É improvável que um usuário esteja, simultaneamente, 
trabalhando com um doc no processador de textos e compilando 
um programa em segundo plano. 
Hoje, a maioria dos programas para PC é limitada pela velocidade 
com que o usuário pode entrar dados (digitando ou clicando), e não 
pela taxa na qual a CPU é capaz de processá-los. 
Ex: Compiladores nos PCs atuais x exibir Vídeo em HD
104
Introdução ao Escalonamento
A situação muda quando falamos de Servidores e estações de 
trabalho de alto desempenho em rede. Nesse caso é comum haver 
múltiplos processos competindo pela CPU e o escalonamento 
torna-se importante novamente.
Ex: CPU precisa decidir entre executar um processo que reúne 
estatísticas diárias e um que atende às solicitações dos usuários. 
Além de escolher o processo certo para executar, o escalonador 
deve se preocupar em fazer o uso eficiente da CPU, pois chavear 
processos é muito custoso. 
105
Introdução ao Escalonamento
Como ele ocorre?
Primeiramente, deve-se ocorrer um chaveamento do modo 
de usuário para o modo núcleo. Depois, o estado atual do 
processo deve ser salvo. Em muitos sistemas, o mapa de 
memória deve ser salvo. Em seguida, um novo processo 
precisa ser selecionado pela execução do algoritmo de 
escalonamento. Depois, a MMU (unidade de gerenciamento 
de memória) tem de ser recarregada com o mapa de 
memória do novo processo. Por fim, o novo processo precisa 
ser iniciado. 
106
Comportamento do Processo
Quase todos processos alternam surtos de computação com 
requisições de E/S (de disco). 
Em geral, a CPU executa e então é feita uma chamada de sistema 
para ler de um arquivo ou escrever nele. Quando a chamada de 
sistema termina, a CPU computa novamente até que ela requisite 
ou tenha de escrever mais dado.
107
Comportamento do Processo
Alguns processos gastam maior parte do tempo computando. Outros passam 
maior parte do tempo esperando E/S.
Limitados pela CPU: apresentam longos surtos de uso da CPU e 
esporádicas esperas por E/S
Limitados pela E/S: têm pequenos surtos de uso da CPU e esperas 
frequentes por E/S
À medida que as CPUs se tornam mais rápidas, os processos tendem a ficar 
mais limitados por E/S.
108
Algoritmo de Escalonamento
Algoritmo de escalonamento não preemptivo escolhe um 
processo para executar e o deixa executar até que seja 
bloqueado ou até que ele voluntariamente libere a CPU.
O Algoritmo de escalonamento preemptivo escolhe um 
processo e o deixa em execução por um tempo máximo 
fixado. Se ainda estiver executando ao final desse intervalo 
de tempo, o processo será suspenso e o escalonador 
escolherá outro processo para executar. 
109
Algoritmos de Escalonamento
Para ambientes diferentes, são necessários diferentes algoritmos de 
escalonamento. Isso ocorre porque diferentes áreas de aplicação têm 
objetivos diferentes. 
110
Objetivos do Algoritmo de Escalonamento
Para projetar um algoritmo de escalonamento, é necessário ter alguma idéia 
do que um bom algoritmo deve fazer. Alguns objetivos dependem do 
ambiente (lote, interativoou tempo real), mas há também aqueles que são 
desejáveis para todos os casos...
Em todos sistemas: 
• Justiça: Processos semelhantes devem ter serviços semelhantes. Não é 
justo dar mais tempo de CPU a um processo do que a outro equivalente. 
Lembre-se que categorias diferentes de processos podem ser tratadas de 
modo diverso. 
• Políticas do sistema: Verificar sempre se a política estabelecida é 
cumprida.
• Equilíbrio: Manter, quando possível, todas as partes do sistema ocupadas. 
Se a CPU e os dispositivos de E/S puderem ser mantidos em execução o 
tempo todo, mais trabalho por segundo será feito do que se algum dos 
componentes estiver ocioso.
111
Nos sistemas em lote:
Os sistemas em lote são utilizados pelas empresas para folhas de 
pagamento, estoque, contas a receber, contas a pagar, cálculo de 
juros (em bancos), processamento de pedidos de indenização (em 
companhias de seguros) e outras tarefas periódicas. 
Nos sistemas em lote não há, em seus terminais, usuários 
esperando impacientemente por uma resposta rápida. 
Consequentemente, os algoritmos não preemptivos ou preemptivos 
com longo intervalo de tempo para cada processo são aceitáveis. 
Essa tática reduz os chaveamentos entre processos e assim 
melhora o desempenho. 
Categorias de algoritmos de Escalonamento
112
Objetivos do Algoritmo de Escalonamento
Nos sistemas em lote:
• Vazão: é o número de tarefas por hora que o sistema 
termina.
• Tempo de retorno: é estatisticamente o tempo médio do 
momento em que uma tarefa em lote é submetido até o 
momento em que ele é terminado. Ele indica quanto 
tempo, em média, o usuário tem de esperar pelo fim de 
um trabalho. Quanto menor, Melhor.
• Utilização da CPU: Procurar manter a CPU ocupada o 
máximo de tempo possível. 
113
Sistemas Interativos
Em um ambiente com usuários interativos, a preempção é essencial 
para evitar que um processo se aposse da CPU e negue serviço 
aos outros. 
Mesmo que nenhum processo execute intencionalmente para 
sempre, uma falha em um programa pode levar um processo a 
impedir indefinidamente que todos os outros executem. A 
preempção é necessária para impedir esse comportamento. 
Os servidores também caem nessa categoria, visto que 
normalmente servem a usuários (remotos) múltiplos, todos muito 
apressados.
Categorias de algoritmos de Escalonamento
114
Sistemas Interativos:
• Tempo de resposta: É o tempo entre a emissão de um 
comando e a obtenção do resultado. Deve ser o menor 
possível.
• Proporcionalidade: satisfazer as expectativas dos 
usuários. Quando uma requisição complexa demora, os 
usuários aceitam isso, mas, quando a demora ocorre 
com uma requisição simples, os usuários ficam irritados. 
Objetivos do Algoritmo de Escalonamento
115
Categorias de algoritmos de Escalonamento
Sistemas de Tempo Real
Em sistemas com restrições de tempo real, a preempção é, 
estranhamente, algumas vezes desnecessária, pois os processos 
sabem que não podem executar por longos períodos e, em geral, 
fazem seus trabalhos e bloqueiam rapidamente. 
A diferença com relação aos sistemas interativos é que os sistemas 
de tempo real executam apenas programas que visam ao progresso 
da aplicação. Já os sistemas interativos são de propósito geral e 
podem executar programas arbitrários não cooperativos ou até mal-
intencionados. 
116
Objetivos do Algoritmo de Escalonamento
Sistemas de Tempo Real:
Cumprimento dos prazos: evitar a perda de dados
Previsibilidade: evitar a degradação da qualidade em 
sistemas multimídia.
117
Escalonamento em Sistemas de Lote
Primeiro a chegar, primeiro a ser servido (First come, first served – FCFS)
Algoritmo de escalonamento não preemptivo;
Com esse algoritmo, a CPU é atribuída aos processos na ordem em 
que eles a requisitam. 
Como Funciona?
Há uma fila única de processos prontos. Quando a primeira tarefa 
entra no sistema é iniciado imediatamente e autorizado a executar 
por quanto tempo queira. Ele não é interrompido porque está sendo 
executado há muito tempo. À medida que chegam as outras tarefas, 
eles são encaminhados para o fim da fila. Quando o processo em 
execuação é bloqueado, o primeiro processo na fila é o próximo a 
executar. Quando um processo bloqueado fica pronto (assim como 
uma tarefa que acabou de chegar), ele é posto no fim da fila.
118
Escalonamento em Sistemas de Lote
Primeiro a chegar, primeiro a ser servido (First come, first served – FCFS)
Vantagens:
Ele é fácil de entender e igualmente fácil de programar. É também um 
algoritmo justo. Com esse algoritmo, uma única lista encadeada controla 
todos os processos prontos. Adicionar uma nova tarefa ou um processo 
desbloqueado requer apenas a inserção dele no final da fila.
Desvantagens:
Dependendo do tipo de processo orientado a computação, pode-se levar 
muito tempo para executá-lo. 
Ex:Um processo orientado à computação que execute durante um segundo 
por vez e muitos outros processos limitados por E/S que usem pouco 
tempo de CPU, mas que precisem realizar, cada um, mil leituras de disco 
antes de terminar. O resultado é que cada um dos processos limitados por 
E/S lê um bloco por segundo e demorará mil segundos para terminar. Com 
um algoritmo de escalonamento que causasse a preempção do processo 
orientado à computação a cada dez milissegundos (em vez de a cada um 
segundo), os processos de E/S terminariam em dez segundos, e não em 
mil segundos. 
119
Escalonamento em Sistemas de Lote
Tarefa mais curta primeiro (shortest job first)
Algoritmo de escalonamento não preemptivo;
Com esse algoritmo, quando temos várias tarefas igualmente 
importantes postadas na mesma fila de entrada à espera de serem 
iniciados, o escalonador escolhe a tarefa mais curta primeiro.
Ex: Quatro tarefas (A, B, C e D) com seus respectivos tempos de 
execução 8, 4, 4 e 4 minutos.
FCFS x Tarefa mais curta primeiro
É importante lembrar que a tarefa mais curta primeiro é adequado 
somente para situação em que todas as tarefas estejam disponíveis 
simultaneamente.
120
Escalonamento em Sistemas de Lote
Próximo de menor tempo restante (shortest remaining time next)
É um algoritmo de escalonamento preemptivo;
Com esse algoritmo, o escalonador sempre escolhe o processo cujo 
tempo de execução restante seja o menor. Novamente, o tempo de 
execução deve ser previamente conhecido. 
Quando chega uma nova tarefa, seu tempo total é comparado ao 
tempo restante do processo em curso. Se, para terminar, a nova 
tarefa precisar de menos tempo que o processo corrente, então 
esse será suspenso e a nova tarefa será iniciada. 
Esse esquema permite que novas tarefas curtas obtenham um bom 
desempenho.
121
Escalonamento em Sistemas Interativos
São comuns em computadores pessoais, servidores e 
outros tipos de sistemas.
Processos interativos geralmente seguem o padrão de 
esperar por comando, executar comando, esperar por 
comando, executar comando e assim por diante.
122
Escalonamento em Sistemas Interativos
Escalonamento por chaveamento circular (round-robin)
Um dos algoritmos mais antigos, simples, justo e amplamente usado é o circular. 
Ele pressupõe que todos os processos sejam igualmente importantes. 
Como ele funciona?
A cada processo é atribuído um intervalo de tempo (quantum) no qual ele é 
permitido executar. Se, ao final do quantum, o processo ainda estiver executando, a 
CPU sofrerá preempção e será dada a outro processo. Se o processo foi bloqueado 
ou terminou antes que o quantum tenha decorrido, a CPU é chaveada para outro 
processo. O escalonamento circular é fácil de implementar. O Escalonador só 
precisa manter uma lista de processos executáveis. Quando o processo usa todo o 
seu quantum, ele é colocado no final da lista.
Ex: Quantum de 4ms e chaveamento do processode 1ms = 20% desperdiçado
Quantum de 100ms e chaveamento de processo de 1ms = 1% desperdiçado
Adotar um quantum muito curto causa muitos chaveamentos de processo e reduz a 
eficiência da CPU, mas um quantum muito longo pode gerar uma resposta pobre às 
requisições interativas curtas. Um quantum em torno de 20ms a 50ms é bastante 
razoável.
O algoritmo circular pressupõe que todos os processo sejam igualmente importantes.
123
Escalonamento em Sistemas Interativos
Escalonamento por prioridades
A cada processo é atribuída uma prioridade, e ao processo executável com 
a prioridade mais alta é permitido executar.
Ex: em um PC, o processo que atualiza o antivirus em segundo plano deve 
receber uma prioridade mais baixa que a um processo que exibe um vídeo 
na tela em tempo real.
Para evitar que processos de alta prioridade executem indefinidamente, o 
escalonador pode reduzir a prioridade do processo em execução a cada 
tique de relógio. Se isso fizer com que sua prioridade caia abaixo da 
prioridade do próximo processo com prioridade mais alta, então ocorrerá 
um chaveamento de processo. Outra possibilidade é atribuir a cada 
processo um quantum máximo no qual ele pode executar. Quando esse 
quantum estiver esgotado, será dada a oportunidade para que o próximo 
processo com prioridade mais alta execute
124
Escalonamento em Sistemas Interativos
Escalonamento garantido
É quando o escalonador faz promessas reais sobre o 
desempenho aos usuários e cumpre-as. 
Ex: Se houver n usuários conectados enquanto você 
estiver trabalhando, você receberá cerca de 1/n de CPU. 
Para isso, o sistema deve manter o controle da 
quantidade de CPU que cada processo recebe desde 
sua criação. Então ele calcula a quantidade de CPU 
destinada a cada um ou o tempo desde a criação 
dividido por n.
125
Escalonamento em Sistemas Interativos
Escalonamento por loteria
A idéia básica é dar bilhetes de loteria aos processos, cujos 
prêmios são vários recursos do sistema, como tempo de 
CPU. Se houver uma decisão de escalonamento, um bilhete 
de loteria será escolhido aleatoriamente e o processo que 
tem o bilhete conseguirá o recurso. Quando aplicado ao 
escalonamento de CPU, o sistema pode fazer um sorteio 50 
vezes por segundo e, portanto, cada vencedor terá 20 ms de 
tempo de CPU como prêmio.
O escalonamento por loteria é altamente responsivo, ou seja, 
se aparece um novo processo e a ele são atribuídos alguns 
bilhetes, já no próximo sorteio da loteria sua probabilidade de 
vencer será proporcional ao número de bilhetes que ele tiver.
126
Escalonamento em Sistemas Interativos
Escalonamento por fração justa (fair-share)
A cada usuário é alocada uma fração da CPU, e o 
escalonador escolhe os processos de modo que garanta 
essa fração. Assim, se dois usuários tiverem 50% da 
CPU prometida a cada um deles, cada um obterá os 
50%, não importando quantos processos eles tenham 
gerado.
Ex: Imagine um sistema com dois usuários, cada qual 
com 50% da CPU prometida a ele. O usuário 1 tem 
quatro processos (A, B, C e D) e o usuário 2 tem 
somente um processo (E)...
127
Escalonamento em sistemas de tempo real
Um sistema de tempo real é aquele no qual o tempo tem 
uma função essencial. 
Em geral, um ou mais dispositivos físicos externos ao 
computador geram estímulos, e o computador deve 
reagir apropriadamente a eles dentro de um dado 
intervalo de tempo. 
Ex: monitoração de pacientes em UTI de hospitais e 
piloto automático de aeronaves. 
Nesses casos, ter a resposta certa, mas tardia, é tão 
ruim quanto não ter nada.
128
Escalonamento em sistemas de tempo real
Sistemas de tempo real são em geral categorizados 
como:
– Tempo real crítico: há prazos absolutos que devem ser 
cumpridos;
– Tempo real não crítico: o descumprimento ocasional de um 
prazo é indesejável, contudo tolerável. 
Em ambos os casos, o comportamento de tempo real é 
implementado dividindo-se o programa em vários processos 
cujo comportamento é previamente conhecido. 
De modo geral, esses processos têm vida curta e podem 
executar em bem menos de um segundo. Quando é detectado 
um evento externo, o trabalho do escalonador é escalonar os 
processos de tal maneira que todos os prazos sejam cumpridos. 
129
Escalonamento em sistemas de tempo real
Os eventos aos quais um sistema de tempo real pode precisar 
responder podem ser categorizados como:
– Periódicos: ocorrem em intervalos regulares;
– Aperiódicos: acontecem de modo imprevisível.
Os algoritmos de escalonamento de tempo real podem ser 
estáticos ou dinâmicos. Os primeiros tomam suas decisões de 
escalonamento antes de o sistema começar a executar. Os últimos 
o fazem em tempo de execução. 
O escalonamento estático só funciona quando há prévia 
informação perfeita disponível sobre o trabalho necessário a ser 
feito e os prazos que devem ser cumpridos. Os algoritmos de 
escalonamento dinâmico não apresentam essas restrições.
130
Gerenciamento de Memória
Programas tendem a expandir a fim de ocupar toda a memória 
disponível.
Hierarquia de Memórias é dividida em:
ü Memória cache (alguns megabytes, rápida, custo alto e volátil);
ü Memórial Principal (volátil, alguns gigabytes, de velocidade e custo 
médios;
ü Disco (não volátil, alguns terabytes, de velocidade e custos baixos;
ü Armazenamento removível (DVDs, Cds, USB)
A função do S.O. é abstrair essa hierarquia em um modelo útil e, 
então, gerenciar a abstração.
131
Gerenciamento de Memória
A parte do S.O. que gerencia (parcialmente) a 
hierarquia de memórias é denominada 
gerenciador de memória. 
Sua função é gerenciar a memória de modo 
eficiente: manter o controle de quais partes da 
memória estão em uso e quais não estão, 
alocando memória aos processos quando eles 
precisam e liberando-a quando esses processos 
terminam. 
132
Abstração de memória: espaços de endereçamento
Um espaço de endereçamento é o conjunto de 
endereços que um processo pode usar para endereçar a 
memória. Cada processo tem seu próprio espaço de 
endereçamento, independente dos que pertencem a 
outros processos. 
Ex: 
– espaço de endereçamento para números de telefone 
– espaço de endereçamento de todas cadeias de comprimento de 
2 a 63 caracteres que possam ser feitas usando letras, números 
e hífens, seguidas por .com
133
Troca de Memória
Em um sistema Windows ou Linux típico, algo entre 40-
60 processos ou mais podem ser inicializados quando o 
computador é iniciado. 
Ex: processos para verificação de atualização, email, 
conexões do sistema de rede, etc.
134
Troca de Memória
Dois métodos gerais para lidar com a sobrecarga de memória 
têm sido desenvolvidos com o passar dos anos:
– Swapping (troca de processos) consiste em trazer, em sua 
totalidade, cada processo para a memória, executá-lo 
durante um certo tempo e, então, devolvê-lo ao disco. 
Processos ociosos são armazenados no disco, de forma 
que não ocupem qualquer espaço na memória quando 
não estão executando. 
– Memória virtual permite que programas possam ser 
executados mesmo que estejam apenas parcialmente 
carregados na memória principal. 
135
Funcionamento de um sistema de 
troca de processos
136
Troca de Memória
Quando as trocas de processos deixam muitos 
espaços vazios na memória, é possível 
combiná-los todos em um único espaço 
contíguo de memória, movendo-os, o máximo 
possível, para os endereços mais baixos. Essa 
técnica é chamada de compactação de 
memória.
Desvantagem: tempo gasto transferindo blocos 
de uma região para outra da memória principal
137
Troca de memória
Um ponto importanto é a quantidade de memória que deve ser 
alocada a um processo quando este for criado ou trazido do disco 
para a memória. 
Se processos são criados com tamanhofixo então a alocação é 
simples: o S.O. alocará aquilo que é necessário.
Se a área de dados do processo puder crescer, problemas poderão 
ocorrer sempre que um processo tentar crescer. Se houver espaço 
livre disponível adjacente ao processo, ele poderá ser alocado e p 
processo poderá crescer nesse espaço. 
Caso contrário, o processo que necessita crescer poderá ser 
movido para uma área de memória grande o suficiente para contê-
lo ou um ou mais processos terão de ser transferidos para o disco a 
fim de criar essa área disponível. Se o processo não puder crescer 
na memória e a área de troca de disco (swap) estiver cheia, o 
processo deverá ser suspenso até que algum espaço seja liberado 
(ou pode ser terminado).
138
Alocação de espaço para um segmento de dados em expansão
139
Memória Virtual 
Introdução
Bloatware é o termo utilizado para definir softwares que usam 
quantidades excessivas de memória. 
O tamanho da memória está aumentando rapidamente, mas o 
tamanho dos softwares está aumentando muito mais rápido. 
Existe a necessidade de executar programas grandes demais para 
se encaixarem na memória, e certamente há necessidade de haver 
sistemas que possam dar suporte a múltiplos programas em 
execução simultânea, cada um dos quais é comportado pela 
memória individualmente, mas que, coletivamente, excedam a 
memória. 
140
Memória Virtual
Introdução
A troca de processos não é uma opção atrativa, visto que um disco SATA 
tem uma taxa de transferência de pico de, no máximo, 100MB/s, o que 
significa que leva pelo menos 10 seg para sair de um programa de 1GB e 
outros 10 seg para inicializar um programa de 1GB. 
A idéia básica por trás da memória virtual é que cada programa tem seu 
próprio espaço de endereçamento, que é dividido em blocos chamados 
páginas. 
Cada página é uma série contígua de endereços. Essas páginas são 
mapeadas na memória física, mas nem todas precisam estar na memória 
física para executar o programa. Quando o programa referencia uma parte 
de seu espaço de endereçamento que está na memória física, o hardware 
executa o mapeamento necessário dinamicamente. Quando o programa 
referencia uma parte de seu espaço de endereçamento que não está em 
sua memória física, o S.O. é alertado para obter a parte que falta e 
reexecutar a instrução que faltou.
141
Memória Virtual
Espaço de Endereçamento Virtual
Como o espaço de endereçamento virtual não tem 
nenhuma relação direta com os endereços reais, um 
programa pode referenciar endereços que estejam fora 
dos limites da memória principal.
Quando um programa é executado, somente uma parte 
do seu código fica residente, permanecendo o restante 
na memória secundária até o momento de ser 
referenciado.
142
Memória Virtual
143
Memória Virtual
Mapeamento
• Tradução de um endereço virtual para um 
endereço real.
• Por causa do mapeamento, um programa 
não mais precisa estar necessariamente 
em endereços contíguos na memória 
principal.
144
Memória Virtual
145
Memória Virtual
A memória virtual funciona bem em um sistema com 
multiprogramação, com pedaços e partes de diferentes 
programas simultaneamente na memória. Se um 
programa estiver esperando por outra parte de si próprio 
ser carregada na memória, a CPU poderá ser dada a 
outro processo.
146
Memória Virtual
Paginação
Em computadores sem memória virtual, o endereço 
virtual é idêntico ao endereço físico e para ler ou 
escrever uma posição na memória, ele é colocado 
diretamente no barramento da memória. 
Quando a memória virtual é usada, o endereço virtual 
não é colocado diretamente no barramento da memória. 
Em Vez disso, ele vai a uma MMU (memory 
management unit – unidade de gerenciamento de 
memória), que mapeia endereços virtuais em endereços 
físicos. 
147
Memória Virtual
148
Memória Virtual – Exemplo (parte 1)
Nesse exemplo, temos um computador que 
pode gerar endereços virtuais de 16 bits, de 
0 a 64 k - 1. Contudo, esse computador tem 
somente 32 kb de memória física. Assim, 
embora seja possível escrever programas de 
64kb, eles não podem ser totalmente 
carregados na memória para serem executados. 
Uma cópia completa do código do programa 
deve estar presente no disco, de modo que 
partes possam ser carregadas dinamicamente 
na memória quando necessário. 
O espaço de endereçamento virtual é dividido 
em unidades denominadas páginas. As 
unidades correspondentes na memória física 
são denominadas molduras de página. 
As páginas e as molduras de páginas são 
sempre do mesmo tamanho. Nesse exemplo, as 
páginas têm 4KB. Com 64KB de espaço de 
endereçamento virtual e 32KB de memória 
física, podemos ter 16 páginas virtuais e 08 
molduras de páginas. As transferências entre 
memória e disco são sempre em páginas 
completas. 
A série 0-4K significa que os endereços físicos 
ou virtuais nessa página dão 0 a 4095. A série 
4-8K refere-se aos endereços 4096 a 8191 e 
assim por diante. 
149
Quando um programa tenta acessar o endereço 
0, o endereço virtual 0 é enviado à MMU, que 
detecta que esse endereço virtual situa-se na 
página virtual 0 (de 0 a 4095), que, de acordo 
com seu mapeamento, corresponde à moldura 
de página 2 (de 8192 a 12287). A MMU 
transforma o endereço físico 8192 e o envia à 
memória por meio de barramento. 
A memória desconhece a existência da MMU e 
somente enxerga uma solicitação de leitura ou 
escrita no endereço 8192, a qual ela executa. 
Essa habilidade de mapear as 16 páginas 
virtuais em qualquer uma das oito molduras de 
página não resolve o problema de o espaço de 
endereçamento virtual ser maior do que a 
memória física disponível. As páginas rotuladas 
com um X na figura não são mapeadas.
O que acontece se um programa tenta usar uma 
página virtual não mapeada? A MMU constata 
que essa página virtual não está mapeada e 
força o desvio da CPU para o S.O. Essa 
interrupção é denominada falta de página. O 
S.O. escolhe uma moldura de página pouco 
usada e a salva em disco. Em seguida, ele 
carrega a página virtual na moldura de página 
recém-liberada, atualiza o mapeamento da 
tabela de páginas e reinicializa a instrução 
causadora da interrupção.
Memória Virtual – Exemplo (parte 2)
150
Memória Virtual
Mapeamento
Cada processo tem o seu espaço de endereçamento virtual. O mecanismo 
de tradução mantém tabelas exclusivas para cada processo, relacionando 
os endereços virtuais às posições na memória real.
151
Memória Virtual por Paginação
Existem Sistemas Operacionais que trabalham apenas 
com blocos de tamanho fixo (técnica de paginação), 
enquanto que outros utilizam blocos de tamanho 
variável (técnica de segmentação). Existem ainda 
aqueles que implementam ambas as técnicas 
(segmentação com paginação).
152
Memória Virtual por Paginação
Trata-se de uma técnica de gerência de memória em 
que o espaço de endereçamento virtual e o espaço de 
endereçamento real são divididos em blocos de 
mesmo tamanho chamados páginas.
As unidades correspondentes na memória física são 
denominadas molduras de página (page frames). 
As páginas e as molduras de páginas são sempre do 
mesmo tamanho. 
153
Memória Virtual
Quando um programa tenta usar uma página virtual não mapeada, 
a MMU constata que essa página virtual não está mapeada e força 
o desvio da CPU para o S.O. Essa interrupção é denominada falta 
de página (page fault). 
O S.O., então, escolhe uma moldura de página pouco usada e a 
salva em disco, ou seja, escreve seu conteúdo de volta no disco. 
Em seguida, ele carrega a página virtual referenciada pela instrução 
na moldura de página recém-liberada, atualiza o mapeamento da 
tabela de páginas e reinicializa a instrução causadora da 
interrupção.
154
MemóriaVirtual
O número da página é usado como índice 
para a tabela de páginas, a fim de obter 
a moldura de página física correspondente 
àquela página virtual. 
O objetivo da tabela de páginas é mapear 
páginas virtuais em molduras de página 
física. 
155
Em qualquer sistema de paginação, dois 
problemas importantes devem ser 
enfrentados:
– O mapeamento do endereço virtual para o 
endereço físico deve ser rápido;
– Se o espaço de endereço virtual for grande, a 
tabela de páginas será grande.
156
TLB – Memória Associativa
TLB (translation lookaside buffer – buffer para tradução de endereços) ou 
memória associativa é o pequeno dispositivo (hardware) capaz de 
mapear os endereços virtuais para endereços físicos sem passar pela 
tabela de páginas. 
Portanto, TLB é um dispositivo de hardware implementado a partir de uma 
pequena memória associativa que fica integrada na MMU de um 
processador. Destina-se a facilitar a tradução de endereços lineares em 
endereços físicos, evitando a consulta à tabela de páginas localizada na 
memória.
Quando um endereço é solicitado, o processador verifica se o endereço da 
frame respectiva existe no TLB. Se este for encontrado, é utilizado para 
gerar o endereço físico pretendido e o acesso à memória é iniciado. Em 
caso de falha, a tabela de páginas será consultada. Os projetistas 
observaram que os processos tendem a acessar com mais freqüência um 
número reduzido de páginas virtuais. Isto permite obter taxas de sucesso 
próximas de 100%, mesmo com TLBs de dimensões reduzidas.
157
TLB – Memória Associativa
O modo normal de tratar uma ausência de página na TLB, seja por 
hardware, seja por software, é acessar a tabela de páginas e 
executar as operações de indexação para localizar a página 
referenciada não encontrada na TLB.
O problema em se fazer essa pesquisa por software é que as 
páginas que contêm a tabela de páginas podem não estar 
mapeadas na TLB, ocasionando ausências adicionais na TLB 
durante o processamento. 
Essas ausências podem ser reduzidas se uma grande cache, 
gerenciada por software e contendo entradas do tipo TLB, for 
mantida em uma localização fixa com sua página sempre mapeada 
na TLB. Verificando primeiro essa cache, o S.O. pode reduzir 
substancialmente as ausências de página na TLB. 
158
TLB – Memória Associativa
Quando o gerenciamento da TLB por software é usada, 
devemos compreender a diferença entre dois tipos de 
ausência.
– Ausência leve (soft miss) ocorre quando a página referenciada 
não está na TLB, mas na memória (é necessário atualizar a TLB 
- os discos de E/S não são utilizados)
– Ausência completa (hard miss) ocorre quando a própria 
página não está na memória (e nem na TLB). Requer-se acesso 
ao disco para trazer a página. Uma ausência definitiva é milhões 
de vezes mais lenta que uma ausência temporária)
159
Memória Virtual
As TBLs podem ser usadas para acelerar 
a tradução de endereços virtuais para 
endereços físicos em relação ao esquema 
original de tabela de páginas na memória. 
160
Memória Virtual por Paginação
Políticas de Busca de Páginas
Determinam quando uma página deve ser 
carregada para a memória. Basicamente, 
existem duas estratégias para este 
propósito: 
* paginação por demanda
* paginação antecipada.
161
Memória Virtual por Paginação
Políticas de Busca de Páginas
– Paginação por Demanda: as páginas do processo 
são transferidas da memória secundária para a 
principal apenas quando elas são referenciadas.
– Paginação Antecipada: o sistema carrega para a 
memória, além da página referenciada, outras 
páginas que podem ou não ser necessárias ao 
processo durante o processamento.
162
Memória Virtual por Paginação
Políticas de Alocação de Páginas
Determinam quantos frames cada processo 
pode manter na memória principal. 
Existem duas possibilidades para este 
propósito: 
* alocação fixa 
* alocação variável.
163
Memória Virtual por Paginação
Políticas de Alocação de Páginas
Alocação Fixa
Cada processo tem um número máximo de frames que 
pode ser utilizado durante a execução do programa. 
O limite de páginas pode ser igual para todos os 
processos ou definido individualmente, no momento da 
criação do processo, com base no tipo de aplicação.
164
Memória Virtual por Paginação
Políticas de Alocação de Páginas
Alocação Variável
O número máximo de páginas alocadas ao 
processo pode variar durante a execução, em função da 
taxa de paginação e da ocupação da memória principal. 
Processos com elevadas taxas de paginação 
podem ampliar o limite de frames, a fim de reduzir o 
número de page faults.
165
Memória Virtual por Paginação
Política de Alocação de Página
166
Memória Virtual por Paginação
Políticas de Substituição de Páginas
Selecionar, entre as páginas alocadas, aquela que deverá sair da 
memória para dar lugar a outra página mais relevante para o 
processo. 
A necessidade de substituição de páginas acontece quando um 
processo atinge seu limite de alocação de frames.
No processo de substituição de páginas, antes de liberar a página, 
é necessário saber se ela foi alterada. As páginas que armazenam 
estruturas de dados e variáveis, ao serem alteradas, o sistema 
operacional deverá gravá-las na memória secundária antes do 
descarte (page out), preservando os seus conteúdos. Se a página 
não tiver sido modificada, a cópia em disco já estará atualizada e 
não será necessário reescrevê-la. A página a ser trazida para a 
memória simplesmente sobrescreve a página que está sendo 
destituída. 
167
Memória Virtual por Paginação
Embora seja possível escolher aleatoriamente 
uma página a ser descartada a cada falta de 
página, o desempenho do sistema será muito 
melhor se a página escolhida for uma que não 
estiver sendo muito usada. 
Se uma página intensamente usada for 
removida, é provável que logo ela precise ser 
trazida de volta, ocasionando custos extras. 
168
Memória Virtual por Paginação
Políticas de Substituição de Páginas
O sistema operacional mantém, então, um 
arquivo de paginação (page file), onde todas as 
páginas modificadas e descartadas são 
armazenadas. 
Sempre que uma página for outra vez 
referenciada, ocorrerá um page in, carregando 
esta página para a memória principal a partir do 
arquivo de paginação.
169
Substituição de Páginas
170
Memória Virtual por Paginação
Políticas de Substituição de Páginas
O sistema operacional identifica as páginas modificadas 
através de um bit que existe em cada entrada da tabela 
de páginas, chamado bit de modificação(dirty bit ou 
modify bit). 
– Política de Substituição Local: apenas as páginas do 
processo que gerou o page fault podem ser realocadas.
– Política de Substituição Global: todas as páginas na memória 
principal podem ser realocadas, independente do processo que 
causou o page fault.
171
Memória Virtual por Paginação
Políticas de Substituição de Páginas
– A política de alocação fixa permite apenas a 
utilização de uma política de substituição 
Local. 
– A política de alocação variável permite tanto a 
utilização de uma política de substituição 
Local quanto de uma política de substituição 
Global. 
172
Memória Virtual por Paginação
Algoritmos de Substituição de Páginas
– O maior problema na memória virtual por paginação não é 
decidir quais páginas devem ser carregadas para a memória 
principal, mas quais páginas devem ser liberadas.
– Os algoritmos de substituição de páginas têm o objetivo de 
selecionar os frames que tenham menores chances de serem 
referenciados em um futuro próximo.
– A partir do princípio da localidade, a maioria dos algoritmos 
tenta prever o comportamento futuro das aplicações em função 
do comportamentopassado, avaliando o número de vezes que 
uma página foi referenciada, o momento em que foi 
carregada para a memória principal e o intervalo de tempo 
da última referência.
173
Memória Virtual por Paginação
Algoritmos de Substituição de Páginas
Ótimo: seleciona uma página que não será mais 
referenciada no futuro ou aquela que levará o maior 
intervalo de tempo para ser novamente utilizada.
– Vantagem: menores taxas de paginação para os processos.
– Desvantagem: impossível implementação, pois o S.O. não tem 
como conhecer o comportamento futuro das aplicações.
174
Algoritmos de Substituição de Páginas
Algoritmo de substituição de página não usada recentemente (NRU)
A maioria dos computadores com memória virtual tem 2 
bits de status [o bit referenciado (R) e o bit modificado 
(M)], associados a cada página virtual, que permitem 
que o S.O. saiba quais páginas físicas estão sendo 
usadas e quais não estão.
O bit R é colocado em 1 sempre que a página é 
referenciada (lida ou escrita). O bit M é colocado em 1 
sempre que se escreve na página (isto é, a página é 
modificada). Os bits estão contidos em cada entrada da 
tabela de páginas. 
175
Algoritmos de Substituição de Páginas
Algoritmo de substituição de página não usada recentemente (NRU)
Os bits R e M podem ser usados para construir um algoritmo de 
paginação simples. Quando um processo é inicializado, os dois bits 
citados, para todas as suas páginas, são colocados em 0 pelo S.O.. 
Periodicamente (ex. a cada tique do relógio), o bit R é limpo, de 
modo que diferencie as páginas que não foram referenciadas 
recentemente daquelas que foram.
Quando acontece uma falta de página, o S.O. inspeciona todas as 
páginas e as separa em quatro categorias, com base nos valores 
atuais dos bits R e M:
– Classe 0: não referenciada, não modificada.
– Classe 1: não referenciada, modificada.
– Classe 2: referenciada, não modificada.
– Classe 3: referenciada, modificada.
176
O algoritmo NRU (not recently used – nada usada 
recentemente) remove aleatoriamente uma página da 
classe de ordem mais baixa que não esteja vazia.
Está implícito nesse algoritmo que é melhor remover 
uma página modificada, mas não referenciada, a pelo 
menor um tique do relógio (em geral, 20ms) do que uma 
página não modificada que está sendo intensamente 
referenciada. 
A principal vantagem do algoritmo NRU é ser fácil de 
entender e de implementar e, além disso, fornece um 
desempenho que, apesar de não ser ótimo, pode ser 
adequado.
Algoritmos de Substituição de Páginas
Algoritmo de substituição de página não usada recentemente (NRU)
177
Algoritmos de Substituição de Páginas
FIFO (First-In-First-Out)
FIFO (First-In-First-Out): 
O S.O. mantém uma lista de todas as páginas 
atualmente na memória, com a página mais antiga na 
cabeça da lista e a página que chegou mais 
recentemente situada no final dessa lista. Na ocorrência 
de uma falta de página, a primeira página da lista é 
removida e a nova página é adicionada no final da lista. 
Vantagem: parece sensato descartar páginas mais 
antigas.
Desvantagem: nem sempre uma página mais antiga 
deve ser descartada, pois ela pode estar sendo 
constantemente referenciada.
178
Algoritmos de Substituição de Páginas
FIFO (First-In-First-Out)
179
Uma modificação simples no algoritmo de substituição 
de página FIFO evitaria o problema de se jogar fora uma 
página intensamente usada. 
Isso é feito simplesmente inspecionando o bit R da 
página mais antiga, ou seja, a primeira página da fila. Se 
o bit for 0, essa página, além de ser a mais antiga, não 
estará sendo usada, de modo que será substituída 
imediatamente. Se o bit R for 1, ele será colocado em 0, 
a página será posta no final da lista de páginas e seu 
tempo de carregamento (chegada) será atualizado como 
se ela tivesse acabado de ser carregada na memória. A 
pesquisa então continua.
Algoritmos de Substituição de Página segunda chance
180
O que o algoritmo segunda chance faz é 
procurar uma página antiga que não tenha 
sido referenciada no intervalo de relógio 
anterior.
Sua desvantagem é porque ele é 
desnecessariamente ineficaz, pois 
permanece constantemente reinserindo 
páginas no final da lista.
Algoritmos de Substituição de Página segunda chance
181
Uma estratégia melhor é manter todas as páginas em 
uma lista circular em forma de relógio. Um ponteiro 
aponta para a página mais antiga. 
Quando ocorre uma falta de página, a página indicada 
pelo ponteiro é examinada. Se o bit R for 0, a página é 
removida, uma nova página é inserida em seu lugar no 
relógio e o ponteiro avança uma posição. Se R for 1, ele 
é zerado e o ponteiro avança para a próxima página. 
Esse processo é repetido até que uma página seja 
encontrada com R=0. Não é de surpreender que esse 
algoritmo seja chamado de relógio.
Algoritmos de Substituição de Página do relógio
182
Algoritmo de substituição de página usada menos 
recentemente (LRU)
Qual a Lógica provável?
* Páginas muito utilizadas nas últimas instruções 
provavelmente serão muito utilizadas novamente nas 
próximas instruções. 
* Páginas que não estão sendo utilizadas por um longo 
período de tempo provavelmente permanecerão 
inutilizadas por muito tempo. 
Essa idéia sugere um algoritmo realizável: quando 
ocorrer uma falta de página, elimine a página não 
utilizada pelo período de tempo mais longo. Essa 
estratégia é chamada de paginação LRU (least recently 
used – usada menos recentemente)
183
Algoritmo de substituição de página usada menos 
recentemente (LRU)
Embora a LRU seja teoricamente realizável, não é barato. Para 
implementar completamente o LRU, é necessário manter uma lista 
vinculada de todas as páginas na memória, com a página usada 
mais recentemente na dianteira e a página usada menos 
recentemente na parte de trás. 
A dificuldade é que a lista deve ser atualizada em cada referência à 
memória. Encontrar uma página na lista, deletá-la e posicioná-la na 
dianteira é uma operação demorada, mesmo no hardware.
184
Algoritmo de substituição de página não usada 
frequentemente (NFU)
A implementação desse algoritmo requer contadores em software, 
cada um deles associado a uma página, inicialmente zerados. 
A cada interrupção de relógio, o S.O. percorre todas as páginas na 
memória. Para cada página, o bit R, que pode ser 0 ou 1, é 
adicionado ao contador correspondente. Assim, esses contadores 
constituem uma tentativa de saber quantas vezes cada página já foi 
referenciada. Quando ocorrer uma falta de página, a página que 
tiver a menor contagem será selecionada para a substituição.
185
Algoritmo de substituição de página não usada 
frequentemente (NFU)
O problema principal com o algoritmo NFU é que ele nunca se 
esquece de nada. 
Ex: Em um compilador de múltiplos passos, páginas que foram 
intensamente referenciadas durante o passo 1 podem ainda ter um 
contador alto em passos bem posteriores. De fato, se acontecer de 
o passo 1 possuir o tempo de execução mais longo de todos os 
passos, as páginas que contiverem o código para os passos 
seguintes poderão ter sempre contadores menores do que as 
páginas do passo 1. Consequentemente, o sistema operacional 
removerá páginas que ainda estiverem sendo referenciadas, em 
vez daquelas que não o estão mais. 
186
Algoritmo de substituição de página não usada 
frequentemente (NFU)
Para corrigir isso deve ser utilizado um 
algoritmo de envelhecimento (aging). 
– Quando ocorre uma falta de página, a página que 
tem a menor contagem é removida. É claro que a 
página que não tiver sido removida por, digamos, 
quatro interrupções de relógio terá quatro zeros nas 
posições mais significativas de seu contador e, 
assim, possuirá um valor menor do que um contador

Outros materiais