Buscar

Conceitos Fundamentais dos Sistemas Operacionais

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

PROFESSOR AQUI
Introdução à
Sistemas Operacionais
AULA nº 01
Prof. Bruno Roberto Silva
Conceitos Fundamentais
de Sistemas Operacionais
• A tecnologia tem avançado muito rapidamente em todas as áreas do conhecimento e novos
equipamentos são lançados a todo o momento para os mais variados fins.
• Além dos computadores, são os tablets, smartphones, smartwatchs, vídeo games, TVs e a
nossa porta os google-glass.
• Independente do tipo de equipamento, formato ou tamanho, todos têm um ponto em
comum, necessitam de um Sistema Operacional (SO) para funcionarem.
Conceitos Fundamentais
de Sistemas Operacionais
Os SOs variam de acordo o tipo de funções e hardware utilizado:
• Nos tablets, smartphones e smartwatchs teremos um SO projetado para facilitar a
interface do usuário com os programas a serem executados.
• Nos desktops (computadores pessoais) as otimizações são voltadas para aplicações
comerciais, jogos, etc.
• Em ambientes coorporativos, que se requer a utilização de computadores de grande
porte, os SOs têm um projeto mais voltado para a otimização de hardware.
• Na indústria, cujos equipamentos necessitam de alta precisão e confiabilidade, utilizam-se
SOs em tempo real que permitem a resposta a um evento ser feito em um espaço de tempo
determinado.
Visão Geral
• Um SO, por mais complexo que possa parecer, é apenas um software.
• Um computador moderno consiste em:
– (1) processadores, (2) memórias, (3) discos, (4) impressoras, (5) teclado, (6) mouse, (7) monitor,
(8) interfaces de rede e (9) outros dispositivos de E/S (entrada e saída).
• Se todo programador tivesse de compreender como todas essas partes funcionam em
detalhes, seu trabalho seria lento e com grandes possibilidades de erros.
Visão Geral
• Para os autores Tanenbaum e Boss (2016), uma das principais tarefas dos SOs é esconder
o hardware, transformando-o em abstrações de qualidade, limpas, elegantes e consistentes
com as quais o programador/programas possam trabalhar.
Definição
“Um Sistema Operacional é um programa que efetua
o gerenciamento dos componentes físicos do 
computador (hardware), como também uma base
para os programas aplicativos.
Além disso, atua como intermediário entre o usuário e
o hardware do computador.”
• Silberschatz et al. (2004).
Objetivo
• A função do SO é permitir uma interface homem máquina mais amigável com o usuário, isto
porque encapsula as complexas rotinas de acesso a recursos de hardware, tais como,
interface de programação e gerenciamento de recursos.
• EX: Salvar um pequeno texto, exige etapas
que demandam um grande conhecimento
da arquitetura interna do computador:
1. Localizar os dados do arquivo na memória.
2. Obter o nome do arquivo e local de gravação.
3. Validar os dados do item 2.
4. Posicionar o cabeçote de leitura e gravação no
cilindro correto.
5. Posicionar o cabeçote de leitura e gravação na
trilha correta.
6. Posicionar o cabeçote de leitura e gravação no
setor correto.
7. Salvar o arquivo.
Objetivo
E essa complexidade é tão grande assim???
• Considerando os discos rígidos modernos SATA (Serial ATA) usados
na maioria dos computadores, um livro (ANDERSON, 2007)
descrevendo uma versão inicial da interface do disco — o que um
programador deveria saber para usar o disco —, tinha mais de 450
páginas.
• Desde então, a interface foi revista múltiplas vezes e é mais
complicada do que em 2007. É claro que nenhum programador são iria
querer lidar com esse disco em nível de hardware. Em vez disso, um
software, chamado driver de disco, lida com o hardware e fornece
uma interface para ler e escrever blocos de dados, sem entrar nos
detalhes.
• SOs contêm muitos drivers para controlar dispositivos de E/S.
Definição
Os autores Tanenbaum e Woodhyll (1999) e Silberschatz et al. (2004), examinam os
SOs a partir de dois pontos de vista: topdown e bottom-up.
• Topdown (“de-cima-a-baixo”):
Modo de visão do usuário, o SO é um
software que permite a interação
entre o hardware e as aplicações.
Para o usuário, o SO fornece:
1. Acesso ao sistema.
2. Possibilidade de criar e gerenciar
arquivos e diretórios.
3. Ambiente para execução de programas.
4. Acesso aos dispositivos de entrada e
saída.
5. Acesso ao conteúdo de arquivos.
6. Detecção de erros.
• Bottom-up (“de-baixo-a-cima”):
É considerado um gerenciador de
recursos. Isto porque controla a
utilização dos recursos de hardware
pelas aplicações como também
quais e quando as aplicações podem
ser executadas. Ex. de recursos:
1. Tempo de CPU.
2. Espaço em memória.
3. Espaço em disco.
4. Acesso aos dispositivos de
comunicação.
5. Bibliotecas de software.
Definição
• Para que isso fique mais claro, podemos analisar o Sistema Operacional
dividindo-o em quatro componentes:
– (1) usuários, (2) programas aplicativos, (3) sistema operacional e (4) o hardware.
• Os usuários utilizam os aplicativos
(editor de texto, planilhas eletrônicas,
navegador web, etc) para diversas
tarefas.
• Os aplicativos dependem dos
recursos de hardware para executar
suas funções.
• O hardware é a parte mais básica
dos componentes, composto pela
unidade central de processamento
(CPU - Central Processing Unit),
memórias (RAM e ROM), dispositivos
periféricos (teclado, monitor, mouse,
impressora, etc.) e unidades de
armazenamento (disco rígido).
Definição
O SO fornece um ambiente de integração que possibilita a execução dos
programas e o controle e coordenação da utilização dos recursos de
hardware pelos aplicativos.
• O autor Silberschatz et al. (2004) considera o SO como um alocador de recursos.
• É de responsabilidade do SO resolver conflitos na utilização destes recursos.
• COMO RESOLVER O SEGUINTE CONFLITO?
Cinco usuários com PCs em rede resolvem
mandar ao mesmo tempo um texto para uma
impressora compartilhada na rede. Qual texto o
sistema operacional deve imprimir primeiro?
Imprimir parte do texto do usuário 1, em seguida,
parte do usuário 2 e assim por diante?
Como o sistema operacional resolve este
conflito de alocação de recursos?
Resolvendo Conflitos
SOLUÇÃO: (1) Armazenar os arquivos enviados numa fila de impressão no disco rígido.
(2) Imprimir todos os arquivos da fila em sequência.
Este é um pequeno exemplo do que acontece a todo o momento em um SO, que é procurar
gerenciar a utilização dos recursos da forma mais eficiente possível, procurar minimizar as falhas,
efetuar controle de acesso para que os usuários possam acessar apenas os recursos que lhes foram
autorizados, entre outros. Em resumo, os objetivos fundamentais dos SOs são executar os
aplicativos dos usuários e facilitar a resolução de seus problemas.
Evolução Histórica dos
Sistemas Operacionais
Para estudarmos a história dos SOs devemos estudar a evolução dos
computadores, isto porque os dois estão diretamente ligados:
• Segundo Machado e Maia (2007) a máquina de cálculos de
equações polinomiais conhecida como Máquina Analítica
(Analytical Engine) inventada pelo matemático inglês
Charles Babbage em 1822 é o que mais se assemelha a
um computador atual. Isto porque possuía os conceitos de
unidade central de processamento, memória, unidade de
controle e dispositivos de entrada/saída.
OBS: A Máquina Analítica não
possuía SO, apenas sequencias
de instruções criadas pela 1ª
programadora da história,
Augusta Ada Byron discípula
de Babbage.
Década de 1940: válvulas e painéis com plugs
Evolução Histórica dos
Sistemas Operacionais
• Durante a 2ª guerra mundial houve um esforço muito grande no desenvolvimento de
máquinas que pudessem agilizar os procedimentos manuais efetuados na área militar,
principalmente para cálculos balísticos.
• Assim, em 1943 começou a ser desenvolvido o ENIAC (Electronic Numerical Integrator
Analyzer and Computer – Computador Integrador Numérico Eletrônico), 1º computador
eletrônico de grande porte idealizado pelos cientistas norte-americanos John Eckert e John
Mauchly, da Electronic Control Company.
Evolução Histórica dosSistemas Operacionais
• A arquitetura dos computadores modernos de hoje (Arquitetura von Neumann), foi
idealizado por um dos consultores do projeto ENIAC, o Prof. John von Neumann.
• Segundo esta arquitetura, uma máquina digital (computador) deve possuir:
1. Memória: capaz de armazenar em um mesmo espaço dados e instruções dos programas;
2. Unidade de processamento (CPU – Central Processing Unit): responsável por executar as instruções
dos programas armazenados na memória;
3. Unidade de controle (CU – Control Unit): responsável pela interpretação das instruções de programa e
de controlar a sequência de tempo das atividades necessárias para sua execução;
4. Unidade aritmética e lógica (ALU – Arithmetical and Logical Unit): responsável pela execução das
operações aritméticas (somas, subtrações, etc.) e lógicas (comparações, AND, OR, etc.) contidas nas
instruções dos programas;
5. Registradores: pequenas áreas de memória localizada na CPU para armazenamento temporário de
dados dos programas em execução, resultados de instruções, estado interno da CPU, etc.
6. Dispositivos de entrada e saída: responsáveis por traduzir os dados inseridos pelo usuário no
computador (ex.: teclado, cartões perfurados, fitas ou discos magnéticas etc.) para a memória como
também traduzir da memória para um formato externo (ex.: fitas ou discos magnéticos, telas de vídeo,
etc.)
Década de 1950: transistores e sistemas batch
Evolução Histórica dos
Sistemas Operacionais
• O surgimento dos transístores permitiu a diminuição do tamanho dos computadores, antes
feitos a válvula, o que proporcionou um aumento do poder de processamento dos
equipamentos. Grandes empresas e corporações começaram a adquirir computadores,
conhecidos como Mainframes, permitindo a separação entre os operadores, programadores
e técnicos de manutenção.
• A programação, feita em cartões
perfurados, eram entregues ao operador
do computador para serem processados.
• Os programas, também denominados
Jobs, eram lidos por uma leitora e
gravados em uma fita de entrada.
• O computador então lia a fita e
executava um programa de cada vez.
• O resultado do processamento era então
gravado numa fita de saída.
• Esta técnica, onde são processados um
conjunto de programas, ficou conhecido
como processamento batch.
Década de 1950: transistores e sistemas batch
Evolução Histórica dos
Sistemas Operacionais
• Em 1953 os usuários do computador IBM 701, do Centro de Pesquisas da General Motors,
desenvolveram o primeiro SO, chamado de Monitor. O Monitor, chamado assim pela sua
simplicidade, tinha como objetivo automatizar as tarefas manuais executadas na época.
• Neste período surgiram as primeiras linguagens de programação de alto nível, tais como
FORTRAN, ALGOL e COBOL. Houve então um grande avanço no desenvolvimento e
manutenção dos programas que não mais tinham uma relação direta com o hardware dos
computadores. Consequentemente, os SOs evoluíram para atender as demandas das
linguagens de programação e assim facilitar o trabalho de codificar, executar e depurar os
programas.
Década de 1960 - 1980: circuitos integrados e multiprogramação
Evolução Histórica dos
Sistemas Operacionais
• Com o surgimento dos circuitos integrados os computadores tiveram uma redução de custo
de aquisição o que proporcionou sua viabilização nas empresas. Várias inovações foram
implementadas nos SOs, tais como multiprogramação, multiprocessamento, time-
sharing e memória virtual.
• A década de 1970 foi marcada com a miniaturização dos componentes (chips) baseadas
nas tecnologias de Integração em Larga Escala (Lage Scale Integration – LSI) e a
Integração em Muito Larga Escala (Very Lage Scale Integration – VLSI), o surgimento das
primeiras redes de computadores, além do desenvolvimento de novas linguagens de
programação de alto nível.
Década de 1960 - 1980: circuitos integrados e multiprogramação
Evolução Histórica dos
Sistemas Operacionais
• Na década de 1980 os fabricantes de computadores passam a produzir microcomputadores
utilizando microprocessadores. A IBM cria a filosofia de computadores pessoais, que
ajudou na evolução dos SOs. Os microcomputadores da época possuíam baixa capacidade
de armazenamento e os SOs eram monousuário/monotarefa. Os SOs evoluíram para
monousuário/multitarefa com a incorporação de discos rígidos e outros periféricos nos
microcomputadores.
• Em meados da década de 1980 crescem as redes de computadores pessoais utilizando
SOs para rede e distribuídos.
– Os SOs para rede permitem que os usuários se conectem a máquinas remotas e utilizem recursos
compartilhados. O usuário tem plena consciência da existência de vários computadores conectados.
– Nos SOs distribuídos os usuários não têm consciência onde estão armazenados seus arquivos ou
onde estão sendo executados seus programas. Apesar do SO distribuído ser composto de múltiplos
computadores conectados, as operações são executadas de tal forma que o usuário tem impressão
de estar trabalhando um único computador.
Década de 1990 - 2000: Windows e Linux
Evolução Histórica dos
Sistemas Operacionais
• A Internet surge na década de 1990 e com a decorrência de sua rápida evolução, força os
SOs a oferecerem suporte ao protocolo TCP/IP utilizado na Internet. Nesta mesma década o
Windows e o Unix, passaram a adotar interfaces gráficas.
• Surge o Linux em 1991 através do desenvolvimento do finlandês Linus Torvalds e de
trabalhos colaborativos de diversos programadores. A forma colaborativa e os avanços da
Internet possibilitaram que outros softwares abertos, como o já citado SO Linux, o banco de
dados MySQL, o servidores web Apache entre outros, pudessem ser desenvolvidos e
distribuídos sem custos aos seus usuários.
• Na década de 2000 houve uma mudança radical no desenvolvimento de computadores
frente às exigências cada vez maiores de equipamentos mais eficientes e com maior poder
de processamento. Os SOs voltados para as novas arquiteturas de processadores 64 bits,
são dotados de interfaces usuário-máquina que exploram cada vez mais imagens, sons e
linguagens naturais para proporcionar ao usuário uma interatividade com o computador mais
intuitiva, natural e simples.
Década de 2010: Cloud Computing, smartphones e tablets
Evolução Histórica dos
Sistemas Operacionais
• O modelo de Computação em Nuvem trouxe mudanças nos modelos econômicos da TI,
tanto do lados do consumidor quanto do lado dos fornecedores:
– SaaS – Software as a Service;
– IaaS – Infraestructure as a Service;
– PaaS – Plataform as a Service.
• A difusão e popularização de uso de dispositivos móveis em escala global, vem
fazendo com que os fabricantes invistam em SOs para estas plataformas.
• A evolução das gerações dos smartphones (1G, 2G, 3G e 4G), vem permitindo conexões
mais rápidas e qualidades de vídeo e áudio superiores. Estes avanços permitem o
desenvolvimento de SOs com diversas funcionalidades de comunicação.
Revisão sobre hardware de
computadores
Um SO está intimamente ligado ao hardware do computador no qual ele é executado e,
por isso, vamos revisar brevemente estes componentes:
• Alguns dos componentes de um computador pessoal simples.
Processadores
Revisão sobre hardware
de computadores
• Também chamado UCP (Unidade Central de Processamento), gerencia todo o SO.
• Controla e executa as instruções presentes na memória principal.
• Sincroniza suas funções através de um sinal de clock, gerado ciclicamente.
– Ciclo básico: (1) buscar a 1ª instrução da memória; (2) decodificá-la e (3) executá-la.
• Possui um conjunto específico de instruções que ela consegue executar.
Memória
Principal
Dispositivos
de E/ S
Processador / UCP
Unidade Lógica
e Aritmética
Registradores
Unidade de
Controle
• UC: Gerencia as atividades (ex:
gravação de dados, buscas na memória)
dos componentes do computador.
• ULA: Realiza as operações lógicas
(testes e comparações) e aritméticas
(somas e subtrações).
• Registradores: Armazenam dadostemporariamente, funcionam como uma
memória de alta velocidade.
Revisão sobre hardware
de computadores
• O acesso do processador à memória é mediado por um controlador específico (que pode
estar fisicamente dentro do próprio chip do processador):
– Unidade de Gerência de Memória (MMU- Memory Management Unit).
• Ela é responsável por:
– analisar cada endereço de memória acessado pelo
processador;
– validá-lo;
– efetuar conversões de endereçamento porventura
necessárias;
– executar a operação solicitada pelo processador
(leitura ou escrita de uma posição de memória).
Processadores
Memórias
Revisão sobre hardware
de computadores
• O 2º principal componente em qualquer computador.
• O ideal é que uma memória seja: (1) rápida ao extremo (para que a CPU não seja atrasada
pela memória); (2) abundantemente grande (3) e muito barata.
maior
capacidade de
armazenamento
maior custo e
velocidade
de acesso
Memória Secundária
Memória Cache
Memória Principal
Registradores
Nenhuma tecnologia atual 
satisfaz todas as metas, 
assim, utiliza-se uma 
abordagem hierárquica.
Memórias
Revisão sobre hardware
de computadores
• REGISTRADORES: Ficam dentro da CPU e não há atraso ao acessá-los.
• CACHE: Armazena uma pequena parte do conteúdo da memória principal (as mais
requisitadas). Toda vez que o processador faz referência a um dado armazenado na
memória, é verificado, primeiramente, se o mesmo encontra-se na memória cache. Caso o
processador encontre o dado (cache hit), não há necessidade do acesso à memória
principal. Caso negativo, o processador transfere um bloco de dados da memória principal
para a cache (cache miss). CPUs modernas têm 2 delas (L1 e L2).
• PRINCIPAL: Local onde são armazenados instruções e dados, sendo classificada conforme
sua volatilidade. A RAM e CMOS são voláteis, enquanto as ROM, EPROM, flash são tipo
não voláteis.
• SECUNDÁRIA: Meio permanente de armazenamento de programas e dados (Ex.: HDs).
Enquanto o acesso à memória secundária ocorre em milissegundos, o acesso à memória
principal é de nanosegundos. Os SSDs, são memórias secundárias, porém, são mais
rápidos que os HDs.
Dispositivos de Entrada e Saída (E/S)
Revisão sobre hardware
de computadores
• São utilizados para permitir a comunicação entre o SO e o mundo externo.
• Consistem em geral em 2 partes: (1) um controlador e (2) o dispositivo em si.
– O controlador é um chip (ou um conjunto) que controla fisicamente o dispositivo. Ele aceita
comandos do SO, por exemplo, para ler dados do dispositivo, e os executa.
• O software que conversa com um controlador, dando a ele comandos e aceitando respostas,
é chamado de driver de dispositivo.
– Cada fabricante de controladores fornecem um driver para cada SO a que dá suporte.
• Para uso, o driver precisa ser colocado no núcleo do SO. Há 3 maneiras para isso:
1. Religando o núcleo com o novo driver e então reinicializar o sistema (UNIX antigos).
2. Informando ao SO que ele precisa do driver e então reinicializar o sistema. No momento da inicialização, o SO vai e
encontra os drivers que ele precisa e os carrega (Windows).
3. Capacitando o SO a aceitar novos drivers durante sua execução e instalá-los rapidamente sem precisar ser
reinicializado. (Dispositivos hot-pluggable - USB e IEEE 1394/FireWire - carregam drivers dinamicamente).
Barramentos
Revisão sobre hardware
de computadores
• Todas as transferências de dados entre processador, memória e periféricos são feitas
através dos barramentos.
• No geral, possuem linhas:
– De endereços: indica a posição de
memória (ou o dispositivo) a acessar;
– De controle: indica a operação a
efetuar (leitura ou escrita);
– De dados: transporta a informação a
ser transferida entre o processador e
a memória ou um controlador de
dispositivo.
Barramento processador-memória
B
a
rr
a
m
e
n
to
 d
e
 E
/
S
B
a
rr
a
m
e
n
to
 d
e
 E
/
S
Adaptador Adaptador
Memória
Principal
UCP
Revisão sobre hardware
de computadores
• Visão geral detalhada:
Classificação de
Sistemas Operacionais
• Com a evolução dos computadores, houve a necessidade da evolução dos SOs para
suportar os novos recursos de hardware e das aplicações por ele suportado.
• Neste sentido, os SOs podem ser classificados conforme o seu processamento, tarefas,
usuários e interface.
Sistema Monoprogramáveis/Monotarefas
Classificação de
Sistemas Operacionais
• Foram os primeiros sistemas a serem utilizados. Este tipo de SO tem a característica de
permitir a execução de um único programa por vez.
• Neste SO, o processador, memória e os
periféricos do computador ficam dedicados
exclusivamente para um único programa em
execução.
• Além de executar um programa por vez, os
recursos do sistema são alocados para uma tarefa
por vez.
• Nesse sentido quando o programa está
esperando a entrada de um dado pelo usuário,
o processador fica parado, sem qualquer tipo
de processamento.
Sistema Multiprogramáveis/Multitarefa
Classificação de
Sistemas Operacionais
• Têm como característica permitir o compartilhamento dos recursos do computador com
vários usuários e aplicações.
• Os programas (processos) carregados em
memória ficam enfileirados, esperando sua
vez de utilizar a UCP. Cada processo recebe
um tempo para a utilização do processador.
• Para o usuário final a impressão é de que
vários programas estão sendo executados
simultaneamente.
• Esta alternância de processos é denominada
de concorrência e é gerenciada pelo SO de
forma ordenada e protegida.
Sistema Multiprogramáveis/Multitarefa – monousuário e multiusuário
Classificação de
Sistemas Operacionais
Estão relacionados ao número de usuários que interagem com o SO.
• Monousuário: Computadores pessoais e estações de trabalho onde há apenas um único
usuário interagindo com o sistema.
• Multiusuário: São ambientes interativos que possibilitam a diversos usuários conectarem-
se ao sistema simultaneamente.
Um usuário Dois ou mais usuários
Monoprogramação/Monotarefa Monousuário N/A
Multiprogramação/Multitarefa Monousuário Multiusuário
Classificação de
Sistemas Operacionais
• Surgiram para serem utilizados nos primeiros computadores, os Mainframes e, posteriormente, nos
computadores pessoais utilizados por um usuário por vez.
• O MS_DOS, muito utilizado nas décadas de 1980 e 1990 é um exemplo de SO
monoprogramável/monotarefa.
• Por não compartilhar recursos, como processador, memória e dispositivos de entrada/saída, este tipo de
SO é de simples implementação.
• A implementação destes SOs são mais complexas, mas apresentam uma maior eficiência que os
monoprogramáveis e uma sensível redução de custo, em função da possibilidade de compartilhar os
recursos disponíveis de hardware entre diferentes aplicações.
Sistema Monoprogramáveis/Monotarefas
Sistema Multiprogramáveis/Multitarefa
Classificação de Processamento
• De acordo como as aplicações são gerenciadas, os sistemas multiprogramáveis podem
ser classificados como:
– Sistemas Batch, de Tempo Compartilhado ou de Tempo Real.
Sistemas Batch (lote)
Classificação de sistemas 
multiprogramáveis
• Nesse sistema, a programação era feita com cartões perfurados.
– Os cartões eram lidos e armazenados em disco ou fita, que em seguida eram utilizados para
carregar os dados para processamento.
– Uma vez executados, o resultado do processamento era armazenado em disco ou fita de saída.
Apesar do tempo de resposta longo, era considerado muito eficiente.
(a) Programadores levavam cartões para o 1401; (b) O 1401 lia o lote de tarefas em uma fita.
(c) O operador levava a fita de entrada para o 7094; (d) O 7094 executava o processamento.
(e) O operador levava a fita de saída para o 1401; (f) O 1401 imprimia as saídas.
Sistemas de Tempo Compartilhado (time-sharing)
Classificação de sistemas 
multiprogramáveis
• São sistemas onde o tempo do processador é dividido em pequenas partes (time-slice)
permitindo a cada programa utilizar uma destas partes para a sua execução.• Caso a fatia de tempo não seja suficiente para a conclusão do programa, ele é
interrompido pelo SO e substituído por um outro, enquanto fica aguardando por uma nova
fatia de tempo.
• Os usuários interagem com o sistema através de comandos
digitados em terminais compostos por teclado, pelo monitor e pelo
mouse.
• Grande parte das atuais aplicações comerciais é processada neste tipo
de sistema.
Sistemas de Tempo Real (RTOS)
Classificação de sistemas 
multiprogramáveis
• O tempo do processador é distribuído conforme a prioridade de cada aplicação.
• O conceito de tempo compartilhado não é aplicado neste tipo de sistema. Assim, o SO deve
garantir a disponibilidade de todos os recursos necessários para execução de um programa
até que este termine ou que surja um de maior prioridade.
• O SO não define as prioridades de execução de um programa, esta definição é feita pela
própria aplicação.
• Esses sistemas são empregados em aplicações de controle e monitoramento de processos
onde o tempo de processamento é fator crítico, como em casos de usinas termoelétricas
ou nucleares, refinarias de petróleo, tráfego aéreo, etc.
São classificados, basicamente, em:
– Críticos: fornece garantias absolutas de que uma ação ocorrerá num determinado momento.
– Não Críticos: atrasos ocasionais (não desejáveis), não causam danos permanentes.
Sistemas de Tempo Real (RTOS)
Classificação de sistemas 
multiprogramáveis
• Críticos • Não Críticos
Sistemas com múltiplos processadores
• Possuem mais de um processador interligado e trabalhando em conjunto.
• Estes processadores podem estar: (1) num mesmo computador; (2) espalhados fisicamente em uma
rede de computadores.
• Programas podem ser executados simultaneamente, ou um programa pode ser dividido em partes e
executados em processadores diferentes numa mesma máquina ou em várias.
A forma de comunicação entre
os processadores, o grau de
compartilhamento da memória
principal e dos dispositivos de
entrada e saída, definem a
classificação destes SOs em:
Fortemente acoplados e
Fracamente acoplados.
Sistemas Fortemente Acoplados (Multiprocessadores)
Sistemas com múltiplos processadores
• Possuem vários processadores compartilhando uma única memória física e dispositivos de
entrada e saída e apenas um SO efetuando o gerenciamento.
• Segundo Silberschatz et al. (2004), estes sistemas podem ser divididos em:
– Multiprocessamento Simétrico (SMP – Symmetric Multiprocessing);
– Multiprocessamento Assimétrico (NUMA – Non-Uniform Memory Access).
• SMP: os processadores compartilham o
mesmo tempo de memória.
• NUMA: o tempo de acesso à memória pode
variar dependendo da localização física dos
processadores em relação à memória.
Sistemas Fracamente Acoplados (multicompudadores)
Sistemas com múltiplos processadores
• Conectam vários computadores, funcionando independentes, por linhas de comunicação,
tendo cada um sua própria UCP, memória, dispositivos de E/S e SO.
• Considerando o grau de integração, estes sistemas podem ser classificados como:
– Sistemas Operacionais de Rede (SOR);
– Sistemas Distribuídos.
• SORs: os recursos (diretórios, impressora,
serviços, etc.) são compartilhados. O
usuário tem conhecimento dos
computadores da rede e quais recursos e
serviços disponíveis em cada um.
• Distribuídos: os recursos e serviços
individuais de cada computador são
tratados com um único conjunto. O usuário
tem a sensação de estar trabalhando num
sistema centralizado e não em rede (clusters).
Concorrência
• É o princípio básico dos SOs multiprogramáveis.
• Torna possível que o processador execute várias tarefas ao mesmo tempo, permitindo que
vários programas sejam executados concorrentemente pelo SO.
• Surgiu a partir de limitações dos SOs monoprogramáveis, nos quais recursos computacionais (UCP,
memórias e dispositivos de E/S) eram utilizados de maneira pouco eficiente (ficavam ociosos), limitando o
desempenho dessas arquiteturas.
2
(a) Sistema Monoprogramável
tempo tempo
E/ S E/ S
UCP UCPlivre 11
1
(b) Sistema Multiprogramável
EX: Enquanto uma leitura em disco é realizada, o processador permanece ocioso. O tempo de espera é longo, já 
que as operações de E/S são lentas, se comparadas com a velocidade do processador em executar instruções.
Interrupções
Durante a execução das instruções de um programa, podem ocorrer eventos inesperados, que
forcem o processador a desviar da sequência original do programa.
• Estes eventos são conhecidos como interrupções.
– É sempre gerada por algum evento externo ao programa, onde muitas vezes, um dispositivo precisa
informar ao processador rapidamente sobre um evento interno. EX: (1) a chegada de um pacote de
rede; (2) um clique de mouse; (3) a conclusão de uma operação de disco.
DIAGRAMA: Mecanismo de Interrupção.
Durante a ordem de execução de cada instrução de um
programa, o processador verifica se houve alguma
ocorrência de interrupção. Caso positivo, o processador
suspende a execução da próxima instrução e desvia para
uma rotina chamada de rotina de tratamento de
interrupção, para tratar o evento.
Antes de desviar para a rotina, os dados dos registradores
são salvos permitindo que após o tratamento da
interrupção, o processador possa retornar ao código que
estava sendo executado quando recebeu a interrupção.
Interrupções
Exemplo de um tratamento de interrupção:
• está sendo executado um determinado programa pelo processador;
• um pen-drive é conectado a porta USB;
• a placa de dispositivo de entrada e saída envia uma interrupção para o processador;
• o processador para a execução do programa e desvia para um tratamento de interrupção;
• a rotina de tratamento é executada, atualizando as estruturas do sistema operacional e exibindo
uma mensagem ao usuário informando da conexão do pen-drive;
• finalizando a rotina de tratamento da interrupção o processador retorna à execução do programa
interrompido anteriormente.
A utilização de interrupção permitiu o desenvolvimento de concorrência nos computadores.
Interrupções X Exceções
Autores distinguem os 2 termos de acordo com o tipo de evento ocorrido:
• INTERRUPÇÕES: Decorrentes de eventos assíncronos (não relacionados à instrução do
programa corrente - imprevisíveis), gerada por algum periférico.
• EXCEÇÕES: Gerada por um evento síncrono (resultado direto da execução de uma instrução do
próprio programa), como a divisão de um número por zero. São previsíveis.
O mecanismo de interrupção torna eficiente a interação do processador com os dispositivos 
periféricos. Se não existissem interrupções, o processador perderia muito tempo “varrendo” todos os 
dispositivos do sistema para verificar se há eventos a serem tratados.
Os TRAPs (System Call), também são consideradas como um tipo de desvio/interrupção.
Buffering
• Utiliza uma área na memória para transferir dados entre os dispositivos de E/S e a memória.
• Nessa técnica, os dado são transferidos primeiramente para o buffer, permitindo que o
dispositivo inicie uma nova leitura/gravação, enquanto a CPU manipula os dados do buffer.
• Reduz o problema da disparidade da velocidade de processamento e dispositivos de E/S.
• Objetiva manter CPU e dispositivos de E/S ocupados na maior parte do tempo.
• O buffer possui uma fila FIFO podendo conter vários registros (unidade de transferência
usada no mecanismo de buffering).
Memória
Principal
UCP
Buffer
gravação gravação
leitura leitura
Controlador
Spooling (simultaneous pefipheral operation on-line)
• Introduzida no final dos anos 50, o processamento por Sistemas Batch era muito utilizado.
• Como as operações E/S são lentas, a CPU ficava ociosa à espera de dados.
• No spooling, vários programas (JOBS) eram armazenados em uma fita magnética, então
eram enviados para processamento, reduzindo o tempo de execução e transição dos jobs.
• Da mesma forma um job poderia direcionar as saídas para impressora, para outra fita.
• Realiza apenas processamento sequencial, devidoàs fitas magnéticas (em ordem).
• Mais eficiência com o surgimento de dispositivos de acesso direto, como discos e
atribuição de prioridades aos jobs.
Programa ImpressoraArquivo
de Spool
Sistema OperacionalSistema Operacional
É semelhante à técnica de buffering. Está presente atualmente no gerenciamento de impressão.
Reentrância
• Capacidade de um código executável (código
reentrante) ser compartilhado por vários
usuários, exigindo apenas uma cópia do
programa em memória.
• Permite que cada usuário esteja executando um
trecho diferente do código reentrante,
manipulando dados exclusivos de cada usuário.
• Promove o uso mais eficiente da memória e
um desempenho maior do sistema.
Memória Principal
código reentrante
área de dados do usuário A
usuário A usuário C
usuário B usuário D
área de dados do usuário B
área de dados do usuário C
área de dados do usuário D
Em sistemas multiprogramáveis, é normal que vários
usuários utilizem os mesmos aplicativos
simultaneamente, como editores de texto, compiladores,
entre outros utilitários.
Nestes casos, se cada usuário que fosse utilizar um
destes aplicativos trouxesse o código executável para a
memória haveria então diversas cópias de um
mesmo programa ocupando espaço na memória, o
que causaria um grande desperdício de espaço.
Estruturas dos
Sistemas Operacionais
• O SO, através de um conjunto de rotinas (tarefas), oferece serviços aos usuários do
sistema, aos programas que estão sendo executados e a outras rotinas do próprio sistema.
O conjunto destas rotinas é chamado Kernel (cérebro) ou Núcleo.
AS PRINCIPAIS FUNÇÕES DO KERNEL SÃO:
• tratamento de interrupções e exceções;
• criação e eliminação de processos e threads;
• sincronização e comunicação entre processos e threads;
• escalonamento e controle dos processos e threads;
• gerência de memória;
• gerência de sistema de arquivos;
• gerência de dispositivos de E/S;
• suporte a redes locais e distribuídas;
• contabilização do uso do sistema;
• auditoria e segurança do sistema.
Estruturas dos
Sistemas Operacionais
• Estrutura de um SO típico em detalhes:
u
su
ár
io
si
st
em
a
so
ft
w
ar
e
h
ar
d
w
ar
e
COMPONENTES MAIS RELEVANTES:
• Núcleo: gerencia os recursos do hardware usados
pelas aplicações.
• Inicialização: reconhece os dispositivos instalados e
carrega o núcleo do sistema na memória.
• Drivers: módulos de código para acessar os
dispositivos físicos.
• Utilitários: funcionalidades complementares:
formatação de discos, shell de comandos, interface
gráfica, etc.
Estruturas dos
Sistemas Operacionais
• Por questões de segurança, núcleo, drivers, utilitários e aplicações, devem ser
diferenciados em sua capacidade de interagir com o hardware.
– Enquanto o núcleo e os drivers devem ter pleno acesso ao hardware, para poder configurá-lo e
gerenciá-lo, os aplicativos e utilitários devem ter acesso mais restrito a ele, para não interferir nas
configurações e na gerência, o que poderia desestabilizar o sistema inteiro.
No geral, os processadores modernos implementam 2 níveis de acesso:
• MODO KERNEL (Usado pelo núcleo e drivers): Todas as instruções do processador podem ser executadas, e
todos os recursos internos (registradores e portas de E/S) e áreas de memória podem ser acessados.
• MODO USUÁRIO (Usado pelos utilitários e aplicações): Somente um subconjunto das instruções do processador
e registradores estão disponíveis. EX: instruções consideradas “perigosas”, como RESET (reiniciar o processador)
e IN/OUT (acessar portas de E/S), são proibidas. Tentativas de acesso inválidas geram exceções, abortando o
programa em *execução.
*Gerando a famosa frase “este programa executou uma instrução ilegal e será finalizado”, no caso do Windows.
Modos/Níveis de Acesso
Estruturas dos
Sistemas Operacionais
• O SO pode configurar a Unidade de Gerência de Memória* (MMU) para criar uma área de
memória exclusiva para cada aplicação, isolada das demais e do núcleo.
*Memory Management Unit.
Separação do Núcleo
Estruturas dos
Sistemas Operacionais
• Atua como um intermediário para que as aplicações acessem os serviços do Kernel
chamando uma das suas rotinas (funções). O serviço é processado, com base nos
parâmetros definidos na System Call, e retorna à aplicação os resultados obtidos.
EXEMPLOS DE FUNÇÕES:
• Abrir/ler/escrever/fechar arquivos;
• Enviar/receber dados através da rede;
• Ler teclado;
• Escrever dados na tela.
M
o
d
o
 K
e
rn
e
l
M
o
d
o
 U
s
u
á
ri
o
M
o
d
o
 U
s
u
á
ri
o
Chamada de Sistema (System Call - TRAP)
Estruturas dos
Sistemas Operacionais
• As rotinas do sistema (System Calls) podem ser divididas por grupo de função:
FUNÇÕES SYSTEM CALLS
Gerência de processos e threads
Criação e eliminação de processos e threads
Alteração das características de processos e threads
Sincronização e comunicação entre processos e threads
Obtenção de informações sobre processos e threads
Gerência de memória Alocação e desalocação de memória
Gerência do sistema de arquivos
Criação e eliminação de arquivos e diretórios
Alteração das características de arquivos e diretórios
Abrir e fechar arquivos
Leitura e gravação em arquivos
Obtenção de informações sobre arquivos e diretórios
Gerência de dispositivos
Alocação e desalocação de dispositivos
Operações de entrada/saída em dispositivos
Obtenção de informações sobre dispositivos
Estruturas dos
Sistemas Operacionais
• O termo System Call é tipicamente utilizado em sistemas Unix, porém, em outros sistemas,
o mesmo conceito é apresentado com diferentes nomes:
– System Services – OpenVMS;
– API¹ Win32 – MS Windows;
– API POSIX² – Unix (A maioria dos SOs modernos oferecem algum suporte a esta API).
¹Application Program Interface;
² Portable Operating System Interface for Unix.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("Olá Mundo!\n");
return 0;
} 
• As APIs permitem que os programadores não
precisem conhecer os detalhes envolvidos, por
exemplo, em um simples comando de leitura a um
arquivo, utilizando uma linguagem de alto nível.
• O comando da linguagem de alto nível é convertido
pelo compilador para uma chamada a uma rotina
específica que, quando executada, verifica a
ocorrência de erros e retorna os dados ao programa de
forma transparente ao usuário.
Estruturas dos
Sistemas Operacionais
• Permite que o usuário se comunique de uma forma
simples com o SO para realizar tarefas específicas.
• Cada SO possui sua linguagem de comandos.
• Após ser digitado, o comando é interpretado pelo
shell (interpretador), que verifica a sintaxe do
comando, faz chamadas a rotinas do sistema e
apresenta um resultado ou imagem informativa.
• Geralmente, o shell não faz parte do núcleo do
SO, permitindo a criação de diferentes linguagens de
controle para um mesmo sistema (ex. Unix).
• Na maioria dos SOs, as linguagens de comandos
evoluíram para permitir uma interação mais amigável
com os usuários, utilizando interfaces gráficas.
• As linguagens de comandos são poderosas,
permitindo criar uma sequência de ações (scripts).
Linguagem de Comandos
Estruturas dos
Sistemas Operacionais
• Exemplos de comandos disponíveis no sistema Microsoft Windows.
COMANDO DESCRIÇÃO
dir Lista o conteúdo de um diretório
cd Altera o diretório default
type Exibe o conteúdo de um arquivo
dell Elimina arquivos
mkdir Cria um diretório
ver Mostra a versão do Windows
Estruturas dos
Sistemas Operacionais
• Quando o computador é ligado, não há SO carregado na memória da máquina.
• O SO pode ser armazenado no HD ou CDs/DVDs.
• Os componentes do SO são carregados na memória sempre que a máquina é ligada.
• Ao ser desligado, as aplicações e componentes do SO são desativadas ordenadamente,
garantindo sua integridade.
Ativação (boot) /Desativação do Sistema (shutdown)
Disco Memória
Principal
boot
Sistema
Operacional
Área do
Sistema
Operacional
Arquiteturas do Núcleo
• SOs são normalmente grandes e complexas coleções derotinas de software.
• Projetistas devem dar grande ênfase à sua organização interna e estrutura.
• A estrutura do núcleo do SO, ou seja, a maneira como o código do sistema é organizado e
o inter-relacionamento entre seus diversos componentes, pode variar conforme a concepção
do projeto.
Aspectos a considerar:
• Separação entre núcleo e userspace;
• Modularização;
• Desempenho;
• Segurança.
VÍDEO: How Linux is Built: https://www.youtube.com/watch?v=yVpbFMhOAwE
https://www.youtube.com/watch?v=yVpbFMhOAwE
Monolítica
Arquiteturas do Núcleo
Mónos (único) + Líthos (pedra) = um bloco único.
• É um “bloco maciço” de código que opera em modo
núcleo, com acesso a todos os recursos do hardware e
sem restrições de acesso à memória.
• Os componentes internos do SO podem se relacionar
entre si conforme suas necessidades.
• Os primeiros SOs foram desenvolvidos com base neste
modelo.
• Vantagens: desempenho (qualquer componente do
núcleo pode acessar os demais diretamente); rapidez;
compactação.
• Desvantagens: robustez (possíveis erros de acesso ao
hardware); complexidade no desenvolvimento.
Modo kernel
aplicação aplicação
Modo usuário
System call
Hardware
Ex: MS-DOS, Windows 9x (95 - ME); UNIX; Linux.
Microkernel
Arquiteturas do Núcleo
• Busca tornar o núcleo do SO o menor possível.
• Os serviços do sistemas são disponibilizados através de
processos responsáveis por oferecer um conjunto
específico de funções (figura).
• A principal função do núcleo é realizar a troca de
mensagens (comunicação) entre a aplicação (cliente)
solicitante de serviços, e um determinado processo
responsável (servidor).
• Vários SOs atuais adotam parcialmente essa
estruturação (ex: MacOS X, Windows NT).
• Vantagens: estabilidade; modularidade.
• Desvantagens: baixo desempenho.
Modo kernel
Modo usuário
Microkernel
m
e
n
sa
g
e
m
m
e
n
sa
g
e
m
Hardware
Ex: Minix 3, Symbian.
Monolítica X Microkernel
Arquiteturas do Núcleo
Camadas
Arquiteturas do Núcleo
• Divisão em níveis sobrepostos (hierarquia).
• Cada camada oferece um conjunto de funções que podem ser
utilizadas apenas pelas camada superiores.
• Neste tipo de implementação, as camadas mais internas são
mais privilegiadas que as mais externas.
• Muitos SOs mais recentes (ex: Windows NT e seus sucessores,
Minix 3, Android) implementam parcialmente esta organização.
• Vantagens: isolamento das funções do SO; fácil manutenção e
depuração; criação de níveis de acesso, protegendo as
camadas internas.
• Desvantagens: baixo desempenho (dependendo do nível, é
necessário passar por várias camadas).
Ex: THE; MULTICS; OpenVMS.
Sistemas híbridos
Arquiteturas do Núcleo
Misturam características dos anteriores:
• Monolítico;
• Micronúcleo;
• em Camadas.
• A maioria dos sistemas atuais é híbrida.
• As primeiras versões do Windows NT podiam ser consideradas micronúcleo, mas a partir da
versão 4 vários subsistemas foram movidos para dentro do núcleo para melhorar seu
desempenho, transformando-o em um núcleo híbrido. Os sistemas MacOS e iOS da Apple
também adotam um núcleo híbrido chamado XNU, construído a partir dos núcleos Mach
(micronúcleo) e FreeBSD (monolítico).
Ex: MacOS; Windows 10; MINIX.
Máquina Virtual
Arquiteturas Avançadas
• Apesar de ser um conceito dos anos 1960, ganhou
impulso a partir dos anos 2000, com a linguagem
Java, a consolidação de servidores e, mais
recentemente, a computação em nuvem.
• A virtualização cria uma camada entre o hardware e
o software que gerencia as VMs de forma
independente, onde cada uma oferece uma cópia
virtual do hardware (modos de acesso, E/S etc.).
• Cada VM pode ter seu próprio SO;
Ap1
V
M
 1
V
M
 2
V
M
 n
Gerência de Máquinas Virtuais
Hardware
SO1
HV1
Ap2
SO2
HV2
Apn
SOn
HVn
HV: hipervisor, constrói as VMs a partir 
dos recursos do sistema real.

Continue navegando