SO - Conceitos Básicos Introdução ao Computador – 2010/01 Renan Manola Definição de SO É uma camada de software que opera entre o hardware e os programas aplicativos voltados ao usuário final. É uma estrutura de software ampla,muitas vezes complexa, que incorpora aspectos de baixo nível (como drivers de dispositivos e gerência de memória física) e de alto nível (como programas utilitários e a própria interface gráfica). Visão gráfica p ro g ra m a d o re s e a n a l i s ta s u su á rio s p ro g ra m a s, s i s te m a s e a p li c a tiv o s U s u á r io s S is te m a O p e r a c io n a l m e m ó r ia d is c o s H a rd w a re U CP im p re sso ra s f i ta s m o n i to r e s Cabe ao sistema Operacional Prover interfaces de acessos a dispositivos, uniforme Tornar aplicativos independentes do hardware Definir politicas para gerenciar recursos como: Processador Acesso a Disco Memória Visão esquemática do SO Carga do Sistema Operacional Á rea d o S i s te m a O p e r a cio n a l boot S i s te m a O p e r a cio n a l D isco M e m ó r ia P r in c ip a l Breve Revisão de Arquitetura P ro ce ssa d o r / U C P U n id a d e L ó g ic a e A r i tm é ti c a U n id a d e d e C o n tr o le M e m ó r ia P r in c ip a l R e g is tr a d o r e s D is p o s itiv o s de E/S Proteção ao Núcleo Certas instruções não podem estar disponíveis para as aplicações, pois isso poderia ocasionar um sério problema de integridade no sistema. Exemplo: Acesso ao disco rígido para gravação de um arquivo. Níveis de Privilégio 2 Tipos de Instruções: Privilegiadas Não-Privilegiadas Processador implementa dois modos de acesso: Modo Usuário Modo Kernel Aplicação 3 Não utilizado 2 Não utilizado 1 Sistema Operacional CPU Intel x86 0 Modos de Operação O hardware fornece suporte para que a execução de processos num dado S.O. se diferencie pelo menos entre dois modos de operação: (1) modo usuário (“user mode”); modo supervisor (“kernel mode”). Para isso, um “mode bit” é adicionado ao hardware do computador para indicar o modo corrente, por exemplo supervisor (0) e usuário (1). Processos de usuário rodam em modo usuário; sistema operacional roda em modo supervisor. Modos de Operação (2) supervisor Processos executando em modo usuário usuário Podem acessar suas próprias instruções e dados Não podem acessar as instruções e dados do kernel ou mesmo de outros processos. Processos em modo supervisor não possuem esta limitação Acesso a endereços de usuário e do próprio kernel do sistema Acesso direto a recursos de hardware. Modos de Operação Com o sistema no estado supervisor: (3) Interrupções podem ser inibidas ou novamente habilitadas As proteções estão desabilitadas Qualquer instrução pode ser executada Instruções privilegiadas só podem ser executadas em modo supervisor Ex: I/O instructions, load timer, etc. Modos de Operação (4) O hardware enxerga o mundo em termos de: modo supervisor Kernel mode K modo usuário (não distinguindo entre os vários usuários) Programas são executados nesses dois modos. O sistema operacional mantém registros internos para distinguir os vários processos executando no sistema. K U User mode A B U C D Visão do HW Visão do S.O. Tipos de Sistema Operacional Em Batch (Lote) De Rede Distribuído Multi-Usuários Desktop Servidor Tempo Real Muiltiprogramado Monoprogramado Monoprogramação (1) Programa que processa um arquivo de registros e que executa, em média, 100 instruções de máquina por registro. Ler um registro Executar 100 instruções Gravar um registro 0,0015 seg 0,0001 seg 0,0015 seg Percentagem de utilização da UCP U = 0,0001 / 0,0031 = 0,32 = 3,2% Monoprogramação (2) Os recursos computacionais estão inteiramente dedicados a um único programa/tarefa. A UCP fica ociosa durante muito tempo enquanto o programa aguarda por um evento (digitação de um dado, leitura do disco, etc. ). A memória principal é subutilizada caso o programa não a preencha totalmente. Os periféricos são dedicados a um único usuário. Não existem grandes preocupações com a proteção de memória. A complexidade de implementação é relativamente baixa. Monoprogramação (3) Multiprogramação (1) Vários programas e vários usuários competem pelos recursos do sistema. Multiprogramação O objetivo é manter mais de um programa em execução “simultaneamente”, dando a ilusão de que cada programa/usuário tem a máquina dedicada para si. A idéia é tirar proveito do tempo ocioso da UCP durante as operações de E/S. Enquanto um programa espera por uma operação de leitura ou escrita outros programas podem estar sendo processados no mesmo intervalo. (2) Maximização do uso do processador e da memória. Maior taxa de utilização do sistema como um todo (redução do custo total máquina/homem). Suporte de hardware: Proteção de memória Mecanismo de interrupção (sinalização de eventos) Discos magnéticos para implementação de memória virtual Multiprogramação (3) Mono x Multiprogramação JOB1 (1) JOB2 JOB3 Tipo de Job Muita UCP Muita E/S Muita E/S Duração 5 min 15 min 10 min Memória 50K 100K 80K Disco Não Não Sim Terminal Não Sim Não Impressora Não Não Sim JOB1 Mono x Multiprogramação (2) JOB2 JOB3 Tipo de Job Muita UCP Muita E/S Muita E/S Duração 5 min 15 min 10 min Memória 50K 100K 80K Disco Não Não Sim Terminal Não Sim Não Impressora Não Não Sim Mono x Multiprogramação (3) Monoprogramação Multiprogramação Uso do processor 17% 33% Uso da memória 33% 67% Uso do disco 33% 67% Uso da impressora 33% 67% Tempo gasto 30 min. 15 min. Mecanismo de Interrupção Constitui a base de operação de um sistema de multiprogramação. É um sinal de hardware que informa a ocorrência de um evento no sistema. (1) SO Ex: término de uma operação de E/S. Provoca uma mudança no fluxo de controle, o qual é transferido para a rotina de tratamento de interrupção correspondente. P5 1 P3 INTERRUPÇÃO CPU 3 2 Mecanismo de Interrupção I N T E R R PROGRAMA ..................... ..................... ....................... .................... ............... .................... ..................... ...................... ....................... ...................... .................... ................... ..................... ....................... .. ...................... ...................... ..................... (2) SALVA REGS. Juntamente com o sinal de interrupção vem o seu número (tipo). IDENTIFICA A ORIGEM DA INTERRUPÇÃO Vetor de Interrupções OBTÉM O END. DA ROTINA DE TRATAMENTO RESTAURA REGS. ROTINA DE TRATAMENTO .............. ............ ............. .............. .............. .............. .............. ........ Inibição de Interrupções O núcleo (kernel) do S.O. algumas vezes previne a ocorrência de interrupções durante atividades críticas Poderiam resultar em dados corrompidos se fossem permitidas Certas instruções (ditas privilegiadas) permitem colocar o processador em um certo nível de execução em que ele mascara (inibe) certos valores de interrupção. Níveis Típicos de Interrupção Erros de Máquina Relógio Prioridade mais alta Disco Interface de Rede Terminal Interrupção de SW Prioridade mais baixa Interrupção de Software (1) Chamadas ao Sistema Assim como as interrupções de hardware, as chamadas ao sistema (SVCs – Supervisor Calls) também provocam uma mudança no fluxo de controle. Ao invés do fluxo ser redirecionado para uma rotina de tratamento de interrupção ele é desviado para uma rotina do sistema operacional que implementa o serviço solicitado. Ao final da execução da chamada, o controle geralmente é devolvido para o programa chamador. Por conta deste comportamento semelhante à manipulação das interrupções de hardware, as SVCs são também referenciadas como “Interrupções de Software”. Alguns autores usam o termo Trap como sinônimo de SVC. Outros usam o termo Trap para referenciar apenas as exceções que porventura ocorram no sistema (ex: divisão por zero, overflow, erro de memória, etc.). As exceções são ditas “interrupções internas”. Interrupção de Software Exemplos de SVC´s usadas no UNIX close, execve, fork, kill, open, read, wait e write. Os sistemas operacionais atuais têm centenas de chamadas de sistema (2) Linux: aproximadamente 300 chamadas diferentes Os sistemas operacionais fornecem uma interface de programação (API/biblioteca) situada entre os programas de usuário e o resto do S.O. Normalmente esta biblioteca é escrita na linguagem C (libc) Ela manipula os detalhes de baixo nível relacionados com a passagem de informação para o kernel e com a mudança para o modo protegido Tipos API para System Calls API WIN32 (Para Windows) http://en.wikipedia.org/wiki/Windows_API POSIX (Sistemas UNIX) http://en.wikipedia.org/wiki/POSIX System Calls - Esquemático Aplicação System Call Núcleo Núcleo Hardware Em um curso de SO Completo.... Diferentes mecanismos para implementar máquinas virtuais Processos Escalonamento de Processos Algoritmos de Exclusão mútua Sistema de Arquivos Dispositivos de I/O