Fundamentos de Sistemas Operacionais: Introdução e Processos
Classificado em Computação
Escrito em em
português com um tamanho de 14,95 KB
Sistemas Operacionais
Prof.: Otilio Paulo | Aula 1: Introdução
2
Programa da Disciplina
- Introdução
- O que é um Sistema Operacional (SO)
- Funções de um SO
- Componentes de um SO
- Tipos de SO
- Gerência de Processos
- Conceito de processo
- Estados de processo
- Tipos de processo
- Sincronização: Semáforos, monitores
- Comunicação entre processos
- Problemas:
- Deadlock
- Starvation
3
Programa da Disciplina (Continuação)
- Gerência de Memória
- Endereços lógicos e físicos
- Alocação
- Swapping
- Memória Virtual
- Paginação
- Segmentação
- Gerência de Dispositivos
- Device drivers
- Dispositivos de E/S
- Sistemas de Arquivos
- Arquivos
- Diretórios
- Alocação de espaço
- Proteção
- Projeto de Sistema Operacional
- Natureza do problema
- Interface
- Estudos de caso
4
Bibliografia Recomendada
- Sistemas Operacionais Modernos
- Andrew S. Tanenbaum
- Sistemas Operacionais
- Abraham Silberschatz, Peter Galvin, Greg Gagne
- Embedded Software Development with COS
- Anthony J. Massa
5
Avaliação
O sistema de avaliação é composto por três notas:
- Primeira Nota: Prova escrita
- Segunda Nota: Prova Escrita
- Terceira Nota:
- Prova escrita – Peso 5
- Trabalho prático – Peso 5
6
Visão Geral dos Sistemas Operacionais
- O que esperar de um sistema de computação?
- O que é um Sistema Operacional (SO)?
- O que é um kernel (núcleo) de um SO?
Eis um exemplo de um sistema de computação:
PROGRAMAS DE USUÁRIO (Navegador - editor - jogos ...) SISTEMA OPERACIONAL HARDWARE
7
Conceitos de SO
Um Sistema Operacional:
- Possibilita o uso eficiente e controlado dos recursos de hardware.
- Implementa políticas e estruturas de software de modo a assegurar um melhor desempenho do sistema de computação.
8
Conceitos de SO: Definições Chave
- Alocador de Recursos: Gerencia e aloca recursos aos “usuários”.
- Programa de Controle: Controla a execução de programas do usuário e operações de dispositivos de E/S.
- Kernel (Núcleo): Programa que executa sempre que um programa de aplicação não está executando.
9
Função do Sistema Operacional
- Oferecer uma interface simplificada do sistema computacional para o usuário
- Fornece abstrações simplificadas.
- Exemplo: Arquivos no Windows.
- Gerenciar os recursos do hardware
- Define, aplica e supervisiona políticas de acesso e utilização dos recursos.
- Exemplo: Gerência do espaço de endereçamento.
10
11
Serviços Oferecidos pelos Sistemas Operacionais
De forma geral, os serviços oferecidos pelos Sistemas Operacionais são:
- Criação e execução de programas (carga de programas na memória), além de finalizar o processo correto (em sistemas multiprogramados).
- Acesso aos periféricos, alguns com acesso direto, outros através de arquivos.
- Manipulação de Arquivos.
- Acesso a recursos de sistema (proteção entre usuários).
- Contabilidade (Monitoração de desempenho, tempo gasto no processamento, etc.).
- Detecção de erros (de hardware e de programação).
12
Metas de um Sistema Operacional
As metas de um Sistema Operacional são:
- Eficiência
- Robustez
- Escalabilidade
- Extensibilidade
- Portabilidade
- Segurança
- Interatividade
- Usabilidade
13
Detalhando as Metas do SO (Parte 1)
- Eficiência: É o baixo tempo de uso da CPU pelo S.O, dando respostas rápidas às solicitações dos processos.
- Robustez: Tolerante a falhas e confiável.
- Escalabilidade: Capacidade de usar o máximo dos recursos à medida que forem sendo instalados.
- Extensibilidade: Adapta-se bem às novas tecnologias.
14
Detalhando as Metas do SO (Parte 2)
- Portabilidade: Pode operar em muitas configurações de hardware.
- Segurança: Impede o acesso a recursos e serviços que o usuário não tenha permissão.
- Interatividade: Dá respostas rápidas às ações dos usuários ou de eventos.
- Usabilidade: Atende à necessidade da maioria dos usuários ou de seu público-alvo.
15
Arquiteturas de Sistemas Operacionais
Entre as arquiteturas de um Sistema Operacional, temos:
- Monolítica
- Em Camadas
- Micronúcleo Cliente-Servidor
- Máquinas Virtuais
16
Sistema Monolítico
A organização mais comum é aquela que estrutura o sistema como um conjunto de rotinas que podem interagir livremente umas com as outras.
Pode ser comparada com uma aplicação formada por vários procedimentos que são compilados separadamente e depois linkados, formando um grande e único programa executável.
- Grande desempenho.
- Uma falha pode paralisar todo o núcleo.
17
Sistema em Camadas
Divide o sistema operacional em sistemas sobrepostos. Cada módulo oferece um conjunto de funções que pode ser usado por outros módulos.
- No sistema MULTICS VMS, as camadas inferiores são as mais privilegiadas.
A vantagem da estruturação em camadas é isolar o sistema operacional, facilitando sua alteração e depuração, além de criar uma hierarquia de níveis de modos, protegendo as camadas mais internas.
O empilhamento de várias camadas de software faz com que cada pedido de uma aplicação demore mais tempo para chegar até o dispositivo periférico ou recurso a ser acessado, prejudicando o desempenho do sistema.
18
Sistema Micronúcleo Cliente-Servidor
A utilização deste modelo permite que os servidores executem em modo usuário.
Apenas o núcleo do sistema, responsável pela comunicação entre clientes e servidores, executa no modo kernel.
- O sistema operacional passa a ser de mais fácil manutenção.
- Não importa se o serviço está sendo processado em um único processador, com múltiplos processadores (fortemente acoplado) ou em sistema distribuído (fracamente acoplado).
- Sua implementação é difícil.
19
Sistema Máquina Virtual
- Arquitetura que permite rodar aplicações de outros sistemas operacionais.
- Exemplos: VMware, VirtualBox.
20
Componentes Primitivos do Kernel
O kernel primitivamente é formado por:
- Escalonador de Processos
- Gerenciador de Memória
- Gerenciador de Entrada e Saída (E/S)
- Gerenciador de Comunicação Interprocessos (IPC)
- Gerenciador de Sistemas de Arquivos
21
Tipos de Sistemas Operacionais no Mercado
No mercado, geralmente temos Sistemas Operacionais para:
- Computadores de Grande Porte
- Servidores
- Múltiprocessadores
- Computadores Pessoais
- Tempo Real
- Embarcados
22
Multiprogramação
Baseia-se na execução simultânea (paralela) de vários programas, uma vez que diversos programas são mantidos na memória.
Torna mais eficiente o aproveitamento dos recursos do computador, evitando que o computador fique parado em uma operação de E/S.
23
Exemplo de Multiprogramação
Quando um processo solicita uma E/S, outro processo poderá ser processado pela CPU. Ou seja, no momento em que o processo 1, que estava sendo executado, for paralisado para realizar uma gravação no HD, o processo 2 pode ocupar a CPU.
24
Concorrência e Paralelismo
- Monoprogramável: Somente um programa pode estar em memória e a CPU permanece dedicada.
- Multiprogramável: Vários programas podem estar em memória e concorrendo pela utilização da CPU.
Monoprogramável | Multiprogramável
25
Gerência de Processos
Processo vs. Programa
O que é processo em Sistemas Operacionais?
- Programa
- Entidade estática e permanente (sequência de instruções).
- Processo
- Entidade dinâmica e efêmera.
26
Características do Processo
- Altera seu estado à medida que avança sua execução.
- Composto por programa, dados e contexto (valores).
Características do Programa
- Um mesmo programa pode ter diferentes processos.
- Mesmo programa com dados e momento de execução diferentes.
27
Ciclos de Vida de um Processo
Os processos são criados e destruídos (ao término da execução ou por outros processos).
Na maior parte das vezes, executam programas de usuários, mas executam também programas de sistema (daemons).
28
Tipos de Ciclos de Processo
Dois ciclos básicos:
- Ciclo de processador: Tempo que espera/ocupa a CPU.
- Ciclo de E/S: Tempo que espera uma conclusão de E/S (evento).
Os processos com o ciclo de processador maior que o ciclo de E/S são denominados CPU-bound. Na situação inversa, são chamados de I/O-bound.
29
Hierarquia dos Processos
Na maioria dos sistemas, os processos são criados por outro processo, através de chamadas de sistema. No Linux, um exemplo disto é o init (processo raiz).
A representação hierárquica pode ser feita através de uma árvore que possui evolução dinâmica. O processo criador é o PAI e o processo criado é o FILHO.
30
[Diagrama de Hierarquia de Processos - Conteúdo não textual]
31
Ações na Destruição de um Processo
As ações sobre processos podem ser determinadas por grupos e não apenas individualmente.
O que os Sistemas Operacionais podem fazer na destruição de um processo?
- Toda a descendência morre.
- A descendência é herdada pelo processo avô.
- Postergar a destruição do processo pai até todos os filhos terminarem a sua execução.
- No Linux, quando o processo pai morre, todos os processos filhos recebem como novo pai o init.
32
Estados de um Processo
Durante o seu tempo de vida, o processo muda de estado várias vezes.
Os estados do processo são:
- Criação: Novo processo.
- Apto: Está pronto, esperando para utilizar a CPU.
- Executando: Utilizando a CPU.
- Bloqueado: Esperando pela ocorrência de algum evento (normalmente um evento de E/S).
- Destruição: Fim do processo.
33
Diagrama de Estados
É comum o processo sair do estado Bloqueado para Apto, sendo que dessa fila segue para o estado Executando.
Em casos especiais (erros), o processo pode sair do estado de bloqueado e ser destruído. Em caso de execuções muito rápidas, como verificar data e hora, o processo pode retornar direto para Executando (nesse caso, não há operação de E/S, apenas consultas às variáveis do próprio SO).
34
Bloco Descritor do Processo (PCB)
Geralmente chamado de PCB (Process Control Block).
É um registro com o qual o Sistema Operacional mantém informações sobre cada processo.
35
Informações Presentes no PCB
Algumas informações presentes no PCB:
- Identificação do processo (PID) e do criador do mesmo (PPID).
- Prioridade.
- Localização e tamanho da memória principal.
- Identificação de arquivos abertos.
- Informações de contabilidade (Ex. tempo de CPU).
- Estado do processo (apto, executando, bloqueado, etc.).
- Contexto de execução.
- Apontadores para encadeamento com outros descritores.
36
Gerência de Filas
Quando existe mais de um processo no sistema em um determinado momento, de acordo com o seu estado, o processo pode fazer parte de uma fila diferente.
As filas são implementadas como listas encadeadas, logo, os descritores não são copiados de uma fila para outra, havendo apenas uma manipulação dos apontadores.
37
Fila de Descritores Livres
Geralmente, os Sistemas Operacionais possuem uma fila de descritores livres.
- Quando um processo é criado, o descritor é retirado da fila de livres, é preenchido e inserido na fila de aptos.
- Quando o processo é destruído, o descritor é limpo e volta para a fila de descritores livres.
38
Fila de Aptos
Vários processos podem executar simultaneamente, mas só um utiliza a CPU a cada momento. Assim, os processos que estão esperando a CPU ficam numa fila de aptos.
39
Filas de E/S (Associada a cada Periférico)
O tempo de acesso a um periférico é muito grande, perante ao processador.
Enquanto um processo está bloqueado utilizando o periférico, os demais que forem chegando terão que esperar em uma fila.
Os computadores possuem uma variada gama de periféricos, que possuem um controlador de periférico, com a função de conectá-lo ao processador e possibilitar que as solicitações desse sejam atendidas (lê dados, escreve dados, etc.).
40
Exemplo de Funcionamento da Fila de E/S
Uma solicitação de E/S é realizada:
- Se a fila estiver vazia (periférico livre):
- O pedido é inserido na fila.
- O comando é enviado para o controlador do periférico.
- A operação de E/S é iniciada.
- Se a fila não estiver vazia:
- O pedido é inserido na fila.
- Nada é enviado ao controlador.
Após a interrupção do periférico (aviso que um acesso foi concluído):
- O processo que concluiu o acesso é removido da fila do periférico e inserido na fila de aptos.
- Se há processos na fila do periférico, essas ações se repetem.