FACENS - Faculdade de Engenharia de Sorocaba Enade - Sistemas Operacionais Sistemas Operacionais - Introdução Sistemas Operacionais - Funções Aplicações Compiladores Editores Interpretadores de comando Sistema Operacional Linguagem de Máquina Microarquitetura • SO como Máquina Estendida – oferece uma máquina virtual mais simples de programar do que o hardware • SO como Gerenciador de Recursos – fornece uma alocação controlada de processadores, memória e dispositivos de entrada/saı́da (E/S) Dispositivos Fı́sicos Todo computador possui uma camada chamada sistema operacional cujo objetivo é gerenciar todos os dispositivos (processador, memória, disco, impressora, teclado, monitor, etc.) e prover uma interface simples para o usuário manipular o hardware. O sistema operacional é um software que oferece ao programador um ambiente agradável e mais conveniente para trabalhar. Profa. Tiemi Christine Sakata A função do sistema operacional pode ser apresentada ao usuário como máquina estendida ou máquina virtual que facilita a programação provendo uma variedade de serviços que os programas podem obter usando instruções especiais (system calls). O sistema operacional também pode ser visto como um gerenciador de vários pedaços de um sistema complexo (processador, memória, relógios, duscis, etc.) e deve decidir quais pedidos podem alocar os recursos para que o sistema possa operar sem conflitos. 1 FACENS - Faculdade de Engenharia de Sorocaba Enade - Sistemas Operacionais História dos Sistemas Operacionais História dos Sistemas Operacionais • Primeira Geração (1945–55) — Válvulas e Painéis de Conectores • Terceira Geração (1965–80) — Circuitos Integrados e Multiprogramação • Segunda Geração (1955–65) — Transistores e Sistema Batch Card reader Tape drive Input tape (b) Output tape 7094 (c) (d) Job 2 Job 1 Printer 1401 (a) System tape Job 3 1401 (e) (f) Os primeiros computadores surgiram no inı́cio da Segunda Gerra Mundial e eram formados por milhares de válvulas que ocupavam enores áreas. Não existia o conceito de sistemas operacionais e para trabalhar nessas máquinas era necessário um profundo conhecimento do hardware. A criação do transitor permitiu o aumento da velocidade e a confiabilidade do processamento e as memórias tinham maior capacidade permitindo computadores menores. O sistema operacional era bem simples e era armazenado na memória. Memory partitions Operating system • Quarta Geração (1980–atual) — Computadores Pessoais A multiprogramação compartilha a memória principal e o processador, o que permitiu o aumento da utilização da CPU. O sistema operacional mantém vários jobs na memória ao mesmo tempo e gerencia a execução de cada job. Com a evolução de microprocessadores, surgiram os primeiros microcomputadores, muito mais baratos. Os dois sistemas operacionais que inicialmente dominaram o computador pessoal foram MS-DOS e Unix. O hardware foi ficando cada vez mais sofisticado, com vários processadores exigindo sistemas operacionais com novos mecanismos de controle e sincronismo. A década de 90 foi definitiva para a consolidação de sistemas operacionais baseados em interfaces gráficas. As interfaces são cada vez mais simples e eficiente. Profa. Tiemi Christine Sakata 2 FACENS - Faculdade de Engenharia de Sorocaba Chamadas do Sistema (System Calls) Porta de entrada para ter acesso ao núcleo do sistema operacional. • Gerenciamento de Processos — fork, waitpid, exit • Gerenciamento de Arquivos — open, close, read • Gerenciamento de Diretórios – mkdir, link, mount • Proteção — chmod Enade - Sistemas Operacionais Estrutura do Sistema Operacional 1 Monolı́tico – um programa principal que invoca os serviços – um conjunto de serviços para executar as chamadas do sistema – um conjunto de procedimentos para ajudar as chamadas de serviços. Main procedure Service procedures • Gerenciamento de Tempo — time(&second) O usuário solicita um serviço do sistema operacional através do uso das chamadas do sistema. Cada sistema operacional possui seu próprio conjunto de chamadas. Através dos parâmetros fornecidos nas chamadas do sistema, a solicitação é processada e uma resposta é retornada à aplicação. Profa. Tiemi Christine Sakata Utility procedures É a organização mais comum. O sistema operacional é escrito como uma coleção de procedimentos, cada um dos quais pode chamar uns aos outros. O programa-objeto do sistema é formado por vários procedimentos que são compilados separadamente e linkados, formando um grande e único executável. 3 FACENS - Faculdade de Engenharia de Sorocaba Estrutura do Sistema Operacional Enade - Sistemas Operacionais Estrutura do Sistema Operacional 3 Máquinas Virtuais 2 Em Camadas Camada Função 5 Usuário 4 Programas de usuário 3 Gerenciamento de E/S 2 Comunicação operador-processo 1 Gerenciamento de memória – cópias exatas do hardware básico – executa qualquer sistema operacional – mais simples, flexı́vel e fácil de manter Virtual 370s System calls here I/O instructions here Trap here 0 Alocação de processador e Multiprogramação Um sistema em camadas divide o sistema operacional em camadas sobrepostas formando uma hierarquia. Cada módulo oferece um conjunto de funções que podem ser utilizadas por outros módulos. Módulos em camadas podem fazer referência apenas a módulos das camadas inferiores. A vantagem desta estrutura é isolar as funções do sistema operacional. Profa. Tiemi Christine Sakata CMS CMS CMS Trap here VM/370 370 Bare hardware Um sistema de tempo compartilhado oferece multiprogramação e uma máquina estendida com interface mais conveniente que o hardware básico. A essência das máquinas virtuais é a separação dessas duas funções. Assim, o coração do sistema, conhecido como monitor de máquina virtual, executa no hardware básico e faz a multiprogramação, oferecendo não apenas uma, mas várias máquinas virtuais à camada superior. Porém, ao contrário de todos os outros sistemas operacionais, essas máquinas não são máquinas estendidas com recursos amigáveis. Em vez disso, elas são cópias exatas do hardware básico, incluindo o modo kernel/usuário, E/S, interrupções, etc. 4 FACENS - Faculdade de Engenharia de Sorocaba Estrutura do Sistema Operacional Enade - Sistemas Operacionais Processos 4 Modelo Cliente-Servidor • programa – seqüência de instruções – núcleo mais simples • processo – abstração da execução do programa – cliente solicita serviços ao servidor – contexto do programa corrente (status de execução) – diretório de trabalho do programa corrente – comunicação — troca de mensagens – arquivos e diretórios aos quais o programa tem acesso Client process Client process Process server Terminal server File server Memory server User mode Kernel mode Kernel Client obtains service by sending messages to server processes O sistema é dividido em processos, cada um responsável por um serviço. O cliente pode ser uma aplicação de usuário ou um outro componente do sistema operacional. A solicitação é feita através de envio de uma mensagem ao servidor, que responde através de uma outra mensagem. A utilização deste modelo permite que os servidores executem em modo usuário, ou seja, não tenham acesso direto ao hardware. Outra vantagem é que este modelo é facilmente adaptável para uso de sistemas distribuı́dos. Profa. Tiemi Christine Sakata – direitos de acesso do programa corrente – memória e outros recursos alocados ao processo • sistema multiprogramado - pseudoparalelismo Computadores modernos podem fazer várias coisas ao mesmo tempo: executar um programa, ler dados do disco e imprimir dados na tela ou na impressora. Em sistemas multiprogramados, a CPU também pode dividir seu tempo (na ordem de milisegundos) para diversos programas dando ao usuário a impressão de paralelismo (pseudoparalelismo). Um processo é um programa em execução e é a unidade básica de escalonamento do sistema operacional. Um processo é um elemento ativo (altera o seu estado à medida que executa o programa). 5 FACENS - Faculdade de Engenharia de Sorocaba Enade - Sistemas Operacionais Multiprogramação Estados do Processo One program counter Executando Four program counters Process switch Process A B C A B C D D C 1 B A D (a) Bloqueado Time (b) 3K 4 - Pronto (c) 1 Processo bloqueado para entrada 2 Gerenciador desativa um processo (b) execução independente 3 Gerenciador ativa outro processo (c) execução x tempo 4 Entrada se torna disponı́vel (a) memória Todo processo possui um contador de programa lógico que é armazenado na memória. Apenas o contador do processo executado em um determinado instante é carregado no contador de programa real. Podemos notar que em um intervalo todos os processos progrediram, mas em um instante de tempo apenas um processo está realmente sendo executado. O tempo de execução de um processo pode variar de acordo com a forma em que a CPU decide executar os processos. Os processos que requerem tempo crı́tico necessitam tomar certas medidas especiais para garantir uma resposta esperada. Profa. Tiemi Christine Sakata U2 A diferença entre o estado executando e pronto é que o estado executando está utilizando a CPU enquanto que no estado pronto, não há temporariamente CPU disponı́vel para sua execução. Existem métodos para divir o uso da CPU para a execução dos processos prontos. O estado bloqueado não será executado mesmo com CPU disponı́vel. 6 FACENS - Faculdade de Engenharia de Sorocaba Enade - Sistemas Operacionais Escalonamento de Processos Deadlock • FCFS • Job mais curto primeiro • Menor tempo restante primeiro • Round Robin • Prioridade (múltiplas filas) (a) (b) Cuidado com starvation Quando um programa é multiprogramado, freqüentemente possui vários processos competindo pela CPU ao mesmo tempo. Isso ocorre quando dois ou mais processos estão prontos para serem executados. O escalonamento de processos tem por objetivo instruir a CPU para executar os processos que foram inseridos em uma fila de processos prontos. A parte do sistema operacional que faz a escolha de qual processo executar é chamado de escalonador e o algoritmo usado é chamado de algoritmo de escalonamento. Deadlock - Condições necessárias 1. exclusão mútua: pelo menos um recurso deve ser atribuı́do a um único processo por vez 2. posse e espera: deve haver um proc. que possui um recurso e espera recursos adicionais 3. não-preempção: recursos não podem ser retirados de forma forçada 4. espera circular: 2 ou mais processos, cada um esperando pelo recurso em posse de outro proc. Profa. Tiemi Christine Sakata 7 FACENS - Faculdade de Engenharia de Sorocaba Gerência de Memória • Memória – grande vetor de palavras (bytes), cada um com seu próprio endereço • Multiprogramação – compartilhamento de memória Enade - Sistemas Operacionais Alocação de memória: partições fixas Multiple input queues Partition 4 • Memória lógica Partition 1 Operating system (a) A memória fı́sica é aquela implementada pelos circuitos integrados de memória. O endereço fı́sico é o que vai para a memória fı́sica, ou seja, usado para endereçar os circuitos integrados de memória. O endereço lógico é o endereço gerado pela CPU. A MMU é o componente de hardware que provê mecanismos usados pelo SO para gerenciar a memória. A MMU mapeia os endereços lógicos gerados pelos processos nos correspondentes endereços fı́sicos. Profa. Tiemi Christine Sakata Partition 3 400K Partition 2 Na multiprogramação é preciso manter vários processos prontos para execução na memória. A gerência de memória do SO provê os mecanismos necessários para que os diversos processos compartilhem a memória de forma segura e eficiente. Single input queue Partition 3 • Memória fı́sica • MMU (Memory Management Unit) Partition 4 700K Partition 2 Partition 1 100K 0 Operating system (b) A memória principal é dividida em partições: uma para o sistema operacional e outra para os processos do usuário. Como na multiprogramação existem vários processos na memória é necessário encontrar maneiras de alocar os processos que estão na fila de entrada esperando para serem carregados na memória. Um dos métodos mais simples de alocação de memória é dividir a memória em partições de tamanhos fixos. Cada partição pode conter apenas um processo e portanto o grau da multiprogramação está limitado pelo número de partições. Quando um processo termina, a partição fica disponı́vel para outro processo da fila. A fila pode ser construı́da por partição (o processo fica na fila da menor partição que ele pode ser alocado) e neste caso pode existir partições sem nenhum processo e outras com muitos processos na fila; ou uma fila única para todas as partições onde um processo pequeno pode estar usando uma partição de tamanho grande. 8 FACENS - Faculdade de Engenharia de Sorocaba Alocação de memória: part. variáveis Proc 1 - 174K Proc 1 - 174K Proc 2 - 98K Proc 4 - 85K Proc 3 - 23K Livre - 13K Livre - 80K Proc 3 - 23K SO Livre - 80K Proc 4 -85K Enade - Sistemas Operacionais Paginação SO Em geral, existe um conjunto de partições de memórias livres de vários tamanhos. Quando um processo chega é feita uma busca para encontrar uma partição grande o suficiente para o processo. Se a partição é grande demais, ela será dividida em dois e uma parte é devolvida para o conjunto de partições livres. A paginação é um esquema que permite que o espaço de endereçamento fı́sico de um processo seja não contı́guo. Esse mecanismo elimina a fragmentação externa e reduz a fragmentação interna. A memória fı́sica (sistema) e a memória lógica (processo) são quebradas em blocos de tamanhos fixos e idênticos. Os blocos da memória fı́sica são chamados de quadros (frames) e da memória lógica de páginas. O tamanho desses blocos é definido pelo hardware. Cada endereço gerado pela CPU (endereço lógico) é dividido em duas partes: número de página (p) e deslocamento de página (d). O número de página é usado como ı́ndice em uma tabela de página. Profa. Tiemi Christine Sakata 9 FACENS - Faculdade de Engenharia de Sorocaba Enade - Sistemas Operacionais Memória Virtual Segmentação com compactação sistema operacional 3 Segment 4 (7K) Segment 3 (8K) Segment 4 (7K) Segment 3 (8K) (3K) (3K) Segment 5 (4K) Segment 5 (4K) Segment 3 (8K) (10K) 2 (4K) Segment 6 (4K) Segment 5 (4K) Segment 6 (4K) Segment 2 (5K) Segment 2 (5K) Segment 2 (5K) (3K) (3K) (3K) Segment 2 (5K) Segment 7 (5K) Segment 7 (5K) Segment 7 (5K) Segment 7 (5K) Segment 0 (4K) Segment 0 (4K) Segment 0 (4K) Segment 0 (4K) Segment 0 (4K) (a) (b) (c) (d) (e) Segment 2 (5K) Segment 1 (8K) 4 1 carregar M 6 i 5 quadro livre mem. física Pode-se utilizar o esquema de bit válido/inválido para determinar se uma página está na memória ou não. Se o bit é válido, então a página é legal e está na memória. Se o bit for inválido, a página não é válida ou é válida mas no momento está no disco. Um procedimento simples para tratar a falta de página é descrita a seguir: A segmentação pode causar fragmentação externa já que o tamanho dos segmentos é variável. Neste caso, o processo pode simplesmente ter que esperar até que mais memória se torne disponı́vel, ou a compactação pode ser usada para criar um bloco de memória livre maior. 1. verificação da tabela para determinar se a referência é válida ou inválida. 2. se a referência é inválida, o processo é terminado. Se é válida mas não está na memória, a página deve ser carregada 3. procura de um quadro livre 4. escalonamento de uma operação de disco para ler a página desejada no quadro recém alocado 5. a tabela é modificada indicando que a página está na memória 6. reiniciar a instrução que foi interrompida pela exceção de endereço ilegal. Profa. Tiemi Christine Sakata 10 FACENS - Faculdade de Engenharia de Sorocaba Enade - Sistemas Operacionais Sistema de Arquivos Alocação de blocos Root directory User directory A A B B B • alocação contı́ua C B C • Lista ligada de blocos C • File Allocation Table (FAT) B C C • I-node User subdirectories C C C C User file A solução para armazenar a informação em discos é criar arquivos. A informação deve ser persistente, ou seja, um arquivo desaparecerá quando for removida explicitamente. O sistema de arquivos (parte do SO) é responsável pelo modo como arquivos são estruturados, nomeados, acessados, usados, protegidos e implementados. A capacidade dos usuários criar um número arbitrário de subdiretórios propicia uma ferramenta poderosa de estruturação para organizar seu trabalho. Quase todos os modernos sistemas de arquivos são organizados assim. Profa. Tiemi Christine Sakata O esquema mais simples de alocação é armazenar cada arquivo em blocos contı́guos de disco. O disco é dividido em blocos de mesmo tamanho. Se um arquivo ocupa um bloco e meio, a outra metade do bloco é desperdiçada. Vantagens: simples de implementar e bom desempenho de leitura. Desvantagem: os arquivos não podem crescer e há fragmentação do disco. Os arquivos podem ser mantidos como uma lista encadeada de blocos de disco. A primeira palavra de cada bloco é usada como ponteiro para um próximo. O restante do bloco é usado para dados. Neste método não há fragmentação externa e para manter uma entrada de diretório é suficiente armazenar apenas o endereço em disco do primeiro bloco. Por outro lado, o acesso aleatório é extremamente lento, pois para chegar ao bloco n de um arquivo, o SO, a partir do inı́cio, deve ler os n − 1 blocos antes dele. Tabela de ı́ndice na memória – usando essa organização todo bloco fica disponı́vel para dados e o acesso aleatório se torna mais fácil. Para encontrar um bloco de um arquivo, é necessário percorrer o encadeamento, porém, como a tabela está na memória, a localização do bloco pode ser feita rapidamente. A principal desvantagem deste método é que a tabela deve estar na memória o tempo todo. A tabela pode ser alocada em memória paginada, mas mesmo assim, ocuparia muito espaço de memória virtual e de espaço em disco gerando tráfego extra de paginação. O i-node é uma estrutura de dados associado a cada arquivo que relaciona os atributos e os endereços em disco dos blocos de arquivo. Dado o i-node, é possı́vel encontrar todos os blocos do arquivo. A grande vantagem desse esquema é que o i-node só precisa estar na memória quando o arquivo estiver aberto. 11 FACENS - Faculdade de Engenharia de Sorocaba Entrada/Saı́da Enade - Sistemas Operacionais Acesso Direto à Memória (DMA) • emitir comandos para os dispositivos • interceptar interrupções e tratar erros Drive CPU 1. CPU programs the DMA controller • fornecer interface entre os dispositivos e o restante do sistema • interfaces padronizadas x variedade de dispositivos Uma das principais funções de um computador é solucionar problemas. Para tanto, é necessário que algum tipo de mecanismo exista para que possamos informar esse problema ao computador e recuperar sua solução. Esse mecanismo constitui o que denominamos de dispositivos de entrada e saı́da (E/S) de um computador. Alguns desses dispositivos são para a comunicação do homem com o computador (teclado, mouse, monitor de vı́deo, etc.), outros são para a comunicação entre computadores (modem, placa de rede, etc.) e temos também os dispositivos para armazenar informações (disquetes, fita, disco rı́gido, CD-ROM, etc.). A tecnologia de E/S apresenta duas tendências conflitantes. Por um lado, há uma crescente padronização de interfaces de software e hardware. Por outro lado, há uma variedade cada vez maior de dispositivos de E/S. Profa. Tiemi Christine Sakata DMA controller Main memory Disk controller Buffer Address Count Control Interrupt when done 4. Ack 2. DMA requests transfer to memory 3. Data transferred Bus Para um dispositivo que realiza grandes transferências de dados (disco) parece desperdı́cio usar um processador caro de uso geral para fornecer ao registrador do controlador, 1 byte de cada vez. Muitos computadores passam parte desse trabalho para um processador especial chamado controlador de acesso direto (DMA). O DMA deve pode acessar diretamente a memória e está conectado fisicamente ao barramento de dados e de endereços do computador. Para começar uma transferência DMA, a CPU programa o controlador de DMA inserindo valores em seus registradores. O DMA inicia a transferência emitindo pelo barramento uma requisição de leitura para o controlador de disco. Normalmente o endereço de memória para onde escrever está nas linhas do barramento. Quando a escrita está completa, o controlador de disco envia um sinal de confirmação para o DMA. 12 FACENS - Faculdade de Engenharia de Sorocaba Enade - Sistemas Operacionais O que foi visto Camadas do Sistema E/S • História dos Sistemas Operacionais Layer I/O request User processes I/O reply I/O functions • Processos Make I/O call; format I/O; spooling Naming, protection, blocking, buffering, allocation • Deadlock Device drivers Set up device registers; check status • Gerência de Memória – memória virtual Interrupt handlers Wake up driver when I/O completed Device-independent software Hardware Perform I/O operation O software de E/S é normalmente organizado em quatro camadas. Cada camada tem sua função bem definida para executar e uma interface também bem definida para as camadas adjacentes. A funcionalidade e as interfaces diferem de um sistema para outro. Quando, por exemplo, o programa do usuário tenta ler um bloco de um arquivo, o SO é requisitado para realizar a chamada. O software independente de dispositivo procura pelo bloco na cache do buffer. Se o bloco requisitado não está lá, ele chama o driver do dispositivo para emitir uma requisição a fim de que o hardware o obtenha do disco. Quando o disco termina, o hardware gera uma interrupção. O tratador de interrupção é executado para descobrir o que aconteceu, isto é, qual dispositivo está requerendo atenção naquele momento. Ele então obtém o status do dispositivo e acorda o processo que estava dormindo para finalizar a requisição de E/S. Profa. Tiemi Christine Sakata • Sistema de Arquivos • Gerência de E/S Referências Andrew S. Tanenbaum. Modern Operating Systems. Prentice Hall. 2001 Segunda edição Abraham Silberschatz, Peter Galvin e Greg Gagne. Sistemas Operacionais. Editora Campus, 2000 13