A criação de objetos em sistemas como o AS/400 envolve uma série de processos detalhados e complexos que garantem não apenas a integridade dos dados, mas também a eficiência no gerenciamento de memória e a segurança do sistema. Após a criação de um novo objeto, o perfil de usuário ou grupo precisa ser atualizado para refletir a propriedade do novo objeto, o que é fundamental para o controle e rastreamento da utilização de recursos. O passo final desse processo envolve a criação de um ponteiro de sistema para o objeto, o qual é então retornado ao usuário que solicitou a criação. Para entender como esses objetos são organizados e gerenciados, é necessário olhar mais de perto os cabeçalhos dos segmentos e do EPA, duas estruturas que são cruciais nesse processo.
O cabeçalho do segmento ocupa os primeiros 32 bytes de cada segmento que compõe um objeto do sistema. Este cabeçalho contém informações essenciais sobre o segmento, como o tipo de segmento, as flags que indicam características específicas (como a existência ou a capacidade de auto-extensão), o número de páginas alocadas e os endereços do segmento base e do espaço associado ao objeto. Esses endereços são fundamentais para conectar os segmentos entre si, formando um objeto completo e funcional.
O tipo de segmento é identificado por um byte específico e determina se o segmento pertence a objetos MI (máquina independentes) ou a estruturas de dados usadas pelo SLIC (Sistema de Controle de Armazenamento), abaixo da camada MI. A maioria dos segmentos que estamos considerando até agora faz parte de objetos MI, mas existem outros segmentos específicos usados pelo SLIC que não são tratados como objetos no sentido tradicional. Esses segmentos são usados em funções como tabelas de gerenciamento de armazenamento e áreas de trabalho de tradutores, e sua gestão é similar à dos segmentos de objetos do sistema.
As flags no cabeçalho do segmento desempenham um papel crítico no comportamento do segmento dentro do sistema. A flag de existência, por exemplo, define se o segmento é permanente ou temporário. Segundos esse parâmetros, um segmento permanente será mantido no sistema enquanto não for explicitamente destruído, enquanto um segmento temporário será apagado sempre que o sistema for reinicializado. Já a flag de auto-extensão indica que o segmento pode crescer automaticamente, alocando mais páginas de disco conforme necessário. Se essa flag estiver desativada, o segmento não poderá expandir além do tamanho inicial, o que pode melhorar o desempenho, mas também requer mais planejamento de alocação. A flag de tags no segmento informa ao sistema se o segmento contém ponteiros MI, que são protegidos por bits especiais para impedir modificações não autorizadas.
Além disso, cada cabeçalho de segmento contém dois endereços importantes: o endereço do segmento base e o endereço do próximo segmento secundário. Esses endereços são usados para encadear os segmentos em um objeto multi-segmento, permitindo que o sistema acesse os dados necessários de maneira eficiente.
Os cabeçalhos EPA, por sua vez, são encontrados apenas no segmento base de cada objeto do sistema. O cabeçalho EPA contém uma série de informações sobre o objeto, incluindo seu tipo, nome, atributos de espaço, tamanho total e o número da versão. Essa estrutura também armazena informações cruciais, como o endereço do perfil de usuário e do contexto, que são utilizados para acessar e gerenciar o objeto dentro do sistema.
As bandeiras de atributos no cabeçalho EPA indicam o estado do objeto, como se ele está suspenso ou danificado. Um objeto suspenso é um que teve seu conteúdo apagado, mas cujos cabeçalhos ainda permanecem no sistema. Se alguém tentar acessar esse objeto após ele ter sido destruído, o sistema retornará apenas os cabeçalhos, indicando que o objeto não existe mais, mas nunca permitindo a reutilização do espaço de endereço que o objeto ocupava. Isso evita problemas de segurança e integridade que poderiam surgir se o espaço de endereço fosse reusado para outros objetos sem a devida validação.
Uma característica fundamental do sistema é que, quando um objeto permanente é destruído, seu espaço de endereço nunca é realocado, o que impede que qualquer ponteiro residual no sistema cause problemas. Em vez de adotar estratégias complexas de coleta de lixo, como em outros sistemas, o AS/400 mantém a integridade ao não permitir a reatribuição desses espaços de endereço, uma abordagem que evita riscos de segurança e problemas com referências a objetos não existentes.
Compreender esses cabeçalhos, suas funções e como eles se relacionam é crucial para quem trabalha com a administração de sistemas, pois permite uma visão detalhada de como os objetos são estruturados e gerenciados no nível de hardware e software. Este conhecimento não apenas aprimora a eficiência do gerenciamento de recursos, mas também garante a integridade e a segurança do sistema em suas operações diárias.
Como funciona a gestão do armazenamento auxiliar e dos objetos permanentes no AS/400?
No AS/400, a gestão do armazenamento auxiliar é organizada por meio de diretórios específicos que mantêm o controle do espaço em disco e a localização dos dados. Esses diretórios são essenciais para o funcionamento eficiente do sistema, garantindo que os objetos virtuais e seus segmentos sejam acessados de maneira rápida e confiável, mesmo após falhas de sistema.
Um dos conceitos centrais é o uso de diretórios especializados, cada um com funções distintas. O Diretório de Espaço Livre atua como um índice que mantém as localizações dos blocos livres em disco, permitindo o uso eficiente do espaço disponível. Já o Diretório Estático guarda extents alocados para segmentos permanentes predefinidos, essenciais para a execução da máquina, especialmente quando os diretórios normais podem estar inacessíveis. O Diretório Permanente e o Diretório Temporário armazenam os endereços dos extents alocados para segmentos virtuais permanentes e temporários, respectivamente. Existe ainda o Diretório Lookaside, que funciona como um cache para os diretórios permanente e temporário, reduzindo a latência das operações de busca.
Outro componente importante é o grupo de acesso, que se aplica a objetos fisicamente pequenos e seus segmentos. Cada grupo possui uma Tabela de Conteúdo (TOC), que lista a localização no disco de páginas específicas dos segmentos membros do grupo. O acesso a esses grupos permite operações de entrada/saída (I/O) simplificadas, pois o conteúdo pode ser lido ou escrito com uma única operação, otimizando o desempenho para pequenos objetos temporários. Porém, grupos de acesso não são utilizados para objetos permanentes devido ao seu tamanho maior, que tornaria essa abordagem ineficaz.
A robustez do sistema está demonstrada no mecanismo de recuperação de diretórios. Em caso de falha ou reinicialização do sistema (IPL), o AS/400 verifica a integridade dos diretórios de espaço livre e permanente. Se algum estiver corrompido, é executado um procedimento de recuperação que varre os discos, utilizando informações armazenadas nos cabeçalhos dos setores e segmentos para reconstruir os diretórios. Isso assegura a continuidade do sistema mesmo após eventos críticos, enquanto diretórios temporários são simplesmente descartados e recriados conforme necessário.
A arquitetura do AS/400 foi pensada para garantir longevidade e escalabilidade. Inspirada por lições aprendidas em sistemas anteriores, como o PDP-11 da Digital, que sofreu com limitações no tamanho dos endereços de memória, o AS/400 adotou endereços de 128 bits para permitir expansão sem preocupações com restrições de espaço. Esse design previne problemas comuns em sistemas com limites pequenos de endereçamento, garantindo que o ambiente seja sustentável e preparado para demandas futuras.
Além disso, a persistência dos objetos é um aspecto fundamental para sistemas orientados a objetos e que buscam continuidade além da vida de um processo. Diferentemente dos sistemas tradicionais de memória virtual, que eliminam todos os objetos de um processo quando este termina, o AS/400 mantém objetos permanentes que persistem no armazenamento, permitindo que eles sejam compartilhados entre processos e utilizados independentemente da existência desses processos. Essa característica se torna crucial para sistemas modernos, que dependem de persistência e compartilhamento de estado para garantir integridade e eficiência.
A compreensão da organização dos diretórios de armazenamento e da persistência dos objetos é essencial para entender o poder do AS/400. O sistema não apenas gerencia recursos de forma eficiente, mas também cria uma base sólida para arquiteturas orientadas a objetos e para ambientes de trabalho multitarefa que demandam alta confiabilidade e escalabilidade.
Importa destacar que a gestão do armazenamento auxiliar e a persistência de objetos implicam numa visão diferente do tempo e da memória do que a tradicional. Enquanto muitos sistemas operacionais tratam a memória como um recurso volátil associado à execução temporária dos processos, o AS/400 amplia esse conceito, tratando os objetos e seus segmentos como entidades duradouras e endereçáveis dentro de um espaço único e contínuo, a chamada "single-level store". Isso exige do leitor uma mudança de paradigma: entender que o armazenamento e a memória são vistos como um único recurso unificado, o que simplifica a manipulação de dados, elimina cópias desnecessárias e melhora a consistência e a recuperação após falhas.
Essa abordagem também favorece a transparência para os desenvolvedores e administradores, pois a complexidade do gerenciamento físico dos dados é abstraída, enquanto a integridade e o desempenho são mantidos pela estrutura de diretórios e pela recuperação automática. A convergência da memória e do armazenamento em um único espaço virtual redefine a maneira como aplicações são construídas e como o sistema operacional lida com processos, trabalho e recursos.
Como Funciona o Barramento SPD no AS/400: Arquitetura e Operações
O cartão de conexão do barramento local contém a lógica utilizada para conectar o primeiro barramento SPD (Serial Peripheral Bus). Esse barramento SPD inicial, frequentemente chamado de "barramento de cobre", é embalado diretamente com a unidade de processamento. Ele é o único barramento SPD nos modelos menores do AS/400. Modelos maiores, por sua vez, podem ter múltiplos barramentos SPD adicionais, com a possibilidade de até 18 barramentos extras, totalizando até 19 barramentos SPD em um único sistema. Esses barramentos adicionais são conectados por meio de links ópticos e geralmente são chamados de "barramentos ópticos".
O cartão de conexão local na unidade de processamento pode, opcionalmente, conectar vários cartões de link óptico (OLCs), os quais suportam os barramentos SPD adicionais. Cada OLC possui dois links ópticos independentes e, portanto, pode suportar dois barramentos SPD. A tecnologia de fibra óptica é empregada para conectar os barramentos SPD adicionais, visando aumentar a largura de banda de I/O e permitir distâncias maiores entre a unidade de processamento e as unidades de expansão de I/O. O OLC, projetado em Rochester, foi introduzido pela primeira vez no AS/400 em 1991. A performance desse link óptico tem aumentado com o tempo, sendo que atualmente os barramentos SPD transferem dados a taxas de 266 megabits por segundo ou 1 gigabit por segundo, com a taxa mais alta disponível apenas nos modelos RISC.
Um cartão de conexão remoto é embalado em uma unidade de expansão de I/O. Esse cartão remoto contém um OLC e dois BCUs (Unidades de Controle de Barramento). Cada BCU conecta diretamente um barramento SPD a um dos links ópticos do OLC. Os dois BCUs também são interconectados para fornecer um caminho alternativo entre o BCU e um link óptico, o que garante redundância nos barramentos de I/O ópticos.
O barramento SPD é composto por 36 linhas utilizadas para transferir dados (32 bits de dados e 4 bits de paridade), além de linhas adicionais para transferir informações de controle. Em um barramento de cobre, essas linhas podem ser vistas como fios físicos. Já em um barramento óptico, os dados e bits de controle são serializados, mas o funcionamento é funcionalmente equivalente. Tanto os endereços quanto os dados podem ser transmitidos através do barramento. O barramento SPD opera de forma assíncrona, o que o diferencia de barramentos síncronos, os quais exigem um relógio comum para todos os dispositivos conectados.
A escolha por um barramento assíncrono no AS/400 se deve às características dessa arquitetura. Em um barramento síncrono, todos os dispositivos precisam operar na mesma taxa de clock, o que limita a distância e a flexibilidade de uso. Por outro lado, um barramento assíncrono, ao não ser sincronizado por um clock, oferece maior flexibilidade e permite que dispositivos variados operem a diferentes velocidades, além de suportar maiores distâncias, o que é fundamental para a configuração de sistemas complexos como o AS/400.
Para coordenar a transmissão de dados entre o remetente e o receptor, um barramento assíncrono, como o SPD, usa um protocolo de aperto de mão. Esse protocolo exige que tanto o remetente quanto o receptor avancem para o próximo passo apenas quando ambos estiverem de acordo. As linhas de controle do barramento SPD implementam esse protocolo de forma eficaz. Por exemplo, o remetente pode colocar um pedido de leitura nas linhas de controle e um endereço nas linhas de dados. Esses sinais de controle são mantidos até que o receptor indique que viu os sinais, colocando um sinal na linha de reconhecimento.
Cada barramento SPD pode ser conectado a no mínimo dois IOBUs (Unidades de Entrada/Saída). Um máximo de 32 IOBUs pode ser conectado a um único barramento SPD. Quando múltiplos IOBUs estão conectados ao barramento, é necessário um mecanismo de arbitragem caso mais de uma unidade queira utilizar o barramento ao mesmo tempo. Para isso, é usado um mecanismo de arbitragem por prioridade, onde cada IOBU recebe uma prioridade que é utilizada para decidir qual IOBU pode acessar o barramento em caso de disputa.
Tanto os processadores principais quanto os controladores de dispositivos operam como IOBUs. Os controladores de dispositivos são implementados como IOPs (Processadores de Entrada/Saída), que realizam operações específicas de dispositivos I/O. Esses IOPs são microprocessadores de diversos fabricantes, com a maioria sendo da Motorola. Cada IOP possui sua própria memória e sistema operacional, que são projetados especificamente para o controle de dispositivos I/O. O software que roda no IOP é ajustado para interfaces de dispositivos específicos, interfaces de comunicação ou interfaces de LAN que o IOP suporta. Do ponto de vista operacional de I/O, o IOP, incluindo seu software, é considerado um IOBU.
Embora os IOPs sejam principalmente usados para controle de dispositivos, também possuem capacidades para executar outros tipos de aplicações. O IOP é um processador completo com seu próprio sistema operacional e programas de aplicação. Ele tem acesso direto à memória principal e, através do barramento SPD, ao sistema de discos do AS/400. Assim, um IOP pode ser utilizado para rodar aplicações de usuário, como veremos no próximo capítulo ao analisarmos o IOP de servidores de arquivos (FSIOP) no AS/400 e como ele é usado como motor de aplicações.
Cada barramento SPD possui um BCU, que fornece o controle mestre sobre as operações do barramento. Durante a operação normal, o BCU gerencia a recuperação de erros e tentativas de retransmissão, além de fazer a arbitragem quando mais de um IOBU tenta usar o barramento simultaneamente. Também cabe ao BCU inicializar o barramento no momento do IPL (Inicialização do Sistema). Durante o IPL, o BCU atribui endereços lógicos aos IOBUs conectados. Esse processo ocorre a cada IPL, o que permite a inserção de novos IOBUs com dispositivos adicionais, que são automaticamente configurados no sistema sem intervenção do usuário, uma característica que pode ser comparada ao "plug and play" em sistemas de PCs.
Além de atribuir endereços lógicos aos IOBUs conectados no IPL, o BCU também define a prioridade de uso do barramento para cada unidade. Ele verifica a capacidade de comunicação de cada IOBU através do barramento e carrega o código operacional na memória de cada IOP. Durante as operações normais, a comunicação ocorre entre IOBUs. Os processadores do sistema funcionam como IOBUs, assim como todos os IOPs. A troca de informações é sempre feita entre o IOBU que inicia a operação (chamado de mestre) e o IOBU selecionado pelo mestre (chamado de escravo). Todas as operações de barramento são realizadas entre o mestre e o escravo.
As operações de barramento podem ser definidas como uma conexão momentânea entre dois IOBUs. Cada operação de barramento possui duas partes: a primeira consiste na seleção do escravo pelo mestre, que também determina o tipo e a direção da transferência de dados. A segunda parte é composta por ciclos de dados, que podem variar de um a 16 ciclos, durante os quais os dados são transferidos. Cada ciclo transfere 32 bits de dados no barramento SPD.
Operações de barramento no AS/400 podem ser classificadas em operações de unidade e de armazenamento. Em uma operação de unidade, uma mensagem é transferida do mestre para o escravo, sendo essa mensagem estruturada para sempre ter 12 bytes.
Como Maximizar a Sincronização Dinâmica entre Variáveis Físicas em Veículos Utilizando Técnicas Avançadas de Análise de Dados
Como a Negociação dos Tratados com as Tribos Nativas Modelou as Relações entre os Estados Unidos e os Povos Indígenas
Como a Polarização e a Anisotropia Influenciam a Fluorescência
Uso do Ribavirin no Tratamento de Infecções Virais: Mecanismos e Aplicações Clínicas

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский