Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Uma visão estrutural hardware & software Prof. MSc. Hugo Souza Arquitetura e organização de S.O. •Continuando nossas aulas relativas ao Módulo 1, veremos a seguir como está definida a organização estrutural dos sistemas operacionais em um contexto que aborda os componentes físicos e os tipos/modelos de software que os mesmos podem abranger: •Nas próximas aulas abordaremos: Estrutura externa dos sistemas operacionais e suas principais características; Estrutura interna dos sistemas operacionais e suas principais características; Minitestes de avaliação; Exercícios; Arquitetura e organização de S.O. •Para identificar quais componentes devemos estudar é importante entender como essa organização está inicialmente dividida. Tanenbaum explica que a literatura classifica um sistema operacional quanto as estruturas externas e as estruturas internas; •As estruturas externas dos S.O.s abordam: –Processadores, memória, discos; –Dispositivos de entrada/saída de dados; –Canais de acesso e condução dos dados: barramentos; •As estruturas internas dos S.O.s abordam: –Sistemas monolíticos e sistemas em camadas; –Micronúcleo e exonúcleo; –Maquinas virtuais –Modelo cliente-servidor; Arquitetura e organização de S.O. •As estruturas externas relevam os fatores de organização e comunicação do sistema operacional com o hardware; •Cada periférico precisa ser identificado e gerenciado intimamente pelo S.O. para alcançar uma melhor performance nas operações de máquina, rendimento nos resultados, economia de tempo, além da diminuição dos custos que podem ser gerados; •É importante observar que o funcionamento do hardware em comunicação com o S.O. ocorre em um baixo nível [linguagem de máquina]. Caso essa comunicação não exista torna-se inviável para os programadores trabalharem neste contexto; Arquitetura e organização de S.O. •A primeira estrutura externa é o processador. Ele tem como função buscar a primeira instrução da memória, decodificá-la para determinar seus operandos e as operações que serão realizadas através de um ciclo; •Cada processador tem estruturas menores denominadas de registradores que salvam os operandos e delimitam quais recursos serão necessários nas operações; •Dois registradores indispensáveis são o contador de programa que contém o endereço de memória da próxima instrução a ser buscada e ponteiro de pilha que aponta a última posição da memória que foi acessada; Arquitetura e organização de S.O. •Alguns processadores têm condições de realizar estas operações “separadamente” e fora de ordem, sendo essa organização denominada como pipeline; •Imagine a leitura de uma instrução n, a decodificação de uma instrução n+1 e execução da instrução n+2 em um formato de três estágios; •Os pipelines podem ser invocados em dois modos: núcleo e usuário. O modo núcleo é aquele em que o próprio S.O. deverá gerenciar suas operações, tais como a repartição de disco, memória, etc.; •No modo usuário o gerenciamento é definido pelo cliente nos aplicativos que o S.O. poderá fornecer suporte quando forem instalados; Arquitetura e organização de S.O. Um processador simples é constituído por uma Unidade de Controle e uma Unidade de Lógica e Aritmética. Entre estas unidades existem canais de comunicações denominados de barramentos, responsáveis por controlar a ordem das instruções e o fluxo de dados que são movimentados entre os registradores; Arquitetura e organização de S.O. •O segundo componente da estrutura externa é a memória de acesso, também conhecida como memória randômica [RAM] ou não randômica [ROM]; •Esse dispositivo tem como função armazenar temporariamente os dados, programas e demais informações que estão sendo processadas pelas unidades lógica e de controle do processador; •Comparada as memórias locais do processador esta memória é mais lenta por gerir diretamente os componentes físicos. No primeiro caso [RAM] a estrutura é constituída por blocos em que os dados são alocados através de pequenas unidades [bits e kbs] para direcionarem o acesso aos recursos; Arquitetura e organização de S.O. •No segundo caso, a ROM, as estruturas estão implementadas diretamente nos dispositivos compactos [E/S] formulando o acesso local e mais rápido; •Há ainda a memória flash que possui uma configuração de armazenamento dos dados sem a necessidade de condensação elétrica. •A estrutura é basicamente a mesma, obtendo como diferencial um desgaste menos presente em sua organização caso a formatação dos dados seja algo comum de ser realizado; Arquitetura e organização de S.O. •Exemplo de uma infraestrutura da memória flash particionada; Arquitetura e organização de S.O. •A terceira estrutura externa relacionada aos sistemas operacionais são os discos. O armazenamento nessas estruturas é realizado com duas prioridades: prover o gerenciamento e controle de acesso ao dados; •Em larga parte, a hierarquia é constituída pelo disco magnético (disco rígido). Um disco magnético consiste em um ou mais pratos magnéticos que “rodam” a 5.400, 7.200 ou 10.800 rpm; •A informação é escrita no disco em uma série de discos concêntricos em que cada “cabeça ou cabeçote” de leitura escreve em uma “trilha” formando o “cilindro” que formata a estrutura; Arquitetura e organização de S.O. •Muitos computadores mantêm uma organização conhecida como memória virtual. Esse esquema possibilita executar programas maiores que a memória física colocando-os em disco e usando a memória principal como cache; •Esse esquema requer o mapeamento de endereços de memória rapidamente para converter o endereço que o programa gerou no endereço físico em RAM; •Esse mapeamento é realizado por uma parte da CPU chamada unidade de gerenciamento de memória (MMU); Arquitetura e organização de S.O. •Estrutura de um disco rígido convencional; Arquitetura e organização de S.O. •Outra estrutura indispensável requerida para o funcionamento dos sistemas operacionais são os dispositivos de entrada e saída de dados; •Conhecidos como dispositivos de E/S estas estruturas são constituídos, geralmente, em duas partes: o controlador e o dispositivo nativo; •O controlador é um chip que gerencia as operações físicas entre os dispositivos. Ele “recebe” os comandos binários do S.O. e para verificar a leitura e escrita de dados; Arquitetura e organização de S.O. •A outra parte do dispositivo é a interface nativa [dispositivo real] responsável por armazenar as informações designadas pelo controlador; •Como a comunicação entre os dispositivos é realizada pelo controlador, os sistemas operacionais “enxergam” na maioria das vezes apenas as informações técnicas e não o dispositivo em si; •O controle de entrada e saída pode ser realizado de três maneiras diferentes: –Chamada de usuário através de um software de alto nível; –Invocação pelo S.O. através de um driver de acesso [iniciação e interrupção]; –Acesso direto, configurado através de um chip [Direct memory access – DMA]; Arquitetura e organização de S.O. •Organização básica entre as três estruturas externas; Arquitetura e organização de S.O. •Já os barramentos caracterizam os canais de controle e movimentação dos dados entre as estruturas externas do sistemas operacionais; •Um barramento possui um padrão de comunicação que é reconhecido/identificado por uma série de padrões tais como comutação, multiplexação, codificação e decodificação; •Os principais tipos, utilizados em uma arquitetura de S.O. são o barramento de cache, barramento local [processador], barramento de memória, barramento USB, barramento SCSI, barramento IDE e PCI; •Veremos a seguir dois deles; Arquitetura e organização de S.O. •Já os barramentos caracterizam os canais de controle e movimentação dos dados entre as estruturas externas do sistemas operacionais; •Um barramento possui um padrão de comunicação que é reconhecido/identificado por uma série de padrões tais como comutação, multiplexação, codificação e decodificação; •Os principais tipos, utilizados em uma arquitetura de S.O. são o barramento de cache, barramento local [processador], barramento de memória, barramento USB, barramento SCSI, barramento IDE e PCI; •Veremos a seguir dois deles; Arquitetura e organização de S.O. •O primeiro é o Universal Serial Bus [USB] que possui uma estrutura baseada em quatro vias, sendo duas para fornecer energia e as demais controle e acesso aos dados; •É característico por possuir um driver genérico [dispositivo-raiz] que pode ser lido por todos os dispositivos de E/S que possuem internamente algum canal de controle [se podem enviar algum dado]; •O barramento small computer system interface [SCSI] é um barramento de alto desempenho destinado a discos, scanners e outros hardware que possuam rápida comunicação de dados; Arquitetura e organização de S.O. •É popular em sistemas da Apple e reconhecidos principalmente para sistemas Unix. A Intel também programa/programou durante vários anos aplicativos que usam a identificação de dispositivos através deste padrão; Arquitetura e organização de S.O. •As estruturas internas tem como função alinhar em qual contexto [serviços] os sistemas operacionais podem abranger através de sua configuração ao nível de programação; •A primeira delas, não sem bem uma “estrutura”, mas sim uma “categoria” são os sistemas monolíticos. A organização monolítica é de longe a mais comum visto que o sistema operacional é executado como um único programa no modo núcleo; •O sistema é escrito através de uma coleção de rotinas, interligadas a um programa binário através de interfaces comuns contidas em cada uma, podendo umas invocarem as outras de acordo com a tarefa; Arquitetura e organização de S.O. •Para cada chamada do sistema há uma rotina encarregada para fornecer o suporte de operações. As rotinas estão dividas basicamente em três camadas: –Rotina principal: corresponde ao software principal em modo núcleo, que caracteriza o kernel do S.O.; –Rotinas de serviço: correspondem a rotinas específicas para os serviços configurados no S.O. Ex.: pacotes de dados e batchs; –Rotinas de utilidades: são rotinas que mantem o controle e configuração das rotinas de serviço. Arquitetura e organização de S.O. •Os sistemas em camadas possuem uma hierarquia de rotinas bem mais definida em relação aos monolíticos; •O primeiro sistema construído com essa sintaxe foi o THE [Technische Hogeschool Eindhoven] sendo implementado em seis camadas com uma arquitetura baseada em lotes com 32 k de memória e palavras de 27 bits; •O sistema possuía seis camadas, com as seguintes funções: Arquitetura e organização de S.O. Camada Função 5 O operador 4 Programas de usuário 3 Gerenciamento de entrada/saída 2 Comunicação operador-processo 1 Memória e gerenciamento de tambor 0 Alocação do processador e multiprogramação •Níveis de camadas e organização do S.O.; Arquitetura e organização de S.O. •Outra generalização do conceito de camadas estava presente no sistema MULTICS. Em vez de camadas, o sistema era escrito através de anéis concêntricos, sendo os anéis internos mais privilegiados [acesso a máquina] do que os externos; •As chamadas eram gerenciadas por uma unidade de controle denominada de TRAP; •O acesso aos parâmetros podia ser realizado de maneira individual [processos individuais] para operações simples como leitura, escrita e execução dos dados; Arquitetura e organização de S.O. •Com a abordagem do sistema de camadas, os projetistas podem escolher onde traçar a fronteira núcleo-usuário; •Isso implica dizer que os processos de núcleo podem ser “administrados” pelo sistema operacional em caráter de rotina [obrigatório] enquanto os demais processos podem ser facilmente gerenciados pelo usuário; •Desta forma, para alcançar alta confiabilidade por meio de uma divisão do sistema operacional em módulos pequenos, bem definidos, apenas um desses módulos, o micronúcleo, é executado no modo núcleo e o restante executado como processos de usuário; Arquitetura e organização de S.O. •Muitos micronúcleos foram implementados ao longo dos anos. Eles estão presentes em aplicações críticas que exigem a alocação dos processos de núcleo com precisão quanto as chamadas; •Fora do núcleo, os sistemas que implementam esse escopo são formados geralmente por três camadas de processos, todas executando em modo usuário: –Camada inferior (drivers): contém os parâmetros de gerenciamento do hardware; –Camada de modo usuário (servidores): responsável pelo ciclo de vida dos processos de usuário; –Camada de programas (aplicações): são as aplicações “linkadas” aos processos de núcleo executadas em nível de usuário; Arquitetura e organização de S.O. Modo usuário Processo Shell FS Disco Fazer Proc. TTY Outro ... Reenc. Rede Programas de usuário Outro ... Impr. Servidores ... Outro Drivers O micronúcleo controla interrupções, processos, escalonamento, IPC. Relógio Sys •Estrutura do sistema MINIX 3. Modelo micronúcleo; Arquitetura e organização de S.O. •Uma ligeira variação da ideia de micronúcleo é distinguir entre duas classes de processos, os servidores, que prestam algum serviço, e os clientes, que usam esses serviços; •Esse modelo é conhecido como modelo clienteservidor. Frequentemente a camada inferior é o micronúcleo, mas ele não é obrigatório. A essência é a presença de processos, clientes e servidores; •A comunicação é muitas vezes realizada por meio de troca de mensagens. Para obter um serviço, o cliente constrói uma mensagem para o servidor requerendo as condições necessárias (fluxo, ordem, algoritmos) aguardando em seguida uma resposta de aprovação; Arquitetura e organização de S.O. •Uma generalização óbvia dessa ideia é executar clientes e servidores em computadores diferentes, conectados por uma rede local ou de grande área; •Um servidor pode prestar a comunicação com vários clientes paralelamente gerenciando as requisições e suas respectivas respostas com vários tipos de equipamentos, dentre computadores, tablets, smartphones; •Isso exige a integração com várias arquiteturas diferentes, plataformas, tecnologias e outros aspectos [serviços, infraestruturas e dispositivos]; Arquitetura e organização de S.O. •Um sistema operacional necessita criar várias “abstrações” para processos diferentes. Cada processo, thread e demais estruturas internas são gerenciadas de maneira diferente; •O “coração” do sistema, conhecido como monitor de máquina virtual, é executado diretamente sobre o hardware e implementa a multiprogramação, provendo assim, não uma, mas várias máquinas virtuais para a próxima camada; •Essas máquinas virtuais não são máquinas estendidas, com arquivos e outras características convenientes – cópias de hardware e software; Arquitetura e organização de S.O. •Escopo em camadas de uma máquina virtual; Arquitetura e organização de S.O. •Há também as máquinas virtuais que trabalham com um formato de interface sobre outras máquinas virtuais; •Utilizam proteção e segurança de dados précompilados; •A função dessa segunda máquina virtual é interpretar os códigos, programas e demais estruturas compatíveis ao seu “compilador compactado”; •A JVM, por exemplo, é um exemplo de máquina virtual interpretativa. Ela identificar os bytecodes em Java e provem a execução dos programas em quaisquer dispositivos que contenham esse framewok instalado; Arquitetura e organização de S.O. •Estrutura de uma JVM – sistemas operacionais; Arquitetura e organização de S.O. •Em vez de clonar a máquina “real”, como é no caso das máquinas virtuais, outra estratégia é dividi-la ou, em outras palavras, dar a cada usuário 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 tente usar recursos de outra; •A vantagem do esquema exonúcleo é que o mesmo “poupa” uma camada de mapeamento. Nos outros projetos as VMs “pensam” que possuem a infraestrutura; Arquitetura e organização de S.O. •Desta forma, há um valor emergente [que pode alterar] em cada máquina virtual, sendo algo gerenciável mediante a política de escalonamento, divisão e expansão de recursos adotada pelo sistema operacional; •Isso implica dizer que cada S.O. atribui as regras de estabelecer o ciclo de atividades que são realizadas em suas estruturas internas [criação, funcionamento e encerramento; •Cada estrutura dessa é conhecida como processos e threads, que veremos com mais detalhes nas próximas aulas [processos e threads]; Arquitetura e organização de S.O. •O material para os estudos já está disponível no site da disciplina em: http://hugovlsouza.com •Também já está disponível a descrição do segundo miniteste: “O que representa a arquitetura de Von Neumman? Explique qual importância desse modelo para a evolução dos sistemas operacionais e tecnologias atuais”; •Nas próximas aulas veremos a estrutura dos processos nos sistemas operacionais;