Introdução a Sistemas Operacionais
Carlos Eduardo Ba8sta
Sistema Operacional • é um programa ou um conjunto de programas cuja função é gerenciar os recursos do sistema, fornecendo uma interface entre o computador e o usuário. – É responsável por definir qual programa recebe atenção do processador, gerenciar memória, criar um sistema de arquivos, etc.
• Um grupo de desenvolvedores da AT&T criaram o Unix (UNICS) em 1969, sendo o primeiro sistema operacional moderno da computação. – Visavam solucionar o problema da incompa8bilidade de SOs de máquinas dis8ntas
Sistema Operacional
• gerenciamento de processos; • gerenciamento de memória; • sistema de arquivos; • entrada e saída de dados.
Sistema Operacional
• Tolerância a falhas • Desempenho • Disponibilidade • Segurança • Confiabilidade
Sistema Operacional
• Tipos de SO – Real Time – Mono/mul8 usuário – Mono/mul8 tarefa
Mul8programação • O mecanismo de interrupções permite mul8plexar o processador entre várias a8vidades concorrentes. – Entre um programa e as entradas/saídas (I/O), – Esta capacidade de alternar a execução pode ser estendida a mul8plexação de vários programas residentes na memória.
• Execução concorrente de vários programas: – Permite o8mizar a u8lização do processador – ex.: Programa P1 acessa o disco e fica bloqueado enquanto o controlador de disco funciona; neste ínterim, o Programa 2 é executado pelo processador
Memória Virtual
• Suplanta restrição imposta pelo tamanho da memória _sica, aumentando o grau de mul8programação
• Propriedade de localidade
Processos
• Os Sistemas Operacionais atuais executam vários programas de forma concorrente, cada um dos quais se apoderando da CPU por uma determinada fa8a de tempo.
• O mecanismo de trocas rápidas entre os programa é chamado de mul$programação.
Processos • Conceito
– Abstração de um programa em execução.
• As informações sobre o estado de execução de um programa cons8tuem o contexto de um processo.
• São elas: – Código do programa – Dados armazenados na memória – Pilha de execução – Conteúdo dos registradores – Descritores dos arquivos abertos
Processos
Pilha
Heap
Código do Programa
Dados globais
Espaço de endereçamento
único.
Processos int main() { int x, y, z; x = f1(10, 20); z = f3(50, 60); return 0; }
Parâmetros (p1, p2) Variáveis locais (a, b)
int f1(int p1, int p2) { int a = p1 + p2; int b = p1 * p2; return a + f2(a, b); }
Retorno da função Contador de programa (10324)
Endereço 10324
Parâmetros Variáveis locais
Retorno da função Contador de programa
f1()
f2()
Faz o mesmo para f3()
Apontador da pilha
End. do quadro anterior
fork()
Processos
• Chamadas de sistema – Meio pelo qual os programas de usuário conversam com o sistema operacional.
– Forma de “proteger” a máquina dos programas de usuário.
– Tipos de chamadas: • Gerenciamento de processos • Gerenciamento de arquivos • Gerenciamento do sistema de diretório
Processos • O interior de um shell
Processos
• Criação de processos – Quatro eventos principais mo8vam a criação de processos:
• Início do sistema. • Execução de uma chamada de sistema para criação de processo ( fork() ) por outro processo.
• Requisição do usuário. • Início de um job em lote.
Processos
• Término de processos – Condições de término
• Saída normal (voluntária – chamada exit()). • Saída por erro (voluntária). • Erro fatal (involuntário). • Cancelamento por um outro processo (involuntário – chamada kill() ).
Processos
Em execução
Pronto Bloqueado
1 2
4
3
1. O processo bloqueia aguardando uma E/S.
2. O escalonador seleciona outro processo.
3. O escalonador seleciona este processo. 4. A E/S torna-‐se disponível.
• Estados de um processo – Ciclo de vida
Processos
Gerenciamento de processos Gerenciamento de memória Gerenciamento de arquivos
Registradores Contador de programa Palavra de estado do programa Ponteiro de pilha Estado do processo Prioridade Parâmetros de escalonamento Iden8ficador (ID) do processo Processo pai Grupos do processo Sinais Momento em que o processo iniciou Tempo usado da CPU Tempo de CPU do filho Momento do próximo alarme
Ponteiro para o segmento de código Ponteiro para o segmento de dados Ponteiro para o segmento de pilha
Diretório-‐raiz Diretório de trabalho Descritores de arquivo Iden8ficador (ID) do usuário Iden8ficador do grupo
� Implementação de processos
Estados, ações, histórias e propriedades
• Estado – Consiste nos valores das variáveis do programa em um dado momento durante sua execução.
• Ações atômicas – Um processo executa uma sequência de instruções, as quais são implementadas por uma ou mais ações indivisíveis, denominadas ações atômicas.
Estados, ações, histórias e propriedades
• Histórias – A execução de um programa concorrente resulta em um entrelaçamento (interleaving) de sequências de ações atômicas executadas pelos processos.
– Uma história é uma sequência de estados s0 à s1...à sn pela qual passa um programa corrente em uma execução qualquer.
Estados, ações, histórias e propriedades
• Histórias P1
Begin I1; I2; I3;
End;
P2 Begin
I4; I5; I6;
End;
P1&P2 I1; I4; I5; I2; I3; I6;
� O número de histórias possíveis é de (n*m)!/(m!)^n
Onde, n = número de processos e m = número de instruções atômicas em cada processo.
Estados, ações, histórias e propriedades
• Propriedades – Uma propriedade é um atributo válido para todas as possíveis histórias de um programa concorrente.
– Duas propriedades são desejadas em um soxware concorrente:
• Safety property • Liveness property
Estados, ações, histórias e propriedades
• Safety property – Garante que o programa nunca entra em um estado indesejado, ou seja, um estado em que as variáveis tem valores indesejados.
– Falhas levam a um comportamento indesejado. – Exemplos
• Ausência de deadlock: Processos não deixam de executar, esperando por eventos que nunca ocorrem.
• Exclusão mútua: No máximo um processo executa uma região crí8ca.
Estados, ações, histórias e propriedades
• Liveness property – Garante que o programa em algum momento entrará no estado desejado.
– Falhas levam à ausência de um comportamento esperado.
– Exemplo • Terminação: Um programa em algum momento terminará.
• Entrada eventual: Um processo aguardando entrar na região crí8ca.
Ferramentas
• Tradutor: programa que transforma um programa fonte escrito numa linguagem em um programa equivalente escrito em uma linguagem diferente;
• Interpretador: tradutor que funciona em tempo de execução. Estes programas traduzem programas codificados em linguagem de alto nível para um código intermediário e o coloca em execução.
• Pré-‐processador: programa que transforma um programa escrito em uma linguagem estendida em um programa equivalente escrito em linguagem original;
• Montador: tradutor que transforma um programa escrito em uma linguagem simbólica (de baixo nível) em instruções equivalentes em linguagem de máquina;
• Linker: Aglu8nação de módulos objetos para composição de um programa executável. Carrega na memória principal um programa para ser executado.
• Depurador: Permite acompanhar a execução de um programa e detectar erros
• Interpretador de comandos ou shell: permite ao usuário interagir com o sistema
Sistemas Operacionais Modernos
• Disposi8vos Fixos – Windows, Linux, OS X…
• Disposi8vos Móveis – Android, iOS, Windows Phone, Symbian,
SO • Windows
– Microsox – Windows 10 – Xbox OS, Windows CE, Windows Phone…
• OS X – NeXTSTEP / BSD – Apple – XNU (kernel)
• Linux – Código aberto – Kernel monolí8co – Todos os 8pos de plataformas (móveis, supercomputadores etc.)
SO -‐ Móveis
• 1996: lançado o Palm OS 2000: Microsox lança o Pocket PC2000
• 2003: Windows Mobile • 2005: Primeiros blackberry, Google compra Android • 2007: Chegada do Phone OS no mercado • 2008: Chegada do Android • 2009: Exis8a no mercado Android, BlackBerry, Windows Mobile, Samsung Bada 10, iPhone, HP Web OS
• 2010: Chegada do Windows Phone 7
SO -‐ Móveis • Android
– Baseado em Linux (porém pode ser emulado em outros sistemas)
– Google / Open Handset Alliance – Android TV, Android Auto, Android Wear... – Maior market share – Open source – Android SDK – Gerência de memória RAM austera
• Responsividade e economia de energia – OpenGL
SO -‐ Móveis
• iOS – iPhone, iPod Touch, iPad, Apple TV – Core OS, Core Services, Media, Cocoa Touch – Darwin (BSD) / XNU – Objec8ve C / iOS SDK – Mul8tasking
• Windows Phone – Windows CE – Windows Phone