Aula02 - Nocoes de SO PDF
Aula02 - Nocoes de SO PDF
Aula02 - Nocoes de SO PDF
1
Roteiro
●
Conceitos básicos
●
Funções de um Sistema Operacional
●
Histórico de Sistemas Operacionais
●
Tipos de Sistemas Operacionais
●
Sistemas Operacionais Usuais
●
Estrutura de Sistemas Operacionais
2
Computador
●
Computador
– Hardware: componentes físicos
– Software: conjunto de todos os programas
●
Sistema Operacional é um programa ou conjunto
de programas
3
Visão Geral de um Sistema
Computacional
Navegador Sistema
Video Player ...
Web Bancário
Editores de Modo
Compiladores Shell GUI ...
Texto usuário
Microarquitetura
Hardware Dispositivos Físicos
4
Sistemas Operacionais
●
Tanenbaum: a maioria dos SOs possuem dois
modos de operação: modo protegido (modo
kernel) e modo usuário
●
Algumas instruções são utilizadas para controlar
o hardware, como instruções de entrada e saída,
que fazem modificação no disco rígido, por
exemplo
●
No modo usuário, algumas instruções são
proibidas de executar (instruções privilegiadas)
5
Sistemas Operacionais
● Definição:
●
O SO é a parte fundamental de software que
executa em modo protegido, onde possui acesso a
todo hardware e pode executar qualquer
instrução que a máquina é capaz de executar
6
Sistemas Operacionais
●
Machado & Maia: A grande diferença entre um
sistema operacional e aplicações convencionais é a
maneira como suas rotinas são executadas em
função do tempo.
●
Um sistema operacional não é executado de forma
linear como na maioria das aplicações, com início,
meio e fim
●
Suas rotinas são executadas concorrentemente em
função de eventos assíncronos (que podem ocorrer
a qualquer momento)
7
Sistemas Operacionais
●
Questão: Os sistemas operacionais (CESPE/TRE-PE/2016)
●
a) fazem parte dos chamados softwares aplicativos,
incorporando diversas funções.
●
b) servem para armazenar dados enquanto o computador
estiver ligado.
●
c) incorporam muitos recursos à máquina, tornando-a quase
sempre multiprocessadora e plug-and-play.
●
d) têm rotinas que não são executadas de forma linear, mas,
sim, concorrentemente, em função de eventos assíncronos.
●
e) são programas importantes para se detectar e limpar
vírus de computador.
8
Sistemas Operacionais
●
Questão: Os sistemas operacionais (CESPE/TRE-PE/2016)
●
a) fazem parte dos chamados softwares aplicativos,
incorporando diversas funções.
●
b) servem para armazenar dados enquanto o computador
estiver ligado.
●
c) incorporam muitos recursos à máquina, tornando-a quase
sempre multiprocessadora e plug-and-play.
●
d) têm rotinas que não são executadas de forma linear, mas,
sim, concorrentemente, em função de eventos assíncronos.
●
e) são programas importantes para se detectar e limpar
vírus de computador.
9
Funções de um Sistema
Operacional
●
Qual a função de um sistema operacional?
– Madnick 74: O sistema operacional é o gerenciador de
recursos da máquina
– Fortier 86: O sistema operacional fornece ao usuário
uma visão de sua interface com a máquina
●
Krakowiack87/Tanenbaum95: Um sistema
operacional possui duas grandes funções: criar
para o usuário uma abstração do hardware
(máquina estendida) e gerenciar os recursos da
máquina
10
Máquina Estendida
●
O sistema operacional apresenta ao usuário uma
máquina estendida, mais simples de programar
que a máquina real
– Também chamada de máquina abstrata, ela é
equivalente ao hardware, mas mais simples de
manipular
11
Máquina Estendida
●
Leitura de arquivo em disco
●
Hardware: verificar a rotação do HD, posicionar o
cabeçote na trilha correta, realizar a operação de
leitura/escrita, etc.
●
Máquina estendida: aceita chamadas
fp = fopen(…);
fread(fp, …);
12
Máquina Estendida
●
Além disso, existem dezenas de informações que
influenciam: sistemas de arquivos (ext3, NTFS)
●
Se o programador tivesse que se preocupar com
todos esses detalhes, existiriam pouquíssimos
programas portáteis
●
A função do sistema operacional de máquina
estendida esconde tal complexidade do hardware,
protegendo programadores e usuários
13
Gerenciador de Recursos
●
O computador é um conjunto de recursos que
serão compartilhados
– Físicos: processadores, memórias, discos, rede, …
– Abstratos: processos, arquivos, …
●
O sistema operacional deve proteger esses
recursos, especialmente em ambientes com
múltiplos usuários, de forma que não interfiram
uns nos outros
14
Gerenciador de Recursos
●
Exemplos típicos de gerenciador de recursos:
– Uso de CPU: um programa pode usar a CPU durante
um tempo, porém após um determinado período o SO
deve permitir que outro programa execute
– Uso de memória: um programa deve ser terminado
caso altere uma região de memória que não lhe
pertence
15
Gerenciador de Recursos
●
Para todo recurso, o SO deve:
– Manter informações sobre o recurso (endereço, estado,
etc.)
– Decidir quem pode acessar o recurso
– Alocar e liberar o recurso
●
É desejável no gerenciamento de recursos:
– Ser eficiente, maximizando a utilização de recursos
– Possuir um tempo de resposta previsível
16
História dos Sistemas Operacionais
●
A evolução dos sistemas operacionais está
intimamente ligada à evolução dos computadores
e suas principais formas de uso
●
Podemos separar em décadas a evolução dos
computadores
●
Não é o método mais preciso, mas provê alguma
organização entre as diferentes gerações
17
História dos Sistemas Operacionais
●
O primeiro computador verdadeiramente digital
foi projetado por Charles Babbage (1792-1871)
●
É chamado de máquina analítica
●
No entanto, nunca foi implementando pois ela era
puramente mecânica e tecnologia não permitia a
criação de mecanismos precisos
●
Charles Babbage percebeu que precisava de
alguém para programar e contratou uma jovem
chamada Ada Lovelace: a primeira programadora
18
História dos Sistemas Operacionais
●
Eles observaram que seria necessário gerenciar os
recursos computacionais, mas o conceito de
Sistemas Operacionais não foi formalizado na
época
●
Até o período da segunda guerra mundial, poucos
avanços ocorreram na construção de
computadores
19
Primeira Geração (1945-1955)
●
Durante 1945 e 1955 surgiu a primeira geração
dos computadores, os computadores a válvula
●
O primeiro computador digital funcional foi
criado na Universidade de Iowa com 300 válvulas
●
Outros computadores surgiram nessa época: Z3
em Berlim, Colossus na Inglaterra (incluindo
Alan Turing), Mark I em Harvard, também
Inglaterra, ENIAC na Pensilvânia
●
Todos computadores eram muito primitivos
20
Primeira Geração (1945-1955)
●
Nesta época, o mesmo grupo de pessoas eram
responsáveis por projetar, construir, programar,
operar e manter cada máquina funcionando
●
Toda programação era feita em código de
máquina absoluta, ou ligando diretamente
circuitos elétricos
●
Não havia o conceito de linguagem de
programação, nem de sistemas operacionais
21
Segunda Geração (1955-1965)
●
A substituição das válvulas por transistores
mudou o desenvolvimento dos computadores
radicalmente no começo da década de 1950
●
Pela primeira houve diferença entre os papéis dos
projetistas, construtores, operadores,
programadores e manutenção
●
Os computadores eram máquinas de grande porte
(mainframes) e ficavam isoladas em grandes salas
climatizadas
22
Segunda Geração (1955-1965)
●
Apenas grandes corporações e governos tinham
acesso à essas máquinas
●
Para executar uma tarefa, um programador
escrevia o programa em um papel e perfurava
cartões
●
Ele levava os cartões a um operador e então
aguardava o resultado, provavelmente em um
cafeteria mais próxima
23
Segunda Geração (1955-1965)
●
Quando o computador terminava, o operador ia
até a impressora e pegava o resultado,
armazenando-o em uma das salas para que o
programador pudesse pegá-la mais tarde
●
Muito tempo era desperdiçado enquanto o
operador caminhava de uma sala a outra
24
Segunda Geração (1955-1965)
●
Para economizar os recursos e diminuir o tempo
desperdiçado, surgiu nessa época um conceito
utilizado até hoje: os sistemas em lote (batch)
●
Reunir em um lote de tarefas na sala de entrada
e então passá-lo para uma fita magnética, usando
um computador pequeno e relativamente barato
●
Esse computador era bom em leitura de cartões e
cópias de fitas, mas era ruim para processamento
e cálculos
25
Segunda Geração (1955-1965)
●
A computação real era utilizado em um
computador mais caro
●
Desta forma, um lote de tarefas e cartões era
coletado por cerca de uma hora e montava as
tarefas em uma fita
●
O operador carregava um programa que lia a
primeira tarefa da fita e então a executava,
armazenando a saída em uma segunda fita
26
Segunda Geração (1955-1965)
●
O sistema operacional era responsável por ler a
tarefa das fitas, executar, e ao término da tarefa
ler a próxima tarefa da fita
●
Desta forma, as tarefas eram executadas
sequencialmente
27
Segunda Geração (1955-1965)
●
Quando o lote era processado, a fita com as
tarefas era substituída, e a fita com os dados de
saída era levada a uma impressora
●
Esses grandes computadores da segunda geração
foram amplamente utilizados para cálculos
científicos e de engenharia
28
Terceira Geração (1965-1980)
●
No início da década de 1960, existiam duas linhas
de produtos dentre os fabricantes, normalmente
incompatíveis entre si:
●
Computadores de grande porte, científicos de
grande escala, orientados a palavras
●
Computadores comerciais, orientados a caracteres
e impressão de fitas, utilizados por bancos e
companhias de seguros
29
Terceira Geração (1965-1980)
●
Nesta época, a IBM inovou no mercado de
computação, com o System/360: uma série de
máquinas com software compatíveis
●
Essas máquinas possuíam uma diferença de preço
e desempenho considerável
●
Todas as máquinas tinham a mesma arquitetura
e conjunto de instrução
●
Primeira linha que utilizou circuitos integrados
30
Terceira Geração (1965-1980)
●
Essa série foi um sucesso comercial
●
Porém a própria inovação de “família única”
também foi seu ponto fraco
●
Todo software, incluindo o sistema operacional
OS/360 funcionasse em todos os modelos
●
Esse SO tinha que funcionar em máquinas muito
distintas e diferentes escalas
●
A indústria de desenvolvimento não estava tão
amadurecida e foi um problema criar o software
31
Terceira Geração (1965-1980)
●
Cada versão corrigia diversos problemas e
introduzia diversos novos, de forma que acredita-
se que o número de bugs ficou constante ao longo
do tempo
●
Os SOs de terceira geração também introduziram
um conceito fundamental em todos os sistemas
operacionais modernos: a multiprogramação
32
Terceira Geração (1965-1980)
●
Nesta geração, pela primeira vez, pode-se afirmar
que existiam dois processos ativos
concorrentemente no sistema operacional
●
Mas a concorrência era muito primitiva: quando
uma tarefa atual fazia uma pausar para esperar
uma fita ou outra operação de E/S, a CPU ficava
ociosa até o término da E/S
33
Terceira Geração (1965-1980)
●
A solução encontrada foi dividir a memória em
várias partes, com uma tarefa diferente em cada
partição:
Tarefa 3
Tarefa 2
Tarefa 1
SO
34
Terceira Geração (1965-1980)
●
Enquanto uma tarefa aguardava uma operação de
E/S a outra poderia avançar
●
Para isso, foram necessárias modificações no
hardware para proteger as partições contra
transgressões ou bugs das outras
35
Terceira Geração (1965-1980)
●
Outro aspecto adicionado a essa geração foi a
capacidade de transferir tarefas de cartões para
discos tão logos eram trazidos para a sala de
computador
●
Sempre que uma tarefa sendo executada
terminava, o sistema operacional podia carregá-la
do disco para a memória e executá-la
● Essa técnica é chamada de spooling
36
Terceira Geração (1965-1980)
●
O spooling é uma técnica que permite acesso
para a dispositivos muito lentos, armazenando
temporariamente dados em uma memória
secundária
●
Hoje em dia, essa técnica ainda é utilizada nas
impressoras (spooling de impressão)
37
Terceira Geração (1965-1980)
●
Na terceira geração, também surgiu o conceito de
timesharing: os usuários poderiam compartilhar a
CPU e recursos, sendo que cada um deles tinha
direito a usar uma fatia de tempo
●
O primeiro a ter sucesso com isso foi um sistema
chamado de MULTICS, que introduziu muitas
ideias seminais na literatura da computação
38
Quarta Geração (1980-atual)
●
A principal alteração da quarta geração foi o
desenvolvimento dos circuitos em larga escala
(LSI)
●
A grande mudança nessa geração foi a
popularização dos computadores pessoais
●
A IBM entrou no mercado de microcomputadores
pessoais
●
A Intel virou a uma grande referência como
fabricante de processadores
39
Quarta Geração (1980-Atual)
●
A Universidade de Berkeley na Califórnia,
desenvolveu sua própria versão do sistema Unix
(Berkeley Software Distribution – BSD)
●
Também surgiram as primeiras interfaces gráficas
como o Microsoft Windows
●
Também surgiram sistemas operacionais de rede e
sistemas operacionais distribuídos, são sistemas
operacionais que estão conscientes da existência
de mais de uma máquina
40
Quinta Geração (2010-Atual)
●
Os primeiros telefone móveis surgiram na década
de 70 e foram lentamente se popularizando
●
No entanto, o primeiro smartphone surgiu na
década de 90, quando a Nokia combinou dois
dispositivos distintos: um telefone e um PDA
(Personal Digital Assistant)
●
Em 1997, a Ericson cunhou o termo smartphone
para o seu telefone Penelope GS88
41
Quinta Geração (2010-Atual)
●
No entanto, Nokia e Ericson atualmente sumiram do
mercado dominado pela Apple e Google
●
Alguns autores classificam a era dos smartphones e
sistemas portáteis como uma nova geração de
sistemas operacionais
●
De fato, a introdução do iOS e Android, mudaram a
forma da computação ser usada: de computadores a
dispositivos portáteis
●
Os smartphones são uma nova geração: a de
computadores portáteis
42
Quinta Geração (2010-Atual)
●
Android e iOS são os que dominam o mercado
atualmente
●
No entanto, várias outros podem ser classificados
como sistemas operacionais embarcados: o
Symbiam OS e o Blackberry OS são exemplos
●
No entanto, a maioria dos conceitos fundamentais
de SO (que veremos ao longo do curso) não foi
alterado por essa nova geração
43
Tipos de Sistemas Operacionais
●
Os sistemas operacionais podem ser classificados
em três categorias:
– Sistemas Monoprogramáveis / Monotarefa
– Sistemas Multiprogramáveis / Multitarefa
– Sistemas com Múltiplos Processadores
44
Sistemas Monoprogramáveis
●
Sistemas Operacionais voltados à execução de um
único programa
●
Processador, memória, periféricos, permanecem
dedicados à um único programa
●
Sistemas monotarefa possuem a raiz nos
computadores da década de 60
●
MS-DOS da Microsoft
45
Sistemas Multiprogramáveis
●
Os sistemas multiprogramáveis permitem que os
recursos computacionais sejam compartilhados
entre os diversos usuários e aplicações
●
Enquanto um programa espera um evento, outros
podem utilizar o processamento
●
O sistema operacional é responsável por gerenciar
acessos concorrentes aos mesmos recursos
●
Redução no tempo de resposta
46
Sistemas Multiprogramáveis
●
Sistemas multiprogramáveis:
– Sistemas Batch
– Sistemas de tempo compartilhado
– Sistemas de tempo real
47
Sistemas batch
●
Criados na década de 60, inspirado nos cartões
perfurados e fitas magnéticas
●
Não exige interação do usuário com a aplicação
●
As aplicações são organizadas e processadas em
lote
48
Sistemas de tempo compartilhado
●
Os sistemas de tempo compartilhado permitem que
diferentes programas sejam executados a partir da
divisão de tempo do processador em pequenas fatias
de tempo (time-slice)
●
Diversas mudanças no SO e no hardware são
necessárias para permitir esse comportamento
●
Principais detalhes do tópico “gerência de processo”
– Windows 98
– Linux 2.4
49
Sistemas de tempo real
●
Possuem certas semelhança ao tempo
compartilhado
●
Porém, o tempo real exige aplicações rígidas de
limite de tempo a ser cumprido
●
Subclassificados em tempo real crítico: caso
ocorra grandes prejuízo
●
Controle de tráfego aéreo, controle de indústria
automobilística
50
Sistemas com múltiplos
processadores
●
Possuem dois ou mais processadores interligados e
trabalhando em conjunto
●
Permite vários programas sejam efetivamente
executados ao mesmo tempo
●
Permite que um programa seja executado mais
rapidamente (se o programa for multithreaded)
●
Herdaram vários fundamentos do time-sliced
– Windows XP e posteriores
– Linux 2.6 e posteriores
51
Sistemas Operacionais Usuais
●
Classificação de alguns sistemas operacionais
amplamente utilizados
– Sistemas operacionais de computadores pessoais
– Sistemas operacionais de servidores
– Sistemas operacionais embarcados
52
Sistemas Operacionais de
Computadores Pessoais
●
Sistemas operacionais comumente utilizados para
o uso simultâneo de apenas um usuário
●
Utilizados em computadores de mesa, notebook
●
Tipicamente, contém um pacote de escritório,
com editores de texto, planilhas eletrônicas
– Windows XP, Windows 7, Windows 8.1, Windows 10
– Linux: Ubuntu, Fedora, OpenSuse
53
Sistemas Operacionais de
Servidores
●
Sistemas cujo objetivo é servir o maior número de
usuários ao mesmo tempo
●
Pode incluir diferentes tipos de serviços: servidor
web, e-mail, servidor de autenticação, servidor de
backup, etc.
– Windows 2008 Server, Windows 2012 Server
– Linux: Cent OS, Red Hat, Slackware
54
Sistemas Operacionais Embarcados
●
Sistema muito popular de grande crescimento
ultimamente
●
Sistemas operacionais que funcionam em
equipamentos que não aparentam ser um
computador: micro-ondas, TV, celulares e
smartphones
– PalmOS, Windows CE
– Android, iOS, Windows Phone
55
Estrutura dos Sistemas
Operacionais
●
Uma das mais importantes classificações dos
sistemas operacionais é de acordo com a
estrutura que seu kernel (núcleo) está organizado
●
Tema de ampla pesquisa na década de 90
– Sistemas Monolíticos
– Sistemas em Camadas
– Máquinas Virtuais
– Micro-kernel (cliente/servidor)
– Exo-kernel
56
Sistemas Monolíticos
●
É a organização de SO mais comum
●
O SO operacional roda em modo protegido, todo
restante em modo usuário
●
Tanenbaum: “Não há estrutura”/“Uma grande
bagunça”
●
A estrutura do SO é mantida em organização de
código
●
Possui a melhor organização para tempo de
resposta
57
Sistemas Monolíticos
●
Todos os procedimentos do núcleo são visíveis a
todos os outros
●
Para se obter uma estrutura: todos os
procedimentos são forçados a fazer uma SVC
(supervisor call). Organização do Unix comercial
●
Possui três camadas: um procedimento principal
que chama os procedimentos de serviço. E
procedimentos utilitários, compartilhados entre os
de serviço
58
Sistemas Monolíticos
●
Alguns sistemas monolíticos modernos não
incluem todas as possibilidades e serviços no
núcleo, pois isso ocupa muito espaço em memória
●
Esses sistemas permitem “módulos de kernel”,
dados existentes no espaço de usuário que são
inseridos pelo administrador (root) no kernel
●
Ex: ntfs.ko
– # modprobe ntfs
59
Sistemas em Camadas
●
O sistema é organizado em camadas funcionais
●
Cada camada faz uma chamada à camada inferior
●
THE (1968 – Dijkstra), MULTICS (Bell, MIT)
●
A noção de camadas é fortemente reforçada pelo
hardware
60
Sistemas em Camadas
●
Sistema Operacional THE:
5 Operador
4 Programas do usuário
3 Gerenciamento de E/S
2 Comunicação operador/processo
61
Micro-kernel
●
Modelo cliente-servidor
●
A maior parte das funções do SO é implementada
a nível de usuário (processos clientes)
●
O núcleo é visto como um servidor para os
clientes, implementando a abstração de processos
e comunicação entre eles
●
Falha em um servidor de arquivos não afeta o
kernel
62
Micro-kernel
●
Os processos interagem com SO através de troca
de mensagens
●
Alta adaptabilidade a sistemas distribuídos
●
Algumas partes de SO é impossível implementar
esse esquema: carregar comandos nos
registradores físicos
●
Difícil implementação, mas relativa popularidade
no meio
63
Micro-kernel
●
Sistema Operacional Distribuído Mach:
Kernel
Hardware
64
Exo-kernel
●
Foco na multiplexação segura do hardware
●
Expõe o hardware às aplicações / ao espaço de
usuário
●
Com as primitivas básicas de hardware, podem
ser implementadas em modo usuário as
abstrações tradicionais do SO
65
Exo-kernel
●
O conceito de SO é divido em duas partes
– Exo-kernel: núcleo minimalista que faz a
multiplexação segura entre os recursos de hardware,
protegendo-os
– LibOS (sistemas operacionais biblioteca): conjunto de
biblioteca que gerenciam recursos e oferecem
abstrações de alto nível para as aplicações
66
Máquinas Virtuais
●
Os sistemas operacionais estruturados como
máquinas virtuais possuem, no mais baixo nível,
um monitor de máquina virtual
●
Monitor de máquina virtual é executado pelo
hardware
●
Em cima do monitor, várias máquinas virtuais
podem ser utilizadas
●
As máquinas virtuais implementam uma cópia do
hardware configurável
67
Máquinas Virtuais
●
Esquema:
Aplicações Aplicações
Guest OS Guest OS
Hardware Virtual Hardware Virtual
Monitor de Máquina Virtual
Hardware
Monitor de Máquina
Virtual é um SO do tipo
Máquinas Virtuais
68
Máquinas Virtuais
●
Não confundir com uso de um Host SO
(Windows/Linux):
Aplicações Aplicações
Guest OS Guest OS
Hardware Virtual Hardware Virtual
HostSO
Hardware
●
Um concorrente das máquinas virtuais são os
contâiners (Ex: Docker).
●
Utiliza namespace, cgroups, selinux para isolar
processos. Roda em modo usuário. NÃO é SO!
Aplicações Aplicações
BINS/LIBS BINS/LIBS
Docker Daemon
Host OS
Hardware
70
Roteiro
●
Conceitos básicos
●
Funções de um Sistema Operacional
●
Histórico de Sistemas Operacionais
●
Tipos de Sistemas Operacionais
●
Sistemas Operacionais Usuais
●
Estrutura de Sistemas Operacionais
71
Referências
●
Capítulo 1 – TANENBAUM, A. S. Sistemas
Operacionais Modernos. 4ª ed. Prentice Hall,
2016.
●
Capítulos 1 e 4 – MACHADO, F. B; MAIA, L.
P. Arquitetura de Sistemas Operacionais. 5ª ed.
Rio de Janeiro: LTC, 2013.
72