Buscar

Sistema Operacional

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 14 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 14 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 14 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

As notas de aulas são referências para estudo. Portanto não devem ser adotadas como material didático absoluto! 
Versão 0.1 – 30/08/2008 
 
 
Romildo Martins Bezerra 
CEFET/BA 
Sistemas Operacionais 
 
 
 
Arquitetura Conceitual de um Computador ................................................... 2 
Processadores ................................................................................... 2 
Memória Principal............................................................................... 4 
Memória Cache .................................................................................. 4 
Memória Secundária ............................................................................ 5 
Dispositivos de Entrada e Saída ............................................................... 6 
Apresentando os componentes dentro de um computador .................................. 6 
Conceitos de Sistemas Operacionais ............................................................ 6 
Arquitetura de um SO .......................................................................... 7 
Arquitetura Interna de um SO ................................................................. 7 
Processos ......................................................................................... 8 
Memória .......................................................................................... 8 
Arquivos .......................................................................................... 8 
Multiprogramação ............................................................................... 9 
Estruturas dos Sistemas Operacionais .......................................................... 9 
Sistemas monolíticos ........................................................................... 9 
Sistemas em camadas .......................................................................... 9 
Máquina Virtual ................................................................................. 9 
Modelo cliente/servidor ....................................................................... 9 
Gerência de Processos ............................................................................ 9 
Estados do processo ........................................................................... 10 
Comunicação interprocessos ................................................................. 10 
Alternativas para a exclusão mútua ......................................................... 11 
Escalonamento ................................................................................. 11 
Gerência de Memória ............................................................................ 12 
Sistemas Operacionais Atuais ................................................................... 13 
Linux ............................................................................................. 13 
Windows ......................................................................................... 13 
Amoeba .......................................................................................... 13 
Minix ............................................................................................. 13 
Pesquise ............................................................................................ 14 
Temas para trabalhos ............................................................................ 14 
Bibliografia ........................................................................................ 14 
 
 
 
 
 
 
 
 
 
Conceitos de Sistemas Operacionais 
Estrutura de Sistemas Operacionais 
Gerência de Processos 
Gerência de Memória 
Romildo Martins Bezerra 
 
 
2 � 
 
 
Antes de iniciarmos os estudos de Sistemas operacionais é necessário apresentar uma introdução do 
funcionamento básico de um computador e seus respectivos componentes. 
 
Arquitetura Conceitual de um Computador 
 
 Os primeiros passos para que a arquitetura dos computadores fosse similar à que conhecemos hoje 
foram dados pelo pesquisador Von Neumann. Especialista em ciências exatas e o matemático mais 
eminente do mundo na época, Neumann projetou o IAS, computador onde os dados eram representados de 
forma digital, com programação mais rápida e flexível, visto que no seu projeto, programas e dados eram 
inseridos de forma binária na memória. 
 Esse projeto pioneiro com o conceito de “programa armazenado” transformou o IAS na famosa 
máquina de Von Neummann. A concepção é utilizada até hoje nos computadores e é composta 
basicamente de 3 componentes (figura 01): 
 
• CPU (unidade central de processamento) composto de uma unidade de controle (UC), unidade 
lógico-aritmética (ULA) e registradores; 
• Memória Principal, onde os programas estão armazenados (veremos detalhes a seguir); 
• Dispositivos de E/S, responsáveis em transferir dados de dentro�fora do computador 
 
Pontos Importantes: 
 
• No projeto, o computador só trabalhava com números inteiros. Neumann acreditava que 
qualquer matemático poderia tratar ponto flutuante 
• Utilização do conceito de programas armazenados 
• Execução seqüencial de instruções 
• Funcionamento busca/decodificação/execução 
 
 Atualmente os computadores (a maior parte deles) utilizam uma arquitetura composta dos 
seguintes componentes vistos na figura 01. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 01 – Modelo Conceitual dos computadores atuais, baseados no IAS de Von Neumann 
 
Processadores 
Correspondem ao cérebro do computador, pois é o responsável em executar todas as tarefas 
referentes à busca/execução dos programas e dados. Para modularizar seu funcionamento, será 
apresentado o modelo didático com as seguintes componentes: 
 
• ULA (Unidade Lógico-Aritmética) – realiza um conjunto de operações aritméticas e lógicas 
necessárias à execução das instruções 
 
Memória Principal 
CPU 
Dispositivos E/S 
Unidade de Controle 
Registradores ULA 
PC 
endereço dados/instruções 
Romildo Martins Bezerra 
 
 
3 � 
 
 
• UC (Unidade de Controle) – busca de instruções da memória, de acordo com a necessidade da 
instrução a ser processada. 
 
• Registradores – Pequenos espaços de memória que o processador trabalha executando as 
instruções. Geralmente possuem o mesmo tamanho e tem velocidade muito alta. Destacam-se: 
o PC – Contador de Programa, cujo nome não reflete sua função, que é indicar a próxima 
instrução a ser executada na memória. 
o IR – Registrador de instruções, que indica a próxima instrução a ser executada. 
 
• Memória Cache – Atualmente para melhorar o desempenho, os processadores atuais possuem uma 
memória de altíssima velocidade (quando comparada a memória RAM ou disco rígido) para 
arquivar os dados de maior utilização, evitando acessos constantes à memória. Veremos mais 
detalhes no decorrer desta apostila. 
 
Conforme vimos anteriormente, a seqüência de funcionamento segue a proposta do modelo de Von 
Neumann, busca-decodificação-execução. 
O processo de busca da instrução (fetch) transfere a instrução da posição da memória (indicada 
pelo registrador PC) para a CPU. A decodificação é responsabilidade da unidade de controle, que após 
decodificação gerencia os passos para execução a ser feita pela ALU. 
 
 
 
 
Figura 02 – Estágios do funcionamento dos computadores 
 
 De forma detalhada, a execução de programas num processador utiliza a seqüência de passos 
buca-decodica-executa, da seguinte forma: 
 
1. Busca a próxima instrução da memória para o registrador de instrução 
2. Atualiza o contador de programa para que ele aponte para a instrução seguinte 
3. Determina o tipo de instrução 
4. Se a instrução utiliza dados na memória, determina localização 
5. Busca os dados, se houver algum, para os registradores internos da CPU 
6. Executa a instrução 
7. Armazenaos dados em locais apropriados 
8. Volta para o passo 1 
 
 Vamos analisar novamente a figura 02 e imaginemos que um computador vai executar diferentes 
operações simples (soma, por exemplo). Seria interessante se ele pudesse fazer parte das instruções em 
paralelo de forma a otimizar sua utilização, sendo pelos menos duas tarefas executadas no mesmo tempo. 
Isso pode ser feito de duas formas: 
 
• Paralelismo a nível de instruções – A divisão das instruções em partes menores sendo essas 
executadas em um hardware específico. (lembrem-se do exemplo da soma dado em sala!) 
 
 
 
 
 
 
 
Figura 03 – Computador clássico de cinco estágios 
 
 
 
Unidade de busca Unidade de 
decodificação 
Unidade de execução 
[ E1 ] 
Unidade de 
busca de 
instrução 
 
[ E2 ] 
Unidade de 
decodificação 
de instrução 
 
[ E4 ] 
Unidade de 
execução de 
instrução 
 
[ E3 ] 
Unidade de 
busca de 
operando 
 
[ E5 ] 
Unidade 
de escrita 
 
Romildo Martins Bezerra 
 
 
4 � 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 04 – Exemplo de paralelismo a nível de instruções em cinco estágios 
 
• Paralelismo a nível de processador – A idéia é projetar computadores com mais de um processador 
que podem estar organizados de forma matricial, vetorial, compartilhando barramento com 
memória compartilhada ou não. Este estudo não corresponde ao objetivo desta disciplina. 
 
Memória Principal 
A memória principal é uma das partes essenciais para o funcionamento do computador, uma vez 
que é nela que os programas e dados são executados. O que se esperar da memória? Tamanho infinito, 
ultra-rápida (não atrase o processador) e barata (afinal ninguém quer gastar dinheiro!). É possível 
conciliar isso? Isso será discutido mais tarde. 
A memória é organizada através de células, unidades elementares de memória, que compõem 
segmentos (pedaços alocados por um programa que podem conter mais de uma célula). Vamos imaginar 
uma memória de 1Megabyte (220 bytes = 1024*1024) com células de 32 bits (22 bytes), retemos então: 
 
Total de Células= Total de memória /Tamanho da célula 
 = 220 bytes/22 bytes 
 = 218 células 
 
Ou seja teríamos 218 células a serem endereçadas. Vamos supor agora que o sistema operacional 
precisa de 26 bytes para executar uma determinada instrução (IX) de um programa em Pascal (compilador 
de alto nível). O sistema operacional ficará responsável em alocar segmentos de memória (contínuos ou 
não) para que esta informação possa ser trabalhada pelo processador. 
 
Vazio IY IX IX IX IX IX IX IX Vazio 
 199 200 201 202 203 204 205 206 207 208 
 
Figura 05 – Dados da instrução X (IX) alocados continuamente na memória 
 
Que problemas vocês enxergam que o SO terá com este particionamento da memória? 
• Controle da fragmentação 
• Falta de espaços 
• Movimentação constante 
 
Memória Cache 
Devido a uma diferença história entre processadores e memórias, o processador acaba esperando 
(apenas por definição!) ciclos de clock até que a memória entregue (aloque) sua requisição. Algumas 
técnicas para melhorar esta solução podem ser utilizadas, destacamos aqui a utilização de memórias 
cache. 
Os projetistas de HW construíram uma memória mais rápida capaz de operar na velocidade dos 
processadores, mas devido ao seu custo elevado (fruto de aumento do tamanho do processador) é 
necessário restringir o tamanho da memória cache. Esta apresentação segue o conceito de hierarquia de 
memória, onde quanto mais rápido a memória, menor será seu tamanho (devido ao custo de fabricação). 
P1 P2 P3 P4 P5 P6 P7 P8 
P1 P2 P3 P4 P5 P6 P7 
P1 P2 P3 P4 P5 P6 
P1 P2 P3 P4 P5 
P1 P2 P3 P4 
 1 2 3 4 5 6 7 8 
 E1 
 E2 
 E3 
 E4 
 E5 
tempo 
 
Romildo Martins Bezerra 
 
 
5 � 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 06 – Conceito de Hierarquia de memória 
 
 O problema agora é que ficamos com dois mundos: 
• Memória ultra-rápida e pequena (muitas trocas ocorreriam) 
• Memória mais lenta e bem maior 
 
Para se ter uma idéia, diversos processadores atuais trabalham com velocidades superiores a 
3.0GHz (3 bilhões de ciclos por segundo) e possui cache interna (L1) de 512Kbytes, enquanto a memória 
RAM trabalha a 333Mhz e tem tamanho de 256MB, sendo assim 512 vezes maior e 9 vezes mais lenta. Como 
não é possível trabalhar com apenas uma delas, a proposta é a seguinte: 
 
 
 
 
 
 
 
 
Figura 07 – Memória Cache alocada no processador 
 
 Outra proposta seria colocá-la na placa-mãe (Chamado de cache L2). 
 
 Esta memória ultra-rápida, cache, deve ser sempre as informações mais requisitadas pelo 
processador, e este terá que sempre consultar a cache antes de perguntar memória principal. Mas como 
“adivinhar” que parte da memória será utilizada? Como calcular se o tempo médio de acesso com a cache 
tornará o sistema mais eficiente? 
 Cálculos matemáticos e algoritmos complexos são desenvolvidos no projeto de cada arquitetura. 
Para os mais interessados pesquisem o principio da localidade, base teórica para o funcionamento de 
sistemas com utilização intensiva de cache. 
 
Memória Secundária 
“Por maior que seja a memória principal, ela será sempre pequena.” Tanenbaum em Organização 
Estruturada de Computadores, página 40. Apesar de a afirmação parecer (e é!) forte demais, não é 
possível enxergar uma estrutura computacional moderna sem a utilização de memória secundária. Do 
mesmo modo que a cahe é muito mais rápida que a memória principal, essa é muito mais rápida que a 
memória secundária. 
 
Aqui serão explicados apenas os discos magnéticos, vistos que o foco é apresentar uma introdução 
para sistemas operacionais. A composição básica de um disco magnético é vista abaixo. 
 
 
 
 
 
Figura 08 – Esquema Básico do disco 
cache 
principal 
discos rígidos 
unidades de fita 
preço 
velocidade 
Processador 
 
Memória RAM 
256MB Cache 
Romildo Martins Bezerra 
 
 
6 � 
 
 
 
Nota-se que esta composição mecânica dos discos não pode superar, em velocidade, o método 
digital dos semicondutores utilizados na memória RAM e memória cache. 
 
Dispositivos de Entrada e Saída 
 Antes de serem tratados os dispositivos de E/S é importante salientar que a transferência de dados 
entre processador, memória principal, memória secundária (discos rígidos, flexíveis e óticos) é feita 
através dos barramentos. 
 Cada dispositivo de entrada e saída é composto de uma controladora e do dispositivo propriamente 
dito. Esta controladora dá acesso ao barramento do computador sem que haja uma intervenção o 
processador executando um acesso direto à memória (DMA). E quando esta transferência de dados é 
transmitida, a controladora força uma interrupção, fazendo com qu o processador suspenda o processo em 
execução a fim de rodar um procedimento para verificar possíveis erros de transferência de dados, este 
procedimento é denominado rotina do tratamento de interrupção. 
 Já que o barramento é acessado por todos os dispositivos, o que aconteceria se dois ou mais 
dispositivos brigarem pelo acesso ao barramento? Nos projetos dos computadores atuais está presente um 
dispositivo que executa esta seleção chamada de arbitro do barramento. A prioridade geralmente é dos 
discos magnéticos, uma vez que as paradas sucessivas podem ocasionar perda de dados. 
 
 
 
 
 
 
 
 
 
 
Figura 09 – Modelo conceitual detalhado 
 
Apresentando os componentes dentro de um computador 
Esta aula não terá apostila. Corresponderá a uma aula prática com apresentação de hardware. 
 
Conceitos de Sistemas Operacionais 
O sistema computacional moderno é algo complexo devido a quantidade de dispositivos 
envolvidos. Desenvolver programas que mantenham o controledestes componentes de forma otimizada 
impactaria na lentidão para novos softwares. Daí surge o sistema operacional, cujo trabalho é gerenciar 
esses componentes e fornecer aos programas de usuários uma interface simples de acesso ao hardware. 
Sistema Operacional é um conjunto de ferramentas necessárias para que um computador possa ser 
utilizado de forma adequada, pois consiste de intermediário entre o aplicativo e a camada física do 
hardware. Este conjunto é constituído por um Kernel, ou núcleo, e um conjunto de software básicos, que 
executam operações simples, mas que juntos fazem uma grande diferença. 
 
O sistema operacional é uma camada de software colocada entre o 
hardware e software do computador, com o objetivo de facilitar as 
atividades dos desenvolvedores e usuários de software, uma vez que não 
precisam fazer acesso direto ao dispositivo, fornecendo uma interface mais 
amigável e intuitiva. 
 
Tipos de serviços: 
• Acesso aos periféricos 
• Utilização simples de recursos pelo usuário 
• Manipulação de dados (arquivos e diretórios) 
• Controle de recursos compartilhados 
 
 
 
Processador Memória 
Controladora
HD 
Controladora 
Vídeo 
Controladora 
HD Monitor Teclado 
Atualmente estas controladoras estão 
presentes dentro da placa-mãe 
Software 
Sistema 
operacional 
Hardware 
Figura 10 – Localização lógica do SO 
Romildo Martins Bezerra 
 
 
7 � 
 
 
C:\ dir /s Interpretador 
de Comandos 
 
Kernel 
 
 
Para isso, ele deve ser responsável pela: 
 
• Gerência do processador, também conhecida como gerência de processos, seu objetivo 
visa distribuir de forma justa o processamento evitando o monopólio do processador e 
respeitando a prioridade dos usuários e aplicações. 
• Gerência de memória, objetiva fornecer um espaço isolado de memória para cada 
processo de forma que ele “se sinta” único na memória. São necessários recursos 
(memória virtual paginação e segmentação) para que este objetivo seja cumprido de 
forma eficiente e atenda todos os processos ativos. 
• Gerência de dispositivos, objetiva garantir o acesso aos dispositivos de forma mais fácil 
possível (drivers) aos usuários, criando modelos que generalizem a utilização dos 
dispositivos (lembrar do conceito de bloco no HD). 
• Gerência de arquivos, uma implementação específica da gerencia de dispositivos, 
trabalhando apenas com o processo de armazenamento e acesso aos dados, atualmente 
através de arquivos e diretórios. 
• Gerencia de proteção, definir o acesso harmônico em sistemas de vários usuários com 
compartilhamento de recursos, como por exemplo, pastas compartilhadas em rede. 
 
 
Os sistemas operacionais vêm passando por um processo gradual de operação. A evolução dos SO é 
diretamente ligada a evolução dos computadores e passou por algumas gerações: 
 
1ª Geração – Válvulas e Painéis de Programação 
2ª Geração – Transistores e Sistemas de lote 
3ª Geração – CIs e MultiProgramação 
4ª Geração – Computadores Pessoais (Atual) 
 
Arquitetura de um SO 
Esta arquitetura é simples e intuitiva de ser 
entendida. O kernel presta serviço aos programas de 
usuários e recebe serviços do microkernel. A 
separação entre estes dois níveis diz respeito a 
separação dos serviços básicos oferecidos. 
 
 
 
 Um sistema operacional pode oferecer serviços também na 
camda de utilitários (programas de usuário) confundindo muitas vezes 
o usuário, uma vez que tais serviços são distribuídos pelo próprio 
forncedor do software. O Windows Explorer e o task manager - 
manipulador de arquivos e diretórios e gerenciador de tarefas, 
respectivamente – são exemplos no Microsoft Windows. Já o comando 
top e time são bons exemplos no Linux. Talvez o mais importante eles 
seja o interpretador de comandos, uma vez que o usuário começa sua 
seção de trabalhos (sem interface visual!). 
 
 
Arquitetura Interna de um SO 
 
A eficiência do SO é decorrente das facilidades impostas e multiprogramação (veremos a seguir), que 
por sua vez só ocorrem pois ele está organizado internamente, viabilizando dois tipos de eventos: 
 
Programas 
Kernel 
Microkernel 
Hardware 
Chamadas de 
Sistema 
Dados 
Solicitados 
Figura 11 – Arquitetura de um SO 
Figura 12 – Interpretador de comandos 
 
Romildo Martins Bezerra 
 
 
8 � 
 
 
• Chamada de sistema – é uma solicitação de recurso por parte de um programa que está sendo 
executado. Diversas preocupações associadas podem ser listadas, como por exemplo: permissão do 
usuário a este recurso. 
 
• Interrupção de periférico – o processador para o processador que está executando para atender a 
um retorno de um periférico (controladora dele) informando que o recurso está disponível. 
 
Detalhes da arquitetura interna do sistema operacional serão vistos no próximos capítulos. 
 
Processos 
 
É basicamente um programa em execução sendo constituído de um código executável, dados 
referentes ao código, da pilha de execução, do valor do PC, do valor do apontador de pilha, dos valores 
dos demais registradores do hardware e outras informações. Associado a um processo está seu espaço de 
endereçamento, uma lista de posições de memória que contém todas as informações do processo. 
Como em um sistema operacional vários processos requerem a CPU, é necessário compartilhar o 
tempo de acesso entre eles de forma que quando um processo seja parado, todas as suas informações (se 
estado atual) seja guardado. Isto porque quando o mesmo for reiniciado deve continuar do ponto em que 
parou. Para isso os sistemas operacionais utilizam uma tabela chamada tabela d processos que consiste em 
um vetor ou lista encadeada de estruturas para cada processo existente. 
Um processo pode criar mais processos (processos filhos) que podem criar também seus processos 
filhos. Estes processos se organizam como uma estrutura em arvore conforme vista a seguir. A necessidade 
de comunicação entre processos para sincronizar suas atividades é chama de comunicação interprocessos. 
 
 
 
 
 
 
 
 
Figura 13 – Arvore de processos 
 
 
Quando estão em operação, dois ou mais processos podem entrar em uma situação da qual mão 
conseguem sair, esta situação é chamada de deadlock. 
 
Memória 
Todo computador tem uma memória principal para guardar o estado dos programas em execução. 
Em sistemas operacionais muito simples, somente um programa por vez ocupa a memória. 
Sistemas operacionais modernos permitem que múltiplos programas residam na memória principal 
ao mesmo tempo. Para que não haja conflito com outros programas ou com o sistema operacional é 
necessário construir um mecanismo de proteção a ser controlado pelo sistema operacional. 
Outro ponto importante é como gerenciar e distribuir os espaços de endereçamento dos processos 
guardados em memória principal? O que pode ser feito para que um processo que requer mais memória 
que o computador dispõe? Sistemas operacionais modernos utilizam memória virtual. 
 
Arquivos 
Como uma das funções do sistema operacional é deixar transparente o aceso aos recursos (entre 
eles o disco!) serão necessárias criação de chamadas de sistema para facilitar o acesso aos arquivos 
gravados no disco. 
Para poder guardar organizadamente os arquivos, vários sistemas operacionais utilizam o conceito 
de diretório. Cada arquivo dentro desta hierarquia de diretórios pode se acessado fornecendo-se o 
caminho (path name) a partir do topo da hierarquia, chamado de diretório raiz. 
 
 
 
 
C 
G 
A 
B 
E D F 
Romildo Martins Bezerra 
 
 
9 � 
 
 
 
Multiprogramação 
Como os programas que estão em execução provavelmente precisarão de acesso aos dispositivos 
de E/S e acesso a disco, neste momento o processador “ficaria ocioso” (o que não é verdade, pois o mousese mexe e você o vê no monitor!). Nota-se uma necessidade de otimizar a eficiência de utilização do 
computador. Uma solução seria manter mais de um programa (ou parte dele) na memória principal e 
escalonar a utilização do processador dividindo o tempo de utilização de forma a não deixá-lo ocioso e 
atendendo todos os processos. 
Com a multiprogramação, a execução dos processos passa por diversas fases, alternando a 
utilização do processador de forma que reduza o tempo ocioso do processador e o distribua de forma justa 
entre processos. Além disso, muitos processos (quase todos) não precisam de toda memória virtual, logo 
se um processo ficasse exclusivo na memória, isto acarretaria um desperdício. 
 
Estruturas dos Sistemas Operacionais 
 
Sistemas monolíticos 
Neste sistema não existe organização visível. É escrito como um conjunto de procedimentos que se 
comunicam entre si. É a estrutura mais comum. 
 
Essa organização sugere uma estrutura básica para o sistema operacional: 
 
1. Um programa principal que invoca o procedimento do serviço requisitado 
2. Um conjunto d procedimentos de serviço que executam chamadas ao sistema 
3. Um conjunto de procedimentos utilitários que auxiliam os procedimentos de serviço 
 
Sistemas em camadas 
Criação de uma hierarquia de níveis, onde cada um é construído exatamente sobre o nível abaixo. 
Ex: THE – Dijkstra – 6 níveis 
MULTICS – Kernel circular 
 
Máquina Virtual 
Uma cópia exata do hardware é feita para criar um ambiente único para execução do programa. 
Pode-se rodar mais de uma MV em um mesmo hardware ou criar n MV diferentes para hardware diferentes 
mantendo acima dela uma única interface. 
 
Modelo cliente/servidor 
A comunicação entre os módulos do kernel do SO é feita através de solicitações de serviços através 
de mensagens de processos clientes a processos servidores (memória, arquivo, terminal...). 
A divisão do sistema operacional em várias partes facilita o desenvolvimento e evolução de um 
sistema operacional, além de permitir que uma falha em um servidor – por exemplo, o de arquivos – não 
afete toda a máquina. 
Este modelo oferece fácil adaptabilidade a sistemas distribuídos. 
 
 
Gerência de Processos 
Um processo é um programa em execução incluindo os valores armazenados nos registradores e o 
valor das variáveis. 
As máquinas atuais utilizam o Conceito de pseudoparalelismo – paralelismo aparente – forma de 
chavear o processador em diferentes processos (programas) criando a alusão de simultaneidade de 
execução. Para tal é necessário o rápido chaveamento do processador entre diversos programas em 
execução, chamado de Multiprogramação. 
Como o processador está sendo chaveado entre diversos processos pode-se observar que a 
velocidade de execução não é constante, por isso a programação de processos não pode ter restrições de 
tempo. 
 
 
Romildo Martins Bezerra 
 
 
10 � 
 
 
Estados do processo 
Embora cada processo seja uma entidade independente, muitas vezes os processos precisam 
interagir com os outros. Para gerenciar esta interação e o escalonamento dos processos é necessário 
definir os possíveis estados que um processo pode ficar: 
 
1. Em execução, realmente utilizando a CPU 
2. Pronto, capaz de executar a qualquer instante, mas não tem CPU 
3. Bloqueado, incapaz de executar 
 
 
 
 
 
 
 
 
 
Figura 14 – Estados dos processos 
 
1. Processo bloqueado aguardando informações 
2. Escalonador escolhe outro processo 
3. Escalonador entrega processador 
4. Entrada de dados concluída 
 
Nota-se que o escalonador está num nível mais baixo do sistema operacional que os processos para 
que possa fazer este controle sobre eles. 
 
 
 
 
 
Figura 15 – Escalonador e os processos 
 
Comunicação interprocessos 
 
Como visto acima, freqüentemente os processos precisam se comunicar com outros processos, 
preferencialmente de maneira estrutura e sem interrupções (nem sempre é possível). Neste tópico 
devemos nos preocupar com 3 pontos: a troca de informações entre processos; a garantia de que um 
processo não invada o espaço físico do outro; e a garantia de que um processo não altere os dados que 
estão sendo trabalhados por outro (que deve estar no estado pronto neste momento). 
 
O Sistema Operacional deve então evitar que quando dois ou mais processos que acessam dados 
compartilhados o resultado destes processos não dependa do escalonamento, ou seja, um processo não 
interferiu no outro. Isto é chamado de condição de corrida. 
 
Uma forma de se isolar este problema é a definição e tratamento das regiões que possam levar à 
condições de corrida, tais regiões são chamadas de regiões críticas. Para tal 4 regras foram definidas: 
 
1. Nunca 2 processos podem entrar ao mesmo tempo 
2. A velocidade ou quantidade de CPUs não interfere 
3. Nenhum processo executando fora da região crítica pode bloquear outros processos 
4. Nenhum processo deve esperar eternamente para entrar numa região crítica 
 
 
 
 
 
 
1 2 n-1 n 
Escalonador 
... 
Executando 
Bloqueado Pronto 
1 
3 
2 
4 
Criação Destruição 
Romildo Martins Bezerra 
 
 
11 � 
 
 
Alternativas para a exclusão mútua 
Existem várias alternativas para tratar este problema como: inibição das interrupções, utilização 
de variáveis de travamento e alternância obrigatória. Porém a solução em software de maior sucesso é o 
algoritmo de Peterson que combina a utilização de variáveis de travamento com a alternância obrigatória. 
Existe também a solução em hardware chamada de instrução TSL. 
Porém ambas as soluções apresentam o problema de prioridade invertida, ou seja, um processo de 
menor prioridade nunca terá acesso a CPU, logo sua prioridade deveria ser maior. Estas soluções também 
não tratam o problema do Produtor-consumidor (buffer compartilhado) 
O problema do produtor e consumidor é resolvido através de semáforos (contadores de eventos) e 
mutex (variável de dois estados). A utilização de monitores (unidade de sincronização de alto nível) para 
estas soluções facilita a comunicação interprocessos. 
 
Escalonamento 
Quando um computador é multiprogramado, ele muitas vezes possui diversos processos que 
competem pela CPU, surgindo assim a necessidade de alguma entidade para escalonar a CPU entre os 
processos, que é chamada de escalonador. 
 
Um escalonador deve possuir um algoritmo de escalonamento que se preocupe com 5 regras: 
 
1. Justiça – Todos processos devem ter acesso a CPU 
2. Eficiência – A meta do escalonador é chegar mais perto dos 100% de utilização da CPU 
3. Minimizar o Tempo de Resposta 
4. Turnaround – Minimiza os usuários batch 
5. Throughput – Maximizar o número de jobs processados 
 
 
Algoritmos de Escalonamento 
 
Round Robin • Quantum constante 
• Sem prioridade 
• Polêmica: Quantum x troca de contexto 
 
Com Prioridade • Cada processo possui uma prioridade e o de maior prioridade executa 
primeiro 
• Para evitar que os processos de maior prioridade tomem conta do 
processador, a prioridade é decrementada 
 
Menor Job Primeiro • Só conduz ao resultado ótimo quando todos os jobs tiverem prontos ao 
mesmo tempo 
• Difícil estimar o tempo 
• Utilização de Média ponderada (aging) 
 
Garantido • Estimar (prometer) a um processo o tempo de sua execução e cumprir 
• Necessário conhecimento dos processos executando e a serem 
executados 
 
Loteria • Distribuição de bilhetes que dão acesso à CPU. 
• Lembra o escalonamento com prioridade, mas bilhetes são trocados 
entre processos 
 
Filas múltiplas • Criação de classes de Prioridades alocadas em deferentes filas 
• Objetiva a redução de tempo de swapping 
 
 
 
Romildo Martins Bezerra 
 
 
12 � 
 
 
Para melhor eficiência dos escalonadores, recomenda-se separa o mecanismoda política de 
escalonamento, visto que um processo pai pode administrar melhor seus processos filhos do que o 
escalonador do SO. 
 
Gerência de Memória 
Alguns sistemas operacionais mais simples não trabalham com multiprogramação, ou seja, alocam 
um processo na memória o executam até que seja terminado. Porém a troca de processos entre memória 
e disco para sistemas multiprogramados é uma realidade. Para este caso, em que a soma dos espaços de 
memória requeridos por todos os processos é maior que a memória primária, é necessário levar os dados 
não utilizados para o disco, sendo necessário um controle através de mapa de bits. 
A utilização de memorial virtual é recomendada, mas o algoritmo de substituição de páginas deve 
ser eficiente para garantir o desempenho do processo. Recomenda-se o uso do algoritmo do 
envelhecimento (aging) e o WSClock. Um resumo dos algoritmos de substituição de páginas segue abaixo: 
 
Ótimo • Não implementável, mas serve como padrão de desempenho 
 
NUR 
(não usada recentemente) 
• Muito rudimentar 
FIFO • Pode descartar páginas importantes 
 
FIFO com segunda chance • Melhoria do FIFO 
 
Relógio • Realista 
 
MRU 
(menos recentemente usada) 
• Excelente, mas difícil implementação 
NFU 
(não frequentemente usada) 
• Método similar ao MRU, mas rudimentar 
Envelhecimento (aging) • Ótimo desempenho e se aproxima do MRU 
 
Conjunto de trabalho • Implementação cara 
 
WSCLOCK • Algoritmo bom e eficiente 
 
 
 
Apenas a escolha do algoritmo não é o suficiente, preocupação com o tamanho da página e a 
política de alocação são fundamentais. 
Como sistema de memória virtual discutido até então é unidimensional, com o crescimento da 
massa de dados trabalhada a paginação deve aumentar ou a informação do executável e dos dados ficarão 
distribuídas na memória principal. Surge a necessidade de segmentar o espaço da memória para a tabela 
de símbolos, o código fonte e pilha de chamadas do sistema. 
A utilização da segmentação ajuda no tratamento das estruturas de dados dos programas e 
proteção diferenciada para as informações na memória. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Romildo Martins Bezerra 
 
 
13 � 
 
 
Sistemas Operacionais Atuais 
 
Linux 
GNU/Linux ou simplesmente Linux, é um popular sistema operacional livre, composto pelo núcleo 
(kernel) Linux e pelas bibliotecas e ferramentas do projeto GNU. É um sistema do tipo Unix que 
implementa o padrão POSIX. 
O Linux hoje funciona em dezenas de plataformas, desde mainframes até um relógio de pulso, 
passando por várias arquiteturas: Intel, StrongARM, PowerPC, Alpha etc., com grande penetração também 
em dispositivos embarcados, como handheld, PVR, vídeo-jogos e centrais de entretenimento etc. O Linux 
tem um kernel híbrido monolítico. Drivers de dispositivo e extensões do kernel tipicamente rodam com 
acesso total ao hardware, embora alguns rodem em espaço de usuário. Ao contrário dos kernels 
monolíticos padrão, os drivers de dispositivo são facilmente configurados como módulos, e carregados e 
descarregados enquanto o sistema está rodando. Também ao contrário de kernels monolíticos padrão, 
drivers de dispositivo podem ser pré-inseridos sob certas condições. Essa última característica foi 
adicionada para corrigir o acesso a interrupções de hardware, e para melhorar o suporte a 
multiprocessamento simétrico. 
 
Windows 
Microsoft Windows é um sistema operacional extremamente popular, criado pela Microsoft, 
empresa fundada por Bill Gates e Paul Allen. O Windows é um produto comercial, com preços 
diferenciados para cada versão, embora haja uma enorme quantidade de cópias ilegais instaladas, porque 
ele é o sistema operacional mais copiado do mundo. Apesar do sistema ser conhecido pelas suas falhas 
críticas na segurança e como plataforma de vírus de computador e programas-espiões (spywares), o 
impacto deste sistema no mundo atual é simplesmente incalculável devido ao enorme número de cópias 
instaladas. Conhecimentos mínimos desse sistema, do seu funcionamento, da sua história e do seu 
contexto são, na visão de muitos, indispensáveis, mesmo para os leigos em informática. 
Os primeiros Windows, como o 1.0, 2.0 e 3.x, só são compatíveis em partições formatadas com o 
sistema de ficheiros FAT, ou como é chamado, FAT16. No salto do 3.1 para o 95B (Windows 95 OSR 2/OSR 
2.1), os HD's poderiam ser formatados em FAT32. Inicialmente lançado com o Windows NT, a tecnologia 
NTFS é agora o padrão de facto para esta classe. Com a convergência de ambos sistemas, o Windows XP 
passou também a preferir este formato. 
A principal linguagem de programação usada para se escrever o código-fonte das várias versões do 
Windows é a linguagem C++. Até à versão 3.11, o sistema rodava em 16 bits, daí em diante, em 32 bits. As 
últimas versões (como o XP, o 2003 e o futuro Windows Vista (nome de código Longhorn) está preparado 
para a tecnologia 64 bits. Esse sistema deverá incluir o sistema de arquivos WinFS, que acabou retirado do 
Windows Vista. 
 
Amoeba 
O sistema operacional distribuído Amoeba é o fruto da investigação de Andrew S. Tanenbaum, na 
Universidade Vrije na Holanda, . O objetivo do projeto era construir um sistema de timesharing que 
aparentasse ao utilizador que uma tarefa seria executada numa única máquina mesmo que estivesse 
realmente a correr em múltiplas máquinas. A última versão do projeto foi a 5.3 em 12 de fevereiro de 
2001. Depois de seu desenvolvimento, o Amoeba precisava de uma linguagem de programação de scripts, 
foi então que começou o desenvolvido do Python, evolucionado do ABC e Modula. 
 
Minix 
O Minix é uma versão do Unix, porém, gratuita e com o código fonte disponível. Isso significa que 
qualquer programador experiente pode fazer alterações nele. Ele foi criado originalmente para uso 
educacional, para quem quisesse estudar o Unix "em casa". No entanto, vale citar que ele foi escrito do 
“zero” e apesar de ser uma versão do Unix, não contém nenhum código da AT&T e por isso pode ser 
distribuído gratuitamente. 
Características 
o Multiprogramação por completo (múltiplos programas podem rodar ao mesmo tempo ). 
o Roda em 286, 386, 486, Pentium. 
o Suporta memória estendida (16MB no 286 e 4GB no 386, 486 e Pentium). 
o RS-232 serial line suporte com terminal emulation, kermit, zmodem, etc. 
Romildo Martins Bezerra 
 
 
14 � 
 
 
o Máximo de três usuários simultaneamente na mesma máquina. 
o Sistema de chamada compatível com POSIX. 
o Inteiramente escrito em C (SO, utilitários, bibliotecas etc.). 
o Compilador ANSI C. 
o Shell funcionalmente idêntico ao Bourne shell. 
o Rede TCP/IP. 
o 5 editores (emacs subset, vi clone, ex, ed, and simple screen editor). 
o Mais de 200 utilitários (cat, cp, ed, grep, kermit, ls, make, sort, etc.). 
o Mais de 300 bibliotecas (atoi, fork, malloc, read, stdio, etc.). 
 
O Minix é organizado em quatro camadas, onde a camada 1 e 2 formam o kernel: 
1º) Gerenciamento de Processos 
o Captura interrupções e traps, salvar e restaurar registradores, agendar as demais funções 
para realmente fazer a abstração de processo; 
o Gerenciar a mecânica das mensagens, verificar destinos legais, localizar buffers de envio e 
recebimento de memória física e copiar bytes do remetente para o destinatário. 
2º) Tarefas de Entrada e Saída 
o Processos de IO, um por dispositivo; 
o As tarefas de IO são chamadas drivers de dispositivos; 
o As tarefas não podem executar todas as instruções no nível da máquina, nem podem 
acessar todos os registradores da CPU, ou todas as partes da memória, ao contrário da 
camada 1; 
o Porém podem acessar regiões da memória que pertencem a processos com menos 
privilégios. 
3º) Processos de Servidor 
o Contém processos que fornecem serviços úteis ao usuário; 
o Existemem um nível menos privilegiado que o kernel; 
4º) Processos de Usuário 
o Shell, editores, compiladores, etc 
 
Pesquise 
1. Problema dos Filósofos 
2. Diferença entre paginação e segmentação de memória. 
3. Algoritmos de substituição de páginas. 
4. O funcionamento passo a passo de uma falta de página. 
5. Como a memória virtual é implementada no Windows e Linux. 
 
Temas para trabalhos 
1. Programação Concorente 
2. MINIX 
3. SOSIM 
 
 
Bibliografia 
[1] TANENBAUM, A., Organização Estruturada de Computadores, 5ª Edição, 2006. 
[2] TANENBAUM, A. Sistemas Operacionais Modernos. 2ª Edição 2006. 
[3] TOSCANI, S.; OLIVEIRA, R.; CARISSIMI, A. Sistemas operacionais. 3ª Edição Sagra Luzzatto, 2004.

Outros materiais