Sistemas Operacionais Introdução Adriano J. Holanda http://adrianoholanda.org/edu/ 5 de agosto de 2013
Introdução Sobre o curso Introdução Complexidade dos SOs Informações sobre a disciplina Serviços Arquitetura dos SOs
Sobre o que não é? Tutorial de utilização de sistemas operacionais Windows ou GNU/Linux; Curso de administração de servidores; Curso de hardware ou sistemas que não estejam ligados a sistemas operacionais, tais como BIOS; Tutorial de utilização de software.
Sobre o que pretende ser? Aprendizado de conceitos fundamentais comuns à maioria dos sistemas operacionais; Prática tendo como fonte os conceitos assimilados.
Sistemas de computação teclado mouse impressora disco rígido monitor processador controladora de disco controladora USB placa de vídeo memória
Sistemas de computação teclado mouse impressora gerenciamento de processos disco rígido monitor processador controladora de disco controladora USB placa de vídeo memória
Sistemas de computação teclado mouse impressora disco rígido monitor processador controladora de disco controladora USB placa de vídeo memória gerenciamento de memória
Sistemas de computação teclado mouse impressora disco rígido gerenciamento de entrada e saída (E/S) monitor processador controladora de disco controladora USB placa de vídeo memória
Divisão do curso O curso será dividido em 3 tópicos principais envolvendo Gerenciamento de: 1. Processos; 2. Memória; 3. Entrada e saída (E/S).
Complexidade dos SOs: Microsoft Windows Data Produto Tam. Equipe Tam. Equipe Linhas de Lançamento Desenvolvimento Teste Código (milhões) Jul/93 NT 1.0 (release 3.1) 200 140 4-5 Set/94 NT 2.0 (release 3.5) 300 230 7-8 Mai/95 NT 3.0 (release 3.51) 450 325 9-10 Jul/96 NT 4.0 (release 4.0) 800 700 11-12 Dez/99 NT 5.0 (Windows 2000) 1.400 1.700 29+ Out/01 NT 5.1 (Windows XP) 1.800 2.200 40 Abr/03 NT 5.2 (Windows Server 2003) 2.000 2.400 50 Fonte: The Build Master. Vicent Maraia, Addison-Wesley, 2005.
Complexidade dos SOs: Kernel do Linux Linhas de código 10 7 1.4 linhas de código 1.2 1 0.8 0.6 2.6.11 2.6.12 2.6.13 2.6.14 2.6.15 2.6.16 2.6.17 2.6.18 2.6.19 2.6.20 2.6.21 2.6.22 2.6.23 2.6.24 2.6.25 2.6.26 2.6.27 2.6.28 2.6.29 2.6.30 2.6.31 2.6.32 2.6.33 2.6.34 2.6.35 2.6.36 2.6.37 2.6.38 2.6.39 3.0 3.1 3.2 versão do kernel Fonte: Linux Foundation, http://go.linuxfoundation.org/who-writes-linux-2012
Complexidade dos SOs: Kernel do Linux Quantidade de arquivos 10 4 quantidade de arquivos 3.5 3 2.5 2 2.6.11 2.6.12 2.6.13 2.6.14 2.6.15 2.6.16 2.6.17 2.6.18 2.6.19 2.6.20 2.6.21 2.6.22 2.6.23 2.6.24 2.6.25 2.6.26 2.6.27 2.6.28 2.6.29 2.6.30 2.6.31 2.6.32 2.6.33 2.6.34 2.6.35 2.6.36 2.6.37 2.6.38 2.6.39 3.0 3.1 3.2 versão do kernel Fonte: Linux Foundation, http://go.linuxfoundation.org/who-writes-linux-2012
Gerenciamento do curso http://adrianoholanda.org/edu/ Sistemas Operacionais I Ementa; Aulas; Bibliografia; Exercícios; Código fonte; Material suplementar.
Avaliação e método Nota (2) Prova(s): 70%; (2) Teste(s) ou Trabalho(s): 30%. Dicas Interatividade: perguntem, perguntem, perguntem,???; Participação: maior parte das questões envolvem conteúdo transmitido na sala de aula; Leiam material suplementar no site da disciplina e fiquem atento às alterações e dicas.
Serviços Interface com o usuário Linha de comando; Lote (batch); Gráfica. Execução de programa Operação de Entrada e Saída (E/S) Manipulação de Sistema de Arquivos Comunicação Detecção de erros
Arquitetura dos SOs Monoĺıtico; Micronúcleo.
Projeto de núcleo (kernel) monoĺıtico Hardware
Projeto de núcleo (kernel) monoĺıtico Drivers de dispositivos Hardware
Projeto de núcleo (kernel) monoĺıtico núcleo (kernel) Drivers de dispositivos Hardware
Projeto de núcleo (kernel) monoĺıtico interface de chamada do sistema núcleo (kernel) Drivers de dispositivos Hardware
Projeto de núcleo (kernel) monoĺıtico aplicativo 1 aplicativo 2... aplicativo N interface de chamada do sistema núcleo (kernel) Drivers de dispositivos Hardware
Projeto de núcleo (kernel) monoĺıtico aplicativo 1 aplicativo 2... aplicativo N espaço do kernel interface de chamada do sistema núcleo (kernel) Drivers de dispositivos Hardware
Projeto de núcleo (kernel) monoĺıtico espaço do usuário aplicativo 1 aplicativo 2... aplicativo N espaço do kernel interface de chamada do sistema núcleo (kernel) Drivers de dispositivos Hardware
Projeto monoĺıtico Características Simplicidade: todo o código reside no mesmo espaço de endereços de memória compartilhada, evitando o mecanismo de comunicação entre processos, que podem ser complexos e prejudicar o desempenho do sistema; Intolerante a falhas: se houver qualquer falha nos drivers ou subsistemas do núcleo, todo o sistema entra em colapso (kernel panic), interrompendo o funcionamento.
Projeto baseado em micronúcleo microkernel Hardware
Projeto baseado em micronúcleo microkernel kernel Hardware
Projeto baseado em micronúcleo microkernel driver de disco driver de áudio... driver de rede kernel Hardware
Projeto baseado em micronúcleo microkernel servidor de arquivos servidor de processos... servidor de rede driver de disco driver de áudio... driver de rede kernel Hardware
Projeto baseado em micronúcleo microkernel aplicativo aplicativo... aplicativo servidor de arquivos servidor de processos... servidor de rede driver de disco driver de áudio... driver de rede kernel Hardware
Projeto baseado em micronúcleo microkernel aplicativo aplicativo... aplicativo servidor de arquivos servidor de processos... servidor de rede driver de disco driver de áudio... driver de rede espaço do kernel kernel Hardware
Projeto baseado em micronúcleo microkernel aplicativo aplicativo... aplicativo espaço do kernel espaço do usuário servidor de arquivos driver de disco servidor de processos driver de áudio kernel... servidor de rede... driver de rede Hardware
Projeto baseado em micronúcleo Características Comunicação: troca de mensagens; Facilidade de extensão: cada serviço pode ser modificado sem afetar os outros serviços ou o SO; Confiabilidade e segurança: Se algum serviço falhar o SO permanecerá intocável, pois o serviço é executado no espaço do usuário e não afeta o sistema.
Projeto híbrido O projeto híbrido de sistema operacional é uma combinação dos projetos monoĺıtico e baseado em micronúcleo, executando alguns serviços no espaço do kernel, tais como escalonamento do processador e comunicação entre processos, por exemplo, com o objetivo de reduzir a sobrecarga causada pela passagem de mensagens destes serviços ao microkernel.
Alguns exemplos Monoĺıtico: Linux (Android), FreeBDS, OpenBSD, NetBSD, Solaris; Micronúcleo: GNU Hurd, L4, Minix, QNX; Híbrido: Mac OS X, Microsoft Windows NT/2000/XP/Vista/7 e Server 2003/2008.
Arquitetura Android Aplicativos Home Contatos Telefone Navegador... Framework de Aplicativos Gerenciador de Atividades Gerenciador de Janelas Provedor de Conteúdo Sistema de Visualização Gerenciador de Pacotes Gerenciador de Telefonia Gerenciador de Recurso Gerenciador de Localização Gerenciador de Notifição Bibliotecas Android Runtime Core Runtime Gerenciador de Superfície Framework de Mídia SQLite Dalvik Virtual Machine OpenGL ES Fonte FreeType WebKit SGL SSL libc Kernel do Linux Adaptador de Tela Adaptador de Câmera Adaptador de Memória Flash Adaptador Binder (IPC) Adaptador de Keypad Adaptador WiFi Adaptadores de Áudio Gerenciamento de Energia Figura : Projeto do sistema operacional Android. (Esta imagem é uma adaptação da original proveniente do Wikimedia Commons, um acervo de conteúdo livre da Wikimedia Foundation que pode ser utilizado por outros projetos.)