Suporte ao Sistema Operacional DI UFPE GRECO Sistema Operacional Funções: • Auxilia na criação e execução de programas • Acesso a arquivos • Atua como interface software hardware Objetivos • Conveniência • Eficiência DI UFPE GRECO Níveis do S.O. Usuário Programador Aplicativos Utilitários Sistema Operacional Computador (Hardware) DI UFPE GRECO Projetista de S.O. Serviços Oferecidos Nível de Usuário • Controle de programas • Operações de E/S • Sistema de arquivos DI UFPE GRECO Nível de Sistema • Gerenciamento de memória • Proteção • Alocação de recursos e escalonamento (gerenciamento de processos) • Accounting Tipos de sistemas operacionais Serial batch Alocação • superposição: spooling Multiprogramação Escalonamento • superposição: E/S e processamento Time sharing • paralelismo virtual DI UFPE GRECO Proteção Aumento da Funcionalidade Tipos de S.O. Unitarefa Multi-tarefa DI UFPE GRECO Batch Interação c/ Usuário Batch simples Dedicado Batch avançado Time-sharing Batch Simples Ponto de vista do Monitor Ponto de vista da CPU - Monitor põe job na mem. de programas - CPU executa monitor - Lê Job - Jump para job - Monitor passa controle p/ job - Job termina - Controle volta ao monitor DI UFPE GRECO - CPU executa Job - Se houver erro ou job acabar -> jump para monitor Batch simples Processamento interrupções Device Drivers Sequenciamento de jobs Interpretador da ling. de controle Monitor Leitura 1 record: Execução 100 instr.: Escrita 1 record: TOTAL: .0015 sec. .0001 sec .0015 sec .0031 sec Área de programa de usuário Utilização CPU: 3.2% DI UFPE GRECO Batch Avançado: Multiprogramação run wait run wait run wait run Uniprogramação time wait run run run wait wait run Prog.A wait run wait Prog.B run wait AeB wait run Multiprogramação com 2 programas time Multiprogramação com 3 programas run run run run run wait run run run time DI UFPE GRECO Prog.B wait wait run run run wait Prog.A wait wait wait Prog.C A, B e C Exemplo Tipo Duração Memória req. Disco Terminal Impressora? Job1 Job2 Job3 computação 5 min. 50K E/S 15 min 100K E/S 10min 80K X X X Uniprogramação Utilização proc. Utilização mem. Utilização disco. Utilização impres. Taxa de trabalho Tempo resp. médio Tempo total DI UFPE GRECO Multiprogramação 17% 30% 33% 33% 6 jobs/hora 33% 67% 67% 67% 12 jobs/hora 18 min. 30 min. 10 min. 15 min. Time sharing Objetivo Fonte instr. Do S.O. 1950 Batch Multiprogramação Time Sharing Max. utilização proc. Inst. de controle com o job Min. tempo resp. Comandos no terminal 1960 Multics 1970 1980 Mainframes Nenhum Compiladores Time Multi-user Distributed software shared systems Resident Batch Monitors 1960 1970 Unix 1980 Minicomputers Nenhum Compiladores Time Multi-user software shared Resident monitors 1970 Microcomputers DI UFPE GRECO Nenhum Compiladores software Interactive Resident monitors Distributed systems 1980 Unix Distributed systems Gerenciamento de Processos DI UFPE GRECO Processo Programa que foi ativado Estados de um processo: Criação New Escalonador Término Ready Evento ocorreu DI UFPE GRECO Running Halted Esperando Waiting evento Bloco de Controle ID do Processo Estado Prioridade Program Counter Memory Pointers Contexto (regs.) I/O Status Accounting Info • tempo CPU • limites, etc. Gerenciamento de Processos DI UFPE GRECO Criação / Término Escalonamento / Chaveamento Proteção de Recursos Sincronização / Comunicação Níveis de processos usuário usuário usuário usuário supervisor • funções não críticas booting ger. mem. disco terminal ger. arq. • funções críticas clock manipulação de excessões tratamento de E/S tratamento de excessões • integridade DI UFPE GRECO Scheduling High-level • Decide quantos programas são admitidos no sistema. • Aloca memória e cria um processo. • Controla a long-term queue Short-term • Decide qual processo deve ser executado • Controla a short-term queue I/O • Decide qual processo (com I/O) pendente deve ser tratado pelo dispositivo de I/O • Controla a I/O queue DI UFPE GRECO Estruturação das filas Short-term scheduling Process request Longterm queue High-level scheduling Interrupt of process Interrupt from I/O DI UFPE GRECO Interrupt Handler Shortterm queue CPU I/O I/O queue I/O I/O queue I/O I/O queue FIM I/O scheduling Exemplo de Escalonamento Sist. Operacional Contr. Serviços Scheduler contr. interrupção A Run Executando B “Ready” Outros processos DI UFPE GRECO ExecuSist. Operacional tando Sist. Operacional Contr. Serviços Contr. Serviços Scheduler contr. interrupção A “Waiting B “Ready Outros processos Scheduler contr. interrupção A “Waiting B Run Executando Outros processos Processo A parou: • Req. serviço ao S.O. • Interrupção de A Ex. erro • Interrupção de outra fonte Ex. I/O Proteção de Recursos Proteção de recursos (dados, etc.) Segurança e privacidade Necessidade de comunicação Métodos • Prevenção (Ling. alto-nível) • Detecção e Resolução (Hardware: exceções) DI UFPE GRECO Proteção de Recursos via Hardware Análise de operações ilegais Proteção via opcode • Instruções privilegiadas (E/S ...) • Detecção do nível de operação – supervisor – usuário Proteção via operando • Privilégios de acesso • Análise de domínio – área de memória – objeto definido pelo usuário DI UFPE GRECO Proteção de Área de Memória Domínio único • Cada processo possui espaço de memória definido Domínio duplo • Parte pública: bibliotecas (compartilhamento total) • Parte privada: programa de usuário Múltiplos domínios • Conjunto compartilhado – Ex: Sa = {a1,a2,a3}, Sb = {a3,b4,b5} – Como implementar ? DI UFPE GRECO Sincronização de Processos Execução paralela de processos • Real (multiprocessador) ou virtual (time sharing) • Problemas de sincronização Process observer repeat observe um evento cont = cont + 1 until false DI UFPE GRECO Process reporter repeat if (cont mod 10) = 0 print (cont) until false Situação: reporter testou cont = 10 observer cont = 11 reporter imprimiu cont = 11 • velocidade imprevisível dos processos • compartilhamento de dados condição de corrida controle no acesso às variáveis compartilhadas Problema da Exclusão Mútua Garantir que apenas um processo acesse um dado compartilhado por vez: • definição de seções críticas Problemas: • deadlock • starvation (oposto de fairness) DI UFPE GRECO Resolvendo a exclusão mútua Busy-waiting • Controle de acesso a região – variável Lock Lock = 0 pode entrar lock = 1 bloqueado DI UFPE GRECO loop: test lock bne loop add #1, loop Desabilitar interrupções Simplicidade Regiões devem ser pequenas Inviável em multiprocessadores e se houver Interrupção? Suporte da arquitetura Operações atômicas: Ex. Test-and-set (tas) • tas <dst> if dst = 0 then dst = 1 wait: tas lock bmi wait critical section clr.b lock Indivisível Semáforos PeV Monitores Programa que engloba controla o recurso compartilhado e que tem acesso restrito DI UFPE GRECO Aumento de Eficiência: Memória Virtual Operating System Long-Term Queue Memória Job Sheduling Jobs completos e User Sessions Disco Swapping Operating System Disco Intermediate Queue Jobs completos e User Sessions Long-Term Queue DI UFPE GRECO Memória