Aula02 - Nocoes de SO PDF

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 72

Sistemas Operacionais

Aula 02 – Noções Base de Sistemas Operacionais

Prof. Daniel Sundfeld Lima


[email protected]

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

Software Sistema Operacional Modo


de base protegido
Linguagem de Máquina

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

1 Gerenciamento de memória e tambor

0 Alocação de processador e multiprogramação

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:

Processo Processo Servidor de Servidor de Servidor de


Cliente Cliente arquivos memória terminais

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

Host SO é um outro tipo de SO


(Monolítico, Camadas, etc.)
69
Contâiners


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

Você também pode gostar