Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais Leandro Dionízio Ramos 1 Projeto de Sistemas Operacionais • Para projetar um sistema operacional os projetistas precisam ter uma ideia clara do que querem. • A falta de um objetivo torna muito mais difícil tomar decisões. 2 Projeto de Sistemas Operacionais • Com relação a projetos de um SO, podemos citar duas linguagens de programação: PL/I e C. • PL/I foi projetada pela IBM na década de 1960. Ela tinha um pouco de FORTRAN, COBOL e ALGOL. • Fracassou porque não tinha um visão unificada, era simplesmente uma coleção de caraterísticas em situação de disputa uma com as outras e muito sobrecarregada para que fosse compilada e inicializada eficientemente. 3 Projeto de Sistemas Operacionais • A linguagem C, criada em 1972 por Dennis Ritchie) com o propósito de criar novos SOs. • Ela ainda é amplamente usada, mesmo décadas após sua aparição. • A linguagem foi chamada "C", porque suas características foram obtidas a partir de uma linguagem anteriormente chamado de " B", que de acordo com a Ken Thompson era versão reduzida da linguagem de programação BCPL. 4 Projeto de Sistemas Operacionais • Para um bom projeto de SO, quatro itens principais devem ser considerados. – Definir abstrações – Fornecer operações primitivas – Garantir isolamento – Gerenciar o hardware 5 Projeto de Sistemas Operacionais • Definir abstrações: – Processos – Espaços de endereçamento e arquivos – Threads e multithreads – Sincronização entre dispositivos e periféricos – Modelo de memória – Modelagem de entrada e saída, etc. 6 Projeto de Sistemas Operacionais • Operações primitivas: – Cada abstração pode ser instanciada na forma de estruturas de dados. Os usuários podem criar processos, arquivos, etc. – As operações primitivas manipulam essas estruturas de dados. – Os usuários podem por exemplo, ler e escrever em arquivos através de chamadas de sistemas (Systems Calls). 7 Projeto de Sistemas Operacionais • Garantir isolamento – Múltiplos usuários podem usar um computador ao mesmo tempo, o SO precisa fornecer mecanismos para mantê-los separados. – Manter a garantia que cada usuário possa executar somente operações autorizadas sobre dados autorizados. – Ao mesmo tempo, os usuários também querem compartilhar dados e recursos, de modo que o isolamento deve ser seletivo. – Isolar falhas, se alguma parte do sistema falhar, esta não deve ser capaz de comprometer o resto do SO. 8 Projeto de Sistemas Operacionais • Gerenciar o Hardware – Cuidar de todos os circuitos de baixo nível, como controladores de interrupção e de barramento. – Fornecer modelo que permita que os drivers de dispositivos gerenciem dispositivos E/S, como discos, impressoras, monitores, etc. 9 Dificuldades Projeto de Sistemas Operacionais • Gordon Earle Moore, co-fundador da Intel Corporation, formado em engenharia no Instituto de Tecnologia pela Universidade da Califórnia em Berkeley. • Moore afirmava que o hardware de um computador é melhorado por um fator de 100 a cada década. • Isso deu origem a lei de Moore. • Mais não existe nenhuma lei que diga algo parecido com relação aos SO. 10 Dificuldades Projeto de Sistemas Operacionais • Os SOs têm se tornado programas extremamente extensos. É difícil uma pessoa sentar-se diante de um PC e dominar o SO em poucos meses. • As últimas versões do UNIX excedem 3 milhões de linhas de códigos; o Windows Vista possui mais de 5 milhões de linhas de código no modo núcleo e mais de 70 milhões de linhas no total. 11 Dificuldades Projeto de Sistemas Operacionais • Como compreender 3, 5 milhões de linhas de códigos ? • Como assegurar que um produto de tal grandeza estará próximo da solução ótima, para o qual foi projetado? 12 Dificuldades Projeto de Sistemas Operacionais • Não podemos dizer que os SOs são os sistemas mais complexos. • As aeronaves, por exemplo, possuem sistemas complicados e muito complexos. Ao mesmo tempos esses sistemas se dividem formando subsistemas isolados. 13 Dificuldades Projeto de Sistemas Operacionais • Os SOs têm que lidar com a concorrência. Existem múltiplos usuário e dispositivos de E/S, todos ativos de uma só vez. • O gerenciamento da concorrência é inerentemente muito mais difícil do que o gerenciamento de uma única atividade sequencial. 14 Dificuldades Projeto de Sistemas Operacionais • Os SOs lidam com usuários potencialmente hostis, usuários que querem interferir no funcionamento do sistema ou fazer coisas proibidas, como roubar arquivos dos outros usuários. • O sistema operacional precisa tomar medidas para evitar que esses usuários se comportem inadequadamente. 15 Dificuldades Projeto de Sistemas Operacionais • Os SOs vivem por um longo tempo. O UNIX vem sendo usado desde de 1969, o Windows existe há anos, desde de 1981 e não mostra sinais que irá desaparecer. • Consequentemente, os projetistas devem pensar como o hardware e as aplicações podem mudar no futuro distante e como eles devem se preparar para isso. 16 Dificuldades Projeto de Sistemas Operacionais • Os projetistas de SOs realmente não têm uma boa ideia de como seus sistemas serão usados, de modo que eles precisam desenvolvê-los visando uma considerável generalidade. • Ninguém diz a um projetista de navio para construir um navio sem especificar se o que se quer é um pesqueiro, cruzeiro ou um encouraçado. 17 Dificuldades Projeto de Sistemas Operacionais • Os SOs modernos são projetados para executar em múltiplas plataformas de hardware. Eles também devem funcionar com milhares de dispositivos de E/S, e todos são projetados independentemente. • Ex: No MS-DOS quando um usuário tentava instalar uma placa de som e um modem que usavam as mesmas portas de E/S ou linhas de requisição de interrupção. 18 Sistemas Operacionais em Camadas • Em SOs modernos, o desenvolvimento em camadas é um ponto chave para o bom funcionamento dos sistemas. • A primeira camada inferior sempre deve tentar esconder as características mais específicas do hardware. 19 Sistemas Operacionais em Camadas • A segunda camada faz o tratamento das interrupções, trocas de contexto e a MMU (unidade de gerenciamento de memoria). • A terceira camada, utilizada para o gerenciamento de threads, incluindo escalonamento e sincronização, de acordo com algum mecanismo e/ou algoritmo. 20 Sistemas Operacionais em Camadas • Na camada 4 podemos encontrar os drivers dos dispositivos, cada um executando como um thread separado, com seu próprio estado, contador de programa, registradores, etc. • Essa camada pode simplificar bastante a estrutura de E/S, pois quando ocorre uma interrupção, ela pode ser tratada isoladamente. 21 Sistemas Operacionais em Camadas • Na camada 5, podemos encontrar a memória virtual, possibilitando então a paginação em disco da cache de blocos. • Desta forma o gerenciador de memória virtual determina dinamicamente como a memória real deve ser divida entre as paginas do usuário e as paginas do núcleo. • Método adotado a partir do Windows Vista. 22 Sistemas Operacionais em Camadas 23 • Duvidas??? 24
Compartilhar