Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Sistemas Operacionais Prof. MSc. Leandro KravczukProf. MSc. Leandro Kravczuk proflkv@gmail.comproflkv@gmail.com www.facebook.com/profleandrokvwww.facebook.com/profleandrokv 2 Bibliografia Básica Tanenbaum, A. S. Sistemas Operacionais Modernos. Ed. Pearson, 3ª Edição, 2010. Machado, F. B., Maia, L. P. Arquitetura de Sistemas Operacionais. LTC Editora, 4ª Edição 2007. Silberschatz, A., Galvin, P. B., Gaine, G. Fundamentos de Sistemas Operacionais. LTC, 8ª Edição, 2010. Complementar Deitel, H.M., Deitel, P. J., CHOFFNES, D. R. Sistemas Operacionais. Ed. Pearson, 3ª Edição, 2005. Flynn, I. M., Mchoes, A. M. Introdução aos Sistemas Operacionais, Cengage Learning, 2002. Tanenbaum, A. S., Woodhull, A. S. Sistemas Operacionais – Projeto e Implementação. Grupo A Editoras, 3ª Edição, 2008. Silberchatz, A., Galvin, P. B., Gagne, G. Sistemas Operacionais com Java. 7ª Edição Campus, 2008. Oliveira, R. S, Carissimi, A., Toscani, S. Sistemas Operacionais, Coleção Livros Didáticos Informática UFRGS, Vol 11, Grupo A Editoras, 4ª Edição, 2010. 3 Provas S.O. 1ºAV – 01 de Outubro 2ºAV – 03 de Dezembro Obs: Entrega da parte escrita do P.I. II 4 Projeto Interdisciplinar II - Conteúdo Programático • Levantamento histórico de dois Sistemas Operacionais; • Vantagens e desvantagens da utilização dos Sistemas Operacionais escolhidos; • Aplicabilidade dos Sistemas Operacionais escolhidos no meio acadêmico, doméstico e profissional; • Comparativo entre os dois Sistemas Operacionais escolhidos (no meio acadêmico, doméstico e profissional); • Estudo de caso de uma empresa existente, mostrando qual Sistema Operacional é atualmente utilizado (clientes e servidores) e qual o Sistema Operacional que melhor se adequaria para realidade da empresa escolhida. 5 Proj Interdisciplinar II Quantidade de Alunos: • Máximo de 10 pessoas por equipe • Reuniões Agendar pelo proflkv@gmail.com Disponibilidade: Segundas - 18:00 às 18:45 e/ou Terças - 18:00 às 18:45 e/ou por email proflkv@gmail.com 6 - Entrega do trabalho [impresso (encadernado) e por email (arquivo .doc ou .docx)] completo composto de capa, folha de rosto sumário, introdução, metodologia, referencial teórico (em média de oito a quinze folhas) e referências; - Apresentação do trabalho através de um pôster. - Apresentação do PowerPoint utilizando o DataShow para toda turma. - Entrega trabalho impresso: No dia da 2º AV - Data para Apresentação do Pôster e DataShow: A combinar com o Prof. 7 Introdução O que compõem um Sistemas Computacional? Processadores; Memória; Discos; Impressora; Teclado; Monitor, Placas de Rede e outros dispositivos de entrada e saida. Para gerenciar esses recursos existe o sistema operacional, cujo trabalho é fornecer aos programas do usuário um modelo de computador melhor, mais simples e limpo e lidar com o gerenciamento de todos os recursos mencionados. 8 Windows? Linux? Mac OS X? O programa que os usuários interagem: • Shell: interpretador de comandos • GUI: Interface gráfica com o usuário Eles não fazem parte do SO, embora o utilize para realizar seu trabalho. Introdução 9 Introdução A maioria dos computadores tem dois níveis de operação: modo núcleo e modo usuário. O S.O. é a peça mais básica de software e opera em modo núcleo (modo supervisor). Nesse modo ele tem acesso completo a todo o hardware e pode executar qualquer instrução que a máquina seja capaz de executar. O resto do software opera em modo usuário, no qual apenas um subconjunto de instruções da máquina está disponível. As instruções que afetam o controle da máquina ou realizam E/S são proibidas para programas de modo usuário. 10 Onde o SO se encaixa 11 O programa de interface com o usuário, shell ou GUI, é o nível mais inferior do software de modo usuário e permite que este inicie programas, como o navegador Web. Esses programas também usam muito o S.O. Sistemas Operacionais ≠ Aplicações SO: Grandes, complexos e têm vida longa. Difíceis de escrever; Evoluem com o tempo. Introdução 12 É um software que executa em modo núcleo, ou seja, fornece aos aplicativos um conjunto de recursos abstratos claro em vez de recursos confusos de hardware e também gerencia esses recursos de hardware. O que é um SO? 13 É uma máquina estendida – Oculta os detalhes complicados que têm quer ser executados – Apresenta ao usuário uma máquina virtual, mais fácil de usar Exemplo: => O que é um SO? 14 SO transformam hardware feio em abstrações bonitas 15 O que é um SO? É um gerenciador de recurso • Cada programa tem um tempo com o recurso Diferentes programas aguardam sua vez para utilizá-lo; Ex: Múltiplas saídas são enfileiradas para imprimir em uma única impressora. O SO decide qual será a próxima saída a ser impressa. • Cada programa tem um espaço no recurso Cada um ocupa uma parte do recurso. Ex: A memória principal é dividida entre vários programas em execução, assim cada um pode residir ao mesmo tempo na memória. É mais eficiente mantê-los nela em vez de destinar toda memória a um só programa, principalmente se ele precisar de apenas uma pequena fração do total. 16 A História dos SOs • Primeira geração 1945 - 1955 – Válvulas, painéis de programação • Segunda geração 1955 - 1965 – transistores, sistemas em lote • Terceira geração 1965 – 1980 – CIs e multiprogramação • Quarta geração 1980 – presente – Computadores pessoais 17 Aspectos Históricos dos S.O.’s 1ª Geração (1945-1955): Válvulas e Painéis de Programação • Máquinas imensas com milhares de válvulas e milhões de vezes mais lentas que os mais lentos computadores atuais; • Um mesmo grupo de pessoas projetava, construía, programava, operava e realizava a manutenção de cada máquina; • No início da década de 50 a programação em painéis deu lugar à programação em cartões. 18 Aspectos Históricos dos S.O.’s 1ª Geração (1945-1955): Válvulas e Painéis de Programação * Toda programação era feita em código de máquina absoluto e muitas vezes conectando plugs em painéis para controlar as funções básicas da máquina. • Não havia linguagens de programação (nem mesmo a linguagem assembly); • Os S.O.s também não haviam sido inventados. • O programador reservava antecipadamente tempo de máquina em uma planilha, ia para a sala da máquina, inseria seu painel de programação no computador e passava algumas horas torcendo para que nenhuma das 20 mil válvulas queimasse durante a execução. 19 Aspectos Históricos dos S.O.’s 1ªGeração (1945-1955): Válvulas e Painéis de Programação 20 2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch) – Computadores de grande porte (mainframes), fabricados e comercializados com a expectativa de maior tempo de funcionamento. - Separação entre projetistas, fabricantes, programadores e técnicos da manutenção; – Sistemas operacionais típicos desta época: FMS (Fortran Monitor System) e o IBSYS, do IBM-7094. Aspectos Históricos dos S.O.’s 21 2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch) – Ficavam isolados em salas especiais com ar- condicionado, operadas por equipes profissionais; – Somente grandes corporações, governo ou universidades podiam pagar vários milhões de dólares por estes computadores; Aspectos Históricos dos S.O.’s 22 2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch) – Para uma tarefa se executada, o programador primeiro escrevia o programa em um papel e depois perfurava em cartões. Então levava o maço de cartões para a sala de entradas e entregava-o a um dos operadores. – Ao fim da execução, o operador ia até a impressora, retirava sua saídae levava para a sala de saídas, de modo que o programador pudesse retirá-la mais tarde. Aspectos Históricos dos S.O.’s 23 2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch) • Sistema em Lote (batch): registro de vários jobs em fita magnética. Aspectos Históricos dos S.O.’s 24 2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch) IBM1401 Aspectos Históricos dos S.O.’s 25 2ª Geração (1955-1965): Transistores e Sistemas em Lote (batch) IBM7094 Aspectos Históricos dos S.O.’s 26 Aspectos Históricos dos S.O.’s 3ªGeração (1965-1980): Circuitos Integrados e Multiprogramação – System/360 da IBM. Série de máquinas compatíveis (teoricamente), com a mesma arquitetura e conjunto de instruções, voltada tanto para a computação numérica quanto para a comercial 27 Aspectos Históricos dos S.O.’s 3ªGeração (1965-1980): CI’s e Multiprogramação • Sistema Operacional: OS/360. Requisitos de Software: ser executado em sistemas pequenos e em sistemas muito grandes; ser eficiente em máquinas com poucos periféricos e também em computadores com muitos periféricos; ser eficaz em todos os diferentes usos. • OS/360, “batendo”: milhões de linhas escritas em linguagem de montagem por milhares de programadores com milhares de erros e muitas correções (versões). • OS/360, “assoprando”: atendia razoavelmente bem à maioria dos clientes; popularizava técnicas novas como a multiprogramação e spooling (simultaneous peripheral operation online). 28 Aspectos Históricos dos S.O.’s 3ªGeração (1965-1980): CI’s e Multiprogramação • Multiprogramação: divisão da memória em vários jobs, com um job para cada partição. Enquanto um job esperava que a operação de E/S se completasse, um outro poderia usar a CPU. • Spooling: job transferido do cartão para discos magnéticos, e, após a execução, liberados da partição destes discos, possibilitando a carga de um novo job. Os 1401 já não eram mais necessários... 29 Aspectos Históricos dos S.O.’s 3ªGeração (1965-1980): CI’s e Multiprogramação • Timesharing: variante da multiprogramação na qual cada usuário se conectava por meio de um terminal on- line. – CTSS (compatible time sharing system): 1º sistema timesharing, desenvolvido no MIT. • MULTICS(Serviço de computação e de informação multiplexada): MIT, Bell Labs e General Electric e o fornecimento de “energia computacional”. 30 Aspectos Históricos dos S.O.’s 3ª Geração (1965-1980): CI’s e Multiprogramação – MULTICS: • Projetado para suportar centenas de usuários em uma única máquina; • Bells Labs e General Eletric deixaram o projeto; • Usuários extremamente leais; • Várias idéias influenciaram positivamente os S.O.’s subseqüentes.. 31 Aspectos Históricos dos S.O.’s 3ª Geração (1965-1980): CI’s e Multiprogramação – Ken Thompson, do Bell Labs, escreveu uma versão monousuário do MULTICS denominada... UNIX. – Após inúmeras versões incompatíveis do UNIX, foi desenvolvido o padrão POSIX (Portable Operating System-IX): interface mínima de chamadas ao sistema. – Tanenbaum e o seu MINIX, em 1987-> Linus Torvalds escreve o LINUX. 32 Aspectos Históricos dos S.O.’s 4ª Geração (1980-Presente): Computadores Pessoais – Em 1974, a Intel lançou a 1ª CPU de 8 bits, a 8080. – Gary Kildall, consultor Intel, escreve um S.O. para a 8080: CP/M (programa de controle para microcomputadores). – A Intel abre mão dos direitos do CP/M para a firma de Kildall, a Digital Research. – Em 1977, a Digital Research lança um remodelado CP/M e domina a microcomputação por cinco anos. 33 Aspectos Históricos dos S.O.’s 4ª Geração (1980 - Presente): Computadores Pessoais CP/M 34 Aspectos Históricos dos S.O.’s 4ª Geração ( 1980 - Presente): Computadores Pessoais – Início dos anos 80: Projeto do IBM PC. Bill Gates é procurado pela IBM para licenciar o BASIC e... Requisitar um S.O.. – Bill Gates recomenda o S.O. da Digital Research de Gary Kildall, que... Se recusa a se reunir com a IBM! IBM procura Mr. Gates novamente. – Gates adquire o DOS (disk operating system) da Seattle Computer Products. Na verdade ele compra a Seatlle, empresa de Tim Paterson por 50 mil dólares. 35 Aspectos Históricos dos S.O.’s 4ª Geração ( 1980 – Presente ): Computadores Pessoais – Atendendo a um pedido da IBM, Gates modifica o DOS. Dono da Microsoft, Gates contrata Tim Paterson para modificar o projeto original do DOS. Lança-se então o MS-DOS (Microsoft...Disk Operating System). – MS-DOS lançado com o 80286, 80386 e 80486. O MS-DOS foi se aperfeiçoando, com aspectos cada vez mais avançados, muitos deles derivados do UNIX. 36 Aspectos Históricos dos S.O.’s 4ª Geração (1980-Presente) : Computadores Pessoais – MS-DOS 37 4ª Geração (1980-Presente): Computadores Pessoais – Doug Engelbart no Stanford Research Institute nos anos 60 criou a GUI (graphical user interface), que fora incorporada às máquinas do Xerox PARC. – Steve Jobs incorporou a GUI ao Apple – Projeto Lisa: fracasso comercial! – Steve Jobs e a 2ª tentativa com a GUI: Apple Macintosh... 38 Aspectos Históricos dos S.O.’s MAC OS 39 Aspectos Históricos dos S.O.’s 4ª Geração (1980 - Presente): Computadores Pessoais – Bill Gates lança o Windows, baseado na interface GUI e influenciado pelo sucesso do Macintosh. De 1985 a 1995, o Windows foi apenas um interpretador de comandos. – A seguir, Windows 95, com vários aspectos de um S.O., mas com boot e alguns programas do MS-DOS. – Windows 98, versão levemente modificada do 95. – Windows NT (new tecnology): totalmente 32 bits. 40 Aspectos Históricos dos S.O.’s 41 Aspectos Históricos dos S.O.’s 4ª Geração (1980-Presente): Computadores Pessoais – Versão 5 do Windows NT renomeada para Windows 2000. A expectativa de suceder tanto o Windows NT 4.0 quanto o Windows 98 não obteve êxito. – Lançou-se mais uma versão do Windows 98, denominada Windows Me (Millenium Edition). – Windows XP, Windows Vista e Windows 7 – Unix e as máquinas RISC. MIT escreveu um sistema de janelas para UNIX denominada X Windows 42 Aspectos Históricos dos S.O.’s 43 Aspectos Históricos dos S.O.’s 44 4ª Geração ( 1980 - Presente): Computadores Pessoais – Meados dos Anos 80: Sistemas Operacionais de Rede. Usuários podem conectar-se a máquinas remotas. Cada máquina executa seu próprio S.O. (local) e tem seu próprio usuário. – Sistema Operacional Distribuído: composto de múltiplos processadores. Os usuários não precisam saber onde estão seus programas e arquivos. Tudo é tratado pelo S.O.. Aspectos Históricos dos S.O.’s 45 Hardware de Computadores Um S.O. está intimamente ligado ao hardware do computador no qual ele é executado. Ele estende o conjunto de instruções do computador e gerencia seus recursos. 46 Processadores O ‘cérebro’ do computador é a CPU. Ela busca instruções na memória e as executa. O ciclo básico de execução de qualquer CPU é: buscar a primeira instrução da memória, decodificá-la para determinar seus operandos e qual operação executar com esses, executá-la e então buscar, decodificar e executar as instruções subsequentes. O ciclo é repetido até que o programa pare. É dessa maneira que os programas são executados. 47 Conceitos em S.O. Processos – Essencialmente um Processo é um programa em execução; – Associado a cada processo está o seu espaço de endereçamento , isto é, uma lista de locais da memória em que o processo pode ler e gravar. – Processo é um contêiner que armazena todas as informações necessárias para executar um programa. Ex: Edição de vídeo, navegador da web e o receptor de email. - Processos possuem ponteiros que sãoresponsáveis por mostrar a posição atual (o número do próximo byte ou registro a ser lido) - Tabela de Processos: Tabela do S.O. onde todas informações relativas a um processo são armazenadas. 48 Conceitos em S.O. – As principais chamadas de sistema de gerenciamento de processos são aquelas que lidam com a criação e o término de processos (ex: interpretador de comandos ou shell) – Um processo pode criar outros processos (processos filhos), determinando uma estrutura de processos. 49 Conceitos em S.O. – Processos relacionados que estiverem cooperando em alguma tarefa, precisam se comunicar e sintonizar suas ações. É a chamada comunicação entre processos. Ex: processos remoto em redes – A cada pessoa autorizada a usar um sistema é atribuida uma UID (identificação do usuário). A UID com poderes especiais e que pode violar muitas das regras de proteção é chamada de superusuário (em UNIX) 50 Conceitos em S.O. Deadlock – Ao interagirem, dois ou mais processos podem , algumas vezes, entrar em uma situação da qual eles não conseguem sair. É o chamado Deadlock. – Imagine um computador, uma unidade de fita e um gravador de CD. A requisita a fita e é atendido. B requisita o gravador e é atendido. A requisita o gravador e espera. B requisita a fita e espera. Ambos esperam... deadlock! 51 Conceitos em S.O. 52 Conceitos em S.O. Gerenciamento de Memória – No uso compartilhado da memória, qualquer programa residente deve manter-se livre de interferências dos outros programas. O gerenciamento de memória é responsável por esse mecanismo de proteção. – O gerenciamento de memória é responsável também pelo controle do espaço de endereçamento dos processos. • Memória Virtual 53 Conceitos em S.O. Arquivos – Uma característica importante de um S.O. é a capacidade de esconder peculiaridades de discos e outros elementos de E/S e apresentar um modelo abstrato de arquivos independentes de dispositivo. – Diretório: forma de agrupamento de arquivos. – As entradas de diretório podem ser arquivos ou outros diretórios. Esta possibilidade determina uma hierarquia - o sistema de arquivo. 54 Conceitos em S.O. Sistema de Arquivos 55 Conceitos em S.O. – Cada arquivo dentro da hierarquia de diretórios pode ser especificado fornecendo- se o caminho a partir do topo da hierarquia de diretórios, o diretório-raiz. • Ex: CS101, slide anterior • Antes que possa ser trabalhado, um arquivo precisa ser aberto e, nesse momento, as permissões são verificadas. 56 Conceitos em S.O. – Montagem do sistema de arquivos. Ex: Cd-ROM, Pen Drive 57 Conceitos em S.O. Pipe: é um tipo de pseudoarquivo que pode ser usado para conectar dois processos. 58 Conceitos em S.O. Entrada e Saída (E/S) – O S.O. deve gerenciar os dispositivos de E/S. – Alguns programas se aplicam a qualquer recurso de E/S; outros, como os drives, são específicos a cada dispositivo. • Ex: Teclado, Monitores e impressoras. 59 • Segurança – É tarefa do S.O. gerenciar o sistema de segurança para que os arquivos, p.e., sejam acessíveis apenas por usuários autorizados. • Ex: Proprietário, membros do grupo do proprietário e qualquer usuário. Os 3 bits são conhecidos como bits rwx Conceitos em S.O. 60 Conceitos em S.O. • Shell: interpretador de comando do UNIX. – Não é parte do Sistema Operacional, porém é um software importante que trabalha junto ao S.O. – É a interface principal entre o usuário à frente de seu terminal e o S.O. (a menos que o usuário esteja usando uma GUI). A Interface GUI é um programa sendo executado na camada superior do S.O., como um shell. Exemplos: COMMAND.COM, EXPLORER.EXE, BShell, CShell. 61 Conceitos em S.O. – Exemplos de comandos interpretados pelo Command.com: • dir; cd; md; – Exemplos de comandos interpretados pelo Shell do Linux: • ls; cd; mkdir; rm; find 62 Conceitos em S.O. • Os Sistemas Operacionais têm duas funções principais: – Fornecer abstrações aos programas de usuários; – Administrar os recursos do computador (transparente para os usuários e feita automaticamente). 63 Conceitos em S.O. Chamada de Sistema (System Call): interface entre o sistema operacional e os programas de usuário. 64 Conceitos em S.O. System Call 65 Modo Kernel e de Usuário do Processador: para que os programas de usuário não tenham acesso a determinadas instruções do processador, foram criados modos de acesso a estas instruções. O Modo Kernel ou Modo Protegido é restrito ao Sistema Operacional. 66 Estrutura UNIX – Kernel: é o núcleo do sistema operacional, controla o hardware traduzindo comandos UNIX em instruções de hardware. O usuário não trabalha diretamente com o kernel. – Sistema de arquivos: é o modo do UNIX armazenar informações de qualquer tipo, como por exemplo, gráficos, textos, etc. – Shell: é um programa que atua como interface entre o kernel e o usuário. – Aplicativos: são programas que podem ser invocados pelo shell para realizar diversas tarefas. 67 Aspectos Sobre a Estrutura dos Sistemas Operacionais • As rotinas do S.O. oferecem serviços aos usuários e às suas aplicações. O conjunto destas rotinas é chamado de núcleo, ou kernel. • Os usuários podem interagir com o núcleo do S.O. por meio de: aplicações, utilitários ou linguagem de comando. 68 Estrutura do S.O. • Funções essenciais do núcleo do S.O. – Tratamento de interrupções e exceções – Criação e eliminação de processos. – Sincronização e comunicação entre processos. – Escalonamento e controle dos processos. – Gerência de memória – Gerência de sistemas de arquivos – Gerência de dispositivos de E/S – Suporte a redes locais e distribuídas – Contabilização do uso do sistema, além de auditoria e segurança 69 Estrutura do S.O. • Estrutura de um Sistema Operacional • É a maneira como o código do sistema é organizado e o inter-relacionamento entre seus diversos componentes. Esta estrutura pode variar conforme a concepção do projeto. • Abordaremos: Sistemas Monolíticos, Sistemas de Camadas, Micronúcleo, sistemas cliente- servidor, Máquinas Virtuais e exonúcleo. 70 Estrutura do S.O. Sistemas Monolíticos: • O S.O. inteiro é executado como um único programa no modo núcleo. O S.O. é escrito como uma coleção de rotinas, ligadas a um único grande programa binário executável. Exs: linux, MS-DOS. 71 Estrutura do S.O. Sistemas Monolíticos: Sua estrutura básica para o S.O. é a seguinte: 1) Um programa principal invoca a rotina do serviço requisitado; 2) Um conjunto de rotinas de serviço executam as chamadas de sistema; 3) Um conjunto de rotinas utilitárias auxiliam as rotinas de serviço. Segundo esse modelo, para cada chamada de sistema há uma rotina de serviço que se encarrega dela. As rotinas utilitárias realizam tarefas necessárias para as várias rotinas de serviço, como buscar dados dos programas dos usuários. 72 Estrutura do S.O. Sistemas de Camadas: Sistema é dividido em níveis sobrepostos. Cada nível oferece funcionalidades que podem ser acessadas somente pelas camadas superiores. Exs: MULTICS, THE (Technishe Hogeschool Eindhoven), WINDOWS, maioria das versões UNIX. arquitetura do OpenVMS 73 Estrutura do S.O. Arquitetura em Camadas: – Tem como vantagem isolar as funções do sistema operacional, facilitando a manutenção e a depuração, além de criar uma hierarquia de níveis de modos de acesso, protegendo as camadas mais internas. – Uma desvantagem deste modelo é o desempenho. Cada nova camada implica em novo modo de acesso. – A maioria dos atuais sistemas comerciais utiliza duas camadas,onde existem os modos de acesso usuário (não-privilegiado) e kernel (privilegiado). 74 • Tradicionalmente, todas camadas entram no núcleo, mas isso não é necessário. • Erros no núcleo podem derrubar o sistema instantaneamente. Entretanto, processo de usuário podem ser configurados com menos potência de modo que um erro não seja fatal. • A densidade de erro por mil linha de código: dez erros. Nem todos fatais... Por conta disso, os fabricantes inserem botões de reinicialização nos computadores. 75 Estrutura do S.O. Micronúcleo Idéia: alcançar alta confiabilidade por meio da divisão do S.O. em módulos pequenos, bem definidos, e apenas um desses módulos – o micronúcleo – é executado no modo núcleo e o restante é executado como processos de usuário comum. * 10 erros por 1000 linhas de código. Em um S.O. monolítico de 5 milhões de linhas de código contenha 50 mil erros no núcleo (nem todos fatais). * botão de reset Ex: Erro no áudio em um sistema micronúcleo x Erro no áudio no sistema monolítico. Próximo Slide 76 Estrutura do S.O. Micronúcleo Ex: Erro no áudio em um sistema micronúcleo x Erro no áudio no sistema monolítico. Quando há a execução de cada driver de dispositivo e de cada sistema de arquivos como um processo de usuário separado, um erro em um deles pode quebrar aquele componente, mas não pode quebrar o sistema inteiro. Desse modo, um erro na unidade de áudio fará com que o som seja adulterado ou interrompido, mas não travará o computador. Por outro lado, em um sistema monolítico, com todas unidades no núcleo, uma unidade de áudio defeituosa pode facilmente dar como referência um endereço de memória inválido e para o sistema instantaneamente. Muitos foram implementados e utilizados, e são especialmente comuns em aplicações de tempo real, industriais, de aviônica e militares, que são cruciais e têm requisitos de confiabilidade muito altos. 77 Estrutura do S.O. Modelo cliente-servidor: Idéia: Os servidores prestam algum serviço, e os clientes usam esses serviços. Frequentemente a camada inferior é micronúcleo, mas ele não é obrigatório. A comunicação entre clientes e servidores é feita por meio de troca de mensagens. Para obter um serviço, um processo cliente constrói uma mensagem dizendo o que deseja e a envia ao serviço apropriado. Este faz o trabalho e envia a resposta de volta. Ex: Páginas na Web 78 Estrutura do S.O. • Máquina Virtual: – Cria uma camada intermediária entre o hardware e o sistema operacional chamada Monitor de Máquina Virtual. Esta camada oferece, para cada máquina virtual, uma cópia virtual do hardware. • Exemplos: VM/370, JVM. 79 • Como cada máquina virtual é uma cópia exata do hardware, cada uma delas pode executar qualquer S.O.. • Ex: Servidores de correio, web, ftp - Computadores diferentes x virtualizado. - Com a Virtualização, executa-se todos eles na mesma máquina sem que uma falha em um servidor afete o resto. • Ex: Hospedagem na Web: - Hospedagem compartilhada: o cliente recebe uma conta de acesso a um servidor da web, mas não é permitido controlar o software do servidor - Hospedagem dedicada: o cliente terá uma maquina própria (pouco econômico) Quando uma cia aluga máquinas virtuais, uma única máquina física pode executar muitas máquinas virtuais e cada uma delas parece ser uma maquina completa. • Ex: Usuários finais que querem executar dois ou mais S.O.s ao mesmo tempo. 80 Estrutura do S.O. 81 Estrutura do S.O. Monitor de Maquina Virtual - Hipervisor tipo 1 x Hipervisor tipo 2 Máquina Virtual Java 82 Estrutura do S.O. Exonúcleo A máquina real é dividida, ou seja, cada usuário recebe um subconjunto de recursos. Na camada mais inferior, executando em modo núcleo, há um programa denominado exonúcleo. Sua tarefa é alocar recursos às máquinas virtuais e então verificar as tentativas de usá-los para assegurar-se de que nenhuma máquina esteja tentando usar recursos de outra. 83 Estrutura do S.O. Exonúcleo • Vantagem: poupa uma camada de mapeamento. – Nos outros projetos, cada máquina virtual pensa que tem seu próprio HD, com blocos indo de 0 a um valor máximo, de modo que o monitor de MV deve manter tabelas para remapear os endereços de disco( e todos recursos). – Com o exonúcleo, ele precisa manter somente o registro de para qual máquina virtual foi atribuído qual recurso. 84 Resumo • Sistemas operacionais podem ser analisados de dois pontos de vista: – Gerenciadores de recursos • O trabalho do S.O. é gerenciar as diferentes partes do sistema. – Máquinas estendidas • Oferece aos usuários abstrações que sejam mais convenientes ao uso do que a máquina real (incluem processos, espaços de endereçamento e arquivos) 85 Resumo • Os S.O.s tem longa história. • Os computadores são constituídos de processadores, memórias e dispositivos de E/S. • Os conceitos básicos sobre os quais todos S.O.s são construídos são: processos, gerenciamento de memória, gerenciamento de E/S, sistema de arquivos e segurança. • Os S.O.s podem ser estruturados: Como Sistemas monolíticos, como hierarquia de camadas, como micronúcleo, como um sistema de máquina virtual, como um exonúcleo ou por meio do modelo cliente-servidor 86 Processos • Processo: uma abstração de um programa em execução; ex: múltiplas solicitações em um servidor web chegada de emails, atualização de antivírus, imprimindo arquivos, gravando dvds e navegando na web • Processo é um programa em execução, e seu conceito pode ser definido como o conjunto necessário de informações para a implementação da concorrência de programas. Estas informações estão reunidas nos contextos de software e de hardware e no espaço de endereçamento. • Cada processo tem sua própria CPU virtual. 87 A parte de imagem com identificação de relação rId2 não foi encontrada no arquivo. 88 Processos • Cada cpu só pode executar um processo por vez; • A diferença entre um processo e o programa é sutil, mas crucial. – Ex: Analogia Cientista confeiteiro (receita =programa, cientista = processador e ingredientes = dados de entrada) • Processo constitui uma atividade. Ele possui programa, entrada, saída e um estado. Um único processador pode ser compartilhado entre vários processos, com algum algoritmo de escalonamento usado para determinar quando para o trabalho sobre um processo e servir outro 89 Processos • Um programa executado duas vezes conta como dois processos. • S.O.s precisam de mecanismos para criar processos. Há quatro eventos principais que fazem com que processos sejam criados: – Início do sistema (processos em primeiro plano e segundo plano); – Execução de uma chamada de sistema de criação de processo por um processo em execução; – Uma requisição do usuário para criar um novo processo; – Início de uma tarefa em lote (batch job) Daemons: Processos que ficam em background com a finalidade de lidar com alguma atividade. Como vê-los? ps (UNIX) ou gerenciador de tarefas (win) 90 Processos – Um processo sem execução pode fazer chamadas de sistema (system calls) para criar um ou mais novos processos para ajudá-lo em seu trabalho. – Usuários podem iniciar um programa digitando um comando ou clicando em um ícone. Cada ação inicia um novo processo e executa nele o programa selecionado. » Janela Programas Windows – Um novo processo (processo filho) é criado por um processo existente (processo pai) executando uma chamada de sistema para a criação de processo. Esse processo (pai) pode ser um processo de usuário que está executando, um processo de sistema invocado a partir do teclado/mouse ou um processo gerenciador de lotes. 91Processos • Término de um processo: – Saída normal (voluntária); • Exit (unix) / ExitProcess (Windows). Fechar qualquer programa. – Saída por erro (voluntária); • Cc foo.c / erro ao fornecer parâmetros errados – Erro Fatal (involuntário); • Execução de uma instrução ilegal – Cancelamento por outro processo (involuntário). • Um processo executa uma chamada de sistema dizendo ao S.O. para cancelar algum outro processo (Unix Kill/ Windows TerminateProcess). 92 Processos Estados de Processos 93 Processos – Processos Foregroun de Background: Foreground: permite comunicação direta do usuário com o processo durante a sua execução. – Background: não existe interatividade com usuário. 94 Processos Processo PIPE 95 Thread Thread é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. Em hardwares equipados com uma única CPU, cada thread é processada de forma aparentemente simultânea, pois a mudança entre uma thread e outra é feita de forma tão rápida que para o utilizador isso está acontecendo paralelamente. Em hardwares com múltiplos CPUs ou multi-cores, as threads são realizadas realmente de forma simultânea; 96 Threads Um thread é um fluxo único de controle sequencial dentro de um programa. Principais razões para existência dos threads: • Tornar o modelo de programação mais simples. As aplicações são decompostas em múltiplos threads sequenciais que executam em quase paralelo. Isso deve-se ao fato de que em muitas aplicações ocorrem múltiplas atividades ao mesmo tempo. • São mais fáceis (mais rápidos) de criar e destruir que os processos, pois não têm nenhum recurso associados a eles. • Ganho de desempenho. O uso de threads não resulta em ganho de desempenho quando todos eles são CPU-bound (muito processamento com pouca E/S). No entanto, quando há grande quantidade de computação e de E/S, os threads permitem que essas atividades se sobreponham e acelerem a aplicação. 97 Threads Ex: Processador de textos. 1º Usuário escrevendo um livro. Arquivo único/Divide em diversos arquivos 2º Altera frase na primeira folha, doc de 1000 páginas. 3º Figura abaixo. 98 Modelo de Thread Clássico • Um modo de ver um processo é encará-lo como um meio de agrupar recursos relacionados. Um processo apresenta um espaço de endereçamento que contém o código e os dados do programa. • Outro conceito que um processo apresenta é o thread. Este tem um contador de programa que mantém o controle de qual instrução ele deve executar em seguida. Ele tem registradores, que contêm suas variáveis de trabalho atuais. Apresenta uma pilha que traz a história da execução. • Apesar de um thread ter de executar um processo, ambos (o thread e seu processo) são conceitos diferentes. Processos são usados para agrupar recursos; threads são as entidas escalonadas para a execução sobre a CPU. 99 O que os threads acrescentam ao modelo de processo é permitir que múltiplas execuções ocorram no mesmo ambiente do processo, com um grande grau de independência uma da outra. Ter múltiplos threads executando em paralelo é análogo a múltiplos processos executando em paralelo em um único computador. No primeiro caso, os threads compartilham um mesmo espaço de endereçamento e outros recursos. No último, os processos compartilham um espaço físico de memória, discos, impressoras e outros recursos. Multithread é o termo usado para descrever a situação em que se permite a existência de múltiplos threads no mesmo processo. Modelo de Thread Clássico 100 Modelo de Thread Clássico 101 Modelo de Thread Clássico Threads distintos não são tão independentes quanto processos distintos. Todos os threads têm exatamente o mesmo espaço de endereçamento, o que significa que eles também compartilham as mesmas variáveis globais. Cada thread pode ter acesso a qualquer endereço do processo. 102 Escalonamento Quando um computador é multiprogramado, ele muitas vezes tem múltiplos processos ou threads que competem pela CPU ao mesmo tempo. Essa situação ocorre sempre que dois processos estão simultaneamente no estado pronto. Se somente uma CPU estiver disponível, deverá ser feita uma escolha de qual processo executará em seguida. A parte do SO que faz a escolha é chamada de Escalonador, e o algoritmo que ele usa é o algoritmo de escalonamento. Escalonamento: seleção de um processo que deverá ser executado; 103 Introdução ao Escalonamento Um bom escalonador pode fazer uma grande diferença no desempenho observado e na satisfação do usuário. Computadores pessoais: geralmente existe apenas um processo ativo. É improvável que um usuário esteja, simultaneamente, trabalhando com um doc no processador de textos e compilando um programa em segundo plano. Hoje, a maioria dos programas para PC é limitada pela velocidade com que o usuário pode entrar dados (digitando ou clicando), e não pela taxa na qual a CPU é capaz de processá-los. Ex: Compiladores nos PCs atuais x exibir Vídeo em HD 104 Introdução ao Escalonamento A situação muda quando falamos de Servidores e estações de trabalho de alto desempenho em rede. Nesse caso é comum haver múltiplos processos competindo pela CPU e o escalonamento torna-se importante novamente. Ex: CPU precisa decidir entre executar um processo que reúne estatísticas diárias e um que atende às solicitações dos usuários. Além de escolher o processo certo para executar, o escalonador deve se preocupar em fazer o uso eficiente da CPU, pois chavear processos é muito custoso. 105 Introdução ao Escalonamento Como ele ocorre? Primeiramente, deve-se ocorrer um chaveamento do modo de usuário para o modo núcleo. Depois, o estado atual do processo deve ser salvo. Em muitos sistemas, o mapa de memória deve ser salvo. Em seguida, um novo processo precisa ser selecionado pela execução do algoritmo de escalonamento. Depois, a MMU (unidade de gerenciamento de memória) tem de ser recarregada com o mapa de memória do novo processo. Por fim, o novo processo precisa ser iniciado. 106 Comportamento do Processo Quase todos processos alternam surtos de computação com requisições de E/S (de disco). Em geral, a CPU executa e então é feita uma chamada de sistema para ler de um arquivo ou escrever nele. Quando a chamada de sistema termina, a CPU computa novamente até que ela requisite ou tenha de escrever mais dado. 107 Comportamento do Processo Alguns processos gastam maior parte do tempo computando. Outros passam maior parte do tempo esperando E/S. Limitados pela CPU: apresentam longos surtos de uso da CPU e esporádicas esperas por E/S Limitados pela E/S: têm pequenos surtos de uso da CPU e esperas frequentes por E/S À medida que as CPUs se tornam mais rápidas, os processos tendem a ficar mais limitados por E/S. 108 Algoritmo de Escalonamento Algoritmo de escalonamento não preemptivo escolhe um processo para executar e o deixa executar até que seja bloqueado ou até que ele voluntariamente libere a CPU. O Algoritmo de escalonamento preemptivo escolhe um processo e o deixa em execução por um tempo máximo fixado. Se ainda estiver executando ao final desse intervalo de tempo, o processo será suspenso e o escalonador escolherá outro processo para executar. 109 Algoritmos de Escalonamento Para ambientes diferentes, são necessários diferentes algoritmos de escalonamento. Isso ocorre porque diferentes áreas de aplicação têm objetivos diferentes. 110 Objetivos do Algoritmo de Escalonamento Para projetar um algoritmo de escalonamento, é necessário ter alguma idéia do que um bom algoritmo deve fazer. Alguns objetivos dependem do ambiente (lote, interativoou tempo real), mas há também aqueles que são desejáveis para todos os casos... Em todos sistemas: • Justiça: Processos semelhantes devem ter serviços semelhantes. Não é justo dar mais tempo de CPU a um processo do que a outro equivalente. Lembre-se que categorias diferentes de processos podem ser tratadas de modo diverso. • Políticas do sistema: Verificar sempre se a política estabelecida é cumprida. • Equilíbrio: Manter, quando possível, todas as partes do sistema ocupadas. Se a CPU e os dispositivos de E/S puderem ser mantidos em execução o tempo todo, mais trabalho por segundo será feito do que se algum dos componentes estiver ocioso. 111 Nos sistemas em lote: Os sistemas em lote são utilizados pelas empresas para folhas de pagamento, estoque, contas a receber, contas a pagar, cálculo de juros (em bancos), processamento de pedidos de indenização (em companhias de seguros) e outras tarefas periódicas. Nos sistemas em lote não há, em seus terminais, usuários esperando impacientemente por uma resposta rápida. Consequentemente, os algoritmos não preemptivos ou preemptivos com longo intervalo de tempo para cada processo são aceitáveis. Essa tática reduz os chaveamentos entre processos e assim melhora o desempenho. Categorias de algoritmos de Escalonamento 112 Objetivos do Algoritmo de Escalonamento Nos sistemas em lote: • Vazão: é o número de tarefas por hora que o sistema termina. • Tempo de retorno: é estatisticamente o tempo médio do momento em que uma tarefa em lote é submetido até o momento em que ele é terminado. Ele indica quanto tempo, em média, o usuário tem de esperar pelo fim de um trabalho. Quanto menor, Melhor. • Utilização da CPU: Procurar manter a CPU ocupada o máximo de tempo possível. 113 Sistemas Interativos Em um ambiente com usuários interativos, a preempção é essencial para evitar que um processo se aposse da CPU e negue serviço aos outros. Mesmo que nenhum processo execute intencionalmente para sempre, uma falha em um programa pode levar um processo a impedir indefinidamente que todos os outros executem. A preempção é necessária para impedir esse comportamento. Os servidores também caem nessa categoria, visto que normalmente servem a usuários (remotos) múltiplos, todos muito apressados. Categorias de algoritmos de Escalonamento 114 Sistemas Interativos: • Tempo de resposta: É o tempo entre a emissão de um comando e a obtenção do resultado. Deve ser o menor possível. • Proporcionalidade: satisfazer as expectativas dos usuários. Quando uma requisição complexa demora, os usuários aceitam isso, mas, quando a demora ocorre com uma requisição simples, os usuários ficam irritados. Objetivos do Algoritmo de Escalonamento 115 Categorias de algoritmos de Escalonamento Sistemas de Tempo Real Em sistemas com restrições de tempo real, a preempção é, estranhamente, algumas vezes desnecessária, pois os processos sabem que não podem executar por longos períodos e, em geral, fazem seus trabalhos e bloqueiam rapidamente. A diferença com relação aos sistemas interativos é que os sistemas de tempo real executam apenas programas que visam ao progresso da aplicação. Já os sistemas interativos são de propósito geral e podem executar programas arbitrários não cooperativos ou até mal- intencionados. 116 Objetivos do Algoritmo de Escalonamento Sistemas de Tempo Real: Cumprimento dos prazos: evitar a perda de dados Previsibilidade: evitar a degradação da qualidade em sistemas multimídia. 117 Escalonamento em Sistemas de Lote Primeiro a chegar, primeiro a ser servido (First come, first served – FCFS) Algoritmo de escalonamento não preemptivo; Com esse algoritmo, a CPU é atribuída aos processos na ordem em que eles a requisitam. Como Funciona? Há uma fila única de processos prontos. Quando a primeira tarefa entra no sistema é iniciado imediatamente e autorizado a executar por quanto tempo queira. Ele não é interrompido porque está sendo executado há muito tempo. À medida que chegam as outras tarefas, eles são encaminhados para o fim da fila. Quando o processo em execuação é bloqueado, o primeiro processo na fila é o próximo a executar. Quando um processo bloqueado fica pronto (assim como uma tarefa que acabou de chegar), ele é posto no fim da fila. 118 Escalonamento em Sistemas de Lote Primeiro a chegar, primeiro a ser servido (First come, first served – FCFS) Vantagens: Ele é fácil de entender e igualmente fácil de programar. É também um algoritmo justo. Com esse algoritmo, uma única lista encadeada controla todos os processos prontos. Adicionar uma nova tarefa ou um processo desbloqueado requer apenas a inserção dele no final da fila. Desvantagens: Dependendo do tipo de processo orientado a computação, pode-se levar muito tempo para executá-lo. Ex:Um processo orientado à computação que execute durante um segundo por vez e muitos outros processos limitados por E/S que usem pouco tempo de CPU, mas que precisem realizar, cada um, mil leituras de disco antes de terminar. O resultado é que cada um dos processos limitados por E/S lê um bloco por segundo e demorará mil segundos para terminar. Com um algoritmo de escalonamento que causasse a preempção do processo orientado à computação a cada dez milissegundos (em vez de a cada um segundo), os processos de E/S terminariam em dez segundos, e não em mil segundos. 119 Escalonamento em Sistemas de Lote Tarefa mais curta primeiro (shortest job first) Algoritmo de escalonamento não preemptivo; Com esse algoritmo, quando temos várias tarefas igualmente importantes postadas na mesma fila de entrada à espera de serem iniciados, o escalonador escolhe a tarefa mais curta primeiro. Ex: Quatro tarefas (A, B, C e D) com seus respectivos tempos de execução 8, 4, 4 e 4 minutos. FCFS x Tarefa mais curta primeiro É importante lembrar que a tarefa mais curta primeiro é adequado somente para situação em que todas as tarefas estejam disponíveis simultaneamente. 120 Escalonamento em Sistemas de Lote Próximo de menor tempo restante (shortest remaining time next) É um algoritmo de escalonamento preemptivo; Com esse algoritmo, o escalonador sempre escolhe o processo cujo tempo de execução restante seja o menor. Novamente, o tempo de execução deve ser previamente conhecido. Quando chega uma nova tarefa, seu tempo total é comparado ao tempo restante do processo em curso. Se, para terminar, a nova tarefa precisar de menos tempo que o processo corrente, então esse será suspenso e a nova tarefa será iniciada. Esse esquema permite que novas tarefas curtas obtenham um bom desempenho. 121 Escalonamento em Sistemas Interativos São comuns em computadores pessoais, servidores e outros tipos de sistemas. Processos interativos geralmente seguem o padrão de esperar por comando, executar comando, esperar por comando, executar comando e assim por diante. 122 Escalonamento em Sistemas Interativos Escalonamento por chaveamento circular (round-robin) Um dos algoritmos mais antigos, simples, justo e amplamente usado é o circular. Ele pressupõe que todos os processos sejam igualmente importantes. Como ele funciona? A cada processo é atribuído um intervalo de tempo (quantum) no qual ele é permitido executar. Se, ao final do quantum, o processo ainda estiver executando, a CPU sofrerá preempção e será dada a outro processo. Se o processo foi bloqueado ou terminou antes que o quantum tenha decorrido, a CPU é chaveada para outro processo. O escalonamento circular é fácil de implementar. O Escalonador só precisa manter uma lista de processos executáveis. Quando o processo usa todo o seu quantum, ele é colocado no final da lista. Ex: Quantum de 4ms e chaveamento do processode 1ms = 20% desperdiçado Quantum de 100ms e chaveamento de processo de 1ms = 1% desperdiçado Adotar um quantum muito curto causa muitos chaveamentos de processo e reduz a eficiência da CPU, mas um quantum muito longo pode gerar uma resposta pobre às requisições interativas curtas. Um quantum em torno de 20ms a 50ms é bastante razoável. O algoritmo circular pressupõe que todos os processo sejam igualmente importantes. 123 Escalonamento em Sistemas Interativos Escalonamento por prioridades A cada processo é atribuída uma prioridade, e ao processo executável com a prioridade mais alta é permitido executar. Ex: em um PC, o processo que atualiza o antivirus em segundo plano deve receber uma prioridade mais baixa que a um processo que exibe um vídeo na tela em tempo real. Para evitar que processos de alta prioridade executem indefinidamente, o escalonador pode reduzir a prioridade do processo em execução a cada tique de relógio. Se isso fizer com que sua prioridade caia abaixo da prioridade do próximo processo com prioridade mais alta, então ocorrerá um chaveamento de processo. Outra possibilidade é atribuir a cada processo um quantum máximo no qual ele pode executar. Quando esse quantum estiver esgotado, será dada a oportunidade para que o próximo processo com prioridade mais alta execute 124 Escalonamento em Sistemas Interativos Escalonamento garantido É quando o escalonador faz promessas reais sobre o desempenho aos usuários e cumpre-as. Ex: Se houver n usuários conectados enquanto você estiver trabalhando, você receberá cerca de 1/n de CPU. Para isso, o sistema deve manter o controle da quantidade de CPU que cada processo recebe desde sua criação. Então ele calcula a quantidade de CPU destinada a cada um ou o tempo desde a criação dividido por n. 125 Escalonamento em Sistemas Interativos Escalonamento por loteria A idéia básica é dar bilhetes de loteria aos processos, cujos prêmios são vários recursos do sistema, como tempo de CPU. Se houver uma decisão de escalonamento, um bilhete de loteria será escolhido aleatoriamente e o processo que tem o bilhete conseguirá o recurso. Quando aplicado ao escalonamento de CPU, o sistema pode fazer um sorteio 50 vezes por segundo e, portanto, cada vencedor terá 20 ms de tempo de CPU como prêmio. O escalonamento por loteria é altamente responsivo, ou seja, se aparece um novo processo e a ele são atribuídos alguns bilhetes, já no próximo sorteio da loteria sua probabilidade de vencer será proporcional ao número de bilhetes que ele tiver. 126 Escalonamento em Sistemas Interativos Escalonamento por fração justa (fair-share) A cada usuário é alocada uma fração da CPU, e o escalonador escolhe os processos de modo que garanta essa fração. Assim, se dois usuários tiverem 50% da CPU prometida a cada um deles, cada um obterá os 50%, não importando quantos processos eles tenham gerado. Ex: Imagine um sistema com dois usuários, cada qual com 50% da CPU prometida a ele. O usuário 1 tem quatro processos (A, B, C e D) e o usuário 2 tem somente um processo (E)... 127 Escalonamento em sistemas de tempo real Um sistema de tempo real é aquele no qual o tempo tem uma função essencial. Em geral, um ou mais dispositivos físicos externos ao computador geram estímulos, e o computador deve reagir apropriadamente a eles dentro de um dado intervalo de tempo. Ex: monitoração de pacientes em UTI de hospitais e piloto automático de aeronaves. Nesses casos, ter a resposta certa, mas tardia, é tão ruim quanto não ter nada. 128 Escalonamento em sistemas de tempo real Sistemas de tempo real são em geral categorizados como: – Tempo real crítico: há prazos absolutos que devem ser cumpridos; – Tempo real não crítico: o descumprimento ocasional de um prazo é indesejável, contudo tolerável. Em ambos os casos, o comportamento de tempo real é implementado dividindo-se o programa em vários processos cujo comportamento é previamente conhecido. De modo geral, esses processos têm vida curta e podem executar em bem menos de um segundo. Quando é detectado um evento externo, o trabalho do escalonador é escalonar os processos de tal maneira que todos os prazos sejam cumpridos. 129 Escalonamento em sistemas de tempo real Os eventos aos quais um sistema de tempo real pode precisar responder podem ser categorizados como: – Periódicos: ocorrem em intervalos regulares; – Aperiódicos: acontecem de modo imprevisível. Os algoritmos de escalonamento de tempo real podem ser estáticos ou dinâmicos. Os primeiros tomam suas decisões de escalonamento antes de o sistema começar a executar. Os últimos o fazem em tempo de execução. O escalonamento estático só funciona quando há prévia informação perfeita disponível sobre o trabalho necessário a ser feito e os prazos que devem ser cumpridos. Os algoritmos de escalonamento dinâmico não apresentam essas restrições. 130 Gerenciamento de Memória Programas tendem a expandir a fim de ocupar toda a memória disponível. Hierarquia de Memórias é dividida em: ü Memória cache (alguns megabytes, rápida, custo alto e volátil); ü Memórial Principal (volátil, alguns gigabytes, de velocidade e custo médios; ü Disco (não volátil, alguns terabytes, de velocidade e custos baixos; ü Armazenamento removível (DVDs, Cds, USB) A função do S.O. é abstrair essa hierarquia em um modelo útil e, então, gerenciar a abstração. 131 Gerenciamento de Memória A parte do S.O. que gerencia (parcialmente) a hierarquia de memórias é denominada gerenciador de memória. Sua função é gerenciar a memória de modo eficiente: manter o controle de quais partes da memória estão em uso e quais não estão, alocando memória aos processos quando eles precisam e liberando-a quando esses processos terminam. 132 Abstração de memória: espaços de endereçamento Um espaço de endereçamento é o conjunto de endereços que um processo pode usar para endereçar a memória. Cada processo tem seu próprio espaço de endereçamento, independente dos que pertencem a outros processos. Ex: – espaço de endereçamento para números de telefone – espaço de endereçamento de todas cadeias de comprimento de 2 a 63 caracteres que possam ser feitas usando letras, números e hífens, seguidas por .com 133 Troca de Memória Em um sistema Windows ou Linux típico, algo entre 40- 60 processos ou mais podem ser inicializados quando o computador é iniciado. Ex: processos para verificação de atualização, email, conexões do sistema de rede, etc. 134 Troca de Memória Dois métodos gerais para lidar com a sobrecarga de memória têm sido desenvolvidos com o passar dos anos: – Swapping (troca de processos) consiste em trazer, em sua totalidade, cada processo para a memória, executá-lo durante um certo tempo e, então, devolvê-lo ao disco. Processos ociosos são armazenados no disco, de forma que não ocupem qualquer espaço na memória quando não estão executando. – Memória virtual permite que programas possam ser executados mesmo que estejam apenas parcialmente carregados na memória principal. 135 Funcionamento de um sistema de troca de processos 136 Troca de Memória Quando as trocas de processos deixam muitos espaços vazios na memória, é possível combiná-los todos em um único espaço contíguo de memória, movendo-os, o máximo possível, para os endereços mais baixos. Essa técnica é chamada de compactação de memória. Desvantagem: tempo gasto transferindo blocos de uma região para outra da memória principal 137 Troca de memória Um ponto importanto é a quantidade de memória que deve ser alocada a um processo quando este for criado ou trazido do disco para a memória. Se processos são criados com tamanhofixo então a alocação é simples: o S.O. alocará aquilo que é necessário. Se a área de dados do processo puder crescer, problemas poderão ocorrer sempre que um processo tentar crescer. Se houver espaço livre disponível adjacente ao processo, ele poderá ser alocado e p processo poderá crescer nesse espaço. Caso contrário, o processo que necessita crescer poderá ser movido para uma área de memória grande o suficiente para contê- lo ou um ou mais processos terão de ser transferidos para o disco a fim de criar essa área disponível. Se o processo não puder crescer na memória e a área de troca de disco (swap) estiver cheia, o processo deverá ser suspenso até que algum espaço seja liberado (ou pode ser terminado). 138 Alocação de espaço para um segmento de dados em expansão 139 Memória Virtual Introdução Bloatware é o termo utilizado para definir softwares que usam quantidades excessivas de memória. O tamanho da memória está aumentando rapidamente, mas o tamanho dos softwares está aumentando muito mais rápido. Existe a necessidade de executar programas grandes demais para se encaixarem na memória, e certamente há necessidade de haver sistemas que possam dar suporte a múltiplos programas em execução simultânea, cada um dos quais é comportado pela memória individualmente, mas que, coletivamente, excedam a memória. 140 Memória Virtual Introdução A troca de processos não é uma opção atrativa, visto que um disco SATA tem uma taxa de transferência de pico de, no máximo, 100MB/s, o que significa que leva pelo menos 10 seg para sair de um programa de 1GB e outros 10 seg para inicializar um programa de 1GB. A idéia básica por trás da memória virtual é que cada programa tem seu próprio espaço de endereçamento, que é dividido em blocos chamados páginas. Cada página é uma série contígua de endereços. Essas páginas são mapeadas na memória física, mas nem todas precisam estar na memória física para executar o programa. Quando o programa referencia uma parte de seu espaço de endereçamento que está na memória física, o hardware executa o mapeamento necessário dinamicamente. Quando o programa referencia uma parte de seu espaço de endereçamento que não está em sua memória física, o S.O. é alertado para obter a parte que falta e reexecutar a instrução que faltou. 141 Memória Virtual Espaço de Endereçamento Virtual Como o espaço de endereçamento virtual não tem nenhuma relação direta com os endereços reais, um programa pode referenciar endereços que estejam fora dos limites da memória principal. Quando um programa é executado, somente uma parte do seu código fica residente, permanecendo o restante na memória secundária até o momento de ser referenciado. 142 Memória Virtual 143 Memória Virtual Mapeamento • Tradução de um endereço virtual para um endereço real. • Por causa do mapeamento, um programa não mais precisa estar necessariamente em endereços contíguos na memória principal. 144 Memória Virtual 145 Memória Virtual A memória virtual funciona bem em um sistema com multiprogramação, com pedaços e partes de diferentes programas simultaneamente na memória. Se um programa estiver esperando por outra parte de si próprio ser carregada na memória, a CPU poderá ser dada a outro processo. 146 Memória Virtual Paginação Em computadores sem memória virtual, o endereço virtual é idêntico ao endereço físico e para ler ou escrever uma posição na memória, ele é colocado diretamente no barramento da memória. Quando a memória virtual é usada, o endereço virtual não é colocado diretamente no barramento da memória. Em Vez disso, ele vai a uma MMU (memory management unit – unidade de gerenciamento de memória), que mapeia endereços virtuais em endereços físicos. 147 Memória Virtual 148 Memória Virtual – Exemplo (parte 1) Nesse exemplo, temos um computador que pode gerar endereços virtuais de 16 bits, de 0 a 64 k - 1. Contudo, esse computador tem somente 32 kb de memória física. Assim, embora seja possível escrever programas de 64kb, eles não podem ser totalmente carregados na memória para serem executados. Uma cópia completa do código do programa deve estar presente no disco, de modo que partes possam ser carregadas dinamicamente na memória quando necessário. O espaço de endereçamento virtual é dividido em unidades denominadas páginas. As unidades correspondentes na memória física são denominadas molduras de página. As páginas e as molduras de páginas são sempre do mesmo tamanho. Nesse exemplo, as páginas têm 4KB. Com 64KB de espaço de endereçamento virtual e 32KB de memória física, podemos ter 16 páginas virtuais e 08 molduras de páginas. As transferências entre memória e disco são sempre em páginas completas. A série 0-4K significa que os endereços físicos ou virtuais nessa página dão 0 a 4095. A série 4-8K refere-se aos endereços 4096 a 8191 e assim por diante. 149 Quando um programa tenta acessar o endereço 0, o endereço virtual 0 é enviado à MMU, que detecta que esse endereço virtual situa-se na página virtual 0 (de 0 a 4095), que, de acordo com seu mapeamento, corresponde à moldura de página 2 (de 8192 a 12287). A MMU transforma o endereço físico 8192 e o envia à memória por meio de barramento. A memória desconhece a existência da MMU e somente enxerga uma solicitação de leitura ou escrita no endereço 8192, a qual ela executa. Essa habilidade de mapear as 16 páginas virtuais em qualquer uma das oito molduras de página não resolve o problema de o espaço de endereçamento virtual ser maior do que a memória física disponível. As páginas rotuladas com um X na figura não são mapeadas. O que acontece se um programa tenta usar uma página virtual não mapeada? A MMU constata que essa página virtual não está mapeada e força o desvio da CPU para o S.O. Essa interrupção é denominada falta de página. O S.O. escolhe uma moldura de página pouco usada e a salva em disco. Em seguida, ele carrega a página virtual na moldura de página recém-liberada, atualiza o mapeamento da tabela de páginas e reinicializa a instrução causadora da interrupção. Memória Virtual – Exemplo (parte 2) 150 Memória Virtual Mapeamento Cada processo tem o seu espaço de endereçamento virtual. O mecanismo de tradução mantém tabelas exclusivas para cada processo, relacionando os endereços virtuais às posições na memória real. 151 Memória Virtual por Paginação Existem Sistemas Operacionais que trabalham apenas com blocos de tamanho fixo (técnica de paginação), enquanto que outros utilizam blocos de tamanho variável (técnica de segmentação). Existem ainda aqueles que implementam ambas as técnicas (segmentação com paginação). 152 Memória Virtual por Paginação Trata-se de uma técnica de gerência de memória em que o espaço de endereçamento virtual e o espaço de endereçamento real são divididos em blocos de mesmo tamanho chamados páginas. As unidades correspondentes na memória física são denominadas molduras de página (page frames). As páginas e as molduras de páginas são sempre do mesmo tamanho. 153 Memória Virtual Quando um programa tenta usar uma página virtual não mapeada, a MMU constata que essa página virtual não está mapeada e força o desvio da CPU para o S.O. Essa interrupção é denominada falta de página (page fault). O S.O., então, escolhe uma moldura de página pouco usada e a salva em disco, ou seja, escreve seu conteúdo de volta no disco. Em seguida, ele carrega a página virtual referenciada pela instrução na moldura de página recém-liberada, atualiza o mapeamento da tabela de páginas e reinicializa a instrução causadora da interrupção. 154 MemóriaVirtual O número da página é usado como índice para a tabela de páginas, a fim de obter a moldura de página física correspondente àquela página virtual. O objetivo da tabela de páginas é mapear páginas virtuais em molduras de página física. 155 Em qualquer sistema de paginação, dois problemas importantes devem ser enfrentados: – O mapeamento do endereço virtual para o endereço físico deve ser rápido; – Se o espaço de endereço virtual for grande, a tabela de páginas será grande. 156 TLB – Memória Associativa TLB (translation lookaside buffer – buffer para tradução de endereços) ou memória associativa é o pequeno dispositivo (hardware) capaz de mapear os endereços virtuais para endereços físicos sem passar pela tabela de páginas. Portanto, TLB é um dispositivo de hardware implementado a partir de uma pequena memória associativa que fica integrada na MMU de um processador. Destina-se a facilitar a tradução de endereços lineares em endereços físicos, evitando a consulta à tabela de páginas localizada na memória. Quando um endereço é solicitado, o processador verifica se o endereço da frame respectiva existe no TLB. Se este for encontrado, é utilizado para gerar o endereço físico pretendido e o acesso à memória é iniciado. Em caso de falha, a tabela de páginas será consultada. Os projetistas observaram que os processos tendem a acessar com mais freqüência um número reduzido de páginas virtuais. Isto permite obter taxas de sucesso próximas de 100%, mesmo com TLBs de dimensões reduzidas. 157 TLB – Memória Associativa O modo normal de tratar uma ausência de página na TLB, seja por hardware, seja por software, é acessar a tabela de páginas e executar as operações de indexação para localizar a página referenciada não encontrada na TLB. O problema em se fazer essa pesquisa por software é que as páginas que contêm a tabela de páginas podem não estar mapeadas na TLB, ocasionando ausências adicionais na TLB durante o processamento. Essas ausências podem ser reduzidas se uma grande cache, gerenciada por software e contendo entradas do tipo TLB, for mantida em uma localização fixa com sua página sempre mapeada na TLB. Verificando primeiro essa cache, o S.O. pode reduzir substancialmente as ausências de página na TLB. 158 TLB – Memória Associativa Quando o gerenciamento da TLB por software é usada, devemos compreender a diferença entre dois tipos de ausência. – Ausência leve (soft miss) ocorre quando a página referenciada não está na TLB, mas na memória (é necessário atualizar a TLB - os discos de E/S não são utilizados) – Ausência completa (hard miss) ocorre quando a própria página não está na memória (e nem na TLB). Requer-se acesso ao disco para trazer a página. Uma ausência definitiva é milhões de vezes mais lenta que uma ausência temporária) 159 Memória Virtual As TBLs podem ser usadas para acelerar a tradução de endereços virtuais para endereços físicos em relação ao esquema original de tabela de páginas na memória. 160 Memória Virtual por Paginação Políticas de Busca de Páginas Determinam quando uma página deve ser carregada para a memória. Basicamente, existem duas estratégias para este propósito: * paginação por demanda * paginação antecipada. 161 Memória Virtual por Paginação Políticas de Busca de Páginas – Paginação por Demanda: as páginas do processo são transferidas da memória secundária para a principal apenas quando elas são referenciadas. – Paginação Antecipada: o sistema carrega para a memória, além da página referenciada, outras páginas que podem ou não ser necessárias ao processo durante o processamento. 162 Memória Virtual por Paginação Políticas de Alocação de Páginas Determinam quantos frames cada processo pode manter na memória principal. Existem duas possibilidades para este propósito: * alocação fixa * alocação variável. 163 Memória Virtual por Paginação Políticas de Alocação de Páginas Alocação Fixa Cada processo tem um número máximo de frames que pode ser utilizado durante a execução do programa. O limite de páginas pode ser igual para todos os processos ou definido individualmente, no momento da criação do processo, com base no tipo de aplicação. 164 Memória Virtual por Paginação Políticas de Alocação de Páginas Alocação Variável O número máximo de páginas alocadas ao processo pode variar durante a execução, em função da taxa de paginação e da ocupação da memória principal. Processos com elevadas taxas de paginação podem ampliar o limite de frames, a fim de reduzir o número de page faults. 165 Memória Virtual por Paginação Política de Alocação de Página 166 Memória Virtual por Paginação Políticas de Substituição de Páginas Selecionar, entre as páginas alocadas, aquela que deverá sair da memória para dar lugar a outra página mais relevante para o processo. A necessidade de substituição de páginas acontece quando um processo atinge seu limite de alocação de frames. No processo de substituição de páginas, antes de liberar a página, é necessário saber se ela foi alterada. As páginas que armazenam estruturas de dados e variáveis, ao serem alteradas, o sistema operacional deverá gravá-las na memória secundária antes do descarte (page out), preservando os seus conteúdos. Se a página não tiver sido modificada, a cópia em disco já estará atualizada e não será necessário reescrevê-la. A página a ser trazida para a memória simplesmente sobrescreve a página que está sendo destituída. 167 Memória Virtual por Paginação Embora seja possível escolher aleatoriamente uma página a ser descartada a cada falta de página, o desempenho do sistema será muito melhor se a página escolhida for uma que não estiver sendo muito usada. Se uma página intensamente usada for removida, é provável que logo ela precise ser trazida de volta, ocasionando custos extras. 168 Memória Virtual por Paginação Políticas de Substituição de Páginas O sistema operacional mantém, então, um arquivo de paginação (page file), onde todas as páginas modificadas e descartadas são armazenadas. Sempre que uma página for outra vez referenciada, ocorrerá um page in, carregando esta página para a memória principal a partir do arquivo de paginação. 169 Substituição de Páginas 170 Memória Virtual por Paginação Políticas de Substituição de Páginas O sistema operacional identifica as páginas modificadas através de um bit que existe em cada entrada da tabela de páginas, chamado bit de modificação(dirty bit ou modify bit). – Política de Substituição Local: apenas as páginas do processo que gerou o page fault podem ser realocadas. – Política de Substituição Global: todas as páginas na memória principal podem ser realocadas, independente do processo que causou o page fault. 171 Memória Virtual por Paginação Políticas de Substituição de Páginas – A política de alocação fixa permite apenas a utilização de uma política de substituição Local. – A política de alocação variável permite tanto a utilização de uma política de substituição Local quanto de uma política de substituição Global. 172 Memória Virtual por Paginação Algoritmos de Substituição de Páginas – O maior problema na memória virtual por paginação não é decidir quais páginas devem ser carregadas para a memória principal, mas quais páginas devem ser liberadas. – Os algoritmos de substituição de páginas têm o objetivo de selecionar os frames que tenham menores chances de serem referenciados em um futuro próximo. – A partir do princípio da localidade, a maioria dos algoritmos tenta prever o comportamento futuro das aplicações em função do comportamentopassado, avaliando o número de vezes que uma página foi referenciada, o momento em que foi carregada para a memória principal e o intervalo de tempo da última referência. 173 Memória Virtual por Paginação Algoritmos de Substituição de Páginas Ótimo: seleciona uma página que não será mais referenciada no futuro ou aquela que levará o maior intervalo de tempo para ser novamente utilizada. – Vantagem: menores taxas de paginação para os processos. – Desvantagem: impossível implementação, pois o S.O. não tem como conhecer o comportamento futuro das aplicações. 174 Algoritmos de Substituição de Páginas Algoritmo de substituição de página não usada recentemente (NRU) A maioria dos computadores com memória virtual tem 2 bits de status [o bit referenciado (R) e o bit modificado (M)], associados a cada página virtual, que permitem que o S.O. saiba quais páginas físicas estão sendo usadas e quais não estão. O bit R é colocado em 1 sempre que a página é referenciada (lida ou escrita). O bit M é colocado em 1 sempre que se escreve na página (isto é, a página é modificada). Os bits estão contidos em cada entrada da tabela de páginas. 175 Algoritmos de Substituição de Páginas Algoritmo de substituição de página não usada recentemente (NRU) Os bits R e M podem ser usados para construir um algoritmo de paginação simples. Quando um processo é inicializado, os dois bits citados, para todas as suas páginas, são colocados em 0 pelo S.O.. Periodicamente (ex. a cada tique do relógio), o bit R é limpo, de modo que diferencie as páginas que não foram referenciadas recentemente daquelas que foram. Quando acontece uma falta de página, o S.O. inspeciona todas as páginas e as separa em quatro categorias, com base nos valores atuais dos bits R e M: – Classe 0: não referenciada, não modificada. – Classe 1: não referenciada, modificada. – Classe 2: referenciada, não modificada. – Classe 3: referenciada, modificada. 176 O algoritmo NRU (not recently used – nada usada recentemente) remove aleatoriamente uma página da classe de ordem mais baixa que não esteja vazia. Está implícito nesse algoritmo que é melhor remover uma página modificada, mas não referenciada, a pelo menor um tique do relógio (em geral, 20ms) do que uma página não modificada que está sendo intensamente referenciada. A principal vantagem do algoritmo NRU é ser fácil de entender e de implementar e, além disso, fornece um desempenho que, apesar de não ser ótimo, pode ser adequado. Algoritmos de Substituição de Páginas Algoritmo de substituição de página não usada recentemente (NRU) 177 Algoritmos de Substituição de Páginas FIFO (First-In-First-Out) FIFO (First-In-First-Out): O S.O. mantém uma lista de todas as páginas atualmente na memória, com a página mais antiga na cabeça da lista e a página que chegou mais recentemente situada no final dessa lista. Na ocorrência de uma falta de página, a primeira página da lista é removida e a nova página é adicionada no final da lista. Vantagem: parece sensato descartar páginas mais antigas. Desvantagem: nem sempre uma página mais antiga deve ser descartada, pois ela pode estar sendo constantemente referenciada. 178 Algoritmos de Substituição de Páginas FIFO (First-In-First-Out) 179 Uma modificação simples no algoritmo de substituição de página FIFO evitaria o problema de se jogar fora uma página intensamente usada. Isso é feito simplesmente inspecionando o bit R da página mais antiga, ou seja, a primeira página da fila. Se o bit for 0, essa página, além de ser a mais antiga, não estará sendo usada, de modo que será substituída imediatamente. Se o bit R for 1, ele será colocado em 0, a página será posta no final da lista de páginas e seu tempo de carregamento (chegada) será atualizado como se ela tivesse acabado de ser carregada na memória. A pesquisa então continua. Algoritmos de Substituição de Página segunda chance 180 O que o algoritmo segunda chance faz é procurar uma página antiga que não tenha sido referenciada no intervalo de relógio anterior. Sua desvantagem é porque ele é desnecessariamente ineficaz, pois permanece constantemente reinserindo páginas no final da lista. Algoritmos de Substituição de Página segunda chance 181 Uma estratégia melhor é manter todas as páginas em uma lista circular em forma de relógio. Um ponteiro aponta para a página mais antiga. Quando ocorre uma falta de página, a página indicada pelo ponteiro é examinada. Se o bit R for 0, a página é removida, uma nova página é inserida em seu lugar no relógio e o ponteiro avança uma posição. Se R for 1, ele é zerado e o ponteiro avança para a próxima página. Esse processo é repetido até que uma página seja encontrada com R=0. Não é de surpreender que esse algoritmo seja chamado de relógio. Algoritmos de Substituição de Página do relógio 182 Algoritmo de substituição de página usada menos recentemente (LRU) Qual a Lógica provável? * Páginas muito utilizadas nas últimas instruções provavelmente serão muito utilizadas novamente nas próximas instruções. * Páginas que não estão sendo utilizadas por um longo período de tempo provavelmente permanecerão inutilizadas por muito tempo. Essa idéia sugere um algoritmo realizável: quando ocorrer uma falta de página, elimine a página não utilizada pelo período de tempo mais longo. Essa estratégia é chamada de paginação LRU (least recently used – usada menos recentemente) 183 Algoritmo de substituição de página usada menos recentemente (LRU) Embora a LRU seja teoricamente realizável, não é barato. Para implementar completamente o LRU, é necessário manter uma lista vinculada de todas as páginas na memória, com a página usada mais recentemente na dianteira e a página usada menos recentemente na parte de trás. A dificuldade é que a lista deve ser atualizada em cada referência à memória. Encontrar uma página na lista, deletá-la e posicioná-la na dianteira é uma operação demorada, mesmo no hardware. 184 Algoritmo de substituição de página não usada frequentemente (NFU) A implementação desse algoritmo requer contadores em software, cada um deles associado a uma página, inicialmente zerados. A cada interrupção de relógio, o S.O. percorre todas as páginas na memória. Para cada página, o bit R, que pode ser 0 ou 1, é adicionado ao contador correspondente. Assim, esses contadores constituem uma tentativa de saber quantas vezes cada página já foi referenciada. Quando ocorrer uma falta de página, a página que tiver a menor contagem será selecionada para a substituição. 185 Algoritmo de substituição de página não usada frequentemente (NFU) O problema principal com o algoritmo NFU é que ele nunca se esquece de nada. Ex: Em um compilador de múltiplos passos, páginas que foram intensamente referenciadas durante o passo 1 podem ainda ter um contador alto em passos bem posteriores. De fato, se acontecer de o passo 1 possuir o tempo de execução mais longo de todos os passos, as páginas que contiverem o código para os passos seguintes poderão ter sempre contadores menores do que as páginas do passo 1. Consequentemente, o sistema operacional removerá páginas que ainda estiverem sendo referenciadas, em vez daquelas que não o estão mais. 186 Algoritmo de substituição de página não usada frequentemente (NFU) Para corrigir isso deve ser utilizado um algoritmo de envelhecimento (aging). – Quando ocorre uma falta de página, a página que tem a menor contagem é removida. É claro que a página que não tiver sido removida por, digamos, quatro interrupções de relógio terá quatro zeros nas posições mais significativas de seu contador e, assim, possuirá um valor menor do que um contador
Compartilhar