Ir para o conteúdo principal
Sistemas
Operacionais
ADIR KUHN
BACHAREL EM COMPUTAÇÃO
PÓS GRADUADO EM BANCO DE DADOS
PHP ENGINNER E SCRUM MASTER
Conteúdo


Introdução ao S.O



Gerenciamento de processos.



Gerenciamento de memória.



Dispositivos de Entrada/Saída.



Sistemas de arquivos.
Definição do problema


Um sistema de computação consiste de diversos
dispositivos.



Todos os dispositivos são complexos de
manipular.



Escrever programas que fazem usos desses
dispositivos é uma tarefa difícil.
Como solucionar o
problema?


Utilizar uma camada de software chamada
sistema operacional.



Ele gerencia todos esses dispositivos e fornece
uma interface de mais alto nível para acesso ao
hardware.
O que é um Sistema
Operacional?


É um software que realiza duas funções:


Estende a máquina, isto é, esconde do
programador a “verdade” sobre a programação
do hardware e apresenta uma forma mais simples
de acessar o hardware.



Gerencia recursos, isto é, controla todo o hardware
e controla a concorrência entre os diversos
processos que tentam usar esse hardware.
Exemplo de acesso ao
hardware


Queremos gravar dados em um disquete sem um
S.O:


O controlador do disquete tem 16 funções de
baixo nível;



Funções de leitura/escrita têm 13 parâmetros;



Retornam 23 informações de status.



É preciso verificar o status do motor.
Resumindo...


Sistema operacional é um software
utilizado para facilitar a utilização do
hardware, fornecendo ao usuário
uma abstração maior, evitando que o
programador acesse as instruções de
hardware.



O SO gerencia os recursos de
hardware, como por exemplo:
endereçamento de memória, fila de
processos para execução,
concorrência entre processos.
Estrutura de um
computador moderno
Estrutura de um
computador moderno


Dispositivos físicos: circuitos, unidades de disco
etc.



Microprogramação: constituída por softwares
capaz de interpretar e executar as instruções de
máquina recebidas da camada superior.
Estrutura de um
computador moderno


Linguagem de máquina: instruções que movem
os dados pela maquina efetuando operações
lógicas e aritméticas.



Sistema operacional: esconde a complexidade
do hardware e gerencia os recursos
compartilhados.
Estrutura de um
computador moderno


Utilitários: compiladores, editores texto,
interpretador de comando.



Aplicativos: navegador web, bate-papo etc.
Evolução dos S.O
(MINIX) WINDOWS, MAC, LINUX


Os sistemas operacionais evoluíram com o passar
dos anos, acompanhando a arquitetura dos
computadores que executavam.
1ª geração (1940 – 1955)


Foi marcada pelo invento das válvulas.



Computadores eram formados por milhares de
válvulas ocupando salas imensas.



Não havia conceito de sistema operacional.



O acesso era feito diretamente nos painéis do
equipamento, onde o usuário programa seus
cálculos.



Surge o ENIAC, onde a programação era por fios
e pinos.
1ª geração (1940 – 1955)
(cont.)

Computador baseado em válvulas

Computador ENIAC
2ª geração (1955 – 1965)


Marcada por três avanços:


Utilização dos transistores em grande quantidade.



Sistema de processamento em batch.



Surgimento de linguagens de programação de alto
nível (Fortran, Algol e Cobol).



Criação de mainframes.



Programas deixam de ter relação direta com o
hardware.
2ª geração (1955 – 1965)


Processamento em batch:


Programas eram gravados em cartões perfurados.
Após a leitura, eles eram salvos em uma fita
magnética de entrada.



A fita de entrada era colocada no computador de
grande porte (IBM 7094). Ao final do
processamento, gravava o resultado em uma
segunda fita (de saída).



A segunda fita (de saída) era colocada em um
computador (IBM 1401) que lia a fita de saída e
imprimia seu conteúdo.
2ª geração (1955 – 1965)
(cont.)

Sistema de processamento batch
3ª geração (1965 – 1980)


Surgimento dos circuitos integrados.



Surgimento das técnicas de:


Multiprogramação: execução de vários programas
por meio da divisão de memória em partes.



Timesharing: divide o tempo de uso do processador
entre todos os programas.
4ª geração (1980 – 1990)


Surgimentos dos PCs (personal computers).



Surgimento dos sistemas operacionais mais
modernos:


MS-DOS: linha de comando.



Novel network : sistemas operacional de rede.



Macintosh: baseado em janelas.
5ª geração (1990 – ...)


Surgimento da computação distribuída


Um programa em execução que pode ser dividido
em subprocessos para serem executados em outros
computadores na rede.



Surgimento do protocolo TCP/IP, padrão Ethernet
e o modelo cliente/servidor.



Surgimento da computação ubíqua.
Conceitos básicos de
S.O
Monotarefa


Os primeiros S.O executavam um programa de
cada vez.



Os outros programas deveriam esperar o termino
para poder executar.



Todos os recursos ficavam dedicados a uma
única tarefa.
Multitarefa


Suporta a execução concorrente de vários
programas, dividindo os recursos.



Classificado como:




Monousuário e Multiusuário.

Pode ser:


Cooperativo: o processo libera a CPU
voluntariamente (i.e não há interrupções)



Preemptivo: quando o sistema gera uma
interrupção e dá lugar a outro processo na CPU.
Processos


É uma abstração de um programa em
execução.



Cada programa tem ao menos um processo
concorrendo os recursos de sistema.



Possui um espaço de endereçamento na
memória.



Pode assumir três estados:


Execução



Bloqueado



Pronto
Multiprocessamento


Sistemas com múltiplos processadores.



Compartilham a mesma memória e dispositivos
de entrada.



Aumentam a capacidade computacional.
Interpretador de
comandos (Shell)


Interface entre o usuário e o sistema operacional.



É onde o usuário solicita a execução de
programas.
Chamadas do sistema
(System Calls)


Interface entre softwares aplicativos e o sistema
operacional.



Exemplo:


Criar arquivos.



Acessar drive de disquete, CD-Rom etc.
Sistemas Operacionais e
suas Características
Gerenciamento de
processos
Processos


Um processo é tudo aquilo que o processador
executa.



E a entidade pela qual a utilização da memória
de um programa, tempo de processador e
recursos de E/S podem ser gerenciados e
monitorados pelo sistema operacional.



O processo pode ser visto como a abstração de
um programa em execução.
Processos


Exemplo

João

vai fazer um bolo. Ele
vai utilizar uma receita para
saber quais ingredientes e
saber como preparar tudo.



Quem é o processador?



Quem é o programa?



Quem é o processo?
Processos


Todo software executável em um computador
moderno, até mesmo o sistema operacional, é
organizado em processos.



Os sistemas atuais permitem ao usuário a
chaveamento de vários processos.



Esse chaveamento nos dá a sensação de que os
programas são executados paralelamente.
Troca de processos


Como funciona a troca de processos?


Salvar o conteúdo atual dos registradores da CPU
referentes a um processo que esta deixando o
processador.



Carregar os registradores com o conteúdo do
processo que esta ganhando a CPU.
Troca de processos
Processos


Principais eventos que levam à criação de
processos


inicialização do sistema



execução de chamada ao sistema de criação de
processos



solicitação do usuário para criar um novo processo
Processos


Condições que levam ao término de processos


saída normal (voluntária)



saída por erro (voluntária)



erro fatal (involuntário)



cancelamento por um outro processo (involuntário)
Estados do processo


O processador não pode ser ocupado por todos
os processos ao mesmo tempo.



Existe uma competição entre os processos para
entrar em execução.



O sistema operacional deve controlar essa
competição.
Estados do processo


Pronto (aguardando na fila de processos)



Execução (esta no processador)



Bloqueado (aguardando E/S)
Subprocessos


Uma aplicação pode ser dividida em partes que
trabalham concorrentemente.



Consiste em particionar o processo gerado
para controlar a aplicação (processo pai) em
outros subprocessos subordinados a este que são
chamados de processos filhos, ou apenas
subprocessos
Subprocessos
Subprocessos


Conforme aumenta-se a utilização de
subprocessos, há um desperdício de tempo para
criar e destruir estes.



Para resolver este problema, criou-se o conceito
de threads.
Threads


São consideradas processos mais leves.



Enquanto os processos são usados para agrupar
recursos, as threads são as entidades
escalonadas para a execução na CPU.



Um processo possui pelo menos uma thread
(linha de controle).
Threads
Exemplo Threads


Aplicação: Processador de textos



Uso: 3 threads


Interação com o usuário (teclado)



Formatação de texto



Gravando o documento
Exemplo Threads
Escalonamento


Vimos que o estado de pronto possui uma fila
de processos aguardando a liberação da CPU.



O componente que tenta manter o processador
ocupado o tempo todo, escolhendo que será o
próximo processo a ser executado é o
escalonador.
Escalonamento


Categorias de algoritmos


Não-preemptivos



Preemptivos
Algoritmos de
escalonamento


First In First Out (FIFO)


Constitui-se no esquema mais simples de
escalonamento em que os processos são
executados do início até o fim, na ordem de
chegada.
Algoritmos de
escalonamento


Round Robin – Alternância Circular


Processos são executados na ordem FIFO, mas com
um intervalo chamado quantum.



Ao final de seu quantum, se o processo ainda
estiver em execução, é interrompido (preempção)
e voltará para o estado de pronto (final da fila) e o
próximo processo da fila será alocado para ocupar
a CPU.



Se o processo terminar antes de finalizar o seu
quantum, a CPU será liberada.
Algoritmos de
escalonamento


Round Robin – Alternância Circular


Exemplo: quantum de 20 ms

Processo

Tempo de Uso da CPU
em ms (milissegundos)

P1
P2
P3
P4

50
14
65
21
Algoritmos de
escalonamento


Shortest Job First – Processo mais curto primeiro


Processos menores são executados primeiro.



Processos curtos são favorecidos.



Processo maiores são prejudicados.



Pouco utilizado na prática.
Algoritmos de
escalonamento


Shortest Job First – Processo mais curto primeiro


Exemplo:

Processo

Tempo de Uso da CPU em
ms (milissegundos)

Chegad
a

P1

7

0

P2

4

2

P3

1

4

P4

4

5
Concorrência


Os processo concorrem pelos recursos do
sistema.



Exemplo: fila de impressão
Deadlock


Acontece quando dois ou mais processos estão
disputando recursos e nenhum deles consegue
seguir a execução porque ambos estão
bloqueando uns aos outros.



Exemplo:


Dois processos querem gravar um CD.



Processo P1 aloca o Gravador.



Processo P2 aloca o HD.



P1 espera P2 terminar de usar o HD.



P2 espera P1 terminar de usar o gravador.
Exclusão Mútua
Evitar que mais de um processo utilize um recurso
compartilhado.
 Condições para exclusão mútua:


1.

2.

3.
4.

Dois processos não podem estar dentro de
suas regiões críticas ao mesmo tempo,
compartilhando o mesmo recurso.
A exclusão mútua dos processos deve ser
independente da velocidade dos processos
ou o número de CPUs.
Um processo executado fora da região
crítica não pode bloquear outros processos.
Nenhum processo esperará para sempre
para entrar em sua região crítica.
Exclusão mútua com
espera ocupada


Se um processo está acessando uma região
crítica, ou seja, esta em execução, todos os
outros processos que precisarem acessar esta
região deverão entrar em estado de espera
ocupada.



Esta espera se refere apenas à região crítica.


Desabilitar interrupções.



Variável Lock.



Variável Turn.



Peterson.



Instrução TSL.
Desabilitar interrupções


Desabilitar todas as interrupções, inclusive as do
sistema operacional, quando uma região crítica
está sendo acessada, garantindo que o processo
em execução termine de executar a região
crítica sem a intervenção de outros processos.
Variável Lock


Esta solução utiliza um algoritmo em que cada
recurso compartilhado possui uma variável global
chamada lock, com valor inicial igual a 0.



O algoritmo controla o acesso à região crítica
por meio da variável lock. Ao consultar, se o seu
valor for 0, o processo executará a região crítica;
e se for 1, o processo aguardará até que a
variável lock se torne 0.
Variável Turn


Se a variável turn for igual a i, o processo de
número i executará a região crítica até terminar.



Ao sair, o processo altera o valor de turn para i+1
para que o próximo processo, ao executar, tenha
acesso à região crítica.
Solução de Peterson


Combina as variáveis lock e turn solucionando os
problemas individuais de cada uma delas.
Instrução TSL


É uma instrução utilizada em muitos
processadores que permite a implementação de
variáveis lock.



A vantagem é que nem mesmo uma interrupção
de hardware pode interromper a execução.
Gerenciamento de
memória
Gerenciamento de
memória


Na memória principal ficam todos os programas
e os dados que serão executados pelo
processador.



Possui menor capacidade e custo maior.



S.O buscam minimizar a ocupação da memória e
otimizar sua utilização.



Componente é o gerenciador de memória.
Gerenciamento de
memória


Tarefas do gerenciador de memória:


Monitorar quais partes da memória estão utilizadas
e quais estão disponíveis.



Realizar alocação e liberação da memória para os
processos.



Gerenciamento do swapping (troca) entre a
memória principal e a secundária.
Gerenciamento de
memória


Esquemas de gerenciamento de memória:


Mantém os processo fixos na memória principal.
monoprogramação



Movem os processos entre a memória principal e
secundária (swapping e paginação).

multiprogramação
Gerenciamento sem
paginação


Foram utilizadas nos sistemas mais antigos.



A memória era compartilhada entre o S.O e os
programas.



Chamada de monousuário ou
monoprogramação.



Somente um processo pode ser executado a
cada instante.
Gerenciamento sem
paginação

Três maneiras simples de organizar memória com um sistema operacional e com
processos.
Gerenciamento de memória
com partições fixas


Em direção à multiprogramação foram criadas
partições fixas com tamanhos diferentes na
memória principal.



A idéia é utilizar sempre o menor espaço possível.



Com tamanho fixo das partições, todo espaço
naquela partição que não era utilizado pelo
processo era perdido.



Funciona bem quando as tarefas são do mesmo
tamanho ou quando os tamanhos são
conhecidos previamente.
Partições fixas

Partições fixas de memória com filas separadas para cada partição
Gerenciamento de memória
com partições fixas


Surge um problema quando partições grandes
está com a fila vazia e uma fila para partição
pequena está com a fila cheia.



Solução: utilizar uma única fila.


O processo mais próximo do início da fila que se
ajusta na partição vazia poderia ser carregado.
Gerenciamento de memória
com partições fixas – fila
única

Partições fixas de memória com fila única.
Troca de processos


Nem sempre existe memória principal para todos
os processos.



Alguns processos devem ser mantidos no disco
(memória secundária).



Técnicas:


Swapping.



Memória virtual.
Swapping


Consiste em trazer o processo inteiro do disco
para a memória, executá-lo e devolve-lo para o
disco.



Os processos que estão sobrando ficam na
memória secundária e trazidos de lá
dinamicamente.
Swapping


Vantagem em relação às partições fixas:


Número, posição e tamanho das partições variam
dinamicamente.



Com o tempo são criadas lacunas na memória
principal.



Técnica de compactação de memória para
mover os dados para baixo.
Swapping
Swapping


É provável que a área de dados (heap e pilha)
do processo cresça durante a execução.



Se houver espaço adjacente ele será alocado
para o processo.



Se não houver espaço adjacente o processo
inteiro deverá ser movido para outra área da
memória principal.



Pode-se alocar uma memória extra sempre que
fizer a troca ou mover um processo.
Swapping
Memória virtual


Divide-se o programa em módulos chamados overlays
(sobreposição).



No princípio, o programador deveria fazer a divisão do
programa em módulos.



Mais tarde, essa tarefa passou para o S.O.



Assim, um programa grande que excedesse a memória física
do computador poderia ser executado.
Memória virtual


Um programa de 32 MB pode ser executado em
uma máquina com apenas 8 MB, por meio de
uma escolha cuidadosa feita pelo sistema
operacional em que 8 MB será mantido ativo na
memória em cada instante, dinamicamente,
dando a ilusão de que o programa inteiro está
na memória.



Essa troca de módulos é a técnica de
paginação.
Paginação


No sistemas com memória virtual, o endereço
virtual e físico não são os mesmos.



Quem realiza o mapeamento dos endereços
virtuais para o endereço físico é a unidade MMU
(memory management unity).
Paginação
Paginação


Como exemplo, nosso computador possui 32 KB
de memória física.



Queremos executar um programa de 64 KB.



O programa não pode ser carregado totalmente
na memória.



Assim, partes do programa serão carregadas
quando necessário.
Paginação
Paginação


Neste caso, as páginas marcadas com um X não
estão mapeadas no momento.



Se o programa tentar utilizar, ocorrerá o pagefault.



Ele deverá escolher uma página pouco utilizada,
colocá-la em disco e carregar a pagina
desejada.
Algoritmos de substituição
de páginas


Algoritmo FIFO


Baixo custo.



Mantém uma lista de todas as páginas, com a
página mais velha no inicio e a mais nova no fim.



Quando recebe um page-fault a primeira página a
sair é a mais velha (início da fila).



Pouco utilizado porque pode ser removida páginas
muito utilizadas
Algoritmos de substituição
de páginas


Algoritmo FIFO
Algoritmos de substituição
de páginas


Relógio


Utiliza um bit (R) - referenciada



Assim o SO sabe qual página é mais ou menos
utilizada.



As páginas são mantidas em lista circular.



Um ponteiro aponta para a mais antiga. Se
acontecer um page-fault verifica o bit (R). Se for 0
é porque não esta referenciada e substituirá. Se for
1, seta R = 0 e avança o ponteiro até encontrar
uma pagina com R = 0.
Algoritmos de substituição
de páginas


Relógio
Algoritmos de substituição
de páginas


Algoritmo LRU (least recently used)


Baseia-se na idéia de que uma página utilizada
recentemente pode ser utilizada novamente.



Portanto, páginas que não foram utilizadas
recentemente provavelmente permanecerão nãoutilizadas durante mais tempo.



Assim, ele remove as páginas menos utilizadas
recentemente.
Algoritmos de substituição
de páginas


Algoritmo LRU (least recently used)
Sistemas de
entrada/saída
Sistemas de
entrada/saída


Os dispositivos de E/S são a comunicação do
sistema operacional com o mundo externo.



Os dispositivos de entrada e saída são
controlados pelos sistemas operacionais.



O S.O emite comandos para os dispositivos,
realiza tratamento de erros e oferecer uma
interface simples, que abranja todos os
dispositivos do sistema.



Esses dispositivos apresentam uma grande
variação de velocidades.
Sistemas de
entrada/saída
Sistemas de
entrada/saída


Para que o sistema operacional controle um
dispositivo de E/S é necessário que interaja com
um componente eletrônico chamado
controlador de dispositivo e um dispositivo
mecânico.



Controlador de dispositivo




Placa de circuito eletrônico.

Dispositivo mecânico


É o dispositivo propriamente dito
Sistemas de
entrada/saída


Exemplo: Mouse



O componente eletrônico seria o circuito que
interpreta as coordenadas X e Y e envia para o
SO posicionar o cursor na tela.



O componente mecânico seria a esfera ou o
dispositivo ótico e os botões.
Sistemas de
entrada/saída


Drivers de dispositivo são os programas que
possibilitam a comunicação entre o S.O e o
dispositivo.



São desenvolvidos pelo fabricante do dispositivo.



Cada S.O precisa do seus próprios drivers.



Além de controlar o dispositivo, o driver também
trata os erros.
Sistemas de
entrada/saída


Buffers:


Região de memória temporária utilizada para
escrita e leitura de dados.



São utilizados quando existe uma diferença entre a
taxa em que os dados são recebidos e a taxa em
que eles podem ser processados.



Também são utilizados como armazenamento
temporário (ex. buffer do HD).