Post on 11-Nov-2018
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Estruturas de Sistemas Operacionais
• Um sistema operacional fornece o ambiente no qual os programas são
executados.
• Internamente, os sistemas operacionais variam muito em sua constituição,
sendo organizados em muitas linhas diferentes.
2/13
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Estrutura e funções dos Sistemas Operacionais
• Um sistema operacional não é um único programa. Ele é constituído ou formado por um
conjunto de programas ou rotinas que vão realizar tarefas por meio do controle do
hardware e suas partes.
• Um sistema computacional pode ser visto em termos de níveis de programação para
facilitar seu entendimento para as pessoas que ingressam na área de TI.
• Uma das divisões mais conhecidas é a da máquina de
níveis, proposta por Tanenbaum, que apresenta os
seis níveis seguintes (Tabela 1):
3/12
O conjunto de rotinas de um sistema operacional é
denominado núcleo do sistema ou kernel.
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Estrutura e funções dos Sistemas Operacionais
• Existe uma preocupação em se manter a integridade do sistema operacional, pois, se o
mesmo falhar, o computador trava ou para de funcionar.
• Para manter a integridade, a segurança é realizada fazendo com que o sistema não
atenda diretamente os pedidos dos usuários.
• O atendimento é feito pelas chamadas de sistema, ou system calls.
4/12
System calls são portas de acesso
ao núcleo do sistema operacional e
a seus serviços.
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Chamadas ao Sistema
• As chamadas ao sistema (system calls) fornecem a interface entre um
processo e o sistema operacional.
• As chamadas ao sistema para as plataformas Microsoft Windows
modernas fazem parte da API Win32
Gerência de Arquivos
• Em primeiro lugar, é preciso criar e excluir arquivos, através das
chamadas create e delete.
• Cada chamada ao sistema requer o nome do arquivo e talvez alguns
atributos do arquivo.
• Uma vez criado o arquivo, é preciso abri-lo (open) e usá-lo.
5/13
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Chamadas ao Sistema
• Como um exemplo da forma em que as chamadas ao sistema são
usadas, considere escrever um programa simples para ler dados de um
arquivo e copiá-los para outro arquivo:
• Depois que os dois nomes de arquivos tiverem sido obtidos, o programa deve abrir o
arquivo de entrada e criar o arquivo de saída. Cada uma dessas operações requer
outra chamada ao sistema.
• Com os dois arquivos prontos, entramos em um laço que lê dados do arquivo de
entrada (uma chamada de sistema) e os grava no arquivo de saída (outra chamada
ao sistema).
• Finalmente, depois que o arquivo todo tiver sido copiado, o programa poderá fechar
os dois arquivos (outra chamada ao sistema), gravar uma mensagem na console
(mais uma chamada ao sistema) e finalmente terminar normalmente (a chamada final
ao sistema).
• Como podemos ver, os programas fazem uso pesado do sistema
operacional.
6/13
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Chamadas ao Sistema
Gerência de Dispositivos
• Um programa, à medida que está sendo executado, talvez precise de
recursos adicionais para prosseguir. Os recursos adicionais podem ser
mais memória, unidades de fita, acesso a arquivos e assim por diante.
Manutenção das Informações
• Muitas chamadas ao sistema existem simplesmente a fim de transferir
informações entre o programa usuário e o sistema operacional.
• Por exemplo, a maioria dos sistemas possui uma chamada ao sistema
para obter data e hora atuais, por meio de time e date.
• Outras chamadas de sistema podem retornar informações sobre o
sistema, tal como o número de usuários atuais, o número de versão do
sistema operacional, a quantidade de memória ou espaço em disco livre e
assim por diante.
7/13
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerenciamento de Processos
• Um programa não faz nada a não ser que suas instruções sejam executadas por uma
CPU
• Um processo precisa de determinados recursos – incluindo tempo de CPU, memória,
arquivos e dispositivos de I/O – para realizar sua tarefa. Esses recursos são dados ao
processo quando ele é criado ou alocados a ele durante sua execução.
• Um processo é a unidade de trabalho em um sistema.
• Um sistema desse tipo consiste em uma coleção de processos, alguns dos quais são
processos de sistema operacional e o resto são processos de usuário.
8/13
Um programa por si só não é um processo. Um programa é uma
entidade passiva, como o conteúdo de um arquivo armazenado em
disco, enquanto um processo é uma entidade ativa, com um contador
de programa especificando a próxima instrução a ser executada.
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerenciamento de Processos
• Uma aplicação pode ser dividida em vários processos.
• Existem processos-pais que chamam processos-filhos.
• Os processos mais leves são denominados threads (pronuncia-se trédis).
• Um processo é um programa em execução e necessita de CPU, memória,
arquivos e dispositivos de E/S.
• Em relação aos estados possíveis para um processo, este pode estar:
pronto, em execução ou bloqueado. Existem trocas de estado durante a
operação normal.
• Note que no estado “pronto” pode existir uma fila de processos
aguardando serem executados na CPU.
9/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerenciamento de Processos
• Para otimizar o funcionamento do processador, o sistema operacional possui um
componente denominado escalonador de processos
• É este componente que determina, por meio de algoritmos de escalonamento, qual
processo será executado num momento
• Algoritmos de escalonamento podem ser: preemptivos, cooperativos ou não preemptivos.
Swapping é a troca de processos que ocorre durante o trabalho de um sistema
operacional.
Papel do SO:
1. criar e terminar processos;
2. suspender e recomeçar processos;
3. prover mecanismos para;
4. sincronização;
5. comunicação entre processos;
10/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerência da Memória Principal
• A memória principal é um grande vetor de palavras e bytes, variando em
seu tamanho. Cada palavra ou byte tem seu próprio endereço.
• A memória principal geralmente é o único dispositivo de armazenamento
grande que a CPU pode endereçar e acessar diretamente.
• Para que um programa seja executado, ele deve ser mapeado para
endereços absolutos e carregados na memória. À medida que o programa
executa, ele acessa instruções e dados do programa. Por fim, o programa
termina, seu espaço de memória é declarado disponível e o próximo
programa pode ser carregado e executado.
• Para melhorar a utilização da CPU e a velocidade de resposta do
computador aos seus usuários, é preciso manter vários programas na
memória.
11/13
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerenciamento de Memória
Memória principal possui lista endereçável e perde conteúdo se desligada (volátil).
Há também as memórias secundárias, cujo conteúdo não se perde quando se desliga o
equipamento (por exemplo, HD, pendrive, DVD, CD etc.).
Em relação à memória, estarão ocorrendo vários trabalhos:
paginação, memória virtual, substituição de páginas etc..
12/12
Hierarquia das memórias de computador gerenciadas pelos SO.
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerenciamento de Memória
• Na hierarquia das memórias de computador pode-se notar que no topo estão os
registradores.
• Note que os registradores são as memórias internas dos processadores. Estas memórias
são as mais rápidas e mais caras que existem, embora armazenem pequena quantidade
de informação.
• Quando se fala que um processador é de 32 bits, significa que os registradores internos
do mesmo trabalham com 32 bits por vez.
• Abaixo dos registradores vêm as memórias cache, que são as memórias RAM (Random
Access Memories), mas do tipo estática. Estas memórias são mais rápidas que as
memórias RAM dinâmicas.
• Em outras palavras, as memórias RAM estáticas armazenam as informações que estão
sendo mais solicitadas pelo computador, de modo a evitar que se tenha que procurar
pelas mesmas no HD da máquina.
• E estas informações também não são voláteis, ou seja, não se apagam com facilidade.
13/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerenciamento de Memória
• Já as memórias RAM dinâmicas são aquelas correspondentes aos
pentes de memória que se adquire no mercado para aumentar a
capacidade de RAM das máquinas.
• As memórias RAM dinâmicas são mais baratas e lentas em relação às
RAM estáticas, porém, são mais caras e mais rápidas em relação à
memória de massa.
• As memórias de massa são aquelas destinadas a guardar grande
quantidade de informações.
• Apesar de serem mais lentas, o custo por quantidade de informação
armazenada é relativamente pequeno.
• Nesta categoria, encontram-se os HDs, os DVDs, os CDs, as fitas DAT
etc.
14/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerenciamento de Memória
• Há uma categoria de memórias que são mais rápidas que os HDs, mas
mais lentas que as memórias RAM, que são as memórias flash.
• Os HDs são memórias relativamente lentas, pois dependem
mecanicamente de motores para posicionar as agulhas de leitura e
gravação.
• Enquanto um HD leva alguns milisegundos para localizar uma
informação, uma memória RAM dinâmica leva milionésimos de segundo
para realizar a mesma operação.
15/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerência de armazenamento secundário
• O principal objetivo de um sistema de computação é executar programas.
• Esses programas, com os dados que acessam, devem estar na memória
principal, ou armazenamento primário, durante a execução.
• Como a memória principal é pequena demais para acomodar todos os
dados e programas, e como é uma forma de armazenamento volátil, o
sistema de computação deve fornecer armazenamento secundário para
dar suporte à memória principal.
• A maioria dos sistemas de computação modernos usa discos como o
principal meio de armazenamento secundário para programas e dados.
• Os programas e dados são armazenados em disco até serem carregados
na memória
• Portanto, a gerência adequada do armazenamento em disco é de
importância crucial para um sistema de computação.
16/13
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerência do Sistema de I/O
• Um dos objetivos de um sistema operacional é ocultar as peculiaridades
de dispositivos de hardware específicos do usuário.
• Apenas o driver de dispositivo conhece as peculiaridades do dispositivo
específico ao qual foi atribuído.
Gerenciador de dispositivos possibilita, segundo a Microsoft (2009):
• Determinar se o hardware de seu computador está funcionando
adequadamente.
• Alterar as definições de configuração de hardware.
• Identificar os drivers de dispositivo que estão carregados para cada
dispositivo e obter informações sobre cada driver de dispositivo.
• Identificar conflitos de um dispositivo e definir manualmente as
configurações de dispositivo.
17/13
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerenciamento de Armazenamento
• Em relação a um sistema de arquivos, diz Alecrim (2007):
(...) é uma estrutura que indica como os dados devem ser gravados em
dispositivos de gravação.
• De acordo com os recursos oferecidos por essa estrutura que é possível
determinar o espaço disponível e ocupado em disco, e gerenciar como
partes de um arquivo podem ficar “distribuídas” nas áreas de
armazenamento.
• É também o sistema de arquivos que determina como os dados podem
ser acessados, copiados, movidos, renomeados, protegidos e eliminados.
• Portanto, sem um sistema de arquivos, é impossível utilizar um disco
rígido (e outros dispositivos) para armazenamento de informações.
• Um arquivo é um conjunto de informações, programas e dados.
18/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerenciamento de Armazenamento
Gerência de Arquivos
• A gerência de arquivos é um dos componentes mais visíveis de um
sistema operacional.
• Os computadores podem armazenar informações em vários tipos
diferentes de meios físicos.
• Cada meio é controlado por um dispositivo, que também tem suas
características exclusivas. Essas propriedades incluem velocidade de
acesso, capacidade, taxa de transferência de dados e método de acesso
(sequencial ou aleatório).
19/13
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Gerenciamento de Armazenamento
Gerência de Arquivos
• Para uso conveniente do sistema de computação, o sistema operacional
fornece uma visão lógica uniforme do armazenamento de informações, o
arquivo.
• Um arquivo consiste em uma sequência de bits, bytes, linhas ou registros
cujos significados são definidos pelos seus criadores.
• Os arquivos são normalmente organizados em diretórios para facilitar o
seu uso. Quando vários usuários têm acesso aos arquivos, pode ser
desejável controlar quem pode acessar os arquivos, e de que forma pode
faze-lo (por exemplo, para leitura, escrita, etc).
20/13
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Serviços de sistemas operacionais
• Um sistema operacional fornece um ambiente para a execução de programas. Fornece
certos serviços a programas e aos usuários desses programas.
• Execução de programas: o sistema deve ser capaz de carregar um programa na memória e
executar esse programa.
• Operações de I/O: um programa em execução pode precisar de I/O. O sistema operacional
deve fornecer os meios para realizar as operações de entrada e saída.
• Manipulação do sistema de arquivos: obviamente, os programas precisam ler e gravar
arquivos.
• Comunicações: As comunicações podem ser implementadas via memória compartilhada
(mesmo computador) ou pela técnica de troca de mensagens (computadores interligados).
• Detecção de erros: o sistema operacional precisa estar constantemente ciente de possíveis
erros. Para cada tipo de erro, o sistema operacional deve tomar uma medida adequada para
garantir uma computação correta e consistente.
• Contabilização: é preciso manter um registro dos usuários que utilizam os recursos do
computador, em que quantidade e que tipos de recursos.
21/13
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Sistemas em lote (batch)
• A introdução da tecnologia de disco permitiu que o sistema operacional mantivesse todos
os jobs em um disco
• Com acesso direto a vários jobs, o escalonamento de jobs poderia ser executado para
usar recursos e realizar tarefas de forma eficiente.
• O aspecto mais importante do escalonamento de jobs é a capacidade de
multiprogramação.
• A multiprogramação aumenta a utilização de CPU organizando jobs de forma que a CPU
sempre tenha um job a executar
• O sistema operacional mantém vários jobs na memória ao mesmo tempo. Assim, escolhe
e começa a executar um dos jobs. Em alguns momentos, o job terá de esperar a
conclusão de alguma tarefa, com uma operação de I/O.
• Em um sistema não-multiprogramado, a CPU ficaria ociosa. Em um sistema de
multiprogramação, o sistema operacional simplesmente passa para outro job e o executa.
22/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Sistemas de tempo compartilhado
• Tempo compartilhado, ou multitarefa, é uma extensão lógica da
multiprogramação.
• A CPU executa vários jobs alternando entre eles, mas as trocas ocorrem
com tanta frequência que os usuários podem interagir com cada programa
durante sua execução.
• Como o sistema alterna rapidamente de um usuário para outro, cada
usuário tem a impressão de que todo o sistema de computação está
dedicado ao seu uso, enquanto, na verdade, um computador está sendo
compartilhado por muitos usuários.
• Embora alguns processamentos em batch ainda ocorram, a maioria dos
sistemas de hoje é de tempo compartilhado.
• Por essa razão, a multiprogramação e o tempo compartilhado são os
temas centrais dos sistemas operacionais modernos..
23/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Sistemas de computadores pessoais
• Os computadores pessoais (PCs) apareceram nos anos 70.
• Os sistemas operacionais para PC não eram nem multiusuário nem
multitarefa. No entanto, as metas desses sistemas mudaram com o
tempo; em vez de maximizar a utilização de CPU e periféricos, os
sistemas optam por maximizar a conveniência e a capacidade de resposta
ao usuário.
• Os sistemas operacionais para esses computadores se beneficiaram de
várias formas do desenvolvimento de sistemas operacionais para
mainframes.
• Por exemplo, a proteção de arquivos em princípio não era necessária em
uma máquina pessoal. No entanto, esses computadores muitas vezes
estão ligados a outros computadores em redes locais ou conexões
Internet.
24/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Sistemas paralelos
• Existe uma tendência em direção aos sistemas multiprocessadores.
• Tais sistemas têm mais de um processador em comunicação ativa,
compartilha o barramento, o clock e, às vezes, a memória e os
dispositivos periféricos.
• Esses sistemas são chamados de sistemas fortemente acoplados
• Existem vários motivos para construir sistemas assim:
• Uma vantagem é a maior produção (throughput). Aumentando o
número de processadores, espera-se realizar mais trabalho em menos
tempo.
• Outro motivo para a existência de sistemas com múltiplos
processadores é o aumento da confiabilidade.
25/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Sistemas paralelos
• Se as funções puderem ser distribuídas adequadamente entre vários
processadores, a falha de um processador não vai interromper o sistema,
apenas reduzirá sua velocidade.
• Se houver dez processadores e um falhar, cada um dos nove
processadores restantes deverá pegar uma parte do trabalho do
processador que falhou.
• Os sistemas projetados com esta capacidade de continuar a fornecer
serviço mesmo com uma degradação são chamados de tolerante a
falhas.
26/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Sistemas de tempo real
• Um sistema de tempo real é usado quando existem requisitos rígidos de
tempo
• Geralmente é usado como um dispositivo de controle em uma aplicação
dedicada.
• Os sistemas que controlam experimentos científicos, sistemas de controle
industrial e sistemas de injeção de combustível em motores de veículos
são de tempo real.
• Um sistema de tempo real tem limitações de tempo bem definidas.
• O processamento tem de ser feito dentro dos limites definidos ou o
sistema falhará.
27/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Sistemas distribuídos
• Em contraste com os sistemas chamados de fortemente acoplados
(sistemas paralelos) discutidos anteriormente, as redes de computadores
usadas nesses tipos de aplicações consistem em uma coleção de
processadores que não compartilham memória ou clock.
• Em vez disso, cada processador tem sua própria memória local.
• Os processadores se comunicam entre si através de várias linhas de
comunicação, tais como linhas telefônicas de alta velocidade.
28/12
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Sistemas distribuídos
Taxonomia de Tanenbaum
• Esses sistemas geralmente são chamados de sistemas fracamente
acoplados.
29/12
A principal diferença entre eles é que, em um sistema distribuído, a existência
de diversos computadores autônomos é transparente (ou seja, o usuário não
tem conhecimento deles).
Prof. André Y. Kusumoto – andrekusumoto.unip@gmail.com
Referências
SILBERSCHATZ, A. GALVIN, P. B. GAGNE, G. Sistemas Operacionais
com Java. Rio de Janeiro : Elsevier, 2008.
TANENBAUM, A. S.; WOODHULL, A. S. Sistemas Operacionais. Porto
Alegre: Bookman, 2003.
Notas de aula Prof. Dr. Carlos Henrique Neto Lahoz - UNIP.
Conteúdo da UNIPVirtual
30/12