Você está na página 1de 32

Sistemas operacionais

Bruno Fonteles de Arruda


Sistemas Operacionais

O software, de um modo geral, utilizado para solucionar os problemas do


usurio, enquanto que o hardware do computador o dispositivo fsico capaz
de executar esses softwares.
O que eles fazem e como so projetados?
O Sistema Operacional pode ser caracterizado como uma camada de software
localizado entre o hardware e os programas aplicativos que executam as
atividades dos usurios.

Segundo Tanenbaum, podemos


definir um Sistema Operacional
levando em considerao dois
pontos de vistas:
O Sistema Operacional como
uma Mquina estendida;
O Sistema Operacional como
gerenciador de recursos.
Objetivos de um Sistema Operacional

Tornar a utilizao do computador eficiente e conveniente


Garantir a integridade e segurana dos dados
Gerenciar a utilizao dos recursos existentes buscando seu uso eficiente em
termos do sistema
Um histrico dos Sistemas Operacionais
Sistemas Operacionais e apresentar como um Sistema Operacional
estruturado
Incio
Primeira Gerao (1945-1955)
Segunda Gerao (1956-1965)
Terceira Gerao (1966-1980)
Quarta Gerao (1981-Atual)
Classificao dos Sistemas
Operacionais

Sistemas Sistemas
Sistemas
Monoprogramveis ou Multiprogramveis ou
Multiprocessadores
Monotarefas Multitarefas
Estrutura do Sistema Operacional

O Sistema Operacional proporciona o ambiente pelo qual os programas so


executados e composto por um conjunto de rotinas, conhecido como o
ncleo, que so disponibilizadas para as aplicaes dos usurios e para o
prprio sistema. A interface entre o Sistema Operacional e os programas dos
usurios definida por um conjunto de instrues que o SO proporciona. Esse
conjunto de instrues tradicionalmente chamado de chamadas de sistema
(system calls).
Gerenciamento de Processos e Processador
Gerenciamento da Memria
Gerenciamento dos dispositivos de entrada e sada
Gerenciamento de Arquivos
Chamadas de Sistemas

As chamadas de sistemas (system calls) constituem a interface entre um


programa do usurio e o Sistema Operacional. Elas podem ser entendidas
como uma porta de entrada para acesso ao ncleo do sistema, que contm
suas funes. Sempre que o usurio necessitar de algum servio, o solicita
atravs de uma chamada de sistema definida e especfica.
O gerenciamento de processos

Um processo computacional ou simplesmente processo pode ser entendido


como uma atividade que ocorre em meio computacional, usualmente
possuindo um objetivo definido, tendo duracao finita e utilizando uma
quantidade limitada de recursos computacionais.
No modelo de processo, todo programa executvel organizado em um
nmero de processos seqenciais. Podemos definir processos como sendo a
abstrao do programa, ou seja, um programa em execuo, incluindo os
valores do contador de programa atual, registradores e variveis.
Criao de Processos
Estados de um Processo

Executando: um processo est no estado executando quando ele, de fato,


est sendo processado pela CPU;
Pronto: um processo est no estado de pronto quando ele possui todas as
condies necessrias para a sua execuo, porm, no est de posse do
processador;
Bloqueado: um processo est no estado de bloqueado quando ele aguarda por
algum evento externo ou por algum recurso do sistema indisponvel no
momento.
ESTADO DOS PROCESSOS

Independentes: Quando utilizam recursos completamente distintos, no se


envolvendo em disputas com outros processos.
Concorrentes: Quando pretendem utilizar um mesmo recurso, dependendo de
uma ao do sistema operacional para definir a ordem na qual os processos
usaro o recurso.
Cooperantes: Quando dois ou mais processos utilizam em conjunto um mesmo
recurso para completarem uma dada tarefa.
Threads

Threads so fluxos de execuo (linha de controle) que rodam dentro de um


processo, ou seja, uma Thread pode ser vista como um fluxo de execuo de
uma tarefa. Em processos tradicionais, h uma nica linha de controle e um
nico contador de programa. Porm, alguns Sistemas Operacionais fornecem
suporte para mltiplas linhas de controle dentro de um processo (sistemas
multithread).
Segundo Tanebaum, as threads foram inventadas para permitir a combinao
de paralelismo com execuo sequencial e chamadas de sistema bloqueantes
Os sistemas que suportam uma nica thread (em real execuo) so chamados
de monothread enquanto que os sistemas que suportam mltiplas threads so
chamados de multithread.
COMUNICAO INTERPROCESSO

Condies de Corrida
Sees Crtica
Deadlocks : Impasse entre Processos
Condio de corrida

quando dois ou mais processos podem compartilhar algum espao de


memria compartilhado no qual, o resultado da informao deste espao de
armazenamento depende de quem executa.
Um processo A l a varivel entrada e armazena o valor dela (valor 0) em uma
varivel local. Porm, o tempo de execuo do processo A termina e o
Sistema Operacional o retira do processador, disponibilizando-o a um outro
processo B. O processo B, por sua vez, tambm deseja imprimir um arquivo,
acessa a rea do diretrio de impresso, verifica o valor da varivel entrada
(valor 0), armazena este valor em uma varivel local e, por fim, insere o
nome de seu arquivo a ser impresso na posio 0 do diretrio de impresso,
mudando o valor da varivel entrada para 1.
Sees Crticas

Um processo, durante seu tempo de execuo, pode realizar uma srie de


computaes internas que no geram condies de corrida ou pode estar
acessando memria compartilhada, que levam condio de corrida.
A parte do programa no qual o processo acessa memria compartilhada chamada
seo crtica ou regio crtica. Dessa forma, a soluo para se evitar uma condio
de corrida seria organizar os problemas de tal forma que nenhum de dois ou mais
processos estivessem em suas regies crticas ao mesmo tempo.
Para se ter uma boa soluo de excluso mtua, precisamos evitar algumas situaes
indesejveis, como:
Nenhum processo que esteja fora de sua regio crtica pode bloquear a execuo
de outro processo;
Nenhum processo deve esperar indefinidamente para poder entrar em sua regio
crtica.
Deadlocks : Impasse entre Processos

Um conjunto de processos est em deadlock ou impasse quando cada um


desses processos est bloqueado esperando um evento que s pode ser gerado
por outro processo desse conjunto.
Um bom exemplo apontado por Tanenbaum trata-se de dois processos
querendo ler dados de um CD e imprimindo em uma impressora. Suponha que
o processo A solicite a impressora, que disponibilizada. De forma anloga, o
processo B solicita o CD-ROM,que lhe disponibilizado. Agora o processo A
solicita o CD-ROM, enquanto que o processo B solicita a impressora. Como
ambos os recursos j esto alocados, o processo A e B sero bloqueados. Nessa
situao eles continuaro indefinidamente, pois nenhum processo ter como
se finalizar e, por fim, liberar o recurso j alocado. Esses processos geram um
deadlock
ESCALONAMENTO DE PROCESSOS

O escalonamento de processos a forma com que os processadores


disponveis (um ou vrios) no Sistema Computacional so distribudos ou
alocados para os vrios processos prontos.
A parte do Sistema Operacional responsvel por selecionar qual ser o
processo que executar no processador chamado de escalonador ou
agendador. Dessa forma, a ordem com que os processos sero executados pelo
processador definida por um determinado algoritmo ou poltica de
escalonamento de processos.
Throughput
Tempo de Processador
Tempo de Espera (pela CPU)
Tempo de Turnaround
Tempo de Resposta
Necessidade de escalonamento

Utilizao da CPU: o intuito manter a CPU ocupada o tempo mximo


possvel.
Maximizar a produtividade (throughput): se a CPU estiver ocupada
executando processos, ento o trabalho estar sendo realizado. Deve-se
procurar maximizar o nmero de processos processados por unidade de
tempo.
Justia: o algoritmo de escalonamento deve ser justo com todos os processos,
onde cada um deve ter uma chance de usar o processador.
Minimizar o tempo de resposta: intervalo de tempo entre a submisso de uma
solicitao e o momento em que a primeira resposta produzida.
Escalonamento preemptivo e nao
preemptivo
Um algoritmo de escalonamento e dito no preemptivo quando temos que o
processador designado para um certo processo no pode ser retirado deste
at que o processo seja finalizado (completion). Analogamente, um algoritmo
de escalonamento e considerado preemptivo quando o processador
designado para um processo pode ser retirado deste em favor de um outro
processo.
Algoritmos clssicos de escalonamento
de processos
Algoritmo de Escalonamento FIFO (First in First out)
Algoritmo de Escalonamento Menor Tarefa Primeiro
Algoritmo de Escalonamento Round Robin
Algoritmo de Escalonamento Mltiplas Filas
Escalonamento FIFO (First In First Out)

Trata-se do algoritmo de escalonamento de implementao mais simples. Com


este algoritmo de escalonamento, o primeiro processo que solicita a CPU o
primeiro a ser alocado. Dessa forma, os processos que esto prontos para
serem executados pela CPU so organizados numa fila, que funciona baseado
na poltica FIFO (First in First out Primeiro a entrar o primeiro a sair).
Escalonamento FIFO (First In First Out)

Nesta poltica de escalonamento o tempo mdio de espera , com frequncia,


um tanto longo. Outro ponto que processos importantes podem ser
obrigados a esperar devido execuo de outros processos menos
importantes dado que o escalonamento FIFO no considera qualquer
mecanismo de distino entre processos.
Algoritmo de Escalonamento Menor
Tarefa Primeiro (SJF shortest job first)
shortest job first, no qual o processo que tem o menor ciclo de processamento
(tempo de execuo) ser selecionado para usar o processador.

Adificuldade real com o algoritmo de Menor Tarefa Primeiro saber o tempo


de durao da prxima solicitao de CPU. Assim, trata-se de um algoritmo
timo porm, no pode ser implementado, pois no h modo de saber o
tempo de durao do prximo pico de CPU. Uma abordagem possvel tentar
aproximar-se do algoritmo de Menor Tarefa Primeiro.
Round Robin

O algoritmo Round Robin, conhecido tambm como algoritmo de


escalonamento circular, tambm organiza a lista de processos prontos como
uma fila simples, semelhante ao algoritmo FIFO. No entanto, cada processo
recebe uma fatia de tempo do processador, comumente chamado de
quantum. Assim, um processo executa durante um quantum especfico. Se o
quantum for suficiente para este processo finalizar, outro processo do incio
da fila selecionado para executar.
O escalonamento RR se baseia na utilizao de temporizadores, constituindo
um algoritmo preemptivo bastante adequado para ambiente interativos, ou
seja, em sistemas em tempo repartido onde coexistem multiplos usurios
simultneos sendo, portanto, necessrio garantir-se tempos de resposta
razoveis.
Algoritmo de Escalonamento por
Prioridades (Mltiplas Filas)
O escalonamento circular pressupe que todos os processos so igualmente
importantes. Para que haja diferenas externas de execuo, foi criado o
escalonamento por prioridade.
A cada processo atribudo uma prioridade, e o processo com maior
prioridade executado primeiro;
Uma possvel soluo para este problema a utilizao de prioridades
dinmicas. Dessa forma, os processos de baixa prioridade podem ter suas
prioridades lentamente aumentadas, tendo, assim, chances de utilizar o
processador.
Algoritmo de Escalonamento Mltiplas
Filas
Comumente, em um Sistema Operacional, existem vrios processos de mesmo
tipo (mesma categoria, baseado na prioridade e consumo de recursos). Dessa
forma, ao invs de termos apenas uma nica fila de prontos, poderamos
construir vrias filas de prontos e agrupar os processos de mesma categoria
nessas filas. Para cada fila poderamos definir prioridades diferentes e
polticas de escalonamentos especficas. Este tipo de algoritmo de
escalonamento conhecido como algoritmo de Mltiplas Filas.
Problemas de Comunicao
interprocessos (CIP)
Problema do Jantar dos Filsofos
Problema do Barbeiro Adormecido
Problema do Jantar dos Filsofos

O problema do Jantar dos Filsofos foi proposto e resolvido por Dijkstra em 1965.
O problema foi modelado da seguinte forma:
Cinco filsofos sentados ao redor de uma mesa circular, que contm cinco
pratos de espaguete e cinco garfos.
Entre cada prato de espaguete encontra-se um garfo.
Para comer, um filsofo precisa de dois garfos.
Segundo o problema, cada filsofo alterna perodos de comer e pensar. Assim,
quando um filsofo fica com fome, ele tentar pegar os garfos da sua esquerda e
direita, um de cada vez, para poder comer o espaguete. Se conseguir pegar os
dois garfos, ele come por um tempo, liberando os garfos ao final e voltando sua
atividade de pensar.
Para resolver o problema seria fazer com que o filsofo depois que pegasse o
garfo da direita, verificar se o garfo da esquerda est disponvel. Se estiver
disponvel, o filsofo poderia pegar e comer. Caso no estivesse disponvel, o
filsofo colocaria o garfo da direita e esperaria algum tempo para, ento, tentar
comer novamente. Esta proposta tambm geraria uma situao de impasse entre
os filsofos. Imagine se todos resolvessem comer ao mesmo tempo, pegassem
seus garfos da direita e, aps verificar que os garfos da esquerda no estavam
disponveis, baixar o garfo da direita, esperar um tempo qualquer e todos, mais
uma vez, resolvessem comer novamente.
Problema do Barbeiro Adormecido

Trata-se de uma barbearia que contm um barbeiro, uma cadeira de barbeiro


e n cadeiras de espera.
Para este problema, se no houver nenhum cliente na barbearia, o barbeiro
senta-se e comea a dormir (o barbeiro, provavelmente, no dormiu direito
durante a noite). Quando um cliente chega barbearia, ele acorda o barbeiro
para poder cortar seu cabelo. Se outros clientes chegarem enquanto o
barbeiro estiver cortando o cabelo de algum, o novo cliente observa se
existe cadeira de espera livre. Caso exista, ele se senta e aguarda sua vez.
Caso contrrio, ele obrigado a ir embora.

Você também pode gostar