O que veremos nesta aula? Tudo o que já vimos antes... Principais Aspectos de Sistemas Operacionais Laboratório de Sistemas Operacionais – Aula 1 Flávia Maristela ([email protected]) Mas afinal, para que serve um sistema operacional? – Introdução – Estrutura de sistemas computacionais – Sistema operacional na visão do usuário – Visão interna de um sistema operacional – Processos e Threads – Gerência de Memória – Arquivos – Entrada e Saída Visão geral de um sistema computacional Um sistema computacional consiste em: – Programas Aplicativos – Programas do Sistema – Dispositivos de Hardware Sistema Bancário Editor de texto, Planilha Eletrônica Navegador Compiladores Editores Interpretadores de Comandos Hardware É necessário um componente capaz de... Gerenciar diferentes recursos – CPU, memória, disco, ... Melhorar a performance do computador – tempo de resposta, throughput*,... É necessário um componente capaz de... Servir de interface entre o hardware e o resto do computador Sistema Bancário Editor de texto, Planilha Eletrônica Navegador Compiladores Editores Interpretadores de Comandos Sistema Operacional Prover uma arquitetura que facilite a programação: Hardware – É possível abstrair a camada de hardware! Quais as principais funções de um sistema operacional? Gerenciar recursos de hardware – Gerenciamento de Processador – Gerenciamento de Memória – Gerenciamento de E/S Gerência de Arquivos Gerenciando o hardware (-- processador --) O que faz o processador? – Ele é cérebro do computador! Ele busca suas instruções para execução na memória Instruções podem ser executadas de duas formas: – Modo kernel – Modo usuário Gerenciando o hardware (-- processador --) Modo kernel – CPU pode executar qualquer instrução – CPU tem acesso direto ao hardware Modo usuário – Permite a execução de apenas um subconjunto de instruções – Acesso limitado aos atributos das instruções – Funções que envolvem E/S e proteção de memória não são acessíveis Gerenciando o hardware (-- Entrada e Saída --) Gerenciando o hardware (-- memória --) Para que serve a memória? Segundo principal componente do computador. Tipos de Memória: – – – – Cache Principal Disco Magnético Fita Magnética Para pensar um pouco... Dispositivos de E/S interagem fortemente com o sistema operacional Existe algum programa que precisa executar no modo kernel? Modos de realizar E/S: Que programas executam no modo usuário? – Espera ociosa – Interrupção – Direct Memory Access (DMA) Como um programa do modo usuário pode acessar os dispositivos de E/S? Como o usuário acessa o hardware? De fora para dentro... Sistema operacional na visão do usuário: – system calls: Sistema Bancário Editor de texto, Planilha Eletrônica Navegador • Compiladores Editores Interpretadores de Comandos • • • Sistema Operacional Hardware Programas de sistema ou utilitários – Controle permanece com o usuário Chamadas de sistema (system calls) usadas quando programas solicitam serviços ao sistema operacional; transferem a execução do programa para o sistema operacional; São executadas em modo kernel Exemplo: um usuário deseja ler o conteúdo de um arquivo texto. #Algoritmo 1. usuário acessa o editor 2. editor faz uma chamada de sistema para o sistema operacional 3. sistema operacional verifica se o arquivo existe 4. se arquivo existe 5. chamada de sistema para ler conteúdo do arquivo 6. chamada de sistema para exibir conteúdo no terminal 7. senão 8. Sistema operacional informa ao editor que arquivo não existe – Controle é passado para o sistema operacional Outros tipos de sistemas operacionais Outros tipos de sistemas operacionais Bart Simpson resolveu comprar um computador e criar um sistema operacional apenas para usar o Bloco de Notas. Que características esse Sistema Operacional precisaria ter? Mais tarde, Bart resolveu que gostaria também de ouvir música, enquanto editava seu texto. Que mudanças ele precisaria fazer no Sistema Operacional? Meu sistema operacional vai ser monousuário e monotarefa! Meu sistema operacional vai precisar ser alterado para considerar várias tarefas sendo executadas! Outros tipos de sistema operacional Outros tipos de sistema operacional Com relação ao usuário – Monousuário vs. Multiusuário Com relação ao número de tarefas que podem ser executadas: Monousuário Multiusuário Monoprogramação Monotarefa Multitarefa Multiprogramação Multitarefa Multitarefa – Monotarefa vs. Multitarefa Com relação ao tipo de programação – Monoprogramação vs. Multiprogramação Outros tipos de sistema operacional Sistemas Multiprogramaveis/Multitarefas – Batch – Time-sharing – Distribuídos – Tempo Real – Embarcados Para os alunos: Pesquisem quais as principais características destes tipos de sistema operacional para a próxima aula. Mais algumas perguntas! O computador realiza acessos simultâneos ao processador, memória ou dispositivos de E/S? Como é possível controlar o acesso simultâneo ao processador? – Escalonamento Como é possível controlar o acesso simultâneo a memória? – Segmentação Como é possível controlar o acesso simultâneo aos dispositivos de E/S? – Interrupção Um presente para os alunos! 1. 2. 3. 4. 5. 6. 7. 8. 9. Processos e Threads O que é um sistema operacional? Porque os sistemas operacionais foram criados? Quais as principais funções de um sistema operacional? O que é kernel? Quais os tipos de acesso a hardware? Quais as diferenças entre eles? O que são as interrupções? Para que servem? O que são as system calls? Quais os tipos de sistema operacional? Explique cada um deles. Caracterize as abordagens: kernel monolítico vs. kernel em camadas. Quantas operações você realiza simultaneamente no seu computador? Processos Vamos considerar um exemplo O que é um processo? Vamos fazer um bolo! ENTRADA (-- ingredientes --) Programa vs. Processos – Processo é uma atividade de um programa 1. 2. 3. 4. Exemplo: vamos fazer um bolo! 5. 6. – Fazer o bolo corresponde a fazer um programa! Então, quais os principais elementos de um programa? Vamos considerar um exemplo PROCESSAMENTO (-- algoritmo --) 7. 8. 9. 10. 11. Bater as claras em neve Misturar açúcar e manteiga Adicionar as gemas Adicionar metade da farinha de trigo Adicionar metade do leite Adicionar a outra metade da farinha de trigo Adicionar a outra metade do leite Ligar o forno a 180° Adicionar as claras Despejar bolo na forma Colocar a forma no forno Estados de um processo Clássicos Programa: fazer um bolo P1 P3 P2 P7 P5 P4 P6 P8 P9 P10 P11 – Execução – Bloqueado – Pronto (Apto) Outros estados da literatura – Iniciado – Finalizado (terminado) SAÍDA (-- bolo --) Voltando ao nosso exemplo... Enquanto o bolo está sendo preparado, o filho do cozinheiro cai da bicicleta e se machuca! O que fazer? O cozinheiro vai interromper o bolo para dar os primeiros socorros ao filho! P2 P3 P5 Estados dos processos: – Em execução: • Selecionar ingredientes • Misturar açúcar e manteiga • Fazer curativo Programa: primeiros socorros P1 Voltando ao nosso exemplo... P6 – Bloqueado • Acabou o leite • Faltou algodão P4 – Apto Primeiros socorros Bolo • O bolo pode ser finalizado enquanto ele atende o filho Bolo tempo Será que pode piorar? Mas afinal, quem é que coloca ordem na casa? – ESCALONADOR: implementação de baixo nível do sistema operacional que controla o acesso a CPU Imagine agora uma padaria, onde além do bolo é necessário fazer pães, salgados, doces... – Em nosso exemplo: • ESCALONADOR: a consciência do cozinheiro • PROCESSADOR: cozinheiro • PROCESSOS: atividades que ele precisava realizar compartilhando os mesmos ingredientes Isso se chama PROGRAMAÇ PROGRAMAÇÃO CONCORRENTE Visão clássica vs. Visão contemporânea Threads Definição: – “Entidades escalonadas para execução” Espaço do usuário Tanenbaum Processo 1 Processo 1 Processo 1 Processo 1 – “Fluxo de execução dentro de um processo” Kernel Rômulo Oliveira Kernel Espaço do kernel – “Unidade básica de utilização da CPU” Silbershatz Quando usamos as threads? Threads compartilham os mesmos recursos de um processo – Quando precisamos de Programaç Programação concorrente! concorrente Mais um presente! 1. 2. 3. 4. O que é um processo? Quais os estados de um processo? Qual a diferença entre programa e processo? O que é o escalonador? Pelo que ele é responsável? 5. O que são as threads? 6. Qual a diferença entre processo e thread? 7. Para que servem as threads? Memória O que é a memória? Gerência de Memória – Exemplos: RAM, ROM, Flash, HD, pen-drive, MP3, MP4, etc. Tipos de memória – Volátil – Não-volátil Hierarquia de Memória Uma reflexão sobre gerência de memória Cache preço Principal velocidade Disco Magnético Capacidade de armazenamento Memória P1 Fitas Magnéticas Porque foi necessário criar esta estrutura de hierarquia de memória? Como podemos dividir a memória de forma que diferentes programas possam acessar? Uma reflexão sobre gerência de memória Podemos dividir a memória em tamanhos iguais! Memória P1 P2 P1 P2 P3 Então, podemos dividir a memória em tamanhos diferentes! P1 P2 P1 Uma reflexão sobre gerência de memória P3 P4 P5 P1 P6 P1 P1 P4 P2 P 3 P2 P 3 P2 P 3 P2 P 3 E se o programa atingir o limite de memória disponível para ele? Esta não é a melhor forma, pois pode haver desperdício! Uma reflexão sobre gerência de memória P1 P2 P3 P1 P1 ? Como alocar um programa cuja necessidade total corresponde a soma dos espaços disponíveis? Como é possí possível dividir e alocar adequadamente os espaç espaços de memó memória?