UMA PROPOSTA PARA ESTENDER O SISTEMA PASCAL UCSD A PROCESSAMENTO CONCORRENTE
Valmir Carneiro Barbosa
TESE SUBMETIDA AO CORPO DOCENTE DA COORDENAÇÃO DOS PROGRA
-
MAS DE P~S-GRADUAÇÃO DE ENGENHARIA DA UNIVERSIDADE FEDERAL
DO RIO DE JANEIRO COMO PARTE DOS REQUISITOS
NECESSARIOS
PA -RA A OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIA (M.Sc.)
Aprovada por:
Sueli Mendes dos Santos (Presidente)
~ e k i e Afranio Terry
.
,Paulo ~ á r i o Bianchi França
Edil Severiano Tavares Fernandes
RIO DE JANEIRO, RJ
-
BRASILBARBOSA, VALMIR CARNEIRO
Uma Proposta para Estender o Sistema Pas
-
cal UCSD a Processamento Concorrente [ ~ i o de ~ a n e i r o ] 1982.XVI, 147p., 29 ,7cm (COPPE/UFRJ
,
M. Sc., Engenharia de Sistemas e computação, 1982).Tese
-
Univ. Fed. Rio de Janeiro, Fac. Engenharia.l.~rogramação Concorrente I.COPPE/UFRJ 11.~itul0 (série)
.
iii
A meus pais e avó materna
AGRADECIMENTOS
A L e s l i e A f r a n i o T e r r y e J o s é Motta d a Rocha Lopes pe- l a concepção do p r o j e t o e d a s p r i n c i p a i s d i r e t r i z e s d e s e u de- s e n v o l v i m e n t o .
A L e s l i e A f r a n i o T e r r y , J o s é Mdtta da Rocha Lopes,
~ á -
r i o Veiga F e r r a z P e r e i r a , L i d i a S e g r e e ~ é r g i o Henrique F e r r e i - r a d a Cunha p e l a p a r t i c i p a ç ã o n a s d i s c u s s õ e s q u e d e f i n i r a m o pro - j e t o . A L e s l i e A f r a n i o T e r r y e S u e l i Mendes d o s S a n t o s p e l o t r a b a l h o d e o r i e n t a ç ã o . A L e s l i e A f r a n i o T e r r y , S u e l i Mendes d o s S a n t o s , ~ á r i o Veiga F e r r a z P e r e i r a , L i d i a S e g r e e J o s é Motta d a Rocha Lopes pe
-
l a r e v i s ã o do t r a b a l h o .A V a l e r i a C a r n e i r o Barbosa p e l o i n e s t i m á v e l a u x í l i o na c o n f e c ç ã o g r á f i c a d a t e s e ; também à S e c r e t a r i a do Departamento d e S i s t e m a s do CEPEL ( e s p e c i a l m e n t e a Ruth Maria d e Souza) p e l a a j u d a f o r n e c i d a n e s s e s e n t i d o .
Ao CEPEL p o r t e r p o s s i b i l i t a d o o d e s e n v o l v i m e n t o d a t e
-
s e .v SINOPSE
Este trabalho apresenta uma proposta para estender a linguagem Pascal UCSD a programação concorrente. Inicialmente,
o Sistema Pascal UCSD é apresentado em sua versão original co-
mo sistema mono-usuário para desenvolvimento de programas se
-
qüenciais e é feita uma revisão das principais técnicas de pro -
gramação concorrente encontradas na literatura.
A extensão proposta sobre o Pascal UCSD baseia-se em
uma arquitetura a multiprocessadores fortemente conectados e
inclui os seguintes pontos principais:
(i) (ii)
(iii)
possibilidade de associar processos concorren
-
tes a rotinas;
adoção de comandos estruturados para a especifi
-
cação da concorrência entre processos em tempo de execução;
adoção de semáforos binários e filas de eventos como instrumentos para a sincronização de pro-
cessos concorrentes, permitindo tratar proble
-
mas de exclusão mútua e sinalização entre pro
-
cessos.
Uma característica importante dessa extensão é a fle-
xibilidade advinda do nível de abstração relativamente baixo
das ferramentas de sincronismo incorporadas e da possibilidade
de explicitar prioridades em tempo de execução para todas as
-
operações de escalonamento do Sistema.
É também proposto um núcleo que realize as funções do
ABSTRACT
T h i s work p r e s e n t s a p r o p o s a l t o e x t e n d t h e UCSD Pas- c a l l a n g u a g e t o c o n c u r r e n t programming. The UCSD P a s c a l System i s i n i t i a l l y p r e s e n t e d i n i t s o r i g i n a l form a s a s i n g l e
-
u s e r s y s t e m f o r t h e development o f s e q u e n t i a l programs. I n a d d i t i o n t h e main c o n c u r r e n t programming t e c h n i q u e s found i n t h e l i t e r a t u r e a r e s u r v e y e d .The e x t e n s i o n p r o p o s e d o v e r t h e UCSD P a s c a l i s based on a t i g h t l y c o n n e c t e d m u l t i p r o c e s s o r a r c h i t e c t u r e , and compri ses t h e f o l l o w i n g main p o i n t s : (i) ( i i ) ( i i i ) p o s s i b i l i t y o £ a s s o c i a t i n g c o n c u r r e n t p r o c e s s e s t o r o u t i n e s ; a d o p t i o n o f s t r u c t u r e d commands f o r t h e r u n t i m e s p e c i f i c a t i o n o f t h e c o n c u r r e n c y among p r o c e s
-
s e s ; a d o p t i o n o f b i n a r y semaphores and e v e n t q u e u e s a s c o n c u r r e n t p r o c e s s s y n c h r o n i z i n g mechanisms, a l l o w i n g t o t a c k l e problems o £ mutual e x c l u s i o n and s i g n a l exchange among p r o c e s s e s .An i m p o r t a n t f e a t u r e o £ t h e p r o p o s e d e x t e n s i o n i s t h e f l e x i b i l i t y r e s u l t i n g from t h e r e l a t i v e l y low l e v e 1 o f a b s t r a c
-
t i o n o f t h e embedded s y n c h r o n i z i n g t o o l s , and from t h e p o s s i b i-
l i t y o £ e x p l i c i t l y a s s i g n i n g p r i o r i t i e s d u r i n g r u n t i m e i n a 1 1 s c h e d u l i n g o p e r a t i o n s o f t h e System.A k e r n e l t o implement t h e c o n c u r r e n t p r o c e s s i n g i n t r o
-
duced i n t h e UCSD P a s c a l l a n g u a g e i s a l s o p r o p o s e d .vii ÍNDICE O SISTEMA P I I. i- INTRODUÇÃO 11.2- SEGMENTAÇÃO NO SISTEMA P 11.3- A ARQUITETURA DA
MAQUINA
P 11.3.1- ORGANIZAÇÃO GERAL 11.3.2- O INTERPRETADOR 11.3.3- O STACK 11.3.4- O HEAP11.3.5- UNIDADES DE ENTRADA E S A ~ D A DE DADOS 11.4- O SISTEMA OPERACIONAL
11.4.1- OS NÍVEIS DE COMANDOS
11.4.2- O DESENVOLVIMENTO DE PROGRAMAS NO SISTEMA P
I I. 4.3- ALGORITMO
BASICO
11.4.4- PROCEDIMENTOS INTRÍNSECOS DO PASCAL UCSD
11.4.5- PROCEDIMENTOS DE CONTROLE EM TEMPO DE EXECUÇÃO
11.4.6- ORGANIZAÇÃO DAS UNIDADES BLOCADAS DE E/S
11.4.7- OPERAÇÕES DE ENTRADA E SAÍDA DE DADOS
PROCESSOS CONCORRENTES 111.1- INTRODUÇÃO
111.2- COMPARTILHAMENTO DE RECURSOS POR PROCESSOS CONCORRENTES
viii
111.2.2-
SEMAFOROS
E REGIÕES CRÍTICAS111.2.3- REGIÕES CRÍTICAS CONDICIONAIS E FILAS DE EVENTOS
111.2.4- TROCA DE MENSAGENS
111.2.5- MONITORES: AS LINGUAGENS PASCAL CONCORRENTE E MODULA
111.2.6- PROGRAMAÇÂO NÃO-DETERMIN~STICA: COMANDOS GUARDADOS, CSP E DP 111.2.7- AS LINGUAGENS ADA E EDISON
111.3- ESPECIFICAÇÃO DA CONCORRÊNCIA ENTRE PROCESSOS
PROCESSOS CONCORRENTES NO SISTEMA P IV. i- INTRODUÇÃO
IV.2- ESPECIFICAÇÃO DA CONCORRÊNCIA ENTRE OS PROCESSOS DO SISTEMA P
IV.3- ARQUITETURA DA
MAQUINA
P PARA PROCESSAMENTO CONCORRENTEIV.3.1- PROCESSAMENTO EM CACTUS-STACK IV.3.2- ARQUITETURAS A MULTIPROCESSADORES IV.3.3- PROBLEMAS DE ENDEREÇAMENTO NO
CACTUS-STACK
IV.3.4- INTERRUPÇÃO DOS PROCESSADORES VIRTUAIS IV.4- COMPARTILHAMENTO DE RECURSOS E ESCALONAMENTO
O NÚCLEO PARA PROCESSAMENTO CONCORRENTE NO SISTEMA P 79
v.
i- INTRODUÇÃO 79V.2- REPRESENTAÇÃO DOS PROCESSOS,
ARVORE
E FILAS 81 v.3- ONBCLEO
COMO REGIÃO CRÍTICA 8 3 v.4- ESCALONAMENTO PARA EXECUÇÃO 85 V.5- EXECUÇÃO DE PROGRAMAS CONCORRENTES 91V.6-
SEMAFOROS BINARIOS
95V.7- FILAS DE EVENTOS 98
V.8- OPERAÇÕES DE ENTRADA E S A ~ D A 100
V . 8 . 2 - MANIPULAÇÃO DAS UNIDADES DE E / S V . 8 . 3 - ENTRADA E S A ~ D A PARA ARQUIVOS
C O M E N T ~ R I O S F I N A I S
PROCEDIMENTOS
INTRINSECOS
DO PASCAL UCSDP R I M I T I V A S DE SINCRONISMO: EXEMPLOS B.1- O PROBLEMA DO BUFFER CIRCULAR B.2- SOLUÇÃO COM SEMÁFOROS
B. 3- SOLUÇÃO COM REGIÕES C R ~ TICAS
B. 4- SOLUÇÃO COM REGIÕES C R ~ T I C A S C Q N D I C I O N A I S B.5- SOLUÇÃO COM F I L A S DE EVENTOS
B.6- SOLUÇÃO COM TROCA DE MENSAGENS B.7- SOLUÇÃO EM PASCAL CONCORRENTE B. 8- SOLUÇÃO EM MODULA
B . 9 - SOLUÇÃO COM C S P B . 1 0 - SOLUÇÃO COM DP B. 11- SOLUÇÃO EM ADA B . 1 2 - SOLUÇÃO EM E D I S O N
EXTENSÕES PROPOSTAS PARA PROGRAMAÇÃO CONCORRENTE EM PASCAL UCSD
c.
i- INTRODUÇÃOC . 2 - ' PROGRAMAS CONCORRENTES E PROCESSOS CONCORRENTES
C. 3-
SEMAFOROS
B I N ~ R I O S C . 4 - F I L A S DE EVENTOSAPENDICE
DEXTENSÕES DO INTERPRETADOR DE C ~ D I G O P
ÍNDICE DE FIGURAS
organização ~ierárquica do Sistema P
~eração de Segmentos de código pelo Compilador
~ealização de "overlay" na Máquina P organização Geral da Máquina P
O Stack da Máquina P
Exemplo de
locação
Dinâmica de variáveisUnidade Blocada para E/S
Hierarquia dos Comandos no Sistema Operacional operação do Editor de Textos
operação do Compilador e do Montador operação do Linkeditor
~ormação da Tabela de Segmentos para ~xecução
das
unções
do Sistema Operacionalorganização das Unidades Blocadas de E/S Hierarquia das operações de E/S no Sistema P
111.1- Arquiteturas a Multiprocessadores
111.2- Um Grafo de precedência entre Processos
111.3- Execução de ~egiões críticas por Processos
Concorrentes
111.4- ~mplementação de semáforos com Filas
111.5- Paralelismo na Avaliação de uma Expressão Aritmética
111.6- Utilização dos Comandos
--
fork/join/guit 111.7- utilização dos Comandos cobeqin/coend 111.8- Uso dos Comandos--
fork/join/quit parasincronização de Processos
111.9- Uso dos Comandos cobegin/coend para sincronização de Processos
xii IV. 1- IV. 2- IV. 3- IV. 4- IV. 5- IV. 6- IV. 7- IV. 8-
Grafo de precedência entre Processos
Concorrentes do Sistema P 60
Árvore de Processos no Sistema P 60
Arvore de Stacks (Cactus-Stack) para
Processamento Concorrente no Sistema P 62
Arquitetura a Multiprocessadores Virtuais com
toda a ~ e m ó r i a Centralizada 63
Arquitetura a Multiprocessadores Virtuais com
~emórias Distribuídas e Centralizada
Organizadas Estaticamente 64
Arquitetura a Multiprocessadores Virtuais com
~emórias Distribuídas e Centralizada
Organizáveis Dinamicamente 66
~nterrupção dos Processadores Virtuais 69
Formas ~ossíveis de ~egiões críticas na
~xtensão Proposta sobre o Pascal UCSD 74
V.l- Nodo Representativo de um Processo
V.2- Estados dos Processos Concorrentes e
~ransições entre Eles
V.3- Exemplo de uma Arvore de Processos
V-4- Hierarquia das Operações de E/S para
Processamento Concorrente
xiii
ÍNDICE DE ALGORITMOS
11.1- Funcionamento do Interpretador de código P 12
11.2- Exemplo de
locação
~inâmica de variáveis 1511.3- Algoritmo Básico do Sistema Operacional 23
111.1- operação "test-and-set" 111.2- Espera Ocupada
111.3- Uma Implementação de ~egiões criticas
Condicionais
IV.l- Exemplo da concorrência Introduzida no Sistema P
IV.2- Exemplo de construção de Monitores na ~xtensão Proposta sobre o Pascal UCSD
Entrada e saída das ~egiões críticas do ~ Ú c l e o operação Básica de Escalonamento
Tratamento de 1nterrupçÕes de "Time-Slice" Alteração de Prioridade para ~xecução
~nicialização de um Programa Concorrente
Término de um Programa Concorrente
~nicialização de um Processo Concorrente
Ativação simultânea de Processos Concorrentes Término de um Processo Concorrente
~nicialização de um semáforo Binário
Teste de uma Fila de semáforo
operação P sobre semáforos Binários operação V sobre semáforos Binários
xiv
Teste de uma Fila de Eventos 98
operação wait sobre Filas de Eventos 99
operação signal sobre Filas de Eventos 99
operação para Registrar Erros de E/S 103
operação para Verificar a ocorrência de Erros
de E/S 103
Teste Automático de ocorrência de Erros de E/S 103
Um Monitor para as Unidades de E/S 105
~timização dos Movimentos dos Braços dos
Discos 109
operações para Verificar o ~érmino de
operações ~ s s h c r o n a s de E/S 110
Tratamento de 1nterrupçÕes por Final de
operações de E/S 111
operações para Entrada e saída de Regiões
Críticas sobre Diretórios 112
utilização de um Buffer Circular através de
semáforos 123
utilização de um Buffer Circular através de
semáforos 123
utilização de um Buffer Circular através de
Regiões críticas Simples 124
utilização de um Buffer Circular através de
Regiões críticas Simples 125
utilização de um Buffer Circular através de
Regiões críticas Condicionais 125
utilização de um Buffer Circular através de
Regiões criticas Condicionais 126
utilização de um Buffer Circular através de
Filas de Eventos 126
utilização de um Buffer Circular através de
Filas de Eventos 127
Gerenciamento de um Buffer Circular através de
Trocas de Mensagens 129
Concorrente 130 B.11- Gerenciamento de um Buffer Circular em Modula 131 B.12- utilização de CSP para Gerenciar um Buffer
Circular 132
B.13- utilização de DP para Gerenciar um Buffer
Circular 133
B.14- Gerenciamento de um Buffer Circular em Ada 135 B.15- Gerenciamento de um Buffer Circular em Edison 136
xvi
~ N D I C E DE TABELAS
11.1- Registradores da ~ á q u i n a P 11 11.2- operações para Alocar e Remover variáveis
Em sistemas de computação é geralmente possível identi
-
ficar tarefas com um certo grau de independência entre si e que possam, por essa razão, ser executadas com algum paralelismo. O aproveitamento dessas possibilidades de execução simultânea es-tá ligado à eficiência do sistema em questão e à otimização do
uso de seus recursos. A palavra recurso engloba todos os entes
de que um programa possa precisar para sua execução, ou seja,
processadores
,
memória, dispositivos periféricos, variáveis, etc.Assim, por exemplo, a execução paralela de tarefas relativamen-
te independentes otimiza o aproveitamento dos recursos de pro
-
cessamento do sistema, no sentido em que o bloqueio de uma de
-
terminada tarefa libera o processador para a execução de uma ou
-
tra.
A classe de programas que podem beneficiar-se com a
possibilidade de execução paralela é muito ampla e engloba tipi
-
camente Sistemas Operacionais, Sistemas para simulação e Siste- mas para operação em Tempo Real, entre outros. Nesses programas
é usual atribuir-se a denominação de processos às diversas tare -
£as que os compõem, sendo particularmente chamados processos
-
dis-juntos ou processos concorrentes, respectivamente nos casos de serem ou não completamente independentes entre si. A execução de
processos concorrentes é particularmente problemática, uma vez
que eles compartilham recursos do sistema, quer por necessida
-
des de competição ou de cooperação. De qualquer forma, para que
possa ser garantida a integridade desses recursos compartilha
-
dos e não sejam imprevisiveis os resultados de um processamento
concorrente sobre eles, é imprescindível que sua utilização se-
ja disciplinada. Especificamente, apenas um processo deve utili zá-10s de cada vez e fazê-lo por meio de operações compatíveis
com sua natureza. Os trechos de código através dos quais proces
-
nados regiões críticas desses processos sobre os recursos. O pro
-
blema de sincronizar a execução dessas regiões criticas no tempoa
e, portanto, de importância fundamental no desenvolvimentode pro
-
gramas concorrentes e é usualmente denominado problema de exclu-
são mútua entre processos concorrentes.
-
Os desenvolvimentos mais recentes em processamento con- corrente têm-se dirigido no sentido de definir linguagens de al- to nível para programação concorrente (ver "discussão" em GOOS").
través
dessas linguagens podem ser identificados processos con-correntes como partes de programas, podem ser especificadas as
relações de precedência (e de concorrência) entre esses proces
-
sos, e podem-se programar regiões críticas devidamente sincroni-
zadas entre si. ~ l é m das vantagens Óbvias de se utilizar lingua-
gens de alto nível, há ainda a possibilidade de realizar testes
em tempo de compilação que visem auxiliar na manutenção da inte- gridade dos recursos envolvidos. A realização em tempo de execu-
ção das funções programadas em alto nível é então deixada a car-
go de um pequeno conjunto de procedimentos, usualmente chamado
núcleo, onde é então gerenciada a execução concorrente dos diver -
sos processos.
O objetivo deste trabalho é propor uma extensão do Sis-
tema Pascal UCSD (também conhecido como Sistema P) para processa
-
mento concorrente. Esse Sistema foi desenvolvido pela Universida -
de da ~alifórnia em San Diego e tem o objetivo de operar com sis
-
tema mono-usuário para o desenvolvimento de programas escritos em Pascal (WIRTH 42, JENSEN & WIRTH~' ) em micro/minicomputadores. A
principal característica do Sistema P é a existência de uma má
-
quina virtual (a máquina P) sobre a qual ele funciona. Essa má
-
quina virtual é um interpretador de um código intermediário (o
código P) resultante da compilação dos programas escritos em Pas
-
cal e é responsável pelo alto grau de portabilidade do Sistema :
apenas o interpretador precisa ser reescrito para que o Sistema
funcione em diferentes ambientes. A escolha desse Sistema como
base para uma proposta de programação concorrente foi devida a essa alta portabilidade e ao fato de haver uma grande quantidade
cal tem-se tornado bastante popular entre os usuários de siste-
mas de pequeno
e
médio porte.Na extensão do Sistema P para processamento concorren- te podem ser identificadas duas linhas principais de trabalho: a adaptação da arquitetura da máquina P e a extensão da lingua- gem Pascal UCSD; A primeira linha encontra-se descrita em MOT-
TA^^
,
onde são investigadas arquiteturas para multiprocessamen-to. A extensão da linguagem Pascal UCSD para programação concor
-
rente é o tema principal do presente trabalho, que propõe tam-
bém um núcleo que realize as funções do processamento concorren
-
te. Ao longo dos diversos capítulos são feitas referências a
M O T T A ~ ~ , em pontos onde se.tornam necessários contatos mais
h-
timos com a arquitetura utilizada.
Este trabalho encontra-se organizado em mais cinco ca- pítulos e quatro apêndices. O capítulo I1 apresenta as princi- pais características do Sistema P em sua versão original como
sistema para programação seqüencial. Nele são descritos a máqui -
na
P
e o Sistema Operacional, sendo dada especial ênfase às ca-racterísticas relevantes à extensão para processamento concor
-
rente. No capítulo I11 são apresentadas em uma ordem aproximada -
mente histórica as principais técnicas já desenvolvidas para a sincronização de processos concorrentes e para a especificação da
concorrência entre eles. O principal objetivo desse capítulo é
fornecer uma visão geral do desenvolvimento das técnicas de pro
-
gramação concorrente, com vistas a apoiar uma escolha para a ex
-
tensão do Sistema P. O capítulo IV apresenta algumas arquitetu-
ras a multiprocessadores virtuais adequadas ao processamento con
-
corrente pretendido para o Sistema P e propõe extensões ao Pas-
cal UCSD. Um núcleo que realize essas extensões é descrito no
capitulo V, que utiliza a linguagem Pascal para especificação
dos algoritmos. O capítulo VI fornece uma breve discussãode a1
-
guns pontos especiais. Ao final da documentação encontram-se3qua -
tro apêndices (A, B, C e D) que fornecem respectivamente infor-
mações sobre alguns procedimentos intrínsecos exclusivos ao Pas
-
c u t i d o s no c a p í t u l o 111, um resumo d a s e x t e n s õ e s p r o p o s t a s so- b r e o P a s c a l UCSD, e d e s c r i ç ã o d e algumas e x t e n s õ e s do i n t e r
-
p r e t a d o r n e c e s s á r i a s p a r a d a r s u p o r t e a p r o c e s s a m e n t o c o n c o r-
r e n t e .O SISTEMA P
E s t e c a p í t u l o d e s t i n a - s e a d a r uma v i s ã o g e r a l do S i s
-
tema P e m s u a v e r s ã o 1 . 5 . O m a t e r i a l a p r e s e n t a d o f o r n e c e a s i n f o r m a ç õ e s n e c e s s á r i a s à compreensão d o s próximos c a p í t u l o s , e p o r t a n t o é dada ê n f a s e à s c a r a c t e r í s t i c a s d e alguma forma re - l e v a n t e s 5 s u a e x t e n s ã o p a r a d e s e n v o l v i m e n t o d e programas con-
c o r r e n t e s . U m a d e s c r i ç ã o d e t a l h a d a d e t o d a e s s a v e r s ã o do S i s-
tema P e d e s e u u s o pode s e r e n c o n t r a d a e m SHILLINGTON & ACK- L A N D ~ ~ ~ em B O W L E S ~.
Ao l o n g o d o t e x t o s e r ã o e n c o n t r a d a s r e f e - r ê n c i a s a p r o c e d i m e n t o s i n t r í n s e c o s d a linguagem P a s c a l que não fazem p a r t e d e s u a d e f i n i ç ã o o r i g i n a l (JENSEN & WIRTH 2 8 ),
sen- do recomendado q u e s e c o n s u l t e o a p ê n d i c e A d e s t a documentação, onde s ã o d e s c r i t a s e s s a s p a r t i c u l a r i d a d e s .O S i s t e m a P f o i d e s e n v o l v i d o p e l o I n s t i t u t o d e S i s t e - mas d e ~ n f o r m a ç ã o do campus d e San Diego da U n i v e r s i d a d e d a ~ a l i f ó r n i a . Seu p r o j e t o f o i o r i e n t a d o d e modo a que p u d e s s e f u n c i o n a r em micro/minicomputadores como s i s t e m a mono-usuário p a r a o d e s e n v o l v i m e n t o d e programas s e q u e n c i a i s em P a s c a l . Com o o b j e t i v o d e r e d u z i r a d e p e n d ê n c i a do S i s t e m a s o b r b o hardware e m q u e f u n c i o n a , f o i c r i a d a uma máquina v i r t u a l , a máquina P
,
q u e e x e c u t a um c ó d i g o i n t e r m e d i á r i o , o c ó d i g o P. O r e s u l t a d o é um s i s t e m a e s c r i t o q u a s e t o d o e m P a s c a l , com a l t o g r a u d e p o r t a b i l i d a d e dado p e l a máquina P . Apenas o i n t e r p r e t a d o r do c ó d i g o P é e s c r i t o na linguagem d a máquina r e a l , c o n s t i t u i n d o a Única p a r t e d o S i s t e m a q u e d e v e s e r r e e s c r i t a p a r a a d a p t á - l o a o funcionamento em o u t r o a m b i e n t e . A f i g u r a 11.1 i l u s t r a a o r g a n i z a ç ã o h i e r á r q u i c a do S i s t e m a P . No n í v e l mais b a i x o e n c o n t r a - s e o p r o c e s s a d o r r e a l , c u j a a t r i b u i ç ã o é e x e c u t a r o i n t e r p r e t a d o r ; para e l e o código Pé um c o n j u n t o d e dados q u e devem s e r manipulados d e a c o r d o com o s a l g o r i t m o s d e i n t e r p r e t a ç ã o . O n í v e l i n t e r m e d i á r i o é o p r ó
-
p r i o i n t e r p r e t a d o r , q u e s i m u l a uma máquina v i r t u a l a t r a v é s d a execução do c ó d i g o P e x i s t e n t e em s e u e s p a ç o d e endereçamento. O S i s t e m a O p e r a c i o n a l , q u e e n g l o b a t o d o s o s programas e s c r i t o s e m P a s c a l , ocupa o n í v e l h i e r a r q u i c a m e n t e m a i s a l t o . SISTEMA P SISTEMA OPERACIONAL (PASCAL) C ~ D I G O P INTERPRETADOR (LINGUAGEM DO PROCESSADOR REAL) C ~ D I G O DA MÁQUINA REAL PROCESSADOR FIGURA 11.1-
o r g a n i z a ç ã o ~ i e r á r q u i c a do S i s t e m a P A s próximas s e ç õ e s d e s t e c a p í t u l o s ã o d e d i c a d o s ã apre-
s e n t a ç ã o do S i s t e m a P e m s u a e s t r u t u r a e funcionamento. A se- ç ã o 1 1 . 2 é d e d i c a d a à t é c n i c a d e seqmentação a d o t a d a no p r o j e - t o do S i s t e m a P . Na s e ç ã o 1 1 . 3 é a p r e s e n t a d a a a r q u i t e t u r a d a máquina P , i n c l u i n d o i n t e r p r e t a d o r , memória e u n i d a d e s d e e n-
t r a d a e s a í d a d e dados (uma d e s c r i ç ã o mais d e t a l h a d a pode ser e n c o n t r a d a e m M O T T A ~ ~ ) . O S i s t e m a O p e r a c i o n a l é d e s c r i t o na s e ç ã o 1 1 . 4 , onde s ã o a p r e s e n t a d o s s e u s p r i n c i p a i s a l g o r i t m o s e e s t r u t u r a s d e d a d o s .1 1 . 2 - SEGMENTACÃO NO SISTEMA P
O Sistema P f o i concebido p a r a f u n c i o n a r em computado
-
r e s de pequeno e médio p o r t e (micro/minicomputadores) e , por e s s a r a z ã o , o espaço de endereçamento de seu processador v i r - t u a l f o i l i m i t a d o em um número r e l a t i v a m e n t e pequeno de pala- v r a s ( 3 2 K p a l a v r a s de 1 6 b i t s , v e r item 1 1 . 3 . 2 ) . Aliada a e s s e f a t o e x i s t e a r e s t r i ç ã o u s u a l de quantidade de memória d i s p o n í - v e l na c l a s s e dos micro/minicomputadores. Por exemplo, micro- processadores 8085 e minicomputadores PDP-11, p a r a o s q u a i s e- xistem implementaçÕes do Sistema P , endereçam apenas 6 4 K b y t e s de memória, p a r t e dos q u a i s é u t i l i z a d a p e l o i n t e r p r e t a d o r , r e-
duzindo a i n d a mais seu espaço de endereçamento.Com o o b j e t i v o de o t i m i z a r a u t i l i z a ç ã o do espaqo de endereçamento do processador v i r t u a l , o Sistema P i n c o r p o r a o c o n c e i t o de segmentação, que p o s s i b i l i t a a execução de um pao- grama sem que todo o código P e s t e j a na memória, sendo c a r r e g a
-
do quando n e c e s s á r i o .O c o n t r o l e d e s s a segmentação é f e i t o no p r ó p r i o t e x t o do programa em P a s c a l , a t r a v é s da u t i l i z a ç ã o de uma c l a s s e es- p e c i a l de r o t i n a s , chamadas segment procedure e segment func- t i o n . Essas funcionam da mesma forma que a s procedures e func- t i o n s do P a s c a l s t a n d a r d , exceto quanto 5 c r i a ç ã o , p e l o compi- l a d o r , d e um segmento de código separado para cada uma d e l a s , sendo e s t e s t r a z i d o s p a r a a memória da máquina P quando da cha - mada d a s r o t i n a s r e s p e c t i v a s .
A compilação d e qualquer programa P a s c a l no Sistema P g e r a um arquivo de código que contém p e l o menos um segmento de código (correspondente ao programa p r i n c i p a l , exceto em casos de compilação s e p a r a d a ) e um d i c i o n á r i o d e segmentos, que i d e n
-
t i f i c a e l o c a l i z a cada segmento de código d e n t r o do arquivo. Af i g u r a 1 1 . 2 i l u s t r a a compilação do programa EXEMPLO, com a ge
-
r a ç ã o de um arquivo com c i n c o segmentos de código.TEXTO EM PASCAL ARQUIVO DE C ~ D I G O program EXEMPLO; s egment p r o c e d u r e A; procedure A l ; b e g i n
. . .
-
end; b e g i n. . .
-
end; segment p r o c e d u r e B; segment p r o c e d u r e B 1 ; b e g i n...
A;...
-
end; segment p r o c e d u r e B2; b e g i n...
end; b e g i n...
B 1 ;...
B2;...
-
end; b e g i n...
A;...
B;...
-
end. COMPILADOR P DICIONÁRIO DE SEGMENTOS SEGMENTO DE C ~ D I G O EXEMPLO SEGMENTO DE &DIGO A SEGMENTO DE C ~ D I G O B SEGMENTO DE C ~ D I G O B 1 SEGMENTO DE C ~ D I G O B 2FIGURA 1 1 . 2
-
Geração d e Segmentos de Código p e l o Compiladorq u i n a P somente d u r a n t e a execução da segment procedure ou segment f u n c t i o n c o r r e s p o n d e n t e . P e l o f a t o d e o a r q u i v o d e c6
-
d i g o e s t a r armazenado em d i s p o s i t i v o s d e memória d e massa ( g e - r a l m e n t e d i s c o s ) , o p r o j e t o d e programas segmentados deve e v i-
t a r chamadas n ã o - r e c u r s i v a s muito f r e q u e n t e s a r o t i n a s do ti-po segment, uma vez que a cada uma d e s s a s chamadas correspon- d e uma c a r g a do segmento d e código r e s p e c t i v o .
A segmentação d e programas em P a s c a l no Sistema P tem um e f e i t o semelhante ao do " o v e r l a y " u t i l i z a d o em c e r t o s computadores, que é o d e d o i s ou mais t r e c h o s de código com- p a r t i l h a r e m a mesma á r e a d e memória. Na f i g u r a 11.3 e s t á r e -
p r e s e n t a d a a ocupação da memória da máquina P d u r a n t e a execu- ção do programa EXEMPLO da f i g u r a 1 1 . 2 . Observe-se que o seg
-
mento de código correspondente ao programa p r i n c i p a l e s t á sem- p r e r e s i d e n t e na memória, e que segmentos chamados de um mesmo segmento compartilham a mesma á r e a de memória.SEGMENTO DE C ~ D I G O EXEMPLO SEGMENTO DE C ~ D I G O EXEMPLO SEGMENTO DE C ~ D I G O A SEGMENTO DE C ~ D I G O B SEGMENTO DE C ~ D I G O EXEMPLO SEGMENTO DE C ~ D I G O SEGMENTO DE C ~ D I G O B 1 SEGMENTO DE C ~ D I G O EXEMPLO SEGMENTO DE C ~ D I G O EXEMPLO
I
SEGMENTO1
SEGMENTO DE C ~ D I G O B 1 ( a ) i n í c i o da execução SEGMENTO DE C ~ D I G O A i e EXEMPLO ( d ) ch ( C ) SEGMENTO DE C ~ D I G O EXEMPLO SEGMENTO DE C ~ D I G O B SEGMENTO DE C ~ D I G O B 2 amada d e B 1 em B ( b ) chamada de A em EXEMPLO ( e ) chamada de A em B 1 ( c ) chamada d e B em EXEMPLO ( f ) chamada d e B 2 em B11.3- A ARQUITETURA DA
MAQUINA
PA máquina P p o s s u i um processador v i r t u a l que manipu- l a p a l a v r a s de 1 6 b i t s organizadas em p i l h a s , sendo cada p a l a - v r a composta por 2 b y t e s de 8 b i t s . A f i g u r a 1 1 . 4 a p r e s e n t a a organização g e r a l da máquina P . 'Nela podem s e r v i s t o s o i n t e r - p r e t a d o r , a memória e unidades p a r a e n t r a d a e s a í d a de dados.
2ndereços s u p e r i o r e s U N I DADES INTERPRETADOR
- /
2ndereços i n f e r i o r e s 1 6 b i t sFIGURA 1 1 . 4
-
organização Geral da Máquina PA memória da máquina P e s t á d i v i d i d a em duas p i l h a s que crescem em s e n t i d o s c o n t r á r i o s : o s t a c k ( i t e m 11.3.3)
--
,
que contém segmentos de código e dados de alocação e s t á t i c a , e o heap ( i t e m 11.3.41, que contém dados de alocação dinâmica. Na base do heap e x i s t e uma á r e a d e dados chamada SYSCOM, a Área d e comunicação do Sistema, que contém dados comuns ao i n t e r p r e -t a d o r e a o S i s t e m a O p e r a c i o n a l . 11.3.2- O INTERPRETADOR O I n t e r p r e t a d o r é a Unidade C e n t r a l d e Processamento d a máquina P , s e n d o e n c a r r e g a d o d a execução d o c ó d i g o P . P a r a t a n t o , u t i l i z a o c o n j u n t o d e r e g i s t r a d o r e s i n t e r n o s d e s c r i t o n a t a b e l a 11.1. O s i g n i f i c a d o d e s s e s r e g i s t r a d o r e s e n c o n t r a - s e e s c l a r e c i d o nos próximos i t e n s d a s e ç ã o 1 1 . 3 . Todos o s r e g i s - t r a d o r e s s ã o d e 1 6 b i t s e a l i n h a d o s p o r p a l a v r a s , com exceção d e IPC, a l i n h a d o p o r b y t e s ( o q u e l i m i t a em 64K b y t e s a memó- r i a d a máquina P)
.
SEGment p o i n t e r+---
~ f MBOLO SP NP J T A B Most recent Proceduni
NOME S t a c k P o i n t e r N e w P o i n t e r Jump TABle pointerBASE
I
gram C o u n t e r BASE p r o c e d u r e IPC DESCRIÇÃO Aponta p a r a o t o p o do s t a c k Aponta p a r a o t o p o do heap Aponta p a r a a t a b e l a d eatributos da rotina em execução
I n t e r p r e t e r Pro- -- -- - Aponta p a r a o d i c i o n á r i o d e r o t i n a s do segmento a o q u a l p e r t e n c e a r o t i n a em execuçao Aponta p a r a o r e g i s t r o d e a t i v a ç ã o d a rotina em execução
-
Aponta p a r a o r e g i s t r o d e a t i v a ç ã o d a r o t i n a d e n í v e l l é x i c o O d e a t i v a ç ã o mais r e c e n t e Aponta p a r a o próximo c ó d i g o P a s e r e x e c u t a d o TABELA 11.1-
R e g i s t r a d o r e s da ~ á q u i n a PA função do i n t e r p r e t a d o r pode s e r resumida segundo o a l g o r i t m o 11.1. A s d i v e r s a s t é c n i c a s e x i s t e n t e s p a r a a i n t e r
-
p r e t a ç ã o de códigos i n t e r m e d i á r i o s encontram-se d e s c r i t a s em MOTTA 2. b e g i n IPC : = e n d e r e ç o i n i c i a l d e execução; w h i l e t r u e do---
b e g i n PCODE : = b y t e e n d e r e ç a d o p o r IPC; IPC := IPC + 1; i n t e r p r e t a PCODE end ;-
ALGORITMO 11.1
-
Funcionamento do I n t e r p r e t a d o r de código PO s códigos P executados p e l o i n t e r p r e t a d o r e s t ã o d i v i
-
d i d o s nas s e g u i n t e s c l a s s e s :-
Busca, indexação, armazenamento e t r a n s f e r ê n c i a d e v a r i á v e i s ;- A r i t m é t i c a e comparações de t o p o de s t a c k ;
-
Desvios;-
Chamadas e r e t o r n o s d e r o t i n a s ;-
R o t i n a s de s u p o r t e dos programas do Sistema.Alguns d e s s e s códigos a c a r r e t a m o c r e s c i m e n t o do stack ( c a r g a no t o p o do s t a c k e chamadas de r o t i n a s ) , o u t r o s causam s e u d e c r e s c i m e n t o ( r e t i r a d a do t o p o do s t a c k , r e t o r n o de r o t i - nas e operações a r i t m é t i c a s )
.
Existem d o i s códigos P d e i m p o r t â n c i a e s p e c i a l p a r a e s t e t r a b a l h o . s ã o o s códigos d e chamada a r o t i n a e x t e r n a (CXP) e d e chamada a r o t i n a s t a n d a r d ( C S P ) . É c o n s i d e r a d a r o t i n a ex- t e r n a q u a l q u e r r o t i n a c u j o código s e e n c o n t r e em um segmentod e código d i f e r e n t e d a q u e l e d e que a chamada s e o r i g i n o u . Sua i d e n t i f i c a ç ã o é f e i t a p e l o número do segmento e p e l o número da r o t i n a d e n t r o do segmento ( o corpo do segmento é c o n s i d e r a
-
do s u a r o t i n a d e número 1 ) . R o t i n a s s t a n d a r d s ã o p a r t e do p r ó - p r i o i n t e r p r e t a d o r , sendo em s u a m a i o r i a procedimentos de con-
t r o l e em tempo de execução, ou que requerem uma c e r t a proximi-
dade ao hardware (como operações b á s i c a s de e n t r a d a e s a í d a ) . s ã o i d e n t i f i c a d a s por um Único número.O STACK
O s t a c k da máquina P é a r e g i ã o de sua memória d e s t i - nada à execução do código P , a o armazenamento d e v a r i á v e i s d e a l o c a ç ã o e s t á t i c a , e ao armazenamento t e m p o r á r i o d e dados u t i
-
l i z a d o s como operandos na a v a l i a ç ã o d e e x p r e s s õ e s . O t o p o do s t a c k é apontado p e l o r e g i s t r a d o r S P , como mostrado na f i g u r a 1 1 . 5 ( a ).
A f i g u r a I I . S ( a ) mostra o s t a c k da máquina P d u r a n t e a execução d e uma determinada r o t i n a . O segmento d e código con
-
t é m , e n t r e o u t r o s , o código da r o t i n a em execução. Quando a-
c o r r e a chamada da r o t i n a , o i n t e r p r e t a d o r compõe um segmento d e dados, s o b r e o q u a l s e desenvolve dinamicamente uma á r e a
( a p i l h a d e a v a l i a ç ã o ) d u r a n t e a execução da r o t i n a .
O segmento d e código e o segmento d e dados aparecem
um pouco mais d e t a l h a d o s na f i g u r a 1 1 . 5 ( b )
,
na q u a l e s t ã o i n - d i c a d a s a s funções d e a l g u n s dos r e g i s t r a d o r e s da máquina P . O segmento de código compõe-se de s e ç õ e s de código (uma p a r a cada r o t i n a ) , i d e n t i f i c a d a s por um d i c i o n á r i o d e r o t i n a s . E s - s e d i c i o n á r i o é apontado p e l o r e g i s t r a d o r SEG, e o s r e g i s t r a - d o r e s J T A B e I P C apontam p a r a a s e ç ã o d e código da r o t i n a em execução. O segmento de dadosé
composto por uma á r e a d e p a r 2-
metros e v a r i á v e i s l o c a i s (com dados d e a l o c a ç ã o e s t á t i c a ) , e por um r e g i s t r o d e a t i v a ç ã o p a r a o q u a l a p o n t a o r e g i s t r a d o r MP. O r e g i s t r a d o r BASE a p o n t a p a r a o r e g i s t r o d e a t i v a ç ã o da r o t i n a d e n í v e l l é x i c o O (em c u j o segmento de dados encontram- - s e a s v a r i á v e i s g l o b a i s ) , c o i n c i d i n d o com MP quando e l a e s t áI
d i c i o n á r i o / / de r o t i n a s seções de das r o t i n a s segmento de do segmento- - -
( a ) (b FIGURA 1 1 . 5-
O Stack da ~ á q u i n a P t em execução. A f i n a l i d a d e do r e g i s t r o de a t i v a ç ã o é armazenar o e s - tado do processador v i r t u a l quando da chamada d a r o t i n a . Nele s i o guardadas t o d a s a s informações que p e r m i t i r ã o r e s t a u r a r o ambiente do processador p a r a c o n t i n u a r a execução d a r o t i n a que gerou a chamada. ~ l é m d i s s o , o r e g i s t r o de a t i v a ç ã o contém os chamados l i n k dinâmico e l i n k e s t á t i c o . O l i n k dinâmico é o endereço do r e g i s t r o d e a t i v a ç ã o da r o t i n a que o r i g i n o u a cha- mada da que s e encontra em execução.fl
u t i l i z a d o p a r a r e s t a u-
r a r o v a l o r de MP na hora do r e t o r n o . O l i n k e s t á t i c o aponta p a r a o r e g i s t r o de a t i v a ç ã o da r o t i n a que envolve a r o t i n a em execução e que tem n í v e l l é x i c o imediatamente i n f e r i o r ao des-p a r h e t r o s e variáveis locais r e g i s t r o d e a t i v a ç ã o segmento de dados g.iiiha de a v a l i a ç ã o
- - -
\ \ \ x'
L L \ Lt a . O s l i n k s e s t á t i c o s formam uma c a d e i a que permite a c e s s a r todas a s v a r i á v e i s g l o b a i s ã r o t i n a em execução. Mais d e t a - l h e s sobre e s s e s l i n k s podem s e r encontrados em BARBOSA & VAL
-
LE.
11.3.4- O HEAP
A manipulação de v a r i á v e i s de alocação dinâmica no Sistema P é f e i t a sobre o heap a t r a v é s das r o t i n a s standard new, mark e r e l e a s e , que atuam como d e s c r i t o na t a b e l a 1 1 . 2
.
- -
A f i g u r a 1 1 . 6 i l u s t r a a u t i l i z a ç ã o d e s s e s r e c u r s o s na execu- ção do programa TESTAHEAP ( a l g o r i t m o 1 1 . 2 ) . Deve s e r observa- do que a operação r e l e a s e elimina todos os i t e n s alocados no heap depois da operação mark, independentemente do escopo dos apontadores envolvidos. program TESTAHEAP; t y p e e s t r u t u r a = r e c o r d
.
.
.
e n d ;-
p r o c e d u r e A; v a r p2: f e s t r u t u r a ;-
b e g i n new(p2) end; p r o c e d u r e B; v a r p l : + e s t r u t u r a ; m a r k p t r : f i n t e g e r ;-
b e g i n m a r k ( m a r k p t r ) ; n e w í p l ) ; A; r e l e a s e ( m a r k p t r ) end ;-
b e g i n B end.-
-
TABELA 1 1 . 2
-
operações p a r a Alocar e Remover v a r i á v e i s Dinamicamente new ( p ) mark ( p ) r e l e a s e ( . p ) mark (markptr ) p : = NP; N P := NP+
tamanho de pf p := NP NP := p HEAP new ( p l )-
.
.
.
new (.p2)4 - q
HEAP r e l e a s e (markptr)1
F I G U R A 11.6-
Exemplo delocação
~ i n â m i c a de v a r i á v e i sA máquina P p o s s u i um c o n j u n t o d e u n i d a d e s v i r t u a i s p a r a e n t r a d a e s a í d a d e d a d o s , mapeadas e m d i s p o s i t i v o s p e r i - f é r i c o s r e a i s p e l o i n t e r p r e t a d o r . E s s a s u n i d a d e s e s t ã o d i v i d i
-
d a s em d o i s g r u p o s : u n i d a d e s b l o c a d ã s (mapeadas em d i s c o s ou d i s p o s i t i v o s s e m e l h a n t e s ) e u n i d a d e s não-blocadas (mapeadas em t e r m i n a i s d e v í d e o , i m p r e s s o r a s , e t c . ) . A s u n i d a d e s b l o c a d a s s ã o t r a t a d a s como uma s e q ü ê n c i a d e b l o c o s d e tamanho (número d e b y t e s ) f i x o , como mostrado na f i g u r a 11.7. O número d e b l o c o s d e c a d a u n i d a d e depende do d i s p o s i t i v o f í s i c o p a r t i c u l a r a o q u a l e l a é a s s o c i a d a .I+-+
\
tamanho d e um b l o c oFIGURA 11.7
-
Unidade Blocada p a r a E/SA s u n i d a d e s não-blocadas
t ê m
no S i s t e m a P um s i g n i f i-
cada m a i s a b s t r a t o , s e n d o v i s t a s s i m p l e s m e n t e como f o n t e ou d e s t i n o d e uma s e q ü ê n c i a d e c a r a c t e r e s . A s u n i d a d e s d e e/s s ã o manipuladas p o r d u a s r o t i n a s s t a n d a r d do i n t e r p r e t a d o r , u n i t r e a d p a r a a e n t r a d a d e dados e u n i t w r i t e p a r a s a í d a . E s s e s s ã o o s p r o c e d i m e n t o s d e mais b a i - xo n i v e l p a r a e n t r a d a e s a í d a d e dados no S i s t e m a P e permi-
t e m a e n t r a d a ou s a í d a d e um número q u a l q u e r d e b y t e s d e ma- n e i r a s í n c r o n a ou a s s i n c r o n a . . Se a o p e r a ç ã o f o r s í n c r o n a , o programa q u e a s o l i c i t o u f i c a r á bloqueado a t é que e l a t e r m i r e . Caso c o n t r á r i o ( o p e r a ç ã o a s s í n c r o n a ),
o programa s e r á imedia- tamente r e a t i v a d o , e o t é r m i n o d a o p e r a ç ã o r e q u e r i d a p o d e r áser v e r i f i c a d o m a i s t a r d e a t r a v é s d a s r o t i n a s s t a n d a r d u n i t - w a i t e u n i t b u s y . pós a r e a l i z a ç ã o d e uma o p e r a ç ã o q u a l q u e r d e e n t r a d a ou s a í d a d e d a d o s , a r o t i n a s t a n d a r d i o r e s u l t f o r - n e c e r á um v a l o r i n t e i r o c o r r e s p o n d e n t e a o s u c e s s o com q u e a - o p e r a ç ã o f o i completada. E s s e v a l o r e n c o n t r a - s e armazenado e m um campo d a SYSCOM ( i t e m 1 1 . 3 . 1 )
.
O SISTEMA OPERACIONAL COMANDOS O S i s t e m a P u t i l i z a e m g e r a l um t e r m i n a l d e v í d e o pa-
r a i n t e r a ç ã o com o u s u á r i o .través
d e s s e t e r m i n a l o u s u á r i o emite comandos a o S i s t e m a O p e r a c i o n a l e d e l e r e c e b e r e s p o s t a . O s comandos e x i s t e n t e s e s t ã o d i s p o s t o s em n í v e i s que podem s e r o r g a n i z a d o s em uma á r v o r e d e comandos, conforme r e p r e s e n t a d o na f i g u r a 1 1 . 8 . A c a d a nodo d e s s a á r v o r e e s t á a s s o c i a d a uma l i s t a d e comandos e e s t a l i s t a ocupa a p r i m e i r a l i n h a d a t e l a quando a i n t e r a ç ã o e n t r e o u s u á r i o e o S i s t e m a O p e r a c i o n a l e n - c o n t r a - s e n a f a s e c o r r e s p o n d e n t e . Por exemplo, quando a i n t e - r a ç ã o s e e n c o n t r a no n í v e l m a i s e x t e r n o ( c o r r e s p o n d e n t e à r a - i z d a á r v o r e ),
a l i s t a d e comandos éE ( d i t , R ( u n , F ( i l e , C (omp, L ( i n k , X ( e c u t e , ACssem, D(ebug
onde a s l e t r a s m a i ú s c u l a s indicam a s chaves p a r a p a s s a r a um o u t r o n í v e l d e comandos ( n o c a s o d a r a i z , n e c e s s a r i a m e n t e a um n í v e l mais i n t e r n o ) .
O DESENVOLVIMJ$NTO DE PROG-S NO SISTEMA P
Um c o n c e i t o c e n t r a l a o p r o j e t o d a e s t r u t u r a d o S i s t e
-
ma P f o i o d e Arquivo d e T r a b a l h o ( " w o r k f i l e " ) . Um Arquivo d e T r a b a l h o pode ser v i s t o como uma á r e a d e r a s c u n h o u t i l i z a d a p a r a a r m a z e n a r programas t e m p o r a r i a m e n t e d u r a n t e s e u d e s e n v o l - vimento. No S i s t e m a P , o Arquivo d e T r a b a l h o E! c o n s t i t u í d o p r d u a s p a r t e s :Comandos para Ediçao de Textos, Compilaçao, e t c .
Comandos para Comandos par de Textos de Arquivos
Comandos par Comando para Caracteres de Ediçao Chaves para a t i v a r n í v e i s mais i n t e r n o s Comando Q ( u i t
-
r e t o r n o a n r v e i s mais externos F I G U R A 1 1 . 8-
H i e r a r q u i a d o s Comandos no S i s t e m a O p e r a c i o n a l-
Arquivo f o n t e , que contém o t e x t o d e urr, programa e s - c r i t o g e r a l m e n t e e m P a s c a l ou e m linguagem d e máqui - na;-
Arquivo d e c ó d i g o , q u e contém o c ó d i g o P r e s u l t a n t e d a compilação do t e x t o e m a l t o n i v e l ( g e r a l m e n t e e m P a s c a l ) ou o c ó d i g o do p r o c e s s a d o r r e a l , r e s u l t a n t e d a montagem do t e x t o e m linguagem d e máquina.N ~ O pode h a v e r m a i s d e um Arquivo d e T r a b a l h o p r e s e n -
t e no S i s t e m a P a o mesmc tempo. O Único Arquivo d e T r a b a l h o e- x i s t e n t e
é
e n t ã o u t i l i z a d o como o b j e t o " d e f a u l t " d a s o p e r a ç õ e s d e e d i ç ã o , compilação (ou montagem),
" l i n k e d i ç ã o " e execução.A s o p e r a ç õ e s d e c r i a ç ã o , remoção, e t c . , do Arquivo d e T r a b a l h o s ã o r e a l i z a d a s a t r a v é s do G e r e n t e d e Arquivos do S i s -
tema P ( " F i l e Manager" ou " F i l e r " )
,
que é a t i v a d o a t r a v é s .da chave F ( i t e m 1 1 . 4 . 1 ) . A s e l e ç ã o d e s s a chave s u b s t i t u i a l i n h a de comandos p o ronde s ã o a p r e s e n t a d o s a l g u n s dos comandos d i s p o n í v e i s p a r a a manipulação de a r q u i v o s . O s q u a t r o p r i m e i r a s comandos ( d e cha- v e s G , S I W e N) s ã o e s p e c í f i c o s p a r a a manipulação do Arquivo d e Trabalho. O s demais comandos podem s e r u t i l i z a d o s no t r a t a - mento d e q u a i s q u e r o u t r o s a r q u i v o s e r e a l i z a m a s funções Ige- r a i s de remoção, t r a n s f e r ê n c i a , e t c .
A p a r t e d e t e x t o do Arquivo d e Trabalho é ,manipulada a t r a v é s do E d i t o r d e T e x t o s , a t i v a d o p e l a chave E ( i t e m 11.4.11..
O s comandos d i s p o n í v e i s são:
O E d i t o r d e Textos do Sistema P é do t i p o conhecido como " o r i - e n t a d o p a r a t e l a " ( " s c r e e n - o r i e n t e d " ) , o que s i g n i f i c a que a t e l a do t e r m i n a l de v í d e o u t i l i z a d o f u n c i o n a como uma j a n e l a que p e r m i t e o b s e r v a r uma c e r t a porção do t e x t o que s e e s t á e d i
-
tando ( f i g u r a 1 1 . 9 ).
ARQUIVO DE TRABALHO-
(TEXTO) JANELA SOBRE O j ARQUIVO (TELA) I J F I G U R A 1 1 . 9-
operação do E d i t o r d e TextosA e t a p a de compilação ou montagem, quando não d e t e t a - dos e r r o s d e s i n t a x e , g e r a a p a r t e de código do Arquivo d e T r a
-
balho ( f i g u r a 1 1 . 1 0 ) . O Compilador é a t i v a d o a t r a v é s da chave C e o Montador a t r a v é s da chave A ( i t e m 1 1 . 4 . 1 ) . O ~comPi1adarARQUIVO A COMPILADOR (CÓDIGO P)
m
ARQUIVO OU TRABALHO (TEXTO) MONTADOR ARQUI V0 TRABALHO (CÓDIGO DO PROC.REAL)FIGURA 1 1 . 1 0
-
operação do Compilador e do Montadora t i v a d o d e s s a maneira é um compilador P a s c a l e g e r a código P ; e x e c u t á v e l p e l o processador v i r t u a l . Esse compilador f o r n e c e ao u s u á r i o a p o s s i b i l i d a d e de compilar separadamente t r e c h o s de seu programa. O montador a t i v a d o p e l a chave A é o chamado "montador genérico" do Sistema P . Esse montador possui uma par - t e que depende do processador r e a l e que deve s e r r e e s c r i t a a cada implementação do Sistema P , a fim de poder g e r a r código p a r a e s s e p r o c e s s a d o r . O Compilador e o Montador podem, opcio
-
nalmente, g e r a r um a r q u i v o com a l i s t a g e m r e s u l t a n t e da com-
p i l a ç ã o ou montagem.Se o código gerado não p o s s u i r e f e r ê n c i a s e x t e r n a s e
6
um programa completo, e n t ã o e l e pode s e r t r a n s f e r i d o p a r aum o u t r o arquivo e executado ( a t r a v é s da chave X , item 1 1 . 4 . 1 ) .
No caso de haver r e f e r ê n c i a s e x t e r n a s ou não s e t r a t a r de um programa completo, deve e n t ã o s e r r e a l i z a d a a operação de " l i n
-
kedição",
a t i v a d a p e l a chave L ( i t e m 1 1 . 4 . 1 ).
O " L i n k e d i t o r "assim a t i v a d o r e a l i z a a composição de um a r q u i v o d e código e- x e c u t á v e l a p a r t i r de o u t r o s arquivos de código. Um d e s s e s po - de s e r a p a r t e de código do Arquivo de Trabalho, como mostra- do na f i g u r a 11.11. Observe-se que a r q u i v o s d e código P podem
ARQUIVO EE TRABALHO (CÓDIGO P
ou
CÓDIGO DO PROC. REAL ARQUIVO DE CÓDIGO(EXECUTAVEL)
F I G U R A 11.11-
operação do ~ i n k è d i t o r s e r l i g a d o s a a r q u i v o s de código do p r o c e s s a d o r r e a l na compo- s i ç ã o do código f i n a l e x e c u t á v e l . Esse a r q u i v o pode e n t ã o s e r executado a t r a v é s d a chave Xj á
mencionada.No n í v e l d a r a i z d a á r v o r e d e comandos ( f i g u r a 1 1 . 8 ) e x i s t e também o comando R(.un, a t i v a d o p e l a chave R , que r e a l i - za a s e q ü ê n c i a d e operações compreendida p e l a compilação, " l i n - kedição" e execução, sem i n t e r v e n ç ã o do u s u á r i o .
O Sistema P f o r n e c e a i n d a a o u s u á r i o uma s é r i e d e p r o
-
gramas u t i l i t á r i o s , a t i v a d o s p e l a chave X. E s s e s programas com-
preendem, e n t r e o u t r o s , um E d i t o r de Textos o r i e n t a d o p a r a li- nhas, um Gerente de B i b l i o t e c a s e um compilador p a r a código P d a linguagem B A S I C .11.4.3- ALGORITMO BÃSICO
O S i s t e m a O p e r a c i o n a l pode s e r v i s t o como um grande programa e s c r i t o e m P a s c a l , do q u a l o Compilador, o E d i t o r d e T e x t o s , o Gerente d e Arquivos, e t c . , s ã o r o t i n a s do t i p o
seg-
ment, como d e s c r i t a s na s e ç ã o 1 1 . 2 , a t i v a d a s de acordo com o --andamento da i n t e r a ç ã o com o u s u á r i o . Todavia, o s u t i l i t á r i o s mencionados acima s ã o programas i n d e p e n d e n t e s e o a l g o r i t m o 1 1 . 3 f o r n e c e uma r e p r e s e n t a ç ã o r e a l i s t a do Sistema Operacio- n a l . Segundo e s s e a l g o r i t m o , a execução d e q u a l q u e r função s o -
program PASCALSYSTEM;
...
c o n s t maxseg =...
t y p e syscomrec = r e c o r d - - -SEGTABLE: array[O. .maxseg]
-
o£. . .
;end ;
-
v a r SYSCOM: f syscomrec;-
ch: c h a r ;...
segment p r o c e d u r e USERPROGRAM; (* segmento n? 1 *) b e g i n
. .
.
-
end;.
.
.
(* código do segmento p r i n c i p a l (n? O) d e PASCALSYSTEM; i n c l u i a l g u n s procedimentos i n t r í n s e c o s do Pas c a l UCSD e a l g u n s procedimentos p a r a c o n t r o l e em tempo d e execução *) b e g i n r e a d ( c h ) ;
w h i l e ch o ' H ' ( 2 h a l t *) do
- -
-
b e g i n
c a s e ch of
' C ' : b u s c a o código do Compilador em uma unidade b l o c a d a de e / s ;
end ;
a l t e r a a s 1 e 7 a maxseg d e SYSCOMf .SEGTABLE; USERPROGRAM; r e a d (ch) end
-
end.
-
l i c i t a d a p e l o u s u á r i o é r e a l i z a d a a t r a v é s d e uma chamada à r o
7
t i n a USERPROGRAM, d o t i p o segment. E s s a chamada, t r a d u z i d a e m c ó d i g o P , é uma chamada à p r i m e i r a r o t i n a e x t e r n a d o segmento d e n? 1 ( v e r i t e m 1 1 . 3 . 2 , chamadas a r o t i n a s e x t e r n a s ) . Como
-
o i n t e r p r e t a d o r e x e c u t a e s s a s chamadas atr avés d a c o n s u l t a a t a b e l a SYSCOM+.SEGTABLE, e n t ã o essa t a b e l a d e v e ser m o d i f i c a - d a a c a d a s o l i c i t a ç ã o do u s u á r i o . A f i g u r a 1 1 . 1 2 i l u s t r a a composição d e SYSCOM+.SEGTABLE a p a r t i r d e d i c i o n á r i o s d e s e g-
mentos d e c ó d i g o . E s s a t a b e l a p o s s u i maxseg p o s i ç õ e s (máximo d e segmentos p e r m i t i d o s no S i s t e m a ) , s e n d o q u e as d e númerosO e 2 a 6 são r e s e r v a d a s aos segmentos d e PASCALSYSTEM, p r e - e n c h i d a s a s s i m q u e o S i s t e m a é a t i v a d o , a p a r t i r do d i c i o n á
-
r i o d e segmentos g e r a d o e m s u a c o m p i l a ç ã o . A s demais e n t r a d a s d e SYSCOM+.SEGTABLE, d e números 1 e 7 a maxseg, são p r e e n c h i - d a s d e a c o r d o com a i n t e r a ç ã o com o u s u á r i o , também a ) p a r t i r d e um d i c i o n á r i o d e s e g m e n t o s . Dessa f o r m a , o segmento d e nú- mero O c o r r e s p o n d e sempre a o segmento p r i n c i p a l d e PASCALSYS- TEM e o d e número 1 é sempre r e l a t i v o a o segmento p r i n c i p a l doprograma q u e o u s u á r i o d e s e j a e x e c u t a r .
I
PASCALSYSTEMI
~ i c i o n á r i o d e segmentos de código do Compilador, do E d i t o r d e T e x t o s , e t c .Chamada ao Execuçao do Compi
segmento
1
USERPROGRAMI
t o r d e Textos , e t c .F I G U R A 1 1 . 1 2
-
~ o r m a ç ã o d a T a b e l a d e Segmentos p a r a ~ x e c u ç ã o d a sunções
do S i s t e m a Oper.aciona1Conforme f o i d i t o no i t e m 1 1 . 3 . 2 , o s c ó d i g o s ,P d e chamada a r o t i n a s e x t e r n . a s ( C X P ) e d e chamada a r o t i n a s s t a n - d a r d (CSP) foram d e g r a n d e i m p o r t â n c i a no p r o j e t o do S i s t e m a P e o s e r ã o e m s u a e x t e n s ã o a o d e s e n v o l v i m e n t o d e programas c o n c o r r e n t e s .
E
a t r a v é s d e l e s q u e o s p r o c e d i m e n t o s i n t r í n s e-
cos d a linguagem podem ser a c e s s a d o s p o r q u a l q u e r programa.~ l é m d a s o p e r a ç õ e s i n t r í n s e c a s à linguagem P a s c a l d e
-
f i n i d a s em JENSEN & WIRTH 2 e (como r e s e t , p u t , s u c c , r e a d , e t c . ),
o P a s c a l do S i s t e m a P i n c o r p o r a uma s é r i e d e o u t r a s ( p a r a ma- n i p u l a ç ã o d e s t r i n g s , o p e r a ç ã o d a s u n i d a d e s d e e n t r a d a e s a í - d a , e t c . )
.
Algumas d e s s a s o p e r a ç õ e s s ã o implementadas em l i n g u a - gem d e máquina ( n o i n t e r p r e t a d o r ) , p o r q u e s t õ e s d e e f i c i ê n c i a ou p o r n e c e s s i d a d e d e c o n t a t o com o hardware. E s t a s pertencem à c l a s s e d e r o t i n a s s t a n d a r d e s ã o chamadas a t r a v é s do c ó d i g o CSP
.
A s o p e r a ç õ e s q u e não n e c e s s i t a m s e r implementadas na linguagem.-do p r o c e s s a d o r r e a l s ã o e x e c u t a d a s d e forma i n t e r-
p r e t a d a a p a r t i r do c ó d i g o P . s ã o e s c r i t a s e m P a s c a l e fazem p a r t e do segmento p r i n c i p a l d e PASCALSYSTEM ( a l g o r i t m o 11.3),
sempre r e s i d e n t e na memória d a máquina P . E s s e segmento ocupa a p o s i ç ã o d e número O em SYSCOMf.
SEGTABLE ( i t e m 1 1 . 4 . 3 ) e den-
t r o d e l e a s r o t i n a s i n t r í n s e c a s encontram-se d e f i n i d a s e m u- m a ordem f i x a . O Compilador p o d e , p o r t a n t o , g e r a r chamadas dot i p o CXP a uma d e t e r m i n a d a r o t i n a do segmento O sempre que ne - c e s s á r i o .
O c o n j u n t o d e r o t i n a s s t a n d a r d e o c o n j u n t o d e r o t i - n a s do segmento p r i n c i p a l d e PASCALSYSTEM ( a l g o r i t m o 1 1 . 3 ) não s ã o r e s t r i t o s à implementação d e p r o c e d i m e n t o s i n t r í n s e c o s d a linguagem ( i t e m I I . 4 . 4 ) , mas também i n c l u e m v á r i o s procedimen
-
t o s n e c e s s á r i o s a o c o n t r o l e d a e x e c u ç ã o d e programas. E s s e s p r o c e d i m e n t o s i n c l u e m t i p i c a m e n t e a i n i c i a l i z a ç ã o d e algumas e s t r u t u r a s d e dados e s p e c i a i s , a v e r i f i c a ç ã o d e o c o r r ê n c i a d e e r r o s após uma o p e r a ç ã o d e e n t r a d a ou s a í d a d e d a d o s , o con
-
t r o l e d o s l i m i t e s d e a r r a y s e s e t s d u r a n t e o p r o c e s s o d e i n d e7
x a ç ã o , e t c .
No S i s t e m a P e s s a s f u n ç õ e s s ã o implementadas a t r a v é s d e r o t i n a s s t a n d a r d e r o t i n a s do segmento p r i n c i p a l d e PASCAL
-
SYSTEM, t r a t a d a s como e x t e r n a s d u r a n t e a compilação d e o u t r o s programas. Algumas o p e r a ç õ e s (como o c o n t r o l e d e e r r o s e m p r o - c e d i m e n t o s d e e/s) s ã o implementadas como r o t i n a s s t a n d a r d e o u t r a s (como a i n i c i a l i z a ç ã o a u t o m á t i c a d e v a r i á v e i s do t i p o f i l e ) implementadas como r o t i n a s e x t e r n a s . O Compilador s e en-
c a r r e g a d e g e r a r chamadas a e s s a s r o t i n a s d e m a n e i r a t r a n s p a - r e n t e a o programador.11.4.6- ORGANIZAÇÃO DAS UNIDADES BLOCADAS DE E/S
A s u n i d a d e s b l o c a d a s d e e n t r a d a e s a í d a d e dados do S i s t e m a P s ã o mapeadas p e l o i n t e r p r e t a d o r em d i s c o s ou d i s p o - s i t i v o s s i m i l a r e s . Cada uma d e s s a s u n i d a d e s é . c a r a c t & r i z a d a p e l a s c o n s t a n t e s f b l k s i z e e u e o v b l k , q u e indicam r e s p e c t i v a
-
mente o tamanho d e c a d a b l o c o ( " f i l e b l o c k s i z e " ) e m b y t e s e o Último b l o c o d a u n i d a d e ( " u n i t end-of-volume b l o c k " ).
A cons-
t a n t e f b l k s i z e é uma só p a r a t o d a s a s u n i d a d e s e o v a l o r usa- do na v e r s ã o 1 . 5 d o S i s t e m a P é 512. O s b l o c o s d e c a d a u n i d a - d e s ã o numerados d e O a u e o v b l k , sendo o s b l o c o s d e números Oe 1 r e s e r v a d o s p a r a o " b o o t s t r a p " do S i s t e m a . O s próximos q u a
-
t r o b l o c o s ( d e números 2 a 5 ) s ã o u t i l i z a d o s p a r a armazenar o d i r e t ó r i o d a u n i d a d e , sendo q u e o p c i o n a l m e n t e o s b l o c o s d e nÚ-
meros 6 a 9 podem c o n t e r uma c ó p i a d e s s e d i r e t ó r i o ( f i g u r a 1 1 . 1 3 ) . O s demais b l o c o s , numerados d e 6 (ou d e 1 0 ) a u e o v b l k s ã o ocupados p o r a r q u i v o s , sendo que c a d a a r q u i v o ocupa um nÚ - mero q u a l q u e r d e b l o c o s c o n t í g u o s .O d i r e t ó r i o d e a r q u i v o s d e uma u n i d a d e b l o c a d a pode s e r d e f i n i d o e m P a s c a l p e l a s e g u i n t e e s t r u t u r a :
c o n s t maxdir = 77; t y p e d i r r a n g e = O..maxdir; d i r e n t r y = r e c o r d d f i r s t b l k , d l a s t b l k : O . . u e o v b l k ; d i r e c t o r y = a r r a y [ d i r r a n g e
1
-
of d i r e n t r y ; d i r p = f d i r e c t o r y ; E s s a e s t r u t u r a r e p r e s e n t a o d i r e t ó r i o como um a r r a y com maxdir+
1 p o s i ç õ e s . Cada p o s i ç ã o ( d i r e n t r y ) é d e s t i n a d a à i d e n t i f i c a ç ã o d e um a r q u i v o , informando, e n t r e o u t r a s c o i - s a s , o s números do p r i m e i r o e do Último b l o c o ( r e s p e c t i v a m e n - t e d f i r s t b l k e d l a s t b l k ) ocupados p o r e l e na u n i d a d e . A s lde- m a i s i n f o r m a ç õ e s d e c a d a p o s i ç ã o s ã o r e l a t i v a s a o nome do a r - q u i v o , ao número d e b y t e s ocupadosno Ú l t i n o b l o c o e 5 d a t a e m q u e f o i r e a l i z a d a a Ú l t i m a m o d i f i c a ç ã o . A p r i m e i r a p o s i ç ã o ( d i r e c t o r y [ 0 I ) é r e s e r v a d a à d e s c r i ç ã o d a u n i d a d e , informando s e u nome, número d e b l o c o s , nÜmero d e a r q u i v o s , e t c .O 1 2
...
...
ueovblk- - -
-e-- -
n
k
& 4)4
boot- d i r e t ó r i o c ó p i a do s t r a p d i r e t ó r i oF I G U R A 1 1 . 1 3
-
o r g a n i z a ç ã o d a s Unidades Blocadas d e E/SO S i s t e m a O p e r a c i o n a l manipula o s d i r e t ó r i o s d a s d i - v e r s a s u n i d a d e s b l o c a d a s a t r a v é s da v a r i á v e l