as 400

28
ELE 1736 - Arquitetura de Computadores Prof. Vinícius Componentes do grupo: · Leandro M. G. Ferreira 9216235-7 · Leonardo Pacheco 9114317-2 · Luiz Otávio C. Ribeiro 9215266-8

Upload: liags

Post on 19-Jun-2015

721 views

Category:

Documents


0 download

DESCRIPTION

Arquitetura AS/400

TRANSCRIPT

Page 1: As 400

ELE 1736 - Arquitetura de ComputadoresProf. Vinícius

Componentes do grupo:

· Leandro M. G. Ferreira 9216235-7· Leonardo Pacheco 9114317-2· Luiz Otávio C. Ribeiro 9215266-8

Page 2: As 400

Application System/400 2

Arquitetura do IBM AS/400

Introdução

História

O AS/400 (AS de Application System) é a arquitetura empregada pela IBM para sistemas de tamanho médio, onde não é possível se usar PC’s e também não é viável a utilização de mainframes. O AS/400 foi criado em 20 de Junho de 1988 para substituir a sua família System/3x. Na figura abaixo, vemos a história do AS/400.

Como seus predecessores, o AS/400 é um sistema multiusuário. Ao desenvolver o AS/400, foram utilizadas as características de facilidade de operação do System/36, combinadas com o a arquitetura avançada e a produtividade do System/38 e novas funções. Por isto, muitos dos programas desenvolvidos para o System/36 e o System/38 podem ser migrados e usados nos sistemas AS/400 apenas aplicando as ferramentas de migração disponíveis.

Nos últimos anos, a IBM tem transformado o AS/400 de um sistema “centrado em servidor” para um sistema “centrado em aplicações”. No primeiro, têm-se terminais burros conectados ao servidor, que tem todos os dados, programas, e o poder de execução deles. Já no segundo, os dados e os programas podem estar em sistemas separados, e a aplicação (que é

Page 3: As 400

Application System/400 3

composta dos dados e do programa) pode executar em outro sistema, sendo estes sistemas de vários fabricantes diferentes. Por este motivo, hoje o AS/400 é muito utilizado como servidor de bancos de dados, utilizando a filosofia cliente-servidor. Uma outra vantagem para utilizar o AS/400 como servidor de bancos de dados é que ele já vem com uma versão do poderoso banco de dados relacional DB/2 embutido em seu sistema operacional. O AS/400 também é muito utilizado em redes de PC’s, uma vez que existem componentes para ligá-lo a praticamente qualquer outro sistema, de PC’s a estações RISC com UNIX.

Família

Quatro modelos constituem a família do AS/400: o “Portable One”, o 9402, o 9404 e o 9406. Cada modelo destes pode estar subdivido em submodelos. Com estes modelos, temos desde computadores que são do tamanho de uma pasta (“Portable One”) até minicomputadores. O poder destes modelos varia: no “Portable One” podemos ter de 1 a 3 usuários, de 1 a 2 Gb de disco, de 8 a 16 Mb de memória RAM e um máximo de 17.100 transações por hora. Já no 9406 modelo 320/2052 (o mais poderoso), podemos ter mais de 2000 usuários, até 260 Gb de disco, até 1536 Mb de RAM e quase 500.000 transações por hora. Leia-se como número de transações por hora, o número de pedidos por atividade de usuários.

À esquerda podemos ver algumas fotos de modelos AS/400. Temos desde o “Portable One” (encima à direita) até o 9402 modelo 200 (embaixo à esquerda). Temos também várias opções de expansão, que vão de simples terminais, modems e impressoras até processadores criptográficos, dispositivos de rede sem fio e expansões de disco (como no sistema 9406 mostrado na foto abaixo à direita).

Os modelos AS/400 mais avançados tem várias características de segurança, como replicação de dados em hardware (RAID-5), reparo concorrente (onde é possível o conserto de unidades de disco e até de fontes de alimentação com o sistema em uso), a opção de um processador criptográfico, e outras (todas dentro do sistema).

Page 4: As 400

Application System/400 4

Hardware (Nível 0)

Organização

O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis, entretanto um único sistema operacional suporta toda a linha de produtos. Isto significa que programas podem ser rodados em qualquer sistema AS/400 e movidos entre sistemas sem qualquer modificação.

Interface de Máquina (IM)

A interface de máquina é suportada pela camada superior do código interno, que contém duas classes de suporte:

· funções do sistema operacional, como gerenciamento de armazenamento, gerenciamento de dados e suporte a entrada e saída (E/S);

· o tradutor, que converte instrusões da IM para instruções do nível da interface interna de microprogramação (IIMP). A tradução feita pelo tradutor é análoga a um compilador otimizador. Instruções individuais de IM são convertidas em uma ou mais instruções de IIMP ou em chamadas a rotinas internas, que são conjuntos de instruções IIMP que realizam funções requisitadas. Assim como seu sistema operacional, o conjunto de instruções IM do AS/400 é orientada a objetos.

A máquina é composta de 3 camadas, com uma interface de máquina de alto nível separando o programador da implementação detalhada.

Interface de Máquinade Alto Nível

Código Interno

Microprogramação

Código Interno

Palavras de Controle

Hardware

Page 5: As 400

Application System/400 5

Interface Interna de Microprogramação (IIMP)

A IIMP é suportada por uma segunda camada de código interno que interpreta as instruções IIMP. A IIMP também consiste em dois tipos de suporte que distribui algumas das funções entre si.

· suporte às funções do sistema operacional, como gerenciamento de armazenamento, segurança, integridade do banco de dados, envio de tarefas, fila de tarefas e mensagens e processamento de E/S. Estas funções estão escritas em código interno vertical (CIV).

· funções computação, desvio, e instruções IIMP estendidas, que são interpretadas pelo nível inferior de microprogramação, chamado código interno horizontal (CIH). A interpretação é suportada por rotinas CIH consistindo de uma ou mais instruções CIH, chamadas palavras de controle. O processador do sistema diretamente decodifica e processa as palavras de controle do CIH. As instruções IIMP são um conjunto de instruções de registrador, armazenamento e desvio.

Hardware do Sistema

O hardware do sistema inclui o processador e armazenamento principal, dispositivos de entrada e saída e controladores, e os racks, cabos e conectores que compõe o sistema AS/400. O projeto do hardware permite que componentes do sistema sejam espalhados pela organização de forma a atender os requisitos do ambiente de trabalho. Componentes do sistema, como racks adicionais, controladores de E/S, dispositivos de armazenamento e estações de trabalho, podem ser adicionados incrementalmente sem reconfigurar todo o sistema.

Arquitetura do Barramento de E/S do Sistema

O sistema AS/400 é projetado em torno da arquitetura do barramento de E/S, que conecta os processadores de E/S ao processador do sistema. Um processador de E/S se comunica com o processador do sistema e controla os dispositivos ligados a ele. Cada processador de E/S deve ter o devido código interno carregado para se comunicar com o programa OS/400.

Controle do Barramento

O barramento de E/S conecta o processador de serviço, o processador do sistema e os processadores de E/S. Cada barramento tem um controlador de barramento, que controla a arbitragem e a detecção e correção de erros no barramento.

Page 6: As 400

Application System/400 6

OS/400

Código Interno

Processador doSistema

BCU BCUBCU

Tape Disk

BCU

Microprocessador

Clock Dados Vitais

Processador deServiço

Barramento de E/S 1

Barramento de E/S N

ProcessadorControlador de

E/S

ProcessadorControlador de

E/S

Workstation Workstation

Workstation

ProcessadorControlador de

E/S

Communications Port

A arquitetura de entrada e saída do barramento provê capacidade de expansão futura para o sistema. Controladores e dispositivos adicionais de E/S são totalmente gerenciados pelo processador do sistema para o usuário final. Quando um novo controlador de E/S é adicionado, ele indica sua presença quando o sistema é iniciado, passando informações vitais de auto-identificação. Se o controlador de E/S tem um adaptador ou dispositivo de E/S associado a ele, sua presença é também indicada. Esta informação é passada ao sistema operacional, que automaticamente inclui os dados vitais do novo equipamento à tabela de recursos do sistema, durante a configuração automática. A arquitetura do barramento de E/S permite ao usuário adicionar novos dispositivos à processadores de E/S existentes sem interromper a operação do sistema.

Múltiplos Caminhos

A arquitetura de múltiplos caminhos de processador provê capacidade de expansão permitindo a adição de múltiplos processadores. Processadores adicionais são transparentes ao usuário porque eles gerenciam separadamente a carga dividindo o trabalho igualmente entre os múltiplos processadores. Se um processador falha durante a inicialização do sistema, o sistema é automaticamente configurado sem o processador em falha.

Page 7: As 400

Application System/400 7

O projeto flexível da arquitetura do barramento de E/S, junto com o projeto inovativo e distribuição de função entre o processador de E/S e as instruções programadas, e o processador do sistema, dão ao usuário uma melhor performance ao mesmo tempo que permite a operação simultânea de muitos dispositivos.

Arquitetura do Sistema

A arquitetura do AS/400 distribui funções entre os elementos do sistema, incluindo como o sistema organiza o trabalho e informações para facilitar as operações.

Comandos doOS/400

Compiladorese Utiilitários

Aplicações

OS/400

Conjunto de Instruções daInterface de Máquina de Alto Nível

Código Interno

Hardware

Programas

Máquina deAlto Nível

Com a interface de máquina proporcionada pelo código interno, o AS/400 pode se adaptar facilmente a novas tecnologias de hardware e de software, sem tornar obsoletas as aplicações existentes.

Orientação a Objeto

A arquitetura baseada em objetos da máquina é fundamental para o projeto global de funções proporcionadas pelo AS/400. Cada tipo de objeto no AS/400 tem um propósito único dentro do sistema. Cada um tem um conjunto de comandos associado, com o qual processa aquele tipo de objeto. A arquitetura orientada a objetos proporciona um ambiente comum para trabalho e tratamento de informação eficientes no sistema.

Usando esta orientação a objetos, as instruções de interface de máquina podem tratar tudo de uma forma consistente. Cada objeto é reconhecido pelo sistema por seu tipo, que determina como ele pode ser usado. Componentes complexos do sistema combinam diversos tipos de objetos primários para criar objetos compostos. (Por exemplo, um comando complexo pode chamar um programa consistindo de diversos comandos simples.) Estes objetos compostos são construções geralmente invisíveis ao usuário; eles são mais fáceis de entender e controlar porque a complexidade é tratada pelo sistema. Por exemplo, um arquivo físico é uma construção do usuário que é formada por um espaço de dados e, opcionalmente, um objeto índice de espaço de dados que permite acesso lógico aos registros armazenados no espaço de dados. Combinando objetos primários a integridade do sistema pode ser mantida, já que são utilizadas funções já testadas, e a performance do sistema pode ser melhorada pelo ajuste cuidadoso das funções mais utilizadas.

Page 8: As 400

Application System/400 8

Alguns objetos são embarcados com o sistema ou criados pelo OS/400. Estes incluem objetos como a descrição do subsistema para trabalho interativo e comunicações, e descrições de dispositivos criadas pelo sistema durante a configuração automática dos dispositivos detectados. O sistema usa os objetos para acompanhar operações e gerenciar o trabalho submetido diretamente pelo usuário ou por aplicações. O operador do sistema ou usuário pode gerenciar estes objetos através de programas e da linguagem de comandos (LC).

Os usuários também podem criar objetos para auxiliar no gerenciamento de seu trabalho no sistema. Estes incluem bibliotecas para organizar arquivos, programas para manipular estes arquivos, e até verificadores de ortografia personalizados. As funções de gerenciamento de objetos proporcionadas pelo sistema ajudam o usuário a gerenciar estes objetos.

Armazenamento

O sistema usa o armazenamento como espaço de trabalho para todas as tarefas requisitadas pelo usuário ou por programas. O gerenciamento do armazenamento é realizado pelo sistema. Conforme as requisições são feitas, os objetos são movidos para o armazenamento principal.

Armazenamento de Nível Único

O AS/400 é um sistema de armazenamento compartilhado no qual todas as porções do armazenamento principal e auxiliar são endereçados como se estivessem em uma única área (ou nível). O sistema usa o nome do objeto para determinar onde ele existe no sistema. Isto quer dizer que o usuário pode identificar objetos pelo nome, ao invés de pelo local de armazenamento. Como as operações não podem ser efetuadas em um objeto que não esteja no armazenamento principal, o sistema move parte ou todo o objeto para o armazenamento principal conforme necessário, e move de volta para o armazenamento auxiliar quando ele não é mais necessário. Esta transferência é controlada pelo sistema e não requer controle pelo usuário ou programador.

Áreas de Armazenamento

Sendo o AS/400 um sistema capaz de multiprocessamento, o armazenamento principal deve estar sempre disponível para processos que estejam rodando simultaneamente no sistema. Para reduzir a interferência entre processos que estejam competindo por armazenamento principal e prevenir que um processo muito grande use muito do espaço de armazenamento principal, o armazenamento principal pode ser subdividido para uso por diferentes grupos de processos. O armazenamento principal é dividido em áreas de armazenamento, que são segmentos lógicos do armazenamento principal. Quando o sistema recupera um objeto do armazenamento auxiliar para um processo, o objeto (ou uma parte do objeto que seja necessária) é movido para a área de armazenamento no armazenamento principal que foi atribuída ao processo que está executando.

Armazenamento Principal: Uma área de armazenamento provê uma quantidade restrita de armazenamento principal para processos que executem dentro daquela área de armazenamento. Uma área de armazenamento não é necessariamente uma partição contígua de armazenamento principal. Ao contrário, ela é composta por blocos de 1024 bytes que estão disponíveis para

Page 9: As 400

Application System/400 9

processos executando nela. Estes blocos podem estar em qualquer lugar no armazenamento principal.O AS/400 reserva algum armazenamento principal para os objetos de controle do sistema que estão sempre presentes no sistema. Estes objetos não são paginados durante a operação do sistema. Este armazenamento é alocado para o sistema quando este é iniciado. Outras funções do sistema, não diretamente relacionadas com o controle do sistema, são paginados e usam uma área de armazenamento que é atribuída ao próprio sistema (área da máquina). O OS/400 defina uma outra área de armazenamento que automaticamente inclui todo o armazenamento principal que não é atribuído a qualquer outra área de armazenamento.

Objetos Compartilhados: O compartilhamento de objetos por usuários individuais usando simultaneamente o sistema proporciona uso eficiente do armazenamento principal. Quando um objeto (como um programa ou arquivo de banco de dados) é usado ao mesmo tempo por mais de um usuário do sistema, apenas uma cópia do objeto é colocada no armazenamento principal, mesmo que diferentes usuário executem diferentes processos em áreas de armazenamento diferentes. Qualquer número de usuários pode estar usando o objeto. O sistema sincroniza requisições de usuários conforme necessário. Este compartilhamento de objetos reduz a quantidade de paginação feita pelo sistema e reduz a necessidade de grandes áreas de armazenamento quando os usuários estão compartilhando um objeto.

Gerenciamento de Armazenamento: A maior parte das funções de gerenciamento de armazenamento são executadas e controladas pelo sistema operacional. O OS/400 proporciona os comandos necessários para o programador determinar as áreas de armazenamento e atribuir processos a elas, para garantir que processos executem eficientemente.

Interface de Máquina de Alto Nível (IMAN)

Acesso às funções do sistema é proporcionada por uma poderosa e consistente interface de máquina de alto nível. O nível da linguagem de máquina é mais próximo das funções que um programador ou outro usuário normalmente executa. Por exemplo, instruções de máquina podem ser usadas para recuperar um registro de banco de dados, executar diversas tarefas de programação, tratar gerenciamento de armazenamento, e até pesquisar um arquivo de banco de dados. Em sistemas tradicionais, estas funções seriam tratadas por diversos programas. Uma máquina de alto nível melhora a integridade e confiabilidade do sistema. Um programador escreve menos instruções para completar uma tarefa, e quanto menos instruções, menor o número de erros em potencial. Além disso, devido à ampla gama de funções disponíveis na interface, uma máquina de alto nível reduz o custo de desenvolvimento para sistemas operacionais, linguagens e utilitários. As funções disponíveis incluem:

Funções de Linguagem de Programação: Aqui estão incluídas conversões de tipos, alocação de armazenamento, gerenciamento de procedimentos e primitivas de programação embutidas.

Depuração de Programas Simbólicos: O programador pode incorporar pontos de parada no código-fonte. O programa pode ser executado em modo de depuração, parando nos pontos de parada para permitir ao programador testar os valores de variáveis e campos. Esta operação pode

Page 10: As 400

Application System/400 10

ser feita independentemente de outros usuários no sistema, mesmo aqueles que possam estar utilizando os programas ou arquivos ao mesmo tempo.

Funções de Supervisão ou Controle: Estas permitem que várias linguagens de alto nível sejam utilizadas para produzir uma aplicação. Por exemplo, as rotinas de entrada de dados podem ser escritas em COBOL e as de manipulação de dados em Pascal. O fluxo entre o controle pelas aplicações e o controle pelas funções do sistema poderia ser gerenciado pela linguagem de controle do OS/400.

Funções de Gerenciamento de Dados: As funções usadas pela maior parte dos programas para acessar e manipular dados incluem declarar, apagar, recuperar, agrupar e corrigir, assim como suporte a dicionário de dados. O dicionário de dados, que pode ser acessado por todos os programas, contem informações sobre os dados como significado, relação com outros dados, origem, uso e formato.

Page 11: As 400

Application System/400 11

Linguagem de Máquina (Nível 1)

Apresentação

O AS/400 foi projetado para ser uma máquina de alto nível, de fácil uso e programação. Foi projetado também para ser independente de tecnologia, permitindo o porte de seu sistema operacional e aplicativos existentes para qualquer máquina da família, independentemente do processador e de mudanças na arquitetura de hardware.

Este objetivo foi alcançado através de uma interface de máquina de alto nível. Esta interface esconde todo o hardware que há por trás dela e disponibiliza pros usuários e programadores uma “máquina virtual” com instruções de máquina de alto nível. Estas instruções são o nível mais baixo que se consegue atingir em programação no AS/400, caracterizando-se como sua “linguagem de máquina”.

Não há, portanto, uma linguagem de máquina no AS/400 como a que encontramos em outras plataformas. As instruções da máquina de alto nível são de nível elevadíssimo, orientadas a objeto, com instruções poderosas que somente podem ser aplicadas aos objetos corretos (fortemente tipada).

Outra consequência do projeto peculiar do AS/400 é a dificuldade de se obter documentação sobre sua “linguagem de máquina”, já que dificilmente se programa em nível tão baixo nesta plataforma. Nosso grupo conseguiu um guia de referência com todas as instruções da máquina de alto nível, e o principal da informação obtida é exposto nos próximos tópicos, mas a informação não era detalhada e alguns tópicos ficaram obscuros.

Tipos de Operandos

Cada instrução precisa de zero a quatro operandos. Cada operando pode consistir de um ou mais campos que contém um operando nulo, um valor imediato de dado ou uma referência a um objeto ODT. O tamanho do operando depende da versão do gabarito de programa. Se o número da versão é 0, o tamanho do cammpo de operando é 2 bytes. Se o número de versão é 1, o tamanho do campo de operando é 3 bytes.

Operandos Nulos

Certas instruções permitem que certos operandos sejam nulos. Em geral, um operando nulo significa que alguma função opcional da instrução não deve ser realizada, ou que uma ação default deve ser executada pela instrução.

Operandos Imediatos

O valor deste tipo de operando está codificado no operando de instrução. Operando imediatos podem assumir os seguintes valores:

· binário com sinal – representando um valor binário de -4096 a 4095.· binário sem sinal – representando um valor binário de 0 a 8191.· byte – representando um único byte, com valor de 0x00 a 0xFF.

Page 12: As 400

Application System/400 12

· número de instrução absoluto – representando um número de instrução na faixa de 1 a 8191.· número de instrução relativo – representando um deslocamento de uma instrução em relação a instrução em que operando aparece. Este valor de operando pode identificar um deslocamento de instrução de -4096 a 4095.

Referências a Objetos ODT

Este tipo de operando contem uma referencia (possivelmente qualificada) para um objeto na ODT. Operandos que sejam referências a objetos ODT podem ser operandos simples ou operandos compostos.

Operando Simples

O valor codificado no operando referência um objeto específico definido na ODT. Operandos simples consistem em um único operando de 2 bytes.

Operandos Compostos

Um operando composto consiste em um operando primário (2 bytes) e uma série de uma a três operandos secundários. O operando primário é uma referência ODT para o objeto base, enquanto que os operandos secundários servem como qualificadores para o objeto base.

Um operando composto pode ter os seguintes usos:· Referência a subscript

Um elemento individual de um array de objetos de dados, um array de ponteiros, ou uma lista de definição de instruções podem ser referênciados por um subscript em um operando composto. O operando consiste em uma referência primária ao array e um operando secundário para especificar o valor de índice para um elemento do array.

· Referência a substringUma porção de um objeto de dados caracter pode ser referenciado como um operando de instrução através de um operando composto de substring. O operando consiste de um operando primário para referenciar o objeto string base e referências secundárias para especificar o valor de um índice (posição) e o valor de um comprimento pra substring.

· Referências de base explícitasUm operando de instrução pode especificar uma sobrecarga explícita para o ponteiro de base para um objeto de dados com base ou um objeto de endereçamento com base. O operando consiste em um operando primário referenciando o objeto com base e um operando secundário referenciando o ponteiro no qual basear o objeto para este operando. O deslocamento implícito na definição na ODT do operando primário e a endereçabilidade contida no ponteiro explícito são combinados para determinar um endereço para o operando.

A base explícita pode ser combinada com o operador composto de subscript ou de substring para determinar um operando composto de subscript ou de substring com base.

Page 13: As 400

Application System/400 13

Grupos de Instruções

Funções Básicas

· Instruções de Computação e Desvio· Instruções de Dia, Hora e Timestamp· Instruções de Endereçamento de Ponteiros e Resolução de Nomes· Instruções de Endereçamento de Espaço· Instruções de Gerenciamento de Espaço· Instruções de Gerenciamento de Heap· Instruções de Gerenciamento de Programas· Instruções de Execução de Programas· Instruções de Controle de Criação de Programas· Instruções de Índice Independente· Instruções de Gerenciamento de Fila· Instruções de Gerenciamento de Trancamento de Objetos· Instruções de Gerenciamento de Exceções· Instruções de Gerenciamento de Espaço de Fila

Funções Estendidas

· Instruções de Gerenciamento de Contexto· Instruções de Gerenciamento de Autorização· Instruções de Gerenciamento de Processos· Instruções de Gerenciamento de Recursos· Instruções de Gerenciamento de Espaço de Dump· Instruções de Observação de Máquina· Instruções de Funções de Suporte de Interface de Máquina

Interface de Suporte à Instruções

· Especificação de Exceções

Page 14: As 400

Application System/400 14

Sistema Operacional

Descrição

O AS/400 possui um sistema operacional proprietário, denominado Operational System/400 (geralmente chamado de OS/400). O OS/400 possui funções integradas que possuem multiprogramação, sistemas interativos e batch. Isto inclui gerenciamento de banco de dados (inclui o DB/2), manutenção de access paths, codificação para read-only, gerenciamento de workstation, control language, dados descritos externamente, programa de desenvolvimento on-line, gerenciamento de tarefas, segurança, auxílio na recuperação de dados, mensagens, comunicação de dados remota, funções distribuídas de escritório, etc.

Por ser um sistema proprietário, o OS/400 praticamente complementa a LIC (linguagem de máquina do AS/400). Com isto, a linguagem de máquina fica invisível ao programador, que só tem acesso à API do OS/400. Por este motivo, a LIC não é difundida pela IBM. Isto diferencia o AS/400 de outros sistemas tradicionais, onde o programador trabalha na linguagem de máquina do sistema.

Apesar do OS/400 ser um sistema operacional simples de se usar, ele tem muitas funções e características complexas, entre elas:

· suporte à banco de dados: existe um DB/2 embutido na arquitetura do OS/400.· suporte à comunicações: as facilidades embutidas no OS/400 permitem a um AS/400 bem equipado se comunicar com estações de trabalho remotas (em LAN’s ou WAN’s), com PC’s, System/390, System/3x, Macintosh e outros AS/400. Em todos estes casos, existe uma grande variedade de protocolos que podem ser usados. Existem também algumas extensões do OS/400, que permitem a participação em ambientes de rede OSI, TCP/IP, e outras.· interoperabilidade baseada em padrões abertos: suporte a padrões como o SQL ANSI, o Distributed Relational Database Architecture (DRDA) da IBM, o Open Database Connection (ODBC) da Microsoft, e a Data Access Language, da Apple.· portabilidade com UNIX/C: o AS/400 suporta 70 por cento da POSIX 1003.1 API, junto com soquetes BSD, TCP/IP e UNIX Spec 1170. Isto e mais algumas outras características fazem com que quase todas as aplicações UNIX/AIX sejam portáveis para o AS/400.· compatibilidade com System/3x: quase todos os programas escritos para o System/36 e o System/38 podem ser migrados para o AS/400 com pouca ou até nenhuma modificação.. Isto é conseguido pois o OS/400 tem múltiplas API’s: a nativa AS/400, a API System/38 e a API System/36. Como o AS/400 é baseado no System/38, os programas deste podem ser rodados quase sem perda de performance no AS/400. Já no caso do System/36, há uma redução de performance.

Page 15: As 400

Application System/400 15

Estrutura

Na memória do AS/400, são armazenados objetos, que podem ser de vários tipos diferentes, entre eles classes, comandos, dispositivos, arquivos e programas. Cada objeto tem dois componentes: descrição e parte funcional. Na descrição, temos atributos como nome, biblioteca, tipo, atributos, datas de alteração, tamanho, etc. Na parte funcional, temos os membros de arquivos físicos (registros de dados), os membros de arquivos lógicos (access paths) e o código do programa.

Existem também bibliotecas, que são meios de organizar os objetos. Os objetos não podem ter um mesmo nome e tipo em uma biblioteca, eles devem ser únicos. Resumindo, as bibliotecas são espécies de diretórios. Uma biblioteca contém o nome, o tipo e o enderço do objeto (que é gerenciado pelo sistema e transparente para o usuário). Vale notar que as próprias bibliotecas são objetos, que residem numa biblioteca especial denominada QSYS. Além da QSYS, existe uma outra biblioteca do sistema, denominada QGPL, que é uma biblioteca de uso genérico, que contém filas de spool, arquivos de programas fonte, etc. Estas bibliotecas não podem ser deletadas ou renomeadas e pertencem ao administrador do sistema. Já no caso de bibliotecas de usuário, existem dois tipos: de produção (default) e de teste (para ambiente de testes).

O OS/400 possui vários objetos que trabalham juntos para processar informações de jobs, como mostrado na figura abaixo.

SYSTEM VALUES

NETWORKATTRIBUTES

OS/400

SUBSISTEMA

JOB

Page 16: As 400

Application System/400 16

Um subsistema é um ambiente especializado para tratamento de funções. Eles podem ser desenhados para tratar, de modo eficiente, tipos específicos de tarefas, podendo existir vários em funcionamento ao mesmo tempo. Os jobs devem ser executados em subsistemas.

Pools de Memória são áreas lógicas da memória principal onde os jobs são executados. Eles podem ser de dois tipos: shared ou private, onde no primeiro, vários subsistemas podem ter acesso, enquanto no segundo apenas um subsistema pode acessá-lo. Um ponto importante é que, no caso do OS/400, a paginação é restrita à pool. Existem 3 pools principais. São eles:

· *MACHINE: pool de memória utilizada pelas rotinas dp microcódigo e funções do OS/400. Nenhum job de usuário é executado neste pool. É sempre o pool #1.· *BASE: contém toda a memória principal que não está sendo alocada. Qualquer subsistema pode utilizá-lo. É sempre o pool #2.· *INTERACT: utilizado por jobs interativos.Quando o tamanho de um pool qualquer é aumentado, a memória adicional é tirada de

*BASE. Quando é diminuído, esta memória retorna a *BASE.

Jobs são as unidades básicas de processamento no OS/400 (equivalente ao que costumamos chamar de processos). Existem vários tipos de jobs, separados entre jobs do sistema e do usuário. Entre os de usuário podemos ter, por exemplo, jobs interativos, batch, de comunicação, etc. Os jobs batch utilizam um subsistema já definido no OS/400, que é o QBATCH.

Existem comandos que permitem o redirecionamento de jobs, podendo ser trocado seu pool, sua classe e até seu subsistema.

SBSD

WORKENTRIES

ROUTINGENTRIES

POOLS

JOBD

CLASS

PROGRAMAS

Page 17: As 400

Application System/400 17

Gerenciamento de memória

O OS/400 trata todos os pedidos de I/O com uma simples instrução de máquina: Performing Page Request (PPR). O número de páginas transmitidas são determinadas pela função de request. Sempre que o sistema reconhece que um arquivo de dados está sendo processado na ordem de chegada, as tarefas de I/O irão automaticamente preencher um segundo buffer de registro. Este processo é conhecido como um Adaptative Look Ahead Bring.

Na paginação, os programas são trazidos para a memória principal em segmentos de 4Kb, onde o movimento de um segmento para outro causa um page fault.

Page 18: As 400

Application System/400 18

Linguagens de Programação e Banco de Dados

Como o próprio nome sugere ( Application System/400 ), o AS/400 é um sistema voltado para o desenvolvimento de aplicativos, que visa, através de suas funcionalidades como a arquitetura baseada em objetos do sistema OS/400, o banco de dados próprio do sistema e o armazenamento em único nível de memória, aumentar a produtividade do programador de aplicativos.

O sistema AS/400 provê uma extensa variedade de ferramentas e linguagens de programação para auxiliar o desenvolvimento de aplicativos. Com o AS/400, o programador pode escolher entre as seguintes linguagens de programação e usar os comandos de CL para chamar funções de sistemas e ligar os vários programas:

AS/400 BASICAS/400 PascalAS/400 PL/IC/400COBOL/400RM/COBOL-85FORTRAN/400Procedures Language 400/REXX RPG/400

Programas CL: A CL (Control Language) é uma linguagem de controle que atua como interface entre o usuário e o sistema operacional OS/400. Um programa em CL é constituido por uma série de comandos CL. Estes podem criar, abrir, copiar ou apagar arquivos, criar libraries, criar arquivos de banco de dados ou outros objetos e muitas outras funções. Estes comandos são compilados em um programa que pode ser chamado sempre que as funções por ele definidas forem necessárias. As vantagens do uso de programas CL incluem:

· O usuário que roda o programa não precisa digitar os comandos CL individualmente.· Usar programas CL é mais rápido que digitar e rodar os comandos individualmente, porque os comandos estão compilados e armazenados de tal forma que podem ser executados imediatamente.· Programas CL podem executar diversas funções dependendo dos parâmetros utilizados.· Alguns comandos CL não podem ser executados individualmente, precisando fazer parte de um programa CL.· Programas CL podem ser testados e “debugados” como programas de outras linguagens de alto nível.

Page 19: As 400

Application System/400 19

Programas CL podem ser usados para diversos tipos de aplicativos. Por exemplo, eles podem ser utilizados para:

· Prover uma interface para o usuário de um aplicativo interativo. Isto permite ao usuário requisitar funções ao aplicativo sem entender os comandos usados pelo programa.· Prover procedimentos pré-definidos para funções constantemente utilizadas, como procedimentos de inicialização de subsistemas, cópias de backup de arquivos e outras. Isto reduz o número de comandos usados frequentemente e garante a consistência dessas funções.

Além dos próprios comandos CL, os programas CL utilizam funções que não estão disponíveis quando os comandos são executados individualmente. Estas incluem:

· Funções de controle do tipo if then else.· Operações sobre dados· Uso de variáveis e parâmetros para passagem de informações entre comandos em um programa e entre programas

Programas em CL provêm a flexibilidade necessária para possibilitar ao usuário escolher as operações que ele deseja executar e rodar os programas necessários para isto.

Procedures Language 400/REXX:

REXX é uma implementação para o AS/400 da linguagem procedural SAA (Systems Application Architecture),que é um ambiente no qual programas são desenvolvidos de modo a executar consistentemente na maioria dos sistemas computacionais da IBM. Os ambientes SAA são o MVS, VM (CMS), o OS/400 e o OS/2. REXX oferece funções poderosas de manipulação de strings, extensa capacidade matemática e a possibilidade de executar comandos em ambientes fora do REXX.. Isto possibilita que comandos CL sejam executados de dentro do REXX. Ela é uma linguagem interpretada e não compilada. Como resultado, programas REXX podem ser escritos,testados e colocados em produção mais rapidamente que o normal em linguagens compiladas. Entretanto, programas REXX podem não rodar tão rápido quanto um equivalente compilado.

Banco de Dados

O AS/400 possui um banco de dados DB2/400 integrado ao sistema operacional. O que diferencia o sistema AS/400 dos sistemas tradicionais neste aspecto é o fato do banco de dados estar integrado ao sistema operacional OS/400 e ao nível de linguagem de máquina (Licensed Internal Code). Não há necessidade de se instalar um gerenciador de banco de dados separado. O banco de dados integrado possui vantagens de produtividade e processamento automático em relação aos sistemas tradicionais. Além disto,o AS/400 disponibiliza funções de DRDA ( Distributed Relational Database Architecture) permitindo acesso ao banco de dados distribuído.

Page 20: As 400

Application System/400 20

Bibliografia:

Manuais da IBM

· AS/400 System Concepts - Version 2· AS/400 System Introduction - Version 2· AS/400 Machine Interface Functional Reference· AS/400 Languages: Integrated Language Environment - Concepts - Version 2· AS/400 Application Development By Examples - Version 2

Livros

· AS/400 Architecture & ApplicationJill T. Lawrence - QED Publishing Group

· IBM AS/400 - A Business PerspectiveJim Hoskins - John Wiley & Sons

Apostilas do Centro Educacional da IBM Brasil

· AS01 - Conceitos e Recursos· AS23 - OS/400 Estrutura e Controles Básicos· AS20 - AS/400 Control Language

Outros

· Foram consultadas algumas páginas na Internet no site da IBM em Rochester, MN· Foi consultada uma revenda AS/400 no Rio de Janeiro