engenharia de software e tópicos de programação avançada ... · entre o usuário e o hardware...
TRANSCRIPT
Prof. André Y. Kusumoto – [email protected]
Introdução
• Um sistema operacional é um programa que atua como intermediário
entre o usuário e o hardware de um computador.
• O propósito de um sistema operacional é fornecer um ambiente no qual o
usuário possa executar programas.
• O principal objetivo de um sistema operacional é, portanto tornar o uso do
sistema de computação conveniente, isto é, simplificar, o uso computador
(visão top-down).
• Uma meta secundária é usar o hardware do computador de forma
eficiente, isto é, disponibilizar os serviços da máquina de forma ordenada
e de alocação controlada para os processadores, memória, dispositivos
de E/S para os programas que competem para seu uso (visão bottom-up).
2/12
Prof. André Y. Kusumoto – [email protected]
O que é um Sistema Operacional?
• Um sistema de computação pode ser dividido em quatro componentes básicos:
• hardware – CPU, a memória e os dispositivos de entrada/saída (I/O) – fornece os
recursos básicos de computação.
• programas aplicativos – planilhas eletrônicas, compiladores e navegadores Web –
definem as maneiras em que esses recursos são usados para resolver os problemas
de computação dos usuários.
• Pode haver muitos usuários diferentes (pessoas, máquinas, outros computadores)
tentando resolver problemas diferentes.
• Sistema Operacional controla e
coordena o uso do hardware entre os
vários programas aplicativos para os vários
usuários.
3/12
Visão abstrata dos componentes de um
sistema de computação
Um sistema operacional é semelhante a um governo.
O sistema operacional não executa nenhuma função
útil por si mesma. Simplesmente fornece um
ambiente no qual os outros programas podem
realizar tarefas úteis.
Prof. André Y. Kusumoto – [email protected]
Introdução
Sistema Operacional como um alocador de recursos
• Um sistema de computação possui muitos recursos (hardware e software) que podem ser
necessários para resolver um problema: tempo de CPU, espaço de memória, espaço de
armazenamento de arquivos, dispositivos de entrada/saída, entre outros.
• O sistema operacional atua como gerente desses recursos e os aloca conforme
necessário para a execução de tarefas.
Sistema operacional é um programa de controle
• Controla a execução dos programas de usuários e preocupa-se especialmente com a
operação e o controle de dispositivos de I/O.
• É mais fácil definir um sistema operacional pelo que ele faz do que pelo que ele é.
O principal objetivo de um sistema operacional é a conveniência do usuário. Os
sistemas operacionais existem porque tem como missão tornar a tarefa computacional
mais fácil. Uma meta secundária é a operação eficiente do sistema de computação.
• No passado, a eficiência era frequentemente mais importante que a conveniência.
4/12
Prof. André Y. Kusumoto – [email protected]
História dos Sistemas Operacionais
• A história dos Sistemas Operacionais está estreitamente ligada
a arquitetura dos computadores.
• Primeiro computador digital foi projetado pelo matemático inglês
Charles Babbage (1792-1871).
• Gastou parte de sua fortuna e de
sua vida tentando construir uma
máquina analítica.
• Os recursos tecnológicos
disponíveis na sua época, não
permitiram a efetivação de seu projeto.
5/12
Babbage Difference Engine No.2
https://commons.wikimedia.org
Prof. André Y. Kusumoto – [email protected]
História dos Sistemas Operacionais
Primeira Geração (1945-1955): computadores a válvulas
• ENIAC – 1946
• LINGUAGEM DE PRIMEIRA GERAÇÃO – LINGUAGEM DE MÁQUINA
• Cálculos de Balística e Fórmulas Científicas
• O ENIAC pesava 30 t, tinha 18 mil válvulas, consumia 25 KW e executava 100.000
cálculos por segundo
6/12
Prof. André Y. Kusumoto – [email protected]
História dos Sistemas Operacionais
Segunda Geração (1955-1965): transistores e sistemas em lote
• UNIVAC – 1952
• LINGUAGEM DE SEGUNDA GERAÇÃO – LINGUAGEM ASSEMBLER
• Cálculos e Processamento de Dados
• O computador continuava desajeitado e era usado basicamente em universidades e no
governo
7/12
Prof. André Y. Kusumoto – [email protected]
História dos Sistemas Operacionais
Terceira Geração (1965 -1980): Circuitos Integrados e Multiprogramação
• Linguagem de Terceira Geração – Fortran (1953) e Cobol (1959)
• Conceito de sistema operacional
• UNIX – sistema operacional multiplataforma – 1969
• Arpanet – precursora da internet
• Bancos de Dados, Contabilidade, Recursos Humanos, Hollerith, Controle de
Estoque e Sistemas de Informação
• O computador chega aos bancos, companhias de
seguro, empresas de menor porte
8/12
Prof. André Y. Kusumoto – [email protected]
História dos Sistemas Operacionais
Terceira Geração (1970 -1980)
• Aprimoramento da linguagem de terceira geração – Basic, Pascal, C
• Intel lança o primeiro micro processador (4004)
• Xerox lança o padrão Ethernet para rede de computadores
• Surge o primeiro microcomputador – MITS ALTAIR
• Surgem a Microsoft e a Apple
• Surge o Visicalc (planilha) e o Wordstar (processador de textos)
• Arpanet é aberta a usos não militares.
• A Internet se internacionaliza
• Processamento de Textos e Planilha de Cálculo
• O computador vai se tornando rapidamente menor e mais barato
9/12
Prof. André Y. Kusumoto – [email protected]
História dos Sistemas Operacionais
Quarta Geração (1980-1990): Computadores Pessoais
• Padrão IBM – PC e UNIX
• O microcomputador, máquina de quarta geração,
conquista o mercado
• Planilha Lotus 1,2,3
• Primeiro micro com interface gráfica – Apple Lisa
• Primeiro micro com mouse – Apple Macintosh
• MS Windows
• Surge a World Wide Web (www)
• Automação de Escritórios
• O computador está, finalmente, disponível para as
pessoas comuns
10/12
Apple Lisa
Prof. André Y. Kusumoto – [email protected]
História dos Sistemas Operacionais
Quinta Geração: 1990
• Proliferação de programas amigáveis
• Explosão das redes locais
• Surgem os browsers – Mosaic, Netscape e Internet Explorer
• Popularização da Internet
• Linguagens de quarta geração
• Surge o Linux, primeiro sistema operacional freeware de ótima qualidade
• Correio Eletrônico
• Trabalho em Grupo
• Corporativos Integrados
• O computador muda a forma de se fazer negócios
11/12
Prof. André Y. Kusumoto – [email protected]
História dos Sistemas Operacionais
Quinta Geração: hoje
• Avanço e massificação das telecomunicações
• A Internet torna-se ferramenta de trabalho
• Surgem linguagens próprias para o ambiente Web (Java, asp, etc.)
• e-commerce
• e-learning
• e-government
• Redes de Conhecimento
• O computador firma-se como equipamento multimídia
12/12
Prof. André Y. Kusumoto – [email protected]
Estrutura dos Sistemas Operacionais
Sistemas Monolíticos
“The Big Mess”
O SO é escrito com uma coleção de procedures, cada uma delas pode chamar as outras
quando for necessário.
As system calls providas pelo SO são requisitadas para por seus parâmetros em lugares
bem definidos, como os registradores, ou no stack, e então executam uma instrução
especial, conhecida como kernel (supervisor) call.
Nesta estrutura o sistema pode ser visto como um conjunto de rotinas que podem
interagir livremente umas com as outras. A estrutura monolítica pode ser comparada
como uma aplicação formada por vários procedimentos que são compilados
separadamente e depois linkados, formando um grande e único programa.
Exemplos: UNIX, o MS DOS, o FreeBSD, entre outros
13/12
Prof. André Y. Kusumoto – [email protected]
Estrutura dos Sistemas Operacionais
Sistemas Monolíticos
14/12
Prof. André Y. Kusumoto – [email protected]
Estrutura dos Sistemas Operacionais
Sistemas em Camadas
Hierarquia em camadas, cada uma construída sobre as outras.
THE: Technische Hogeschool Eindhoven, Netherlands, 1968.
Com o aumento da complexidade, os sistemas monolíticos se tornaram inviáveis. A
solução foi utilizar uma arquitetura modular, ou em camadas.
A arquitetura em camadas divide o SO em camadas sobrepostas.
Cada módulo oferece um conjunto de funções que podem ser utilizadas por outros
módulos. Módulos de uma camada podem fazer referências apenas a módulos das
camadas inferiores.
Uma desvantagem pode ser a demora na solicitação de um determinado serviço, visto
que pode ser necessário passar por diversas camadas. Dessa forma, seu desempenho é
degradado.
A vantagem da estruturação em camadas é isolar as funções do sistema operacional,
facilitando sua alteração e depuração
15/12
Prof. André Y. Kusumoto – [email protected]
Estrutura dos Sistemas Operacionais
Sistemas em Camadas
A camada 0 fornece a multiprogramação básica da CPU.
A camada 1 realiza o gerenciamento de memória.
A camada 2 trata da comunicação dos processos com dispositivos (E/S)
A camada 3 é responsável pelo gerenciamento dos dispositivos de E/S
Na camada 4 estão os programas de usuários e na camada 5 ocorre o controle geral do
sistema, chamado de operador de sistema
16/12
Prof. André Y. Kusumoto – [email protected]
Estrutura dos Sistemas Operacionais
Maquinas Virtuais
• Uma máquina virtual é uma duplicada de uma máquina real, com todas
as suas capacidades, mas isolada da máquina hospedeira.
• A cópia é realizada via software e é executada utilizando os mesmos
recursos de hardware da máquina hospedeira, entretanto, esses
recursos são virtualizados e compartilhados.
• Muito utilizada para criação de ambientes de testes e simulações.
• Caso seja necessário, a máquina pode ser apagada ou então migrada
para outra máquina.
17/12
Prof. André Y. Kusumoto – [email protected]
Estrutura dos Sistemas Operacionais
Cliente-Servidor
Uma tendência dos sistemas operacionais modernos é tornar o núcleo do sistema
operacional o menor e mais simples possível.
Sistema é dividido em processos, sendo cada um responsável por oferecer um conjunto
de serviços, como serviços de arquivos, serviços de escalonamento, etc.
Sempre que uma aplicação deseja algum serviço, ela o solicita ao processo responsável.
Nesta caso, a aplicação que solicita um serviço é chamada de cliente, enquanto o
processo que responde à solicitação é chamado de servidor.
A comunicação entre clientes e servidores é realizada através de mensagens. É função
do núcleo do SO realizar a comunicação, ou seja, a troca de mensagens entre o cliente e
o servidor.
A utilização deste modelo permite que os servidores executem em modo usuário, ou seja,
não tenham acesso direto a certos componentes do sistema. Apenas o núcleo executa
em modo kernel. Com isso, se um erro ocorrer em um servidor, este serviço pode parar,
mas o sistema não ficará inteiramente comprometido.
18/12
Prof. André Y. Kusumoto – [email protected]
Estrutura dos Sistemas Operacionais
Cliente-Servidor
Cliente-Servidor em Ambiente distribuído
19/12
Prof. André Y. Kusumoto – [email protected]
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. Carlos Henrique Neto Lahoz.
20/12