Upload
cid-de-andrade
View
10.294
Download
6
Embed Size (px)
DESCRIPTION
Aula de Estruturas de Sistemas Operacionais
Citation preview
Sistemas Operacionais
Estruturas de Sistemas OperacionaisProf. Cid R Andrade
[email protected]://blog.cidandrade.pro.br
Agenda
Introdução Componentes de Sistemas Operacionais Serviços de Sistemas Operacionais Chamadas ao Sistema Programas de Sistema
Agenda
Estrutura do Sistema Máquinas Virtuais Java Projeto e Implementação
Introdução
Um sistema operacional fornece o ambiente no qual os programas são executados
A organização interna dos sistemas operacionais pode variar muito
Esta organização é definida no projeto do sistema operacional e é determinada pelo objetivo do desenvolvedor
Pontos de vista para análise
Examinar serviços oferecidos Analisar a interface para usuários e
desenvolvedores Analisar componentes internos e interconexões
Componentes do Sistema
Gerência de Processos Gerência da Memória Principal Gerência de Arquivos Gerência do Sistema de E/S Gerência de Armazenamento Secundário Redes Sistema de Proteção Sistema Interpretador de Comandos
Gerência de Processos
A grosso modo, um processo seria um programa em execução
Um processo pode precisar de recursos que são alocados durante sua execução
Recursos reutilizáveis são solicitados de volta ao término do processo
Um programa pode utilizar mais de um processo para sua execução
Gerência de Processos
Um sistema operacional, ao executar, contém uma coleção de processos
Alguns são processos de sistema Outros são processos de usuário
A Gerência de Processos é responsável por Criar e excluir processos de usuário e de sistema Suspender e retomar processos Fornecer mecanismos para sincronização e
comunicação entre processos e tratamento de deadlocks
Gerência da Memória Principal
A memória principal é um grande vetor de palavras ou bytes
Cada palavra ou byte tem seu próprio endereço A memória principal costuma ser o único
dispositivo de grandes proporções que a UCP pode endereçar e acessar diretamente
Para melhorar utilização da UCP e velocidade de resposta mantém-se vários programas ao mesmo tempo na memória
Gerência da Memória Principal
Existem muitos algoritmos diferentes para gerência da memória principal
A gerência de memória principal é responsável por
Manter registro de quais partes da memória estão em uso e por quem
Decidir quais processos devem ser carregados no espaço disponível
Alocar e desalocar espaço
Gerência de Arquivos
Um dos componentes mais visíveis do sistema operacional
Arquivos são armazenados em diferentes meios físicos
Cada meio e controlado por um dispositivo O sistema operacional abstrai as propriedades
físicas de cada dispositivo para fornecer acesso aos arquivos
Gerência de Arquivos
Arquivo é uma coleção de dados relacionados definidos por seu criador
Geralmente o arquivo representa programas ou dados (numéricos, alfabéticos ou alfanuméricos)
Arquivos podem ter forma livre ou rígida Arquivos são geralmente organizados em
diretórios Acesso deve ser controlado por usuário
Gerência de Arquivos
Gerência de Arquivos é responsável por Criação e exclusão de arquivos Criação e exclusão de diretórios Fornecer suporte para manipulação de arquivos e
diretórios Mapear arquivos no armazenamento secundário
Gerência do Sistema de E/S
Subsistema de E/S consistem em Comunicar-se com as Gerências de Memória
Principal, Arquivos e Armazenamento Secundário para implementar buffering, cache e spooling
Interface geral de driver de dispositivo Drivers para dispositivos de hardware específicos
Apenas os drivers de dispositivo conhecem as peculiaridades do dispositivo específico
Gerência de Armazenamento Secundário
A memória principal é pequena para acomodação de todos dados e programas e é volátil
O sistema de computação fornece armazenamento secundário para dar suporte à memória principal
Gerência de Armazenamento Secundário
A Gerência de Armazenamento Secundário é responsável por
Gerência de espaço livre Alocação de espaço
O desempenho de um sistema de computação pode depender muito da velocidade do subsistema de disco e dos algoritmos que manipulam este subsistema
Redes
Processadores de sistemas distribuídos são conectados por redes de comunicação
O projeto da rede de comunicação deve considerar
Estratégias de conexão Roteamento de mensagens Problemas de disputa Segurança
Sistema de Proteção
Um sistema de computação pode ter vários usuários e permitir execução concorrente de múltiplos processos
Neste caso os processo precisam ser protegidos das atividades uns dos outros
Arquivos, segmentos de memória, UCP e outros recursos devem ser operados apenas pelos processos que tenham autorização adequada do sistema operacional
Sistema de Proteção
Proteção é qualquer mecanismo para controle de acesso de programas, processos ou usuários ao recursos de um sistema de computação
Sistema Interpretador de Comandos
Interface entre usuário e sistema operacional Alguns sistemas operacionais incluem o
interpretador de comandos no kernel Outros, como DOS e UNIX, tratam o
interpretador de comandos como um programa especial
Pode ser chamado de Interpretador de Linha de Comandos ou de shell
Sistema de Interpretador de Comandos
A função do Interpretador de Comandos é obter comandos e executá-los
Um interpretador de comandos amigável torna o uso do sistema mais agradável. São exemplos as interfaces do Macintosh ou do Windows
Há usuários que apreciam shells mais poderosos e complexos, como os do DOS ou UNIX
Serviços de Sistemas Operacionais
Para conveniência do programador e usuário Execução de programas Operações de E/S Manipulação do Sistema de Arquivos Comunicação entre Processos Detecção de Erros
Serviços para Sistemas Operacionais
Para operação eficiente do sistema Alocação de recursos Contabilização Proteção
Chamadas ao Sistema
Também chamadas System Calls Fornecem interface entre processos e o
sistema operacional Geralmente disponíveis como instruções em
Assembly e listadas nos manuais para programadores Assembly
Chamadas ao Sistema
Chamadas UNIX podem ser feitas diretamente a partir de um programa em C ou em outras linguagens
Chamadas Windows NT são feitas por intermédio da API Win32, disponível para os compiladores
Java não permite que as chamadas ao sistema sejam feitas diretamente
Chamadas ao Sistema
Métodos para passar parâmetros para o sistema operacional
Passar parâmetros para registrador Armazenar parâmetros em tabelas na memória e
passar endereço da tabela para registrador Armazenar parâmetros na pilha, que será lida pelo
sistema operacional
Chamadas ao Sistema
Categorias Principais Controle de Processos Manipulação de Arquivos Manipulação de Dispositivos Manutenção de Informações Comunicações
Controle de Processos
Chamadas comuns end, abort load, execute create, terminate get attributes, set attributes wait for time wait event, signal event alocate e free memory
Manipulação de Arquivos
Chamadas comuns create, delete open, close read, write, reposition get attributes, set attributes
Manipulação de Dispositivos
Chamadas comuns request, release read, write, reposition get attributes, set attributes logically attach, logically detach
Manutenção de Informações
Chamadas comuns get time, get date, set time, set date get system data, set system data get process attributes, get file attributes, get device
attributes set process attributes, set file attributes, set device
attributes
Comunicações
Chamadas comuns create, delete communication connection send, receive messages transfer status information attach, detach remote devices
Programas de Sistema
Os programas de sistema fornecem um ambiente conveniente para o desenvolvimento e execução de programas.
Gerência de arquivos: criam, excluem, copiam, renomeiam, imprimem, fazem dump, listam e manipulam arquivos e diretórios
Informações de status: informam sobre data, hora, quantidade de memória, espaço em disco disponível e outros.
Programas de Sistema
Modificação de Arquivo: criação e modificação do conteúdo de arquivos
Suporte à linguagem de programação: compiladores, montadores e interpretadores
Carregamento e execução de programas: utilitários de carga absolutos e relocáveis, linkeditores e utilitários de carga em overlay
Comunicações: mecanismos para conexões virtuais entre processos, usuários e sistemas de computação
Estrutura do Sistema
Tipos de Estruturas Estrutura Simples Abordagem em Camadas Microkernels
Estrutura Simples
Comum em sistemas que começaram como sistemas pequenos que cresceram além do escopo original, como o DOS.
Abordagem em camadas
Método de modularização O sistema operacional é dividido em camadas,
cada qual construída sobre as anteriores Cada camada consiste de uma estrutura de
dados e um conjunto de rotinas que podem ser chamadas por camadas de nível mais alto
A principal dificuldade está na definição adequada das camadas. Este modelo costuma ser menos eficiente
Microkernels
Em meados da década de 1980, pesquisadores da Carnegie Mellon University desenvolveram o Mach, baseado no Unix e com arquitetura microkernel.
São removidos os componentes não-essenciais do kernel e implementados como programas de sistema e de nível de usuário
Microkernels
A principal função do microkernel é fornecer comunicação entre programa cliente e serviços em execução no espaço do usuário
O programa cliente e o serviço nunca interagem diretamente, mas por meio de troca de mensagens pelo microkernel
Microkernels
Novos serviços podem ser adicionados ao espaço do usuário
Modificações do kernel tendem a ser menores Projetos são mais facilmente portáveis Abordagem é utilizada pelo Unix Digital, MacOs
X Server e Minix
Estrutura de Sistemas
Windows NT utiliza uma estrutura híbrida. Parte da estrutura utiliza camadas, mas os subsistemas Win32, OS/2 e Posix executam no espaço do usuário e trocam mensagens pelo kernel
Máquinas Virtuais
Com as técnicas de escalonamento de UCP e de memória virtual, o sistema operacional pode criar ilusão de que um processo tem seu próprio processador com sua memória.
Neste caso ele fornece aos processos uma interface idêntica ao hardware. Desta forma, cada processo recebe uma cópia virtual do computador
Máquinas Virtuais
Implementação
Muito trabalho é necessário para implementar o conceito de Máquinas Virtuais
A máquina virtual precisa implementar os modos usuário e monitor
Os modos usuário virtual e monitor virtual executam em modo usuário físico
Benefícios
Este conceito oferece proteção total dos recursos do sistema
Não há problemas de segurança pois cada máquina virtual é completamente isolada das outras
Este é um excelente veículo para pesquisa e desenvolvimento de sistemas operacionais
Java
Java é uma tecnologia introduzida pela Sun Microsystems em 1995
Componentes essenciais Especificação da linguagem de programação Interface de programação de aplicações (API) Especificação da máquina virtual
Linguagem de Programação
Orientada a objetos Independente de arquitetura Suporta threads Segurança Robustez
API
API base Linguagem (lang) Gráficos (awt) E/S (io) Redes (net)
Extensão Comércio, segurança, mídia e outros
Máquina Virtual Java
Consiste de carregador de classes e interpretador Java
Interpretador pode Interpretar um bytecode por vez Compilar just-in-time Ser implementado em hardware
Ambiente de desenvolvimento
Consiste de Ambiente de compilação Ambiente de execução
O ambiente de compilação transforme um arquivo-fonte em um bytecode
O ambiente de execução carrega e interpreta os bytecodes
Projeto e Implementação
O primeiro objetivo do projeto é definir objetivos e especificações
Objetivos de usuário: conveniência, usabilidade, facilidade de aprender, confiabilidade, segurança e eficiência
Objetivos do sistema: facilidade de projeto, flexibilidade, confiabilidade
Mecanismos e Políticas
Mecanismos determinam como fazer alguma coisa
Políticas determinam o que será feito
Implementação
Originalmente os sistemas operacionais eram escritos em Assembly
O primeiro sistema operacional não escrito em Assembly foi o MCP, escrito em uma variante de ALGOL
Hoje os sistemas operacionais são escritos em C, C++ e Assembly apenas nos escalonadores e drivers de dispositivo
Implementação
Linguagens de alto nível são escritos de forma mais rápida, mais compacta, mais fácil de entender e de depurar
Os inconvenientes são desempenho reduzido e maiores requisitos de armazenamento
Geração do sistema
Em geral os sistemas operacionais são projetados para executar em qualquer máquina de determinada classe, com distintas configurações
Em cada local de instalação o sistema deve ser gerado e configurado. Este processo é denominado Geração de Sistema (Sysgen)
Geração de Sistema
Dados a serem determinados Tipo, opções e quantidade de UCP Quantidade de memória disponível Periféricos disponíveis, seus endereços,
interrupções e características Opções de sistema operacional desejadas Criação do Gerenciador de Inicialização ou
Gerenciador de Boot
Bibliografia
SILBERSCHATZ, A.; GALVIN, P.; GAGNE, G. Sistemas Operacionais: Conceitos e Aplicações. Tradução de Applied operating system concepts por Adriana Rieche. Rio de Janeiro: Campus, 2000. 585 p.
Observação: As imagens utilizadas nesta apresentação foram obtidas da fonte aqui citada
Avisos legais
Todas as marcas citadas são propriedade de seus respectivos proprietários
Este trabalho está licenciado sob uma Licença Creative Commons Atribuição-Uso Não-Comercial-Vedada a Criação de Obras Derivadas 3.0. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-nd/3.0/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
Sistemas Operacionais
Estruturas de Sistemas OperacionaisProf. Cid R Andrade
[email protected]://blog.cidandrade.pro.br