Buscar

Conteúdo Online - Sistemas Operacionais - Aulas 1 a 10

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Aula 1 
Conceitos fundamentais de sistema operacionais 
O que é um sistema operacional? É um conjunto de programas (software) responsável por: 
 Fazer a interface com os usuários; 
 Gerenciar recursos; 
 Fazer a interface com o hardware. (Segurança e estabilidade) 
É um intermediário entre o usuário e o hardware. 
Cada parte (módulo ou função) de um sistema operacional é responsável pelo gerenciamento de um recurso 
específico. Que recursos são esses? 
 Tempo da CPU 
 Espaço em memória 
 Espaço em disco 
 Acesso aos dispositivos de comunicação 
 Bibliotecas de software 
Gerenciar recursos é garantir a utilização compartilhada do recurso sem que ocorram erros que possam gerar 
instabilidade ou falha no sistema. 
Na visão do usuário, o sistema operacional fornece: 
 Acesso ao sistema; 
 Possibilidade de criar e gerir arquivos e diretórios; 
 Ambiente para execução de programas 
 Acesso aos dispositivos de entrada e saída. 
 Acesso ao conteúdo de arquivos 
 Detecção de erros. 
 
Classificação de sistemas operacionais 
A classificação é utilizada como uma forma sintética de apresentar, em poucas palavras, as características de um 
sistema operacional. 
 Sistemas monotarefa x Sistemas multitarefa 
o Monotarefa: Admite e gerencia apenas uma tarefa em execução por vez. Ex: DOS 
o Multitarefa: Admite e gerencia várias tarefas em Processamento concorrente. Ex: Windows XP, 
Windows 2003, Linux, MacOS 
 Sistemas monousuário x sistemas multiusuário 
o Monousuário: Admite e gerencia apenas um usuário – não permite que mais de um usuário esteja 
“logado” simultaneamente. Ex: Windows XP, Windows NT (exceto versão com Terminal Server). 
o Multiusuário: Sistema Multiusuário: Admite e gerencia vários usuários – permite que mais de um 
usuário esteja “logado” simultaneamente. Ex: Linux, VMS 
OBS: Todo sistema operacional multiusuário é obrigatoriamente multitarefa, pois cada usuário representa, no 
mínimo, uma tarefa para ser executada. 
 Sistemas monoprocessadores x Sistemas multiprocessadores 
o Monoprocessadores: Somente reconhecem e utilizam um processador. Ex. Windows 98 
o Multiprocessadores: Sistemas multiprocessados: Reconhecem e utilizam mais de um processador. Ex. 
Windows XP, Windows Vista, Windows 7, Linux. 
OBS.: Sistemas com suporte a multiprocessamento podem executar mais de uma tarefa ao mesmo tempo; 
uma em cada processador. 
 Sistema de tempo real e sistema embarcado: 
o Tempo Real: Sistemas que possuem um forte vínculo com o tempo. O resultado só é considerado 
correto se a execução acontecer no tempo previsto. O sistema deve garantir que uma tarefa possua 
todos os recursos necessários para sua execução em um intervalo de tempo pré-definido. 
OBS.: Não se trata de velocidade de processamento e sim garantia de tempo de resposta. 
o Embarcado: Sistemas inseridos em produtos com funções específicas como telefones celulares. OBS.: 
Nem todo dispositivo eletrônico possui um microcontrolador e nem todo aparelho com icrocontrolador 
possui um sistema operacional. 
 
EXTRA: Os SO multiprogramaveis ou multitarefa, podem ainda ser classificados pela forma com que suas 
aplicações são gerenciadas, podem ser divididos em sistema bath, de tempo compartilhada ou de tempo 
real. Um SO pode suporte um ou mais destes tipos de processamento, dependendo de sua implementação 
 
Estruturas dos sistemas operacionais modernos 
A partir do 80386, esse problema foi solucionado em termos de hardware através da possibilidade de 2 modos de 
execução: o modo protegido e o modo real. Ficava a cargo do sistema operacional a comutação entre esses dois modos 
por questões de compatibilidade. A instabilidade evidenciada pela “tela azul” tem razões históricas. Os primeiros 
processadores da linha x86 possuíam um único modo de operação: o modo real. Dessa forma, todas as operações 
poderiam ser executadas diretamente pelas aplicações que, ao produzir erros, geravam panes no sistema. 
Modo Usuário x Modo Kernel: 
 Modo usuário é o que trabalhamos normalmente onde não tenho acesso as função do sistema operacional que 
podem comprometer o sistema. (Instruções não privilegiadas). 
 System Call = Porta de acesso ao Kernel. Verifica se o modo de usuário pode executar determinada tarefa sem 
comprometer o sistema. 
 Modo Kernel s (Instruções Privilegiadas) 
 
 As aplicações são executadas em modo usuário, ou seja, modo que não possui privilégios para operações que 
coloquem o sistema em risco tais como escrever no disco, criar novas tarefas etc. 
 
Quando essas aplicações precisam executar tarefas críticas, é necessário que haja uma mudança para modo 
Kernel. Essa mudança ocorre através de uma “system call” ou chamada ao sistema. 
 
Chamadas ao sistema (system call): Mecanismo responsável pela mudança de modo usuário para modo kernel. 
Ao invés de executar diretamente funções do kernel a aplicação executa uma função intermediária que verifica 
se o acesso ao kernel é seguro e, só então, completa a operação. 
 
Voltando à “tela azul”: As aplicações podiam executar diretamente as funções do kernel sem a proteção da 
mudança de modo, ou seja, o erro acontecia após a execução de uma função do kernel. Com a mudança de 
modo, se a execução não for segura, a aplicação será impedida de continuar a execução e o sistema 
permanecerá estável. 
 
 Exemplo: Chama uma função XYZ que chama uma biblioteca de funções, que chama o modo kernel. O system 
call verifica se está tudo ok e aciona a função ou retorna um erro. 
 
 Execução não protegida: dá tela azul porque acessa diretamente ao kernel. 
o 
 Execução protegica: não dá tela azul, apresenta um erro do programa, pois ocorre a mudança do modo de 
usuário para o modo kernel, pela chamada ao sistema (system call) 
o 
 
Tipo de estruturas: 
Os sistemas são classificados em relação às atribuições do kernel e a relação entre seus módulos em 
monolíticos, camadas e microkernel. 
Os sistemas modernos são divididos em dois grandes grupos: arquitetura monolítica e microkernel. A diferença 
entre elas está nas atribuições do núcleo do sistema operacional, denominado KERNEL. 
Essa característica é muito importante no projeto de um Sistema Operacional e foi alvo de discussão entre dois 
grandes nomes da computação: Andrew Tanenbaum (autor de sistema minix para fins educacionais) e Linus 
Torvalds (Autor do Linux) 
Arquitetura monolítica: Todo o kernel é compilado e “linkado” em um único bloco, tornando o código eficiente, porém 
de difícil manutenção. A inclusão ou exclusão de um módulo requer que todo o kernel seja recriado. 
 
Arquitetura microkernel: Somente as funções críticas fazem realmente parte do kernel. Demais funções são tratadas 
como tarefas e executam em modo usuário fazendo chamadas ao kernel quando necessário. Essa arquitetura simplifica 
a manutenção, inclusão e exclusão de módulos do sistema operacional não sendo necessário gerar um novo kernel a 
cada modificação e nem mesmo reiniciar o computador para ativação e desativação do módulo. 
 
Interrupções 
São sinais de hardware fundamentais para a existência de sistemas multitarefa, pois provocam a suspensão da tarefa 
em execução pela ocorrência de um evento externo permitindo que outras tarefas compartilhem o tempo de uso do 
processador. 
Neste caso, o que está sendo compartilhado é o TEMPO DE USO do processador e NÃO o processador em si. Cada tarefa 
utiliza 100% do processador. 
Parte do mecanismo é executada pelo hardware (identificação do dispositivo, empilhamento dos registradores de 
sistema) e parte é feita por software através da rotina de tratamento da interrupção (interrupt handler). 
 
Tipo de interrupções 
As interrupçõessão geradas por dispositivos de hardware e podem ocorrer de forma síncrona ou assíncrona. 
Relógio (temporizador) -> síncrona 
Dispositivos de E/S (sinalização de conclusão) -> assíncrona 
Falha de hardware (paridade de memória, erro de disco etc.) -> assíncrona 
O termo interrupção é muitas vezes utilizado para qualquer atividade que suspenda a execução de uma tarefa, mesmo 
que seja solicitada pelo próprio programa. Utilizaremos, para este fim, o termo “estado de exceção”. 
 Estados de exceção: são provocados pela própria aplicação. 
 Estouro aritmético. 
 Divisão por zero. 
 Instrução ilegal. 
 Acesso não permitido. 
 Chamadas ao sistema. 
ATENÇÃO: 
Mascaramento de interrupções: Capacidade de inibir a ação de uma interrupção. As interrupções de segurança não 
podem ser mascaradas. 
 
As Interrupções podem acontecer de forma sequencial ou em cascata. 
Sequencial: uma interrupção só poderá ser atendida se nenhuma outra estiver em atendimento. 
 A Rotina de Serviço desabilita as interrupções. 
 Uma nova interrupção só é tratada após o retorno. 
 A interrupção pode demorar a ser tratada, o que pode eventualmente ocasionar uma perda de dados. 
 Finalizada a Rotina de Serviço de interrupção, o processador verifica por interrupções adicionais. 
 
 
Cascata: Uma interrupção pode interromper a ação de uma rotina de tratamento de outra interrupção. 
 Interrupções têm prioridade. 
 Interrupções com alta prioridade interrompem rotinas de serviço de interrupções de menor prioridade. 
 
 Exemplos de prioridade: Impressora, disco, comunicação 
 
 
Conceitos de concorrência. 
Compartilhar recursos significa que diferentes usuários ou programas usam os recursos de forma concorrente. 
Como administrar recursos compartilhados? 
Os recursos são limitados e, assim, o uso dos mesmos pelos diferentes programas ou usuários precisa ser controlado e 
administrado de forma a evitar possíveis conflitos ou uma alocação por tempo indeterminado de algum recurso. 
Concorrência 
 É a capacidade de execução concorrente de tarefas permitindo um melhor aproveitamento de recursos. 
 Uma tarefa pode deixar a CPU por vontade própria, quando precisa aguardar por um recurso, ou por uma 
interrupção. 
 Em particular, uma interrupção de temporizador provoca a substituição da tarefa em execução criando uma 
alternância entre as tarefas. 
Atenção: A alternância entre as tarefas pode dar a impressão de execução simultânea de tarefas, mas não é o que 
ocorre. 
 
Aula 2 - Processo 
Conceito: Processo é a instância de um programa em execução. É a unidade de carga e alocação de uma tarefa. Em 
sistemas mais antigos, também é considerado a unidade de execução, mas veremos, na próxima aula, que isso não é 
verdade nos sistemas modernos. 
 Cada processo é único em um sistema. 
 O processo é criado quando o programa é carregado para a memória principal para ser executado. 
 Um programa é carregado para a memória onde aloca uma determinada área para código e dados. 
 
Componentes 
Um processo é dividido em partes que são armazenadas na memória em uma estrutura denominada PCB (process 
control block). 
 
 
Ciclo de vida de um processo: CRIAÇÃO -> EXECUÇÃO -> TÉRMINO 
CRIAÇÃO 
Quando um processo é criado? 
 Quando executamos um programa. 
 Quando um usuário acessa o sistema. 
 Quando um processo gera um processo-filho. (mouse over em processo-filho com o seguinte texto: 
processo gerado internamente por outro processo) 
 Etapas de criação 
 Atribui um identificador único. 
 Aloca uma entrada na tabela de processos. 
 Aloca espaço para o processo. 
 Inicializa o PCB (Process Control Block). 
 Coloca o processo na fila apropriada. 
 Cria estruturas auxiliares 
EXECUÇÃO DE UM PROCESSO 
 A execução concorrente de processos leva às seguintes situações: 
 Trocas de Contexto: substituição do processo em execução. 
 Causas: Interrupção: Reação a um evento assíncrono. 
 Trap: Associado a erro na execução de uma instrução. 
 System Call: Requisição explícita. 
 Ações: 
 Salva o estado do processador. 
 Muda o estado do processo. 
 Muda o processo para a fila apropriada. 
 Seleciona o novo processo. 
 Atualiza o PCB do novo processo. 
 Modifica os mapeamentos de memória. 
 Restaura o estado do processador. 
 
Trocas de Modo de Execução 
 É uma troca menor e mais rápida que a troca de contexto. 
O estado do processo corrente não é alterado. Ocorre geralmente quando o processador, ao final de um ciclo de 
instrução, detecta a existência de interrupção pendente. Nesses casos, o processador realiza os seguintes passos: 
 Salva o contexto do processo em execução. 
 Carrega o PC com o endereço inicial da rotina de interrupção. 
 Troca o modo de execução de usuário para kernel (privilegiado) para que instruções privilegiadas do 
tratador de interrupções possam ser executas. 
 
 TÉRMINO DO PROCESSO 
• Quando acaba o programa que está em execução. 
• Quando ocorre um erro. 
• Quanto é forçado pelo usuário a terminar. 
 
 
Estados 
No que diz respeito aos estados de um processo, o diagrama mais comum possui cinco estados e é suficiente para o 
entendimento dos demais estados intermediários. Observe-o abaixo: 
• Novo 
o Estado de admissão onde são geradas as estruturas de dados e alocado espaço para o processo. O 
processo recém-criado é configurado como “pronto”; 
• Pronto 
o Após a admissão, o processo está pronto para ser executado, mas aguarda sua vez. 
• Bloqueado 
o Um processo é bloqueado quando precisa aguardar um recurso. Esse bloqueio é síncrono, ou seja, 
sempre que o programa executar um determinado trecho, o bloqueio acontecerá (Ex.: Acesso a disco) 
• Executando 
o Apenas um processo por vez pode estar nesse estado. Após ser selecionado, o processo recupera seu 
contexto que é guardado após ter sua execução interrompida. 
• Fim 
o Ao terminar a execução do processo, as estruturas criadas são removidas e a área alocada é liberada. 
 
Atenção: A substituição do processo em execução é denominada troca de contexto. Quando o processo é interrompido 
seu contexto é armazenado. Quando o processo retorna para o estado de execução, seu contexto é recuperado. O 
sistema operacional NÃO pode provocar troca de contexto, uma vez que é um software e para gerar uma ação 
precisaria estar em execução. 
Tipos 
Os processos podem ser classificados em função de características de execução: 
• Processos CPU-Bound: São processos que passam a maior parte do tempo em estado de execução ou pronto. 
Realiza poucas operações de E/S. 
• Processo I/O-Bound: São processos que passam a maior parte do tempo em estado de espera, pois realizam um 
elevado número de operações de E/S. 
• Processos em foreground: Permitem a comunicação direta do processo com o usuário durante sua execução. 
Em geral, o canal de entrada está associado ao teclado/mouse e de saída a um monitor. 
• Processos em background: Processos em que não existe interação direta com o usuário. 
A estratégia utilizada para ordenar a execução de processos pode variar em função dos tipos de processo em um 
sistema. 
 
Aula 3 - Threads 
Conceito de threads 
Threads são fluxos de execução distintos dentro de um mesmo processo, um executável. Atualmente, uma thread é 
considerada a unidade de execução de um sistema ao invés do processo como um todo. 
Um processo pode ter uma ou mais threads. Veja o exemplo. 
 
 
Estrutura 
Um processo que contenha threads é composto pelo seu PCB (Process Control Block) e pelos blocos específicos para 
cada thread que contém uma estrutura de contextode software e uma estrutura de contexto de hardware. 
Cada thread possui contextos próprios de hardware e software, porém compartilham o mesmo espaço de 
endereçamento alocado ao processo. 
 
 
Tipo de threads 
As threads podem ser classificadas em: 
Threads de KERNEL: As threads de Kernel são criadas e gerenciadas pelo Kernel do sistema operacional, mas 
não podem ser diretamente utilizadas pelo usuário. O suporte a múltiplas threads é uma característica do 
sistema operacional. Exemplo: Bibliotecas de threads: POSIX Pthreads , Win32 threads, Java threads. 
Threads de USUÁRIO: As threads de usuário facilitam aspectos de portabilidade e são criadas e gerenciadas por 
uma biblioteca no nível do usuário. O Kernel não enxerga essas threads e, por esse motivo, não podem ser 
gerenciadas individualmente. 
Processo leve ou LWP. 
A combinação entre os dois tipos de threads promove uma associação entre threads de usuário e de Kernel, porém a 
forma de associação depende do sistema operacional. 
 
Esta é a solução mais utilizada nos sistemas modernos.Pois o uso combinado de threads de usuário e de Kernel permite 
melhor aproveitamento do tempo de CPU, possibilidade de paralelismo e facilidade de programação. 
Vamos conhecer agora os modelos de associação entre threads de usuário e de Kernel. 
Muitos para um: 
• Gerenciamento da thread é feito no espaço do usuário; 
• Usadas em sistemas que não suportam threads; 
• Uma thread bloqueada bloqueia todo o processo. 
• 
Um para um: 
• Cada thread de usuário é mapeada para uma Kernel thread; 
• Criar uma user thread requer a criação de uma thread de Kernel; 
• Algumas implementações restringem o número de threads suportada pelo sistema; 
• É utilizada pelo Windows e pelo Linux. 
• 
Muitos para muitos: 
• Permite que várias threads de usuário sejam mapeadas para um número menor ou maior de threads de Kernel 
dinamicamente; 
• Permite que o SO crie um número suficiente de threads de Kernel. 
• 
 
Motivação para o uso de threads 
Imagine a seguinte situação: Precisamos armazenar os tijolos produzidos por um equipamento que, ao término da 
fabricação de um tijolo, espera que haja alguém no final da esteira para pegá-lo. 
Se o procedimento de pegar o tijolo e levá-lo até o depósito for feito por uma única pessoa, provavelmente diversos 
tijolos caíram no chão enquanto essa pessoa leva um dos tijolos para o depósito. 
 O que fazer? Se houver uma pessoa que fique na saída da esteira retirando os tijolos e os entregando para seus 
assistentes, a chance de que um tijolo caia no chão será muito reduzida, pois cada tijolo será entregue em um período 
de tempo constante ao assistente que o levará ao depósito. O encarregado de pegar os tijolos está “a postos” em um 
tempo conhecido, permitindo, assim, calibrar o equipamento. 
 Pode haver muitos assistentes congestionando o caminho? Sim, identificando que o caminho não é suficiente para a 
demanda. 
Pensando agora em uma aplicação, como um servidor para transferências de arquivos. Uma thread fica “a postos” para 
receber requisições que serão entregues a novas threads criadas sob demanda para atender a cada uma das 
requisições. A cada requisição, uma nova thread é criada e a thread principal retorna imediatamente para aguardar 
novas requisições, evitando (ou reduzindo muito) o descarte de mensagens. Poderemos ter várias threads sendo 
executadas concorrentemente, podendo gerar um tempo de resposta maior, mas as requisições não serão perdidas. 
 Só para registrar: esse tipo de servidor é chamado de servidor concorrente. 
As threads contribuem para o melhor uso dos recursos com: 
• Melhor aproveitamento da fatia de tempo - Permite que a execução do processo continue mesmo que algumas 
de suas Threads estejam bloqueadas. 
• Compartilhamento de Recursos - Threads compartilham memória e outros recursos do processo. 
• Economia de tempo de gerenciamento - Threads são mais econômicas de serem criadas e o custo da troca de 
contexto é menor. Todas as threads de um mesmo processo compartilham o mesmo espaço de endereçamento. 
• Utilização de Múltiplos Processadores - Cada Thread pode ser executada em paralelo em um processador 
distinto. 
 
AULA 04 – COMUNICAÇÃO ENTRE PROCESSOS 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Caso 2 
 
 
 
 
 
 
Espera ocupada: O processo em espera ocupada continua no estado de pronto e, a cada execução, tenta 
continuamente o acesso à região crítica. Esse procedimento consome tempo de CPU desnecessariamente. 
Bloqueio: O processo será bloqueado e, é acordado quando o acesso a região crítica estiver liberado. 
 
 
Deadlock (impasse) : situação em que dois ou mais processos entram em um impasse aguardando um recurso que 
nunca estará disponível. Essa situação so é desfeita por um agente externo (ex.: interromper um dos processos). 
Starvation: Condição em que não há garantia de execução de um processo. A execução pode ser adiada por um tempo 
inderteminado. 
 
 
 
AULA 05 – SINCRONIZAÇÃO ENTRE PROCESSOS 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
AULA 06 – GERENCIA DE TEMPO DE CPU 
 
 
 
 
Escalonador 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
AULA 07 – GERENCIA DE ALOCAÇÃO DE MEMÓRIA 
 
 
 
 
 
 
 
 
 
 
 
 
 
Estratégias de organização lógica do espaço de memória - Paginado 
 Quando um processo é carregado, suas páginas são alocadas em quaisquer molduras disponíveis, não 
necessariamente contíguas. 
 O S.O. precisa manter uma tabela de páginas por processo e uma lista de molduras disponíveis. 
 Cada processo pode ter fragmentação interna APENAS NA ÚLTIMA PÁGINA. 
 
 
 
 
 
 
 
AULA 08 – MEMÓRIA VIRTUAL 
 
 
 
 
 
 
Princípio da localidade 
 As referências de memória tendem a ser agrupadas em termos espaciais e/ou temporais. 
 Em um programa bem construído, a probabilidade média da próxima instrução a ser executada ser a seguinte 
ou estar nas redondezas da instrução corrente é mais elevada do que outras hipóteses. 
 Somente alguns trechos do código são necessários para a execução num curto espaço de tempo. 
 É possível ter uma razoável noção dos trechos de código que serão utilizados num futuro próximo, reduzindo os 
riscos de trashing. 
Redução de trashing: 
 Poderia ser traduzido como “fazendo lixo” 
 Ocorre quando o sistema passa a maior parte do tempo removendo e trazendo partes de processos ao invés de 
executar instruções dos mesmos. 
 A memória normalmente está toda ocupada com partes de diversos processos; então, quando o SO precisa 
carregar uma nova parte, outra parte precisará ser removido para abrir espaço. 
 Se for removida uma parte que seja referenciada logo a seguir, esta precisará ser carregada novamente. 
 
PAGINAÇÃO 
Estudaremos a organização Paginada por ser a implementação mais usual de memória virtual. 
 
 
 
 
 
 
 
 
 
AULA 09 – DISPOSITIVOS DE ENTRADA E SAÍDA 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
AULA 10 – SISTEMA DE ARQUIVOS.

Outros materiais