Sistemas Operacionais Introdução Adriano J. Holanda http://holanda.xyz 3/8/2015 Sistemas de computação mouse disco rígido teclado processador impressora monitor controladora de disco controladora USB memória placa de vídeo Sistemas de computação gerenciamento de processos disco rígido teclado processador controladora de disco mouse impressora monitor controladora USB memória placa de vídeo Sistemas de computação mouse disco rígido teclado processador impressora monitor controladora de disco controladora USB memória gerenciamento de memória placa de vídeo Sistemas de computação mouse disco rígido teclado impressora monitor gerenciamento de entrada e saída (E/S) processador controladora de disco controladora USB memória placa de vídeo 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 Sistemas Operacionais: Microsoft Windows Data Produto Lançamento Jul/93 Set/94 Mai/95 Jul/96 Dez/99 Out/01 Abr/03 NT NT NT NT NT NT NT 1.0 2.0 3.0 4.0 5.0 5.1 5.2 (release 3.1) (release 3.5) (release 3.51) (release 4.0) (Windows 2000) (Windows XP) Tam. Equipe Tam. Equipe Linhas de Desenvolvimento Teste Código (milhões) 200 300 450 800 1.400 1.800 2.000 140 230 325 700 1.700 2.200 2.400 4-5 7-8 9-10 11-12 29+ 40 50 (Windows Server 2003) Fonte: “The Build Master”. Vicent Maraia, Addison-Wesley, 2005. 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 linhas de código Complexidade dos Sistemas Operacionais: Kernel do Linux Linhas de código ·107 1.4 1.2 1 0.8 0.6 Fonte: Linux Foundation, http://go.linuxfoundation.org/who-writes-linux-2012 versão do kernel 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 quantidade de arquivos Complexidade dos Sistemas Operacionais: Kernel do Linux Quantidade de arquivos ·104 3.5 3 2.5 2 Fonte: Linux Foundation, http://go.linuxfoundation.org/who-writes-linux-2012 versão do kernel Complexidade dos Sistemas Operacionais: Kernel do Linux Relatório de 2015 Fonte: “Who Writes Linux 2015” Complexidade dos Sistemas Operacionais: Kernel do Linux Relatório de 2015 Fonte: “Who Writes Linux 2015” Serviços I Interface com o usuário I I I Linha de comando; Lote (batch); Gráfica. I Execução de programa I Operação de Entrada e Saída (E/S) I Manipulação de Sistema de Arquivos I Comunicação I Detecção de erros Arquitetura dos SOs I Monolítico; I Micronúcleo. Projeto de núcleo (kernel) monolítico Hardware Projeto de núcleo (kernel) monolítico Drivers de dispositivos Hardware Projeto de núcleo (kernel) monolítico núcleo (kernel) Drivers de dispositivos Hardware Projeto de núcleo (kernel) monolítico interface de chamada do sistema núcleo (kernel) Drivers de dispositivos Hardware Projeto de núcleo (kernel) monolítico aplicativo 1 aplicativo 2 ... interface de chamada do sistema núcleo (kernel) Drivers de dispositivos Hardware aplicativo N Projeto de núcleo (kernel) monolítico espaço do kernel aplicativo 1 aplicativo 2 ... interface de chamada do sistema núcleo (kernel) Drivers de dispositivos Hardware aplicativo N Projeto de núcleo (kernel) monolítico espaço do usuário espaço do kernel aplicativo 1 aplicativo 2 ... interface de chamada do sistema núcleo (kernel) Drivers de dispositivos Hardware aplicativo N Projeto monolítico Características I I 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 kernel Hardware ... driver de rede 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 espaço do kernel 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 espaço do kernel espaço do usuário 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 Características I I I Comunicação: troca de mensagens; Facilidade de extensão: cada serviço pode ser modificado sem afetar os outros serviços ou o Sistemas Operacionais; Confiabilidade e segurança: Se algum serviço falhar o Sistemas Operacionais 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 monolí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 I I I Monolí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.