Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Uma visão estrutural hardware & software Prof. MSc. Hugo Souza
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;
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;
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;
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;
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;
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;
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;
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;
Exemplo de uma infraestrutura da memória flash particionada;
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;
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);
Estrutura de um disco rígido convencional;
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;
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];
Organização básica entre as três estruturas externas;
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;
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;
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;
É 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;
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;
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.
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:
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.;
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;
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;
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;
Modo usuário Processo Shell Fazer Outro... Programas de usuário FS Proc. Reenc.... Outro Servidores Disco TTY Rede Impr.... Outro Drivers O micronúcleo controla interrupções, processos, escalonamento, IPC. Relógio Sys Estrutura do sistema MINIX 3. Modelo micronúcleo;
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;
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];
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;
Escopo em camadas de uma máquina virtual;
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;
Estrutura de uma JVM sistemas operacionais;
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;
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];
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;