• Nenhum resultado encontrado

Publicações do PESC Uma Proposta para Estender o Sistema Pascal USCD a Processamento Concorrente

N/A
N/A
Protected

Academic year: 2021

Share "Publicações do PESC Uma Proposta para Estender o Sistema Pascal USCD a Processamento Concorrente"

Copied!
163
0
0

Texto

(1)

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

-

BRASIL

(2)

BARBOSA, 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)

.

(3)

iii

A meus pais e avó materna

(4)

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 .

(5)

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

-

o

perações de escalonamento do Sistema.

É também proposto um núcleo que realize as funções do

(6)

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 .

(7)

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 HEAP

11.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

(8)

viii

111.2.2-

SEMAFOROS

E REGIÕES CRÍTICAS

111.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 CONCORRENTE

IV.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 79

V.2- REPRESENTAÇÃO DOS PROCESSOS,

ARVORE

E FILAS 81 v.3- O

NBCLEO

COMO REGIÃO CRÍTICA 8 3 v.4- ESCALONAMENTO PARA EXECUÇÃO 85 V.5- EXECUÇÃO DE PROGRAMAS CONCORRENTES 91

V.6-

SEMAFOROS BINARIOS

95

V.7- FILAS DE EVENTOS 98

V.8- OPERAÇÕES DE ENTRADA E S A ~ D A 100

(9)

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 UCSD

P 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ÇÃO

C . 2 - ' PROGRAMAS CONCORRENTES E PROCESSOS CONCORRENTES

C. 3-

SEMAFOROS

B I N ~ R I O S C . 4 - F I L A S DE EVENTOS

(10)

APENDICE

D

EXTENSÕES DO INTERPRETADOR DE C ~ D I G O P

(11)

Í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áveis

Unidade 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 Operacional

organizaçã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 para

sincronização de Processos

111.9- Uso dos Comandos cobegin/coend para sincronização de Processos

(12)

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

(13)

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 15

11.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

(14)

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

(15)

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

(16)

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

(17)

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

-

(18)

nados regiões críticas desses processos sobre os recursos. O pro

-

blema de sincronizar a execução dessas regiões criticas no tempo

a

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

(19)

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

-

(20)

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 .

(21)

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

(22)

é 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 .

(23)

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. A

f 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.

(24)

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 2

FIGURA 1 1 . 2

-

Geração d e Segmentos de Código p e l o Compilador

q 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 -

(25)

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

SEGMENTO

1

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 B

(26)

11.3- A ARQUITETURA DA

MAQUINA

P

A 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 s

FIGURA 1 1 . 4

-

organização Geral da Máquina P

A 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 -

(27)

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 Procedun

i

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 pointer

BASE

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 e

atributos 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 P

(28)

A 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 P

O 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 segmento

(29)

d 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 á

(30)

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 \ L

(31)

t 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.

-

-

(32)

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 de

locação

~ i n â m i c a de v a r i á v e i s

(33)

A 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 o

FIGURA 11.7

-

Unidade Blocada p a r a E/S

A 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 á

(34)

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 :

(35)

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 -

(36)

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 r

onde 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 Textos

A 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 ~comPi1adar

(37)

ARQUIVO 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 Montador

a 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 a

um 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

(38)

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 X

j á

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 .

(39)

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]

-

. . .

;

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

.

-

(40)

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úmeros

O 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 do

programa 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

PASCALSYSTEM

I

~ 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

USERPROGRAM

I

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 s

unções

do S i s t e m a Oper.aciona1

(41)

Conforme 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 do

t 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

-

(42)

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 e

7

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 O

e 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 :

(43)

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 o

F 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/S

O 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

Referências

Documentos relacionados

The DCF model using the Free Cash Flow to the Firm (FCFF) method, estimates in the first place the Enterprise Value of the company, that represents the value of all future cash

Este era um estágio para o qual tinha grandes expetativas, não só pelo interesse que desenvolvi ao longo do curso pelas especialidades cirúrgicas por onde

Hill ex Maiden ao ataque de cupim de madeira seca (Cryptotermes brevis) [Tree age influence on Eucalyptus grandis wood natural resistance to deterioration by dry-

Os resultados encontrados com os 51 professores de Matemática, dos anos finais do Ensino Fundamental, do município de Canoas, possibilitaram investigar e analisar a percepção

gambiae saliva IgG antibodies were also detected in young children from a seasonal malaria transmission region in Senegal, and antibody levels were higher in patients who

Verificou-se que as amostras rotuladas como resíduos de níquel apresentaram por fotometria de chama a presença de zinco, cobre e manganês, não sendo possível a

Para a fração associada à lepidocrocita (F4), assim como o ferro, também houve distribuição com concentrações elevadas e reduzidas de cobre no ponto 2, onde na

Para que possamos entender melhor a inserção dos trabalhadores livres no mercado de trabalho da cidade do Recife, durante a primeira metade do século XIX, e os conflitos