☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

Mostrar mensagens com a etiqueta arquitetura IBM Z. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta arquitetura IBM Z. Mostrar todas as mensagens

domingo, 8 de fevereiro de 2026

🔥 SEU PROGRAMA NÃO “ENXERGA” MEMÓRIA… ELE NEGOCIA COM O z/OS 😳 O guia proibido da Addressability que separa dev COBOL de engenheiro de sistema

 

Bellacosa Mainframe em uma viagem ao Addressability do z/os

🔥 SEU PROGRAMA NÃO “ENXERGA” MEMÓRIA… ELE NEGOCIA COM O z/OS 😳

O guia proibido da Addressability que separa dev COBOL de engenheiro de sistema

Você acha que seu COBOL acessa memória direto?

👉 Não acessa.

No mainframe, nada é direto.
Tudo passa por:

  • tradução
  • autorização
  • tabelas
  • registradores
  • controle do sistema

Se você não entende isso…
👉 você nunca vai dominar dump, performance ou abend 💀


🧠 O QUE É ADDRESSABILITY (SEM ENROLAR)

Addressability é:

a capacidade de um programa acessar dados — onde quer que eles estejam


💡 Tradução Bellacosa

“Addressability é o GPS + chave + autorização da memória.”


⚙️ 1. DISPATCHING WORK — ONDE TUDO COMEÇA

Quando sua task roda:

  • dispatcher escolhe
  • CPU assume
  • CR1 é carregado

👉 CR1 aponta para o address space ativo


🔥 Insight

CR1 define “qual mundo você está enxergando”


🌍 2. VIRTUAL STORAGE — O UNIVERSO NÃO É REAL

Cada usuário tem:

👉 seu próprio universo de memória


🔹 Características:

  • até 16 exabytes 😳
  • isolado
  • protegido

💡 História

MVS = Multiple Virtual Storage

👉 desde os anos 70 já fazia isso


🧨 Easter Egg

Você acha que está acessando memória real…

👉 está acessando endereço virtual traduzido


🧩 3. ADDRESS SPACE — SUA “BOLHA”

Tudo roda dentro de:

👉 um address space


🔹 Tipos:

  • Batch
  • TSO
  • Started Task

💡 Insight

cada programa vive isolado


🔗 4. CROSS MEMORY — QUEBRANDO A BOLHA

Mas… o sistema permite sair dela.


🔹 O que é?

Acessar outro address space


🔥 Exemplo real

COBOL → chama serviço → DB2 → retorna

👉 são address spaces diferentes


💡 Estados:

  • Home → origem
  • Primary → execução
  • Secondary → dados

🧨 Curiosidade

Se são diferentes:

👉 você está em cross-memory mode


🚀 5. PROGRAM CALL (PC) — O TELEPORTE DO z/OS

🔹 O que faz?

  • troca de address space
  • mantém controle
  • permite retorno

🔥 Fluxo real

User → LLA → VLF → módulo → volta

👉 tudo invisível


💡 Tradução

PC é um “portal controlado”


🧱 6. LINKAGE STACK — A MEMÓRIA DA EXECUÇÃO

Sempre que um programa chama outro:

👉 estado é salvo automaticamente


🔹 Salva:

  • registradores
  • PSW
  • access registers

💡 Vantagens

  • menos erro
  • suporte a reentrância
  • debug mais limpo

🧨 Curiosidade

Substitui os antigos save areas


⚙️ 7. ACCESS REGISTERS — O PODER ESCONDIDO

🔹 O que são?

  • 16 registradores
  • permitem acessar outros espaços

🔥 Funcionamento

AR → qual espaço
GR → qual dado

💡 Tradução Bellacosa

AR = endereço do universo
GR = endereço dentro do universo


🧠 8. ACCESS LIST / ALET / ALE — CONTROLE DE ACESSO

Nada é livre.


🔹 Processo:

  1. obter S-token
  2. ALESERV
  3. criar ALE
  4. gerar ALET
  5. carregar AR

💡 Insight

acesso exige autorização formal


🧨 Curiosidade

Sem isso:

👉 proteção de memória bloqueia acesso


⚡ 9. ADDRESSABILITY MODES

🔹 AMODE

  • 24-bit
  • 31-bit
  • 64-bit

🔹 RMODE

  • onde o programa carrega

💡 História

Compatibilidade com décadas de software


🔄 10. PASSO A PASSO COMPLETO

Task é despachada

CR1 define address space

Programa executa

Se precisar:
→ PC (outro space)
→ AR (outro data space)

Linkage stack salva estado

Retorno

💀 ONDE ISSO APARECE NA VIDA REAL?

🔥 Dump (IPCS)

Você vê:

  • PSW
  • registers
  • ARs
  • linkage stack

🔥 Abend clássico

👉 S0C4 = erro de addressability


🔥 Performance

  • cross memory custa
  • LPA melhora

🧨 CURIOSIDADES (NÍVEL JEDI)

🤯 1. Um programa pode acessar vários universos ao mesmo tempo


🔥 2. Memória é totalmente virtual


💀 3. Um erro de ponteiro quebra tudo (S0C4)


🧠 4. O sistema controla TUDO via tabelas


🎯 RESUMO FINAL

✔ Addressability = acesso controlado

✔ Address space = isolamento

✔ Cross memory = comunicação

✔ PC = chamada entre espaços

✔ AR = acesso avançado

✔ Linkage stack = estado


💥 FRASE FINAL

“No mainframe, memória não é um lugar… é um privilégio concedido pelo sistema.”

 

sexta-feira, 6 de fevereiro de 2026

🔥 SE O z/OS NÃO SOBE… NADA EXISTE 💀O guia proibido do IPL que todo dev COBOL deveria entender (mas quase ninguém entende)

 

Bellacosa Mainframe fala sobre a iniacialização do ambiente operacional

🔥 SE O z/OS NÃO SOBE… NADA EXISTE 💀

O guia proibido do IPL que todo dev COBOL deveria entender (mas quase ninguém entende)

Você escreve COBOL… compila… roda…
👉 e acha que o sistema “tá lá pronto”.

Errado.

Antes do seu programa existir, acontece um ritual quase místico chamado:

IPL — Initial Program Load

E aqui vai a verdade estilo Bellacosa:

💥 “Se o IPL falhar… o mainframe inteiro simplesmente NÃO EXISTE.”

Hoje você vai entender isso como um padawan do mainframe, mas com visão de Jedi 👊🔥


🧠 O QUE É O IPL (O NASCIMENTO DO SISTEMA)

O IPL é o momento em que:

  • o hardware ganha vida
  • o z/OS é carregado
  • os primeiros address spaces são criados

👉 Segundo o material, ele:

  • carrega o sistema do disco
  • inicializa o kernel
  • cria o ambiente completo

🔥 Tradução Bellacosa

“IPL é o Big Bang do z/OS.”


🧱 OS DATASETS QUE FAZEM O MILAGRE ACONTECER

Sem eles… não tem sistema. Simples assim.


🔥 SYS1.NUCLEUS — o coração

Contém:

  • NIP (Nucleus Initialization Program)
  • RIM (Resource Initialization)
  • módulos básicos do kernel

👉 É literalmente o “cérebro inicial”.


🔥 SYS1.LPALIB — a memória compartilhada

  • módulos do sistema
  • SVCs
  • rotinas críticas

👉 Vai parar dentro da LPA (já já explico 👀)


🔥 SYS1.LINKLIB — o arsenal

  • programas do sistema
  • inclui o Master JCL

👉 Aqui começa a execução de verdade.


🔥 SYS1.PARMLIB — o cérebro de configuração

Define:

  • como o sistema vai funcionar
  • performance
  • segurança

👉 É o /etc do z/OS… só que turbinado.


🔥 SYS1.PROCLIB — automação

  • procedures (START, etc.)
  • inicialização de subsistemas

🔥 Outros importantes

  • PAGE DATASETS → memória virtual
  • SMF → estatísticas
  • DUMP → análise de erro

💡 Insight de ouro

“z/OS não sobe com código… sobe com DATASETS.”


⚙️ I/O CONFIG — O MAPA DO MUNDO

Antes do sistema usar qualquer coisa, ele precisa saber:

  • quais devices existem
  • onde estão
  • como acessar

🔹 Quem faz isso?

👉 HCD + IOCDS + IODF


🔥 Durante o IPL:

  • cada device gera um UCB (Unit Control Block)
  • o sistema passa a reconhecer discos, fitas, etc.

🧨 Easter Egg

Se o device não está no IODF… ele NÃO EXISTE pro sistema.


🧠 PARMLIB — ONDE VOCÊ DOMINA O SISTEMA

🔹 O que é?

Um conjunto de membros tipo:

  • IEASYSxx
  • LOADxx
  • outros

🔥 Função

Define:

  • memória
  • subsistemas
  • comportamento do sistema

💡 Dica de Jedi

Nunca mexa direto no default:

IEASYS00 → base
IEASYS01 → custom

👉 Se quebrar, você volta.


⚡ LOADXX — O DNA DO IPL

Esse cara decide:

  • qual nucleus usar
  • qual configuração carregar
  • qual PARMLIB seguir

🔹 Estrutura mental

LOADxx

aponta para:
- NUCLEUS
- PARMLIB
- CONFIG

🧨 Curiosidade

Um LOADxx pode subir vários sistemas no sysplex 😳


🚀 NIP — O CONSTRUTOR DO UNIVERSO

🔹 Nucleus Initialization Program

Ele:

  • inicializa memória
  • cria control blocks
  • cria address spaces

🔥 Resultado

transforma hardware em z/OS funcional


🧩 LINK PACK AREA (LPA) — ONDE TUDO FICA PRONTO

🔹 Tipos:

  • FLPA → fixo
  • MLPA → modificado
  • PLPA → paginável

💡 Tradução

LPA = “biblioteca carregada na memória para todo mundo usar”


👥 ADDRESS SPACES — O SISTEMA GANHA VIDA

🔥 Primeiro criado:

👉 MASTER (001 👀)


Depois:

  • JES
  • SMF
  • RSM
  • GRS
  • TRACE
  • DUMP

💡 Insight

Tudo nasce no IPL. Nada existia antes.


⚙️ PASSO A PASSO DO IPL (SIMPLIFICADO)

1. Power on
2. CPU lê DASD (SYSRES)
3. Carrega IPL text (IEAIPL00)
4. Carrega NUCLEUS
5. Executa NIP
6. Lê PARMLIB
7. Configura I/O (IODF)
8. Cria address spaces
9. Inicia subsistemas

👉 Boom 💥 sistema vivo


🔧 TUNING (onde os Jedi brilham)

🔥 Onde ajustar:

  • PARMLIB
  • LPA
  • PAGE datasets

💡 Exemplos:

  • mais memória → melhor performance
  • LPA otimizada → menos I/O
  • configuração errada → desastre

💀 TROUBLESHOOTING (quando tudo dá errado)

🔥 Problemas clássicos:

  • dataset não encontrado
  • erro no PARMLIB
  • device inexistente
  • LOADxx incorreto

🧨 Sintoma clássico:

👉 Disabled Wait Code


💡 Tradução

“Deu ruim antes do sistema existir.”


🧨 CURIOSIDADES QUE POUCOS SABEM

🤯 1. O sistema começa praticamente “cego”

Sem PARMLIB → nada funciona


🔥 2. O primeiro address space é 001

Nunca 000 (pegadinha de prova)


💀 3. IPL falha sem log amigável

Você ganha código e reza 😄


🧠 4. Tudo gira em torno de control blocks

Criados desde o início pelo NIP


🎯 RESUMO FINAL (nível padawan → jedi)

✔ IPL = nascimento do sistema

✔ SYS1 datasets = base de tudo

✔ PARMLIB = cérebro

✔ LOADxx = DNA

✔ NIP = construtor

✔ LPA = memória compartilhada

✔ Address spaces = vida


💥 FRASE FINAL

“Você acha que executa programas…
mas primeiro o z/OS precisa nascer — e esse nascimento é uma obra de engenharia absurda.”

 

segunda-feira, 26 de fevereiro de 2024

Resiliência IBM Z – A Arquitetura do IBM Z: Os Guardiões Invisíveis da Disponibilidade - Parte II

 

Bellacosa Mainframe apresenta resiliencia ibm z parte II

☕ Um Café no Bellacosa Mainframe

O Holocron da Resiliência IBM Z

Parte II – A Arquitetura do IBM Z: Os Guardiões Invisíveis da Disponibilidade

"Um Padawan COBOL normalmente enxerga apenas o programa. Um Mestre Mainframe enxerga toda a máquina que mantém esse programa vivo."

Depois de compreender os conceitos de Resiliência, RAS, SLA, RPO e RTO, chegou o momento de conhecer quem realmente sustenta toda essa arquitetura.

Quando um banco diz que seu sistema funciona 24 horas por dia, sete dias por semana, não é apenas mérito do COBOL, do CICS ou do Db2.

Existe uma verdadeira legião de componentes trabalhando silenciosamente para que milhões de usuários nunca percebam que processadores falham, discos apresentam defeitos, memórias são substituídas ou sistemas operacionais são reinicializados.

Nesta segunda parte do Holocron conheceremos os "heróis invisíveis" do IBM Z. Os tópicos desta seção correspondem aos componentes de arquitetura e manutenção presentes no glossário IBM Z: Processing Units (PUs), License Internal Code (LIC), PCIe Fanout, Hardware Management Console (HMC), Support Element (SE), First Failure Data Capture (FFDC), Runtime Diagnostics, Auto-IPL, Predictive Failure Analysis (PFA) e System Recovery Boost.


Muito Além de um Computador

Quando alguém olha um IBM Z pela primeira vez, normalmente vê apenas um enorme gabinete preto.

Mas o que existe ali dentro?

Na realidade...

Um IBM Z parece muito mais uma pequena cidade do que um computador.

Existe administração.

Existe segurança.

Existe manutenção.

Existe monitoramento.

Existe planejamento.

Existe redundância.

Enquanto um computador doméstico foi projetado para atender um único usuário, um IBM Z foi construído para atender milhões de pessoas simultaneamente.

É por isso que sua arquitetura é completamente diferente.


CPC – Central Processing Complex

Imagine um prédio comercial.

O prédio inteiro possui:

  • elevadores;

  • energia;

  • ar-condicionado;

  • segurança;

  • salas;

  • redes;

  • administração.

O CPC é exatamente isso.

Ele representa todo o computador IBM Z.

Não é apenas o processador.

É toda a infraestrutura física responsável pela execução do ambiente.

Quando um banco informa possuir quatro CPCs, significa que existem quatro grandes sistemas IBM Z operando em conjunto.

Para o desenvolvedor COBOL isso normalmente é invisível.

Seu programa continua funcionando independentemente do CPC em que foi iniciado.


Processing Units (PUs)

Agora imagine que o CPC seja um prédio.

As Processing Units seriam os funcionários especializados.

Nem todos executam a mesma função.

Existem processadores dedicados para diferentes cargas de trabalho.

Alguns são responsáveis pelo processamento tradicional.

Outros trabalham com criptografia.

Outros executam cargas Java.

Outros processam workloads elegíveis para zIIP.

Essa especialização melhora o desempenho e reduz custos de licenciamento.

Enquanto o desenvolvedor simplesmente executa um programa COBOL, o hardware decide qual recurso é mais adequado para aquela carga.


License Internal Code (LIC)

Todo computador possui firmware.

O IBM Z também.

Mas o LIC vai muito além de um simples BIOS.

Ele controla diversos recursos fundamentais do equipamento.

Podemos imaginá-lo como um sistema operacional "escondido", responsável por fazer toda a eletrônica conversar corretamente com o z/OS.

Grande parte da confiabilidade do IBM Z nasce justamente nesse nível extremamente baixo da arquitetura.

Quando o hardware detecta uma condição anormal, o LIC frequentemente consegue tratá-la antes mesmo que o sistema operacional perceba.


PCIe Fanout

No mundo moderno, praticamente tudo conversa através de PCI Express.

No IBM Z não é diferente.

O PCIe Fanout funciona como uma central inteligente de distribuição.

Ele conecta adaptadores de rede, aceleradores, dispositivos criptográficos e diversos outros componentes ao restante do sistema.

A diferença está na redundância.

Enquanto muitos servidores possuem poucos caminhos físicos, o IBM Z foi projetado para eliminar gargalos e pontos únicos de falha.


Hardware Management Console (HMC)

Imagine a cabine de comando de um grande navio.

É exatamente essa a função da HMC.

Ela é o centro administrativo do IBM Z.

Por meio dela os administradores conseguem:

  • iniciar sistemas;

  • desligar partições;

  • acompanhar alertas;

  • monitorar hardware;

  • configurar recursos;

  • analisar eventos.

Um programador COBOL provavelmente nunca utilizará diretamente uma HMC.

Mas praticamente tudo o que acontece no ambiente passa por ela.

É dali que nasce grande parte da administração do mainframe.


Support Element (SE)

Se a HMC é a cabine do comandante...

O Support Element é a oficina técnica.

Ele fornece acesso às funções internas de manutenção do equipamento.

É utilizado principalmente por especialistas da IBM e equipes de infraestrutura altamente qualificadas.

Ali residem funções críticas de diagnóstico e configuração que raramente são vistas por desenvolvedores.


First Failure Data Capture (FFDC)

Imagine que um carro apresente defeito.

Em vez de simplesmente apagar todas as informações...

Ele grava automaticamente:

  • velocidade;

  • temperatura;

  • rotação;

  • sensores;

  • posição do acelerador.

Foi exatamente isso que aconteceu no momento da falha.

O FFDC faz algo semelhante.

Quando ocorre um problema, ele captura imediatamente todas as informações necessárias para investigação.

Assim evita que evidências importantes sejam perdidas.

É um verdadeiro "fotógrafo" das falhas.


Runtime Diagnostics

Nem todos os problemas provocam uma queda do sistema.

Às vezes um programa entra em loop.

Uma tarefa começa a consumir CPU excessivamente.

Uma aplicação passa a responder lentamente.

O Runtime Diagnostics observa o comportamento do ambiente enquanto tudo continua funcionando.

Ele identifica sintomas antes que eles se transformem em incidentes graves.

É medicina preventiva aplicada ao sistema operacional.


Auto-IPL

IPL significa Initial Program Load.

Em outras palavras...

Inicializar o sistema operacional.

Antigamente esse processo dependia de intervenção humana.

Hoje, em muitos ambientes IBM Z, isso acontece automaticamente.

Se ocorrer uma falha previamente prevista, o Auto-IPL pode reiniciar o ambiente sem necessidade de um operador presente.

O tempo de recuperação diminui drasticamente.

E isso impacta diretamente o RTO.


Predictive Failure Analysis (PFA)

Talvez este seja um dos conceitos mais impressionantes.

Em vez de esperar um defeito...

O sistema tenta prever que ele acontecerá.

O PFA analisa tendências.

Temperaturas.

Erros recorrentes.

Estatísticas de funcionamento.

Com base nesses dados, consegue identificar componentes que apresentam sinais de desgaste antes da falha definitiva.

É praticamente uma manutenção preditiva aplicada ao mundo dos computadores.

Troca-se a peça antes que ela interrompa o negócio.


System Recovery Boost

Imagine um corredor que normalmente percorre uma maratona em ritmo constante.

Agora imagine que, nos últimos metros, ele receba uma descarga extra de energia.

É exatamente essa a ideia do System Recovery Boost.

Durante momentos críticos — como a inicialização do sistema ou a recuperação após uma falha — o IBM Z concede recursos adicionais temporários.

O objetivo é simples:

Recuperar o ambiente o mais rápido possível.

Essa aceleração reduz significativamente o tempo de indisponibilidade.


Speed Boost

O Speed Boost é um dos mecanismos do System Recovery Boost.

Durante eventos específicos, determinados processadores operam temporariamente com desempenho superior ao habitual.

Essa capacidade permite concluir etapas críticas mais rapidamente, reduzindo o tempo necessário para retornar à operação normal.


zIIP Boost

Muitas aplicações modernas utilizam processadores especializados chamados zIIPs.

Durante uma recuperação, essas cargas também recebem aceleração temporária.

Isso beneficia aplicações Java, Db2, XML, APIs REST, analytics e diversas cargas modernas executadas sobre o IBM Z.

O resultado é uma recuperação mais rápida sem necessidade de adquirir capacidade permanente adicional.


Quando Hardware e Software Trabalham Como Um Só

Uma das maiores diferenças entre o IBM Z e outras plataformas é que hardware e software não competem entre si.

Eles cooperam.

O LIC conversa constantemente com o hardware.

O hardware fornece informações ao HMC.

O HMC alerta administradores.

O FFDC registra evidências.

O Runtime Diagnostics detecta anomalias.

O PFA prevê falhas futuras.

O Auto-IPL acelera a recuperação.

O System Recovery Boost reduz o tempo de indisponibilidade.

Tudo isso acontece antes mesmo que o programador COBOL perceba qualquer alteração.


O Aprendizado do Padawan

Existe uma lição importante que todo desenvolvedor IBM Z aprende com o tempo.

O programa COBOL representa apenas a camada visível de uma engenharia extraordinária.

Por trás de um simples EXEC CICS LINK, de um SELECT no Db2 ou da leitura de um arquivo VSAM existe um ecossistema inteiro trabalhando para garantir disponibilidade, confiabilidade e recuperação rápida.

Compreender essa arquitetura ajuda o desenvolvedor a escrever aplicações mais eficientes, colaborar melhor com equipes de infraestrutura e entender por que o IBM Z continua sendo referência mundial em sistemas críticos.

No próximo capítulo do Holocron da Resiliência IBM Z, entraremos no coração da alta disponibilidade: Parallel Sysplex, Coupling Facility, WLM, SFM, ARM e GDPS, tecnologias que permitem que vários mainframes atuem como se fossem um único sistema, mantendo aplicações em funcionamento mesmo diante de falhas de grande porte.


terça-feira, 19 de outubro de 2021

ABEND sem Mistérios — Parte VIII

 

Bellacosa Mainframe e o abend sem misterios parte viii

☕ Um Café no Bellacosa Mainframe

ABEND sem Mistérios — Parte VIII

Muito Além do ABEND

Como Pensam os Grandes Especialistas em Mainframe e Por Que Resolver Erros é Apenas uma Pequena Parte da Engenharia de Software no IBM Z

"O iniciante aprende a corrigir ABENDs. O especialista aprende a construir sistemas onde eles se tornam cada vez mais raros."


Introdução

Chegamos ao último capítulo desta jornada.

Ao longo desta série, percorremos praticamente todo o universo dos ABENDs no Mainframe.

Começamos compreendendo o significado da palavra ABEND e conhecendo os principais erros encontrados no COBOL, no JCL, no CICS e no z/OS.

Depois aprendemos a investigar mensagens do JES2, utilizar o SDSF, interpretar CEEDUMPs, analisar dumps, compreender o funcionamento da CPU IBM Z, conhecer registradores, PSW, TCB, RB, arquitetura do sistema operacional e até explorar como Inteligência Artificial e Observabilidade estão revolucionando a investigação de incidentes.

Também criamos laboratórios, reproduzimos erros, estudamos engenharia de confiabilidade e analisamos dezenas de práticas utilizadas pelos maiores bancos do mundo.

Mas existe uma pergunta que ainda precisa ser respondida.

Depois de dominar os ABENDs... o que realmente muda?

A resposta é simples.

Tudo.

Porque, na verdade, esta série nunca foi apenas sobre ABENDs.

Ela sempre foi sobre aprender a pensar.


O verdadeiro objetivo nunca foi decorar códigos

Existe uma armadilha muito comum entre iniciantes.

Depois de conhecer:

  • S0C4

  • S0C7

  • S013

  • S806

  • SB37

  • ASRA

alguns acreditam que aprenderam a resolver problemas.

Na realidade,

eles aprenderam apenas os sintomas.

O especialista faz outra pergunta.

"Por que esse sistema permitiu que esse problema chegasse até aqui?"

Essa pergunta muda completamente a forma de enxergar software.


O Mainframe nunca foi apenas COBOL

Existe outro equívoco bastante comum.

Muitos profissionais dizem:

"Eu sou programador COBOL."

Mas observemos uma execução típica.

Usuário

↓

Canal Digital

↓

API

↓

Load Balancer

↓

Firewall

↓

z/OS Connect

↓

CICS

↓

COBOL

↓

Db2

↓

MQ

↓

Storage

↓

Discos

↓

IBM Z

Onde exatamente termina o COBOL?

A resposta é:

Ele nunca esteve sozinho.

O Mainframe sempre foi um ecossistema.


O Programador Padawan

No início da carreira,

a maior preocupação costuma ser:

"Meu programa compilou?"

Depois evolui para:

"Meu programa executou?"

Mais tarde:

"Meu programa funciona?"

O especialista vai além.

Ele pergunta:

"Meu programa continuará funcionando daqui a dez anos?"

Essa é a diferença entre escrever código e construir sistemas.


A evolução do pensamento técnico

Observe como um profissional amadurece.

Nível 1

Escreve código.

Nível 2

Corrige erros.

Nível 3

Investiga ABENDs.

Nível 4

Entende arquitetura.

Nível 5

Previne incidentes.

Nível 6

Melhora processos.

Nível 7

Ensina outras pessoas.

É nesse último estágio que nasce um verdadeiro especialista.


O valor da curiosidade

Existe uma característica comum entre praticamente todos os grandes profissionais de Mainframe.

Eles fazem perguntas.

Muitas perguntas.

Por exemplo.

Por que existe um PSW?

Por que o CICS funciona dessa maneira?

Como o Dispatcher escolhe a próxima tarefa?

Por que um dump possui milhares de páginas?

Como o WLM distribui CPU?

Como o Db2 gerencia locks?

Por que um S0C4 acontece exatamente naquele endereço?

A curiosidade é um acelerador de carreira.


Os profissionais mais respeitados não decoram comandos

Eles compreendem conceitos.

Imagine dois programadores.

O primeiro decorou:

DISPLAY

LISTCAT

IDCAMS

ALLOC

FREE

LISTDSI

O segundo entende:

  • armazenamento;

  • catálogo;

  • datasets;

  • buffers;

  • VSAM;

  • acesso sequencial;

  • acesso direto.

Quem terá mais facilidade para aprender novas ferramentas?

Naturalmente o segundo.

Conceitos sobrevivem.

Comandos mudam.


O papel da documentação

Em muitas empresas,

resolver um incidente é apenas metade do trabalho.

A outra metade é responder:

Como documentar?

Como compartilhar?

Como evitar novamente?

Um incidente que não gera conhecimento provavelmente voltará a acontecer.


A importância da humildade técnica

Existe uma frase muito conhecida na Engenharia.

"Todo software suficientemente complexo possui comportamentos que seus próprios autores não conseguem explicar."

Isso vale para Mainframe.

Vale para Cloud.

Vale para Inteligência Artificial.

Ninguém sabe tudo.

Os melhores profissionais estudam continuamente.


O conhecimento coletivo

Os maiores bancos do mundo não dependem apenas de profissionais brilhantes.

Eles dependem de equipes.

Uma investigação normalmente envolve:

  • Desenvolvimento;

  • Operação;

  • SysProg;

  • DBA;

  • Redes;

  • Segurança;

  • Middleware;

  • Negócio.

Cada grupo observa o incidente por um ângulo diferente.

É essa diversidade que produz as melhores soluções.


O papel da IA

Existe muito entusiasmo em torno da Inteligência Artificial.

Ela realmente está mudando o desenvolvimento de software.

Hoje conseguimos:

  • resumir dumps;

  • explicar SQLCODEs;

  • interpretar mensagens IEC;

  • sugerir causas prováveis;

  • gerar documentação;

  • produzir testes.

Mas existe algo que continua exclusivamente humano.

Julgamento.

A IA trabalha com probabilidades.

O engenheiro trabalha com responsabilidade.


O especialista não procura culpados

Quando um incidente acontece,

existem duas culturas.

A primeira pergunta:

"Quem escreveu esse programa?"

A segunda pergunta:

"O que precisamos melhorar para que isso nunca mais aconteça?"

A primeira cria medo.

A segunda cria evolução.

As organizações mais maduras escolhem sempre a segunda.


A engenharia de software no IBM Z

Hoje um profissional Mainframe trabalha com muito mais do que COBOL.

Ele precisa compreender:

  • APIs REST;

  • JSON;

  • Git;

  • DevOps;

  • Containers;

  • OpenShift;

  • z/OS Connect;

  • MQ;

  • Kafka;

  • Observabilidade;

  • Automação;

  • Inteligência Artificial.

Curiosamente,

isso não diminuiu a importância do COBOL.

Pelo contrário.

Aumentou.

Porque agora ele conversa com praticamente todo o restante da empresa.


A cultura da melhoria contínua

Os melhores ambientes seguem um ciclo permanente.

Desenvolver

↓

Testar

↓

Implantar

↓

Monitorar

↓

Aprender

↓

Melhorar

↓

Automatizar

↓

Repetir

Perceba que nunca existe um "fim".

Sempre existe uma próxima evolução.


O Mainframe continua ensinando

Existe algo fascinante no IBM Z.

Mesmo profissionais com quarenta anos de experiência continuam aprendendo.

Sempre aparece:

  • um novo recurso;

  • uma nova arquitetura;

  • um novo compilador;

  • uma nova API;

  • uma nova forma de integrar sistemas;

  • uma nova ferramenta de observabilidade.

Essa evolução constante mantém o Mainframe extraordinariamente atual.


O legado que realmente importa

No final da carreira,

ninguém será lembrado apenas pelos programas que escreveu.

Será lembrado por:

  • sistemas que ajudou a construir;

  • incidentes que resolveu;

  • pessoas que formou;

  • conhecimento que compartilhou.

O código envelhece.

O conhecimento permanece.


O Bellacosa Mainframe

Quando comecei a compartilhar conhecimento sobre Mainframe,

o objetivo nunca foi apenas explicar comandos.

Sempre acreditei que tecnologia pode ser ensinada de maneira humana.

Com café.

Com histórias.

Com analogias.

Com curiosidade.

Com respeito por quem está começando.

Todo especialista já foi um Padawan.

E ninguém chega longe sozinho.

Se esta série ajudou você a compreender um pouco melhor o universo dos ABENDs, então ela já cumpriu sua missão.


O próximo passo do Programador Padawan

Depois desta série, minha sugestão é continuar explorando temas que complementam a investigação de incidentes:

  • Enterprise COBOL 6.x e otimizações do compilador.

  • JCL avançado e utilitários do z/OS.

  • VSAM em profundidade.

  • CICS Transaction Server.

  • Db2 for z/OS.

  • Language Environment.

  • IPCS avançado.

  • Fault Analyzer e Debug Tool.

  • SMF e RMF.

  • WLM e desempenho.

  • z/OS Connect e APIs REST.

  • Observabilidade no IBM Z.

  • DevOps e Git para Mainframe.

  • Inteligência Artificial aplicada ao desenvolvimento COBOL.

Cada um desses assuntos amplia sua capacidade de compreender por que um sistema funciona, por que falha e como pode evoluir.


Uma última reflexão

Existe uma frase muito conhecida entre os engenheiros aeronáuticos.

"Todo acidente é um relatório técnico esperando para ser escrito."

No Mainframe, podemos adaptar essa ideia.

"Todo ABEND é uma aula de Engenharia de Software esperando para ser compreendida."

Cada S0C7 ensina a validar dados.

Cada S0C4 ensina a respeitar a memória.

Cada S013 ensina que aplicações dependem do ambiente onde executam.

Cada ASRA lembra que uma transação faz parte de um sistema muito maior.

Cada U4038 mostra que uma mensagem nem sempre revela toda a verdade.

E cada investigação bem conduzida torna o profissional mais preparado para o próximo desafio.


Conclusão

Esta série não teve como objetivo transformar você em alguém capaz de decorar centenas de códigos de ABEND. Seu propósito foi muito maior: desenvolver uma forma de pensar.

Pensar de maneira sistêmica.

Pensar orientado por evidências.

Pensar em causas, não apenas em sintomas.

Pensar em prevenção antes da correção.

Pensar em qualidade antes da urgência.

Esse é o verdadeiro diferencial dos grandes especialistas em IBM Z.

Porque o melhor engenheiro Mainframe não é aquele que resolve o maior número de ABENDs.

É aquele que projeta sistemas, processos e equipes capazes de impedir que eles aconteçam.

E quando um dia eles inevitavelmente surgirem, saberá que cada incidente representa uma oportunidade de aprender, compartilhar conhecimento e tornar o próximo sistema ainda melhor do que o anterior.

Enquanto existir um IBM Z processando milhões de transações com segurança, sempre haverá espaço para profissionais curiosos, disciplinados e apaixonados por aprender. Afinal, no Mainframe, a tecnologia evolui continuamente — e nós evoluímos junto com ela.


sexta-feira, 18 de junho de 2021

ABEND sem Mistérios — Parte IV

 

Bellacosa Mainframe e o abend sem misterios parte IV

☕ Um Café no Bellacosa Mainframe

ABEND sem Mistérios — Parte IV

O que Acontece Dentro do IBM Z Quando um ABEND Ocorre: Registradores, Memória, TCB, RB e a Jornada de uma Instrução até a CPU

"Para o programador, um ABEND acontece quando o programa para. Para o processador, ele acontece quando uma única instrução viola uma regra da arquitetura."


Introdução

Até agora aprendemos:

  • o que é um ABEND;

  • como investigá-lo;

  • como descobrir sua causa raiz.

Agora vamos entrar em um território que poucos programadores COBOL exploram.

Vamos olhar o problema pelo ponto de vista do próprio IBM Z.

Imagine que você pudesse entrar dentro do processador durante um S0C4.

O que estaria acontecendo?

Quem decidiu interromper seu programa?

Quem chamou o dump?

Como a CPU sabe exatamente qual instrução falhou?

Por que o sistema consegue informar o endereço exato onde tudo aconteceu?

A resposta está na arquitetura do IBM Z.


O IBM Z nunca executa COBOL

Essa é uma das primeiras grandes descobertas.

O processador IBM Z não conhece COBOL.

Nem PL/I.

Nem C.

Nem Java.

Muito menos JCL.

A CPU conhece apenas uma linguagem:

Machine Instructions

Ou seja,

milhões de instruções binárias.


O caminho de um programa

Quando escrevemos:

ADD WS-VALOR
 TO WS-TOTAL.

O compilador transforma isso em dezenas de instruções de máquina.

O fluxo verdadeiro é:

COBOL

↓

Enterprise COBOL Compiler

↓

Assembler

↓

Objeto

↓

Binder

↓

Load Module

↓

Machine Instructions

↓

CPU IBM Z

Quando ocorre um S0C7,

não foi a instrução ADD que falhou.

Foi uma instrução de máquina gerada pelo compilador.


A CPU trabalha uma instrução por vez

Imagine:

READ

MOVE

ADD

WRITE

Para nós parecem quatro comandos.

Para o processador,

podem representar centenas de instruções.

Cada instrução passa por etapas.

Buscar

↓

Decodificar

↓

Executar

↓

Gravar Resultado

Esse processo acontece bilhões de vezes por segundo.


Quando nasce um S0C4

Imagine uma instrução tentando acessar um endereço inexistente.

A CPU verifica:

Endereço

↓

Área permitida?

↓

SIM

↓

Executa

ou

Endereço

↓

Área permitida?

↓

NÃO

↓

Program Interrupt

Nesse instante,

o S0C4 começa a nascer.


O Program Interrupt

O processador possui dezenas de tipos de interrupções.

Algumas delas:

  • Protection Exception

  • Addressing Exception

  • Operation Exception

  • Data Exception

  • Overflow

  • Fixed Point Divide

Quando ocorre uma dessas situações,

a CPU interrompe imediatamente a instrução.

Ela não pergunta ao programa se deseja continuar.


O papel do PSW

O Program Status Word é um dos componentes mais importantes da arquitetura IBM Z.

Ele contém informações como:

  • endereço da próxima instrução;

  • modo de execução;

  • chave de proteção;

  • condição da CPU;

  • máscara de interrupções.

É praticamente o "painel de controle" do processador.

Sempre que ocorre um ABEND,

o PSW é salvo.

É por isso que conseguimos descobrir exatamente onde tudo aconteceu.


Registradores: a mesa de trabalho da CPU

Imagine um marceneiro.

Sobre sua bancada existem:

  • régua;

  • lápis;

  • parafusos;

  • martelo.

A CPU possui algo parecido.

São os registradores.

Ela utiliza esses espaços para guardar:

  • endereços;

  • parâmetros;

  • resultados;

  • ponteiros;

  • contadores.

Quando um dump é produzido,

todos eles são preservados.


O famoso R15

Quem trabalha com COBOL logo aprende sobre o registrador R15.

Ele normalmente contém:

  • endereço inicial de programas;

  • códigos de retorno;

  • informações importantes durante CALLs.

Em muitas análises,

o primeiro registrador observado é justamente ele.


O que é Storage?

Quando dizemos:

WS-NOME

PIC X(30)

Essa variável ocupa memória.

No IBM Z essa memória recebe o nome de:

Storage

É nela que vivem:

  • variáveis COBOL;

  • buffers;

  • tabelas;

  • áreas de comunicação;

  • parâmetros.

Um S0C4 quase sempre está relacionado ao uso incorreto dessa Storage.


O conceito de Address Space

Uma dúvida comum dos iniciantes é:

"O programa acessa toda a memória do computador?"

Não.

Cada JOB ou região CICS executa em um Address Space.

Pense em um apartamento.

Cada morador possui:

  • sala;

  • cozinha;

  • quarto.

Um apartamento não invade o outro.

Da mesma forma,

um programa não pode acessar livremente a memória de outro Address Space.


O que é um TCB?

Agora chegamos a um dos componentes mais importantes do z/OS.

TCB significa:

Task Control Block

Toda tarefa possui um.

Ele contém informações fundamentais sobre a execução:

  • registradores;

  • PSW;

  • prioridade;

  • estado;

  • ponteiros;

  • RB atual.

Sem o TCB,

o sistema não saberia quem está executando.


Imagine um crachá

Imagine uma empresa.

Cada funcionário possui um crachá.

No IBM Z,

o TCB funciona exatamente assim.

Ele identifica aquela tarefa perante o sistema operacional.


O RB (Request Block)

Durante uma chamada de serviço,

o sistema cria um RB.

Ele registra:

  • quem chamou;

  • qual serviço foi solicitado;

  • qual rotina será executada;

  • para onde retornar.

Em uma investigação profunda,

a sequência de RBs ajuda a reconstruir a história da execução.


O Dispatcher

Quem decide qual programa utilizará a CPU?

Não é o JES2.

Não é o COBOL.

É o Dispatcher do z/OS.

Ele distribui tempo de processamento entre milhares de tarefas.

Imagine um maestro regendo uma orquestra.

Cada músico toca por alguns instantes.

Depois outro assume.

Tudo acontece tão rapidamente que parece simultâneo.


O papel do Supervisor

Quando ocorre um Program Interrupt,

a CPU entrega o controle ao Supervisor do sistema operacional.

Ele analisa:

  • tipo da exceção;

  • PSW;

  • registradores;

  • TCB;

  • RB;

  • contexto da tarefa.

Depois decide:

  • gerar dump;

  • emitir mensagens;

  • encerrar a tarefa.

É nesse momento que nasce oficialmente o ABEND.


Como nasce um Dump

O Dump não aparece por mágica.

O sistema percorre diversas estruturas.

Ele salva:

  • registradores;

  • memória;

  • TCB;

  • RB;

  • PSA;

  • LSQA;

  • CSA;

  • pilhas;

  • módulos carregados;

  • áreas do LE.

Tudo isso permite que o problema seja investigado posteriormente.


A pilha de chamadas

Quando fazemos:

Programa A

↓

CALL B

↓

CALL C

↓

CALL D

O sistema mantém uma pilha.

Ela registra:

  • quem chamou;

  • quem foi chamado;

  • para onde retornar.

O CEEDUMP utiliza essa pilha para montar o famoso Traceback.


Por que um Offset é tão importante?

Quando o compilador gera o Load Module,

as linhas do COBOL deixam de existir.

O executável conhece apenas endereços.

Por isso o dump mostra:

Offset

0000A3F2

Ferramentas como IBM Fault Analyzer, Abend-AID e IDz fazem o caminho inverso: relacionam esse offset ao programa-fonte, permitindo localizar a instrução COBOL correspondente.


O papel do Binder

Muitos iniciantes acreditam que a compilação termina quando o compilador gera o objeto.

Na verdade,

existe outra etapa fundamental.

O Binder (antigo Link-Editor) reúne:

  • módulos objeto;

  • bibliotecas;

  • sub-rotinas;

  • Language Environment.

O resultado é o Load Module, que será executado pelo z/OS.

Sem essa etapa,

não existe programa executável.


E no CICS?

Dentro do CICS tudo continua acontecendo.

A diferença é que existe outra camada.

Terminal

↓

Task CICS

↓

Dispatcher CICS

↓

Programa COBOL

↓

Language Environment

↓

CPU

Quando ocorre um ASRA,

o CICS captura o Program Interrupt,

gera suas mensagens

e encerra a Task.


O que realmente vê um SysProg?

Enquanto o desenvolvedor observa:

S0C7

O SysProg costuma enxergar algo muito maior.

Ele analisa:

  • PSW;

  • TCB;

  • RB;

  • ASCB;

  • SRB;

  • Dispatcher;

  • WLM;

  • armazenamento;

  • interrupções;

  • módulos do sistema.

São duas perspectivas diferentes do mesmo problema.


Curiosidades da arquitetura IBM Z

  • O IBM Z possui mecanismos de proteção de memória extremamente sofisticados, fundamentais para executar milhares de workloads simultaneamente com segurança.

  • Um único sistema pode manter milhares de Tasks ativas, cada uma com seu próprio contexto de execução.

  • O PSW é salvo e restaurado continuamente durante trocas de contexto entre tarefas.

  • Grande parte da confiabilidade do IBM Z vem justamente da capacidade de detectar exceções e interromper apenas a tarefa problemática, preservando o restante do sistema.


O caminho completo de um ABEND

Programa COBOL

↓

Compilador

↓

Load Module

↓

CPU executa instrução

↓

Program Interrupt

↓

Supervisor z/OS

↓

Análise do contexto

↓

Dump

↓

Mensagens

↓

ABEND

↓

SDSF

↓

Investigação

↓

Correção

↓

Aprendizado

Conclusão

Quando compreendemos a arquitetura interna do IBM Z, os ABENDs deixam de ser mensagens misteriosas e passam a ser eventos perfeitamente explicáveis.

Um S0C4 não é "azar". Um S0C7 não é "capricho do compilador". Eles são a consequência direta de mecanismos de proteção cuidadosamente projetados para preservar a integridade do sistema.

Essa é uma das grandes diferenças do Mainframe: cada interrupção, cada registrador salvo, cada PSW capturado e cada dump gerado fazem parte de uma arquitetura construída para ser observável, previsível e extremamente resiliente.

O Programador Padawan que entende essa jornada deixa de enxergar apenas o código COBOL e passa a compreender como hardware, sistema operacional, compilador e aplicação trabalham em perfeita sintonia. É nesse momento que ele começa a pensar como um verdadeiro especialista em IBM Z.


sexta-feira, 13 de abril de 2007

O que é Address Space?

 

Bellacosa Mainframe e o conceito de address space

O que é Address Space?

Se existe um conceito que todo estudante de Mainframe precisa compreender logo no início, esse conceito é o Address Space.

Ele é uma das bases do funcionamento do z/OS e explica como milhares de programas conseguem executar ao mesmo tempo no IBM Z sem interferirem uns nos outros.

Embora o nome pareça complicado, a ideia é bastante simples.


Definição simples

Um Address Space (Espaço de Endereçamento) é uma área de memória virtual exclusiva onde um programa, um subsistema ou um serviço do z/OS é executado.

Cada Address Space possui:

  • sua própria memória;

  • seus próprios programas;

  • suas próprias variáveis;

  • seus próprios controles;

  • sua própria proteção.

Em outras palavras:

Cada programa executa em um "ambiente privado", sem acessar diretamente a memória dos outros programas.


Uma analogia simples

Imagine um grande prédio comercial.

Cada empresa possui um escritório próprio.

Dentro do escritório existem:

  • computadores;

  • documentos;

  • funcionários;

  • armários.

Os funcionários de uma empresa não entram livremente nas salas das outras.

No z/OS acontece exatamente isso.

Cada programa trabalha dentro do seu próprio escritório, chamado Address Space.


O que significa Address Space?

Em português:

Espaço de Endereçamento.

É o conjunto de endereços de memória que um programa pode utilizar durante sua execução.


Por que ele existe?

Imagine que dois programas estejam executando ao mesmo tempo.

Programa A:

Calcula salários

Programa B:

Processa PIX

Se ambos utilizassem a mesma memória física sem controle, um poderia sobrescrever os dados do outro.

O resultado seria:

  • corrupção de memória;

  • perda de dados;

  • travamentos;

  • ABENDs.

O Address Space evita esse problema.


Como funciona?

Imagine três programas.

COBOL
CICS
DB2

Cada um recebe seu próprio espaço.

+------------------+
| Address Space A  |
| Programa COBOL   |
+------------------+

+------------------+
| Address Space B  |
| CICS             |
+------------------+

+------------------+
| Address Space C  |
| DB2              |
+------------------+

Cada ambiente é isolado.


Memória Virtual

Os Address Spaces utilizam memória virtual.

Isso significa que o programa acredita possuir um enorme espaço de memória.

Na realidade, o z/OS faz o gerenciamento automaticamente.


Isolamento

Uma das maiores vantagens é a proteção.

Programa A

não consegue alterar

Programa B

Isso aumenta muito a segurança.


Quantos Address Spaces existem?

Depende do ambiente.

Um grande banco pode possuir milhares deles simultaneamente.

Exemplo:

  • JES2;

  • CICS;

  • DB2;

  • IMS;

  • MQ;

  • TCP/IP;

  • aplicações COBOL;

  • utilitários;

  • Started Tasks.

Cada componente normalmente executa em seu próprio Address Space.


O que existe dentro de um Address Space?

Normalmente encontramos:

  • programa executável;

  • memória de trabalho;

  • pilhas (Stacks);

  • buffers;

  • tabelas;

  • bibliotecas carregadas;

  • áreas de controle.

Tudo isso pertence apenas àquele Address Space.


Quem cria o Address Space?

O próprio z/OS.

Sempre que um JOB ou uma Started Task inicia, o sistema operacional cria automaticamente um novo espaço de endereçamento.


JOB Batch

Quando um JOB COBOL começa:

JES2

↓

Inicia JOB

↓

z/OS cria Address Space

↓

Programa executa

↓

JOB termina

↓

Address Space é removido

Started Tasks

Serviços permanentes normalmente possuem Address Spaces próprios.

Exemplos:

  • JES2;

  • VTAM;

  • TCP/IP;

  • DB2;

  • CICS;

  • RACF;

  • OMVS.

Esses espaços permanecem ativos durante muito tempo.


Address Space e CICS

Normalmente existe um Address Space para cada região CICS.

Dentro dele podem existir milhares de transações simultâneas.

As transações compartilham recursos internos do CICS, mas continuam protegidas pelo gerenciamento da região.


Address Space e DB2

O Db2 utiliza diversos Address Spaces.

Exemplo:

MSTR

DBM1

IRLM

DIST

Cada um possui funções específicas.


Como o z/OS protege a memória?

O hardware do IBM Z trabalha em conjunto com o sistema operacional.

Se um programa tentar acessar memória que não lhe pertence:

resultado:

Protection Exception

Ou outro tipo de ABEND.

Essa proteção é um dos pilares da confiabilidade do mainframe.


Benefícios

Segurança

Programas não interferem entre si.


Estabilidade

Um erro em uma aplicação normalmente não afeta as demais.


Escalabilidade

Milhares de programas podem executar simultaneamente.


Organização

Cada aplicação possui seu próprio ambiente de execução.


Quem trabalha com Address Spaces?

Diversos profissionais lidam com esse conceito:

  • Programadores COBOL;

  • Desenvolvedores PL/I;

  • Administradores CICS;

  • DBAs;

  • Sysprogs;

  • Operadores Mainframe;

  • Especialistas em Performance.


Curiosidades incríveis

1. O z/OS pode manter milhares de Address Spaces ativos

Grandes ambientes executam milhares de aplicações simultaneamente sem comprometer a estabilidade.


2. Cada região CICS normalmente possui seu próprio Address Space

Isso facilita o isolamento entre ambientes de produção, homologação e testes.


3. O Db2 utiliza vários Address Spaces

Cada um desempenha uma função específica, como gerenciamento, processamento de banco de dados, bloqueios e conexões distribuídas.


4. O conceito existe desde os primeiros sistemas de memória virtual da IBM

Ele evoluiu ao longo das décadas e continua sendo um dos principais motivos da alta confiabilidade do IBM Z.


Erros comuns de iniciantes

"Address Space é apenas memória RAM"

Não.

Ele representa um espaço de memória virtual, administrado pelo z/OS e mapeado para a memória física conforme necessário.


"Todos os programas compartilham a mesma memória"

Não.

Cada aplicação executa em seu próprio Address Space, garantindo isolamento e proteção.


"Quando um programa termina, o Address Space continua existindo"

Nem sempre.

Nos jobs batch, o Address Space normalmente é encerrado quando o processamento termina.

Já serviços permanentes, como CICS e Db2, permanecem ativos enquanto o subsistema estiver em execução.


Quando aprender Address Space?

Esse conceito deve ser estudado logo após compreender:

  • z/OS;

  • memória virtual;

  • Storage;

  • processamento Batch;

  • Started Tasks.

Ele servirá de base para entender CICS, Db2, IMS, desempenho, gerenciamento de memória e arquitetura do IBM Z.


Conclusão

O Address Space é um dos conceitos mais importantes do z/OS. Ele fornece um ambiente de memória virtual isolado para cada programa, job ou subsistema, permitindo que milhares de aplicações executem simultaneamente com segurança, estabilidade e alto desempenho.

Sem os Address Spaces, o IBM Mainframe não conseguiria oferecer o nível de confiabilidade, disponibilidade e escalabilidade que faz dele a plataforma escolhida por bancos, seguradoras, governos e grandes empresas em todo o mundo.


sábado, 7 de abril de 2007

O que é VSAM LDS?

 

Bellacosa Mainframe apresenta vsam lds

O que é VSAM LDS?

Quando estudamos VSAM (Virtual Storage Access Method), encontramos quatro tipos principais de datasets:

  • KSDS (Key Sequenced Data Set)

  • ESDS (Entry Sequenced Data Set)

  • RRDS (Relative Record Data Set)

  • LDS (Linear Data Set)

O LDS é o mais diferente de todos.

Enquanto KSDS, ESDS e RRDS armazenam registros organizados, o LDS trabalha apenas com uma sequência contínua de bytes.

Por isso ele é muito utilizado internamente pelo z/OS e por bancos de dados como o Db2.


Definição simples

O LDS (Linear Data Set) é um tipo de arquivo VSAM que armazena dados como um fluxo contínuo de bytes, sem dividir as informações em registros.

Ele não possui:

  • chave primária;

  • índice;

  • registros lógicos;

  • número relativo de registros.

Em vez disso, o programa acessa os dados por endereço ou deslocamento (offset).


Uma analogia simples

Imagine um enorme rolo de papel em branco.

Você pode escrever em qualquer posição.

Não existem:

  • páginas;

  • capítulos;

  • linhas numeradas.

Existe apenas um espaço contínuo.

O LDS funciona exatamente assim.


O que significa LDS?

LDS significa:

Linear Data Set

Em português:

Conjunto de Dados Linear.

Seu nome vem justamente do fato de os dados serem armazenados linearmente.


Como funciona?

Enquanto um KSDS é organizado assim:

Registro 1

Registro 2

Registro 3

O LDS funciona assim:

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

É apenas um bloco contínuo de armazenamento.

O sistema não sabe onde começa ou termina um registro.

Quem controla isso é a aplicação.


Quem organiza os dados?

No LDS, toda a responsabilidade fica com o programa.

Ele decide:

  • onde gravar;

  • onde ler;

  • qual o tamanho dos dados;

  • como interpretar cada informação.

O VSAM apenas fornece o espaço.


Como os dados são acessados?

O acesso normalmente ocorre por:

  • endereço;

  • offset;

  • página;

  • bloco.

Exemplo:

Offset 000000

↓

Offset 000512

↓

Offset 001024

↓

Offset 001536

O programa informa o deslocamento desejado.


Estrutura do LDS

+------------------------------------------------------+

Bloco contínuo de bytes

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

+------------------------------------------------------+

Sem registros.

Sem índice.

Sem chave.


Como criar um LDS?

Normalmente utilizando IDCAMS.

Exemplo simplificado:

//DEFINE EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
 DEFINE CLUSTER (
   NAME(BELLA.DATABASE.LDS)
   LINEAR
   TRACKS(50 10)
 )
 /*

Observe a palavra:

LINEAR

Ela identifica um Linear Data Set.


O LDS possui registros?

Não.

Essa é sua principal característica.

Diferente dos demais VSAM:

TipoPossui registros?
KSDSSim
ESDSSim
RRDSSim
LDSNão

O LDS possui chave?

Não.

Também não possui:

  • índice;

  • RBA lógico;

  • RRN.

Ele trabalha apenas com bytes.


Onde o LDS é utilizado?

O uso mais famoso é no:

Db2 para z/OS

Os Tablespaces do Db2 utilizam Linear Data Sets.

Isso permite que o próprio Db2 organize:

  • páginas;

  • índices;

  • buffers;

  • tabelas.


Outros usos

Também aparece em:

  • bancos de dados;

  • sistemas de alto desempenho;

  • aplicações especializadas;

  • componentes internos do z/OS.


Como o Db2 utiliza LDS?

Imagine uma tabela com milhões de clientes.

O Db2 controla:

  • páginas;

  • buffers;

  • linhas;

  • índices.

O LDS apenas fornece o espaço físico.

É como um grande terreno vazio.

Quem constrói os edifícios é o Db2.


Vantagens

Alto desempenho

Ideal para grandes bancos de dados.


Flexibilidade

O aplicativo controla toda a organização.


Excelente para SGBDs

Perfeito para Db2.


Grande capacidade

Pode armazenar enormes volumes de dados.


Desvantagens

Complexidade

O desenvolvedor precisa controlar toda a estrutura.


Não indicado para aplicações COBOL tradicionais

Normalmente utiliza-se KSDS.


Sem recursos automáticos

Não existe:

  • chave;

  • pesquisa;

  • índice.

Tudo deve ser implementado pela aplicação.


LDS x KSDS

LDSKSDS
Sem registrosPossui registros
Sem chaveChave primária
Sem índiceÍndice automático
Bytes contínuosDados organizados
Ideal para Db2Ideal para aplicações COBOL

LDS x ESDS

LDSESDS
Fluxo contínuoRegistros sequenciais
Sem estruturaEstrutura definida
OffsetRBA

LDS x RRDS

LDSRRDS
Bytes contínuosNúmero relativo
Sem registrosRegistros fixos

Curiosidades incríveis

1. O Db2 utiliza intensamente LDS

Grande parte dos Tablespaces modernos é armazenada em Linear Data Sets.


2. O z/OS trata o LDS de forma diferente dos demais VSAM

Ele não interpreta o conteúdo.

Apenas administra o espaço físico.


3. O LDS pode armazenar bilhões de bytes

É ideal para aplicações de grande porte.


4. Muitos programadores COBOL nunca trabalham diretamente com LDS

Quem normalmente utiliza esse tipo de dataset são administradores de Db2, especialistas em storage e desenvolvedores de sistemas de baixo nível.


Erros comuns de iniciantes

"LDS é igual KSDS"

Não.

O KSDS organiza registros.

O LDS não possui registros.


"Posso fazer READ KEY"

Não.

Não existe chave.


"O VSAM controla os dados"

No LDS, quem controla a estrutura é a aplicação.


Quando escolher LDS?

Escolha um LDS quando:

  • estiver desenvolvendo sistemas de armazenamento especializados;

  • precisar controlar diretamente o layout físico dos dados;

  • trabalhar com Db2 ou outros bancos de dados que utilizem Linear Data Sets;

  • precisar de máximo desempenho e flexibilidade.

Para aplicações COBOL tradicionais, normalmente o KSDS continua sendo a melhor escolha.


Conclusão

O VSAM LDS (Linear Data Set) é o tipo mais diferente da família VSAM.

Ao contrário dos demais formatos, ele não trabalha com registros, chaves ou índices. Em vez disso, oferece um espaço linear de armazenamento, deixando para a aplicação toda a responsabilidade pela organização dos dados.

Essa característica faz do LDS a base ideal para bancos de dados como o Db2 para z/OS, que utilizam sua flexibilidade para gerenciar milhões de registros com alto desempenho e eficiência. Para quem deseja compreender profundamente a arquitetura de armazenamento do IBM Mainframe, conhecer o LDS é um passo importante na jornada de aprendizado.


Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...