Kernel
Kernel
Kernel
O kernel é a parte mais importante do sistema operacional, pois,
sem ele, a cada programa novo que se criasse seria necessário
que o programador se preocupasse em escrever as funções de
entrada/saída, de impressão, entre outras, em baixo nível,
causando uma duplicação de trabalho e uma perda enorme de
tempo. Como o kernel já fornece a interface para que os
programas possam acessar os recursos do sistema de um nível
mais alto e de forma transparente, fica resolvido o problema da
duplicação do trabalho.
Sistemas Operacionais
• Kernel monolítico
Kernel monolítico ou mono-bloco é um kernel que implementa
um interface de alto nível para possibilitar chamadas de sistema
específicas para gestão de processos, concorrência por parte de
módulos dedicados que são executados com privilégios
especiais. Alguns exemplos deste tipo de kernel:
Linux;
Unix;
BSD
MS-DOS; e
Windows 95, Windows 98 e Windows ME.
Sistemas Operacionais
Shell
Script
Apple
• Mac OS X v10.7 "Lion“
• OS X v10.8 "Mountain Lion"
• OS X v10.9 "Mavericks"
História dos Sistemas Operacionais
Foi rapidamente seguido por uma série de outros PDPs (que diferentes
da família IBM, eram todos incompatíveis) culminando com o PDP-11.
Mais tarde, a IBM faria uma última tentativa de fazer do OS/2 o principal
sistema operacional com seu OS/2 Warp 3.0, mais orientado ao
consumidor comum e lançado no final de 1994. Ele venderia milhões de
cópias mas não diminuiria a grande inclinação da indústria pelo
Windows.
História dos Sistemas Operacionais
5 - 1990/97: Era Windows
Processo
Os processos, em uma mesma UCP real executam um por vez, mas
essa execução é realizada de forma a criar a ilusão de que os
mesmos estão executando em paralelo.
Conceitos sobre sistemas operacionais
Em geral um Processo é formado pelos seguintes recursos :
scanf(“%d”, VALOR);
SOMA=VALOR+JUROS;
Como podemos notar, a instrução scanf (uma requisição de
entrada e saída) é gerada se não fosse possível colocar o processo
em estado de espera; caso o usuário não entrasse com nenhum
valor, o programa ficaria suspenso e não liberaria a CPU para
outros processos.
Conceitos sobre sistemas operacionais
Estado 6 – Completo
`
Conceitos sobre sistemas operacionais
Escalonamento de Processos
Para que a CPU não fique muito tempo sem executar tarefa
alguma, os sistemas operacionais utilizam técnicas para escalonar
os processos que estão em execução ao mesmo tempo na
maquina.
O escalonamento de processos é uma tarefa complicada, pois
nenhum algoritmo é totalmente eficiente e a prova de falhas,
principalmente em se tratando de sistemas interativos, como
o Windows, pois a interação com o usuário é fundamental para
este sistema onde quem o utiliza procura respostas rápidas e a
todo o momento processos são interrompidos pelo usuário.
Conceitos sobre sistemas operacionais
Escalonamento de Processos
89
Conceitos sobre sistemas operacionais
106
Conceitos sobre sistemas operacionais
Escalonamento Filas Múltiplas
Conceitos sobre sistemas operacionais
Escalonamento Garantido
Cada processo tem direito a 1/n tempo da CPU, sendo n o
número de processos.
Para isso a CPU deve saber quanto tempo cada processo já usou.
Dividindo o tempo que já usou pelo tempo que deveria ter para
completar a operação (Tempo prometido), obtém-se uma razão
entre ambos, onde:
Se essa razão for menor do que 1, então o processo
terá direito a mais tempo de CPU;
Se essa razão for maior do que 1, então o processo
terá menos tempo de CPU do que os outros processos.
Conceitos sobre sistemas operacionais
Escalonamento em 2 níveis
Caso não haja memória disponível para todos os processos,
alguns destes deverão ser mantidos em disco.
Esta situação tem grande impacto sobre o escalonamento, uma
vez que o tempo gasto na troca de contexto envolvendo o disco é
algumas ordens de magnitude maior do que quando ambos os
processos estão na memória principal.
Conceitos sobre sistemas operacionais
Escalonamento em 2 níveis
Uma forma mais prática de tratar com o swap de processos é
usando um escalonador de 2 níveis.
Um subconjunto de processos prontos é carregado na memória
principal, e outro subconjunto é mantido em disco.
Um escalonador, denominado escalonador de nível mais baixo,
se restringe a escolher processos somente da memória,
utilizando qualquer uma das políticas de escalonamento.
Conceitos sobre sistemas operacionais
Escalonamento em 2 níveis
Um outro escalonador de nível mais alto é invocado para
remover processos que estão na memória há bastante tempo, e
trazer para a memória aqueles processos que estão em disco há
muito tempo.
Quando esta troca for feita, o escalonador de nível mais baixo se
restringe, novamente, a escolher processos que estão na
memória para serem executados.
Esta solução faz com que o escalonador de baixo nível se
preocupe em escalar os processos que estão na memória
enquanto que o de alto nível em trazer e levar processos entre a
memória e o disco (swap).
Conceitos sobre sistemas operacionais
Escalonamento em 2 níveis
O escalonador de alto nível pode usar um dos seguintes critérios
de escolha de processos:
Qual o tempo decorrido desde que o processo foi
trazido para a memória e levado de volta para o disco;
Quando tempo de CPU o processo teve;
Qual o tamanho do processo;
Qual a prioridade do processo.
Poderemos utilizar o Round Robin, prioridade, ou qualquer outro
método de escalonamento, para programar o escalonador de
alto nível.
Conceitos sobre sistemas operacionais
Escalonamento de Sistemas de Tempo Real
Nestes sistemas o fator tempo é crítico.
Diferentemente dos sistemas de tempo compartilhado, onde um
pequeno tempo de resposta é desejado porém não obrigatório,
todo processamento em tempo real deve ser realizado dentro de
limites rígidos de tempo ou, caso contrário, todo sistema pode
ficar comprometido.
Conceitos sobre sistemas operacionais
• Threads
Deadlock
Exemplo 1
– Preemptíveis e;
– Não-preemptíveis.
Um recurso preemptível é aquele que pode ser tomado do
processo que estiver usando o recurso, sem nenhum prejuízo para
o processo.
A memória é um exemplo de recurso preemptível
Conceitos sobre sistemas operacionais
RECURSO PREEMPTÍVEL:
gerência de memória
gerência de processador
gerência de periféricos
gerência de informações.
Conceitos sobre sistemas operacionais
Gerência de Memória
A Gerência de Memória tem como função primordial manter
atualizado o estado de memória, isto é, controlar as partes de
memórias que estão sendo utilizadas, identificar quem as está
usando e supervisionar as áreas disponíveis.
Dispositivos de Blocos; e
Dispositivos de Caractere.
Conceitos sobre sistemas operacionais
Dispositivo de Bloco
156
Conceitos sobre sistemas operacionais
E/S controlada por programa
Neste tipo de operação, o processador sincronizava-se com o
periférico para o início da transferência de dados e, após iniciada
a transferência, o sistema ficava permanentemente testando o
estado do periférico para saber quando a operação chegaria ao
seu final.
Este controle, chamado e E/S controlada por programa,
mantinha o processador ocupado até o término da operação de
E/S (busy wait).
Como o processador executa uma instrução muito mais
rapidamente que a realização de uma operação de E/S pelo
controlador, havia um enorme desperdício de tempo da UCP.
Conceitos sobre sistemas operacionais
E/S controlada por Pooling
A evolução do modelo anterior foi permitir que, após o início da
transferência dos dados, o processador permanecesse livre para
realizar outras tarefas. Assim, em determinados intervalos de
tempo, o sistema operacional deveria testar cada dispositivo
para saber do término da operação de E/S (polling). Esse tipo de
operação introduziu certo grau de paralelismo, visto que um
programa poderia ser processado, enquanto outro esperava pelo
término de uma operação de E/S. Isso permitiu o surgimento dos
primeiros sistemas multiprogramáveis, onde vários programas
poderiam ser executados concorrentemente, já que o tempo de
uma operação de E/S é relativamente grande.
Conceitos sobre sistemas operacionais
E/S Controlada por Interrupção
166
Conceitos sobre sistemas operacionais
167
Conceitos sobre sistemas operacionais
Conceitos sobre sistemas operacionais
Canal de Entrada e Saída
Buffering
Conceitos sobre sistemas operacionais
Spooling
A técnica de spooling (simultaneous peripheral operation on-line), é
semelhante à técnica de buffering, utiliza uma área em disco como se
fosse um grande buffer. Neste caso, dados podem ser lidos ou
gravados em disco, enquanto programas são executados
concorrentemente.
Spooling
Conceitos sobre sistemas operacionais
Reentrância
É a capacidade de um código executável (código reentrante) ser
compartilhado por diversos usuários, exigindo que apenas uma
cópia do programa esteja na memória.
A reentrância permite que cada usuário possa estar em um
ponto diferente do código reentrante, manipulando dados
próprios, exclusivos de cada usuário.
Conceitos sobre sistemas operacionais
Reentrância
Conceitos sobre sistemas operacionais
Pipeline
Pipeline é uma técnica de hardware que permite que a CPU
realize a busca de uma ou mais instruções além da próxima a
ser executada. Estas instruções são colocadas em uma fila de
memória (dentro da CPU) onde aguardam o momento de
serem executadas.
A técnica de pipeline é utilizada para acelerar a velocidade de
operação da CPU, uma vez que a próxima instrução a ser
executada está normalmente armazenada dentro da CPU e não
precisa ser buscada da memória, normalmente muito mais
lenta que a CPU.
Conceitos sobre sistemas operacionais
Chamadas de Sistemas
Podem ser:
Gerenciamento de Processos;
Gerenciamento de Sinalização;
Gerenciamento de Arquivos;
Gerenciamento de Diretórios e Sistemas de Arquivos;
Gerenciamento de Tempo.
Conceitos sobre sistemas operacionais
Gerenciamento de Processo
Subprocesso e Thread.
Conceitos sobre sistemas operacionais
181
Conceitos sobre sistemas operacionais
Gerenciamento de Sinalização
Em alguns casos é necessário intervir na execução de um
processo, seja por motivos planejados ou por instruções ilegais
passadas ao sistema (falhas).
Por exemplo se um usuário instrui um editor de texto a
imprimir o conteúdo deste arquivo, e então verifica que não
quer mais imprimir, deverá haver uma maneira de interromper
o editor e eliminar o processo, neste caso é utilizado a
chamada kill.
Conceitos sobre sistemas operacionais
Conceitos sobre sistemas operacionais
Gerenciamento de Arquivo
185
Conceitos sobre sistemas operacionais
Gerenciamento de Diretórios e Sistemas de Arquivos
187
Conceitos sobre sistemas operacionais
Gerenciamento de Tempo
Basicamente trata-se de chamadas de sistema que envolvem o
tempo de relógio convencional. Entre as possibilidades estão,
exemplo:
Time: que retorna a hora do sistema;
Stime: Relógio possa ser configurado pelo Superusuário;
Utime: Permite que o arquivo tenha definido os atributos
de data e hora de criação e modificação; e
TimeS: Retorne o tempo de utilização da CPU.
188
Conceitos sobre sistemas operacionais
189
Conceitos sobre sistemas operacionais
Multiprogramação
Concorrência
Os vários processos “competem” entre si pela atenção do
processador.
Conceitos sobre sistemas operacionais
Multiprogramação
Cooperação
– Processos podem trabalhar em conjunto para a
realização de tarefas mais complexas.
– Esta cooperação exige ao SO a existência de mecanismos
de sincronização e comunicação entre processos.
Conceitos sobre sistemas operacionais
Multiprogramação
Comunicação Interprocessos
Resumo:
Resumo:
Variável compartilhada:
Variável compartilhada:
www.infowester.com
www.cdi.org.br
www.socid.org.br
http://www.guiadatecnologia.com
http://www.tecmundo.com.br
http://pt.wikipedia.org