• Nie Znaleziono Wyników

Informatyka Nr 2/3; Organ Komitetu Informatyki, Ministerstwa Nauki, Szkolnictwa Wyższego I Techniki Oraz Komitetu Naukowo-Technicznego NOT DS. Informatyki - Digital Library of the Silesian University of Technology

N/A
N/A
Protected

Academic year: 2022

Share "Informatyka Nr 2/3; Organ Komitetu Informatyki, Ministerstwa Nauki, Szkolnictwa Wyższego I Techniki Oraz Komitetu Naukowo-Technicznego NOT DS. Informatyki - Digital Library of the Silesian University of Technology"

Copied!
52
0
0

Pełen tekst

(1)

• ' i

n n p l É É »

.

'WßwmWä - ■•-. ' " . • •

mmmmm

’' \ v v ■'■

^

i^ ífp K ^ ÍK Í ! X'-Xitíï; *h: Vv ui* oÿi«ï v^í'.ÆSâ3*fts»í&gí

■., : ; . - ; - -;-- g p l /

§ » £ n « S f ^ : <'i.-'&v; -K/

& h $ & Ê Ë È ^ Æ É é è ■ M i lk li

V: - S lili

M Mm . f f e * ï

I f s s

¿ S l É

V * V-

(2)

informatyka

N r 2-3

M iesięcznik Rok X X I

Luty-M arzec 1986

O rgan K o m itetu In fo rm a tyk i M N S Z W iT oraz K o m itetu Naukowo-Technicznego N O T ds. In fo rm a tyk i

K O L E G IU M R E D A K C Y J N E :

D r inż. W a c ła w IS Z K O W S K I, mgr Teresa JA B Ł O Ń S K A (sekretarz redakcji), W ła ­ dysław K L E P A C Z (redaktor naczelny), d r iuż. Jan u sz Z A L E W S K I (zastępca red.

naczelnego)

S T A L E W S P Ó Ł P R A C U J Ą ;

M gr inż. W ito ld A B R A M O W IC Z (S z w a j­

c aria ), m gr inż. Teresa W I L C Z E K

P R Z E W O D N IC Z Ą C Y R A D Y P R O G R A M O W E J: J

P ro f. dr hab. Ju liu sz Le ćh K U L I K O W S K I r

M ateriałó w n ic zam ówionych redakcja

n ie zwraca

.

\

.

R e d a k cja : 00-041 W arszaw a, ul. Ja sn a 14716, pok. 243 1 244, teł. 27-71-40 lub 2G-S2-G1 w . 184

Z a k ł. G ra f. „T a m k a ” . Zam . 0187-1300/8G.

Obj. 4,0 iirk. druk. N ak ład 7200 egz. P-68.

IS S N 0542-9851, IN D E K S 3G124

Cena egzemplarza 120 zł Pren u m erata roczna 1200 zł

00-950 Warszawa skrytka pocztowi 1004

uL Biała 4

W N U M E R Z E : Stro n a

Zasady wieloprogram owości i ich im plem entacja w Moduli-2 N iklau s W irth

Z m ia n y i uzupełnienia w Moduli-2 Oprać. JZ

Modula-2 lista im plem entacji i program w zorcow y Oprać. J Z

Ję z y k program owania Icon Je rz y K arczm arczuk

Zaaw ansow ane konstrukcje języka C J a n B ie le c k i

Operacje zmiennoprzecinkowe w języku Fo rth Zbigniew Szkaradnik

A b strakcje w program owaniu (2) Je rz y Z a k ręck i

M o n ito r jak o narzędzie stru k tu ralizacji program ów współbieżnych (1) Leszek K o tu lsk i

K o m p u tery osobiste w zastosowaniach profesjonalnych (1) M ich a ł K le ib er, M a cie j Leśny, Rom uald Szuniewicz

A b rah am Ste rn — pierwszy polski konstruktor maszyn liczących Jan u sz Stokłosa -. ...

i; M o d yfikacja procesu kompiląfcji P a scala/M T + M ariusz’: Postoi

D w ie uogólnione, zmiermoprzfecinkówe reprezentacje liczb

Oprać. M ariusz Kuę< : ;

i Z K R A J l f i , ! !

; • i i. ■ ;

{ Zastpsowańie m ikrokom puterów szansą uspraw nienia zarządzania

. gospodarką » ; ; !

‘ Dolnośląski Oddział Polskiego T o w arzystw a Inform atycznego Pra co w n ie kom puterowe S E P i „H oryzontó w T e ch n ik i”

Działalność K o m itetu ds. System u C A M A C

1

3

9

11

14

17

22 24

27 ł 3V

32!

i 34;

33

Z E Ś W I A T A

Przetw arzan ie współbieżne w Moduli-2 39

O chrona program ów przed kopiowaniem w kom puterach osobistych 41 M etastabilność system ów V M E i M U L T I B U S I I 42 N o w a generacja 32-bitowych system ów w ieloprocesorowych

z w ykorzystaniem m agistrali M U L T I B U S 44

Zm ierzch m ikroprocesorów 8-bitowych 44

T E R M IN O L O G IA

T e rm in y związane z pam ięciam i dyskow ym i 45

W N A S T Ę P N Y C H N U M E R A C H :

• B r ia n A . W ich m a n a i J . G . J . M eijerinlc o k o n w ersji oprogram owania na ję z y k Ada S Rom an Fab er i M ich a ł O strowski o u n iw e rsa ln ym ’ procesorze do redagowania

tekstów dla M E R Y 400

• An-.rzej Ja n cz u ra o rozw iązyw aniu pasm owych rów nań lin io w ych na m ikrokom pu­

terach

® Z b ig n iew Sz k arad n ik o re k u re n cjl w języku F o rth

• P a w e ł Grzegorzewicz o m echanizm ie półautom atycznego generowania poleceń dla systemu operacyjnego RSX-11M

• P io tr Zaskórski i E w a K a sp rzyk o technologii w ytw a rza n ia oprogram owania ze wspomaganiem kom puterow ym

• Krzysztof P e ry c z o m inikom p uterow ym system ie o p eracyjn ym S I

• A ndrzej M acioł i A d am S ta w o w y o środkach przetwarzania tekstów

• P io tr Cofta o norm ie I E E E

(3)

NIK LAUS WIRTH Institut fur Informatik

Eidgenössische Technische H ochschule Zurych

Zasady wieloprogramowości

i ich implementacja w Moduli-2

W ieloprogram owością nazyw am y określenie w programie kilku (być może w ielu) procesów sekw encyjnych, które są w ykon yw an e współbieżnie. Celem, wieloprogram owości jest osiągnięoie i zagw arantow anie zharm onizowanej w spółpra­

cy między procesami. W ym aga to podania zasad i określe­

nia operacji elem entarnych do synchronizacji czynności współbieżnych i kom unikacji między nim i. W literaturze proponowano w iele koncepcji rozwiązania tego zagadnienia, a k ilk a z nich zrealizowano w różnych językach programo­

wania. Ostatnio — w pracach [1, 8, 9] — opublikowano k il­

ka dokładnych porównań i ocen tych metod.

W spólną cechą tych propozycji jest uznanie in d yw id u a l­

nych procesów za ciągi działań w yk o n yw a n ych z dowolną szybkością. Dlatego nie w ystępu je w nich pojęcie czasu, z w yjątk iem sytuacji, w k tó rych operacje synchronizacji um ożliw iają opóźnienie określonego procesu, aż do spełnienia pewnego w aru n k u przez inne procesy. Tego rodzaju synchro­

nizacja w ystępu je dość rzadko. W ta k ich przypadkach m ów i się o procesach słabo powiązanych, w przeciwieństwie do tablic procesów w yk o n yw a n ych „ w m iarow ych taktach ” .

Procesy muszą być synchronizowane, gdy p lan u je się ich współpracę. W procesach obliczeniowych w spó łpraca jest równoznaczna z kom unikacją. K o m u n ik a cja oznacza w y m ia ­ nę inform acji, tj. danych. W tym a rtyku le rozróżnia się dw a rodzaje kom unikacji, tj. kom unikację przez współdzielenie zmiennych (ang. sharing variables) i przekazyw anie kom u­

nikatów (ang. passing messages). O dzw ierciedlają one nie-

P ro f. N IK L A U S W I R T H uzyskał dok­

torat na U n iw e rsytecie K a lifo rn ijs k im w B e rk e le y w ro ku 1963. Do ro ku 1967 p raco w ał jak o Assistant P ro fe s­

sor na U n iw e rsytecie w Stanford (stan K a lifo rn ia ). Od ro ku 1968 Jest profesorem w In stytu cie In fo rm a ty k i P o lite c h n ik i F ed eraln ej w Z u rych u (E T H ), którego d yrekto rem b y ł w la ­ tach 1982—1984. N ajb ard ziej znane są Jego osiągnięcia w dziedzinie Języków program owania, a szczególnie opra­

cow anie Język ó w : E u le r, Algol-W , P a scal, M odula i Modula-2.

Im p lem en tacji tego ostatniego Ję z y ­ ka dokonał na opracow anym przez siebie kom puterze osobistym L illth . N ik la u s W lr th o trzym ał w ro k u 1984 nagrodę im. A lan a T u rlng a, przyzna­

w an ą przez am erykań skie sto w arzy­

szenie Association fo r Com puting M a ­ chin ery. W c h w ili oddawania num eru do d ru k u N . W lr th p rzeb yw ał w X e ­ rox P a lo A lto Research C enter w K a lifo r n ii.

A r ty k u ł Jest tłum aczeniem — doko­

nanym za zgodą A uto ra — raportu opublikowanego w czerwcu 1984 roku, pt. „Sch em es for M ultiprogram m ing and T h e ir Im plem entation in M odu­

la-2" (E T H In stitu t fttr In fo rm a tik , No. 59).

jaw n e założenie co do m echanizmu w yk o n yw a n ia procesów, który przy pom inięciu inn ych szczegółów jest różny dla pro­

cesorów dzielących wspólną pam ięć (tg. połączonych przez wspólną m agistralę o dużej przepustowości) i procesorów rzeczywiście rozłożonych, kom unikujących się za pomocą przewodów. Choć można zrealizować każdy z tych rodza­

jó w k o m u n ik a cji przy użyciu drugiego, to nie jest celowe zbytnie ro zw ijan ie abstrakcji, gdyż jej koszt spowodowany brakiem efektyw ności może okazać się za duży. Zasada prze­

kazyw an ia kom uniktów jest stosowana dopiero od niedaw na, ponieważ rozwój technologii spowodował, że tw orzenie sy­

stemów o większej liczbie procesorów rozłożonych stało się ekonomicznie uzasadnione. Z tego względu nie należy się dziwić, że dotychczasowe języki program owania m ają kon­

strukcje ukierunkow ane głównie n a kom unikację przez zmienne współdzielone (np. C oncurrent Pascal, M odula, Ada).

Przesunięcie .zainteresowań na kom unikację opartą n a prze­

kazyw aniu kom unikatów jest widoczne w języku Occam [5], Choć im plem entacja obu zasad n a pojedynczym proceso­

rze jest bardzo podobna, należy pamiętać, że istotą przeka­

zyw an ia kom unikatów jest transm isja in fo rm a cji przez w a r ­ tość i brak zm iennych współdzielonych. System , w któ rym tzw. kom unikaty są w skaźnikam i, tj. w skazują segmenty współdzielonego bufora, nie może być zaliczony do syste­

m ów przekazyw ania kom unikatów. Sam fa k t tran sm isji in ­ fo rm acji przez w artość czyni tę zasadę pojęciowo prostą i dlatego atrakcyjną.

Szczególnym przypadkiem synchronizacji, k tó ry w y n ik a z zasady k o m u n ik acji przez zm ienne współdzielone, jest w y ­ kluczanie wzajem ne. U m o ż liw ia ono przyznanie procesowi wyłącznego dostępu do pew nych zm iennych, tj. w ykluczenie dostępu in n ych procesów, aż do zrezygnow ania procesu z te­

go przyw ileju . W yklu czan ie w zajem ne jest koniecznością praktyczną. Choć można je zaprogram ować u żyw ając ele­

m entarnych o peracji synchronizacyjnych, celowe jest prze­

znaczenie specjalnej k o n stru kcji językow ej do w yrażenia w ykluczania wzajemnego. T a k a konstrukcja n azyw a się mo­

nitorem [3]. System y przekazyw ania kom unikatów n ie w y ­ m agają w yklu czan ia wzajemnego.

In n ym podstaw ow ym i w ażnym pojęciem jest rzeczyw ista współbieżność procesów, któ ra oznacza, że każdy proces jest w yk o n yw a n y przeiz in d yw id u a ln y procesor. W praktyce, dzię­

k i założeniu, że nie uw zględnia się szybkości obliczeń, pro­

cesor może być użyty do w y k o n yw a n ia k ilk u procesów częś­

ciam i. Dlatego należy odróżniać logiczne procesy od fizycz­

nych procesorów, pam iętając że to rozróżnienie jest k w estią zastosowanej techniki im plem entacji. Je ż e li procesy są re­

prezentowane przez poszczególnych użytko w n ikó w kom pu­

tera, to m ów i się o system ie z podziałem czasu (ang. time- -sharing system), jeżeli zaś procesy w y ra ż a ją różne czynności współbieżne tego samego użytkow nika, to m ów i się raczej o wieloprocesowości. Oba pojęcia w yra ż a ją jednak tę sam ą m yśl w ykorzystania jednego procesora przez k ilk a proce­

sów. Z am iast m ówić o rzeczywistej współbieżnośd, m ów i się w tedy o ąuasiwspółbieżności. W ażn ą sp raw ą jest takie rozum ienie procesów, aby nie było istotne czy do ich w yk o ­ nania używ a się w ie lu procesorów, czy jednego, pracującego z podziałem czasu. Dzięki temu program ista uzyskuje swo­

bodę w op tym alnym w ykorzystaniu zasobów, a program jest niezależny od aktualnej k o n fig u racji systemu. T en rodzaj abstrahow ania od rzeczywistej k o n fig u racji procesorów jest istotą wieloprogram owości.

(4)

W y n ik a stąd, że fu n kcje zarządzania zasobami mogą być w yw o ływ a n e tylk o w tedy, gdy proces zażąda w ykonania operacji synchronizacji lub kom unikacji, które —■*, ja k stw ier­

dzono — są ze sobą ściśle związane._ W sku tek tego, przydział zasobów, tzn. czynność przełączania procesora, może być u k ryta za in stru kcjam i synchronizacji i kom unikacji. Te pierwsze im plem entuje się w m odułach niskiego poziomu, a same instrukcje stanowią w yw o ła n ia procedur tych mo­

dułów. K lu czow ą spraw ą jest rozdzielenie pojęciowe tych poziomów, co stanowi nieodzowny w aru n e k zdolności adap­

ta cyjn ej procedur zarządzania zasobami do różnych konfigu­

ra c ji procesorów.

Poniżej zaproponowano k ilk a zasad wieloprogramowości.

Każdej z nich odpowiada zbiór operacji elem entarnych do synchronizacji i kom unikacji, stanowiący zbiór procedur. Są one wyrażone przy użyciu m odułów defin icyjn ych Moduli-2 [11]. K ró tk ie przykłady zastosowań przedstawiono w postaci klientów tych m odułów definicyjnych. Omówiono także od­

powiednie m oduły im plem entacyjne, reprezentujące zarzą­

dzanie zasobami n a niskim poziomie. Im plem entacje oparto na zestawie jednoprocesorowym, przy czym cechy szczególne użytego kom putera w ystępu ją w nich dość sporadycznie.

W S P Ó ł.P R O G R A M Y

Podstaw o w ym narzędziem wszystkfch systemów, które um ożliwia przełączenie procesora z w yk o n yw a n ia jednego procesu na drugi, jest współprogram . Proces im plem entuje się jako współprogram . D la program isty jest oczywiste, że procesy są w yk o n yw an e na przemian, a w program ie poda­

je się ja w n ie miejsca, w których musi nastąpić przełączenie.

Elem en tarn ą in stru kcją przełączania w spólprogram u p na współprogram q jest in stru kcja T ran sfer (p, q). W spółpro­

gram odbiorczy q, kontynu ow any po w yko n an iu in stru k cji Transfer, zastaje obliczenia dokładnie w tym sam ym stanie, w jak im pozostawił je współprogram nadawczy p przed w y ­ konaniem tej instrukcji. T a k więc, in stru kcja T ran sfer nie jest niczym w ięcej ja k jaw n ym operatorem szeregowania

procesów.

W spółprogram składa się z segmentu programu określa­

jącego czynności i na ogół ze zbioru zm iennych lokalnych.

W Moduli-2 współprogram jest w yrażony za pomocą proce­

du ry i tzw. przestrzeni roboczej, służącej do przechow yw ania danych lokalnych podczas w y w o ły w a n ia procedury. W spó ł­

program powołuje się za pomocą procedury elem entarnej InitCoroutine. J e j param etram i są: procedura P , k tó ra tw o ­ rz y program, adres przestrzeni roboczej wsp i jej rozm iar.

W yw o ła n ie procedury InitC oroutine nie u a k tyw n ia współ- programu, tzn. nie powoduje przełączenia procesora. J e j działanie polega na zainicjow aniu deskryptora umieszczo­

nego w przestrzeni roboczej, ta k aby późniejsza in stru kcja Tran sfer spowodowała rozpoczęcie w yk o n yw a n ia nowego współprogramu od pierwszej in stru kcji procedury P. Adres przestrzeni roboczej jest param etrem in stru kcji Transfer.

Użycie typu A D D R E S S świadczy o tym , że współprogram jest obiektem niskiego poziomu. D w ie procedury elem entar­

ne, T ran sfer i IntiCoroutine, zdefiniowano w poniższym mo­

dule defin icyjn ym :

0EFINIT10M K0CW.E Coroutine*: **

TRCM SYSTEM IMPORT ADORJSS:

PROCEDURE Tran$fer(VAR fro*, to: ATORESS);

PROCEDURE In«tCoroat»n«(f: PROC: wsp: ACORESS: *1lo: CARDINAL);

EtfO Coroutines.

W y d ru k 1

Im plem entacja tego modułu jest specyficzna dla m ik ro ­ kom putera L ilith [12]. D la in n ych kom puterów zazwyczaj pisze się ją w kodzie asem blerowym , ponieważ ciała rze­

czyw istych procedur składają się zaledw ie z k ilku instrukcji.

T yp Coroutine definiuje strukturę deskryptora współprogra- mu umieszczonego w nagłów ku przestrzeni roboczej, i rep re­

zentuje stan współprogram u w c h w ili jego zawieszenia.

Zm ienne G, L , P C , M , S i I I oznaczają re jestry procesora (w yd ru k 2).

N a ogół nie zaleca się używ ania w spółprogram ów w tak bezpośredni sposób. Nie pozostawia on system owi możliwości na zarządzanie w łasn ym i zasobami i obciąża program szcze­

gółami przydziału procesora, co ma ujem ny w p ły w n a w y ­ konanie w łaściw ego zadania. Je d n a k w przypadkach, gdy strategia zarządzania jest prosta i oczywista, a ponadto pod­

staw ow e znaczenie m a efektywność, użycie udogodnienia tak niskiego poziomu jest uzasadnione. T a k im przypadkiem jest

obsługa w spółpracy koprocesorów lub inn ych urządzeń k o ­ m unikujących się za pomocą przerwań.

IMPLEMENTATION KQOUIE Coroutines;

(•«aplcmcntatlon for Lilith syste«») f r o m siSTEN i m p o r ta o w e s s. a o«:

TYPE CorPtr • POINTER TO Coroutine;

Coroutine • RECORD

C: ACORESS;

L: ADDRESS:

PC: ADORESS:

N: BIT Si T;

S: ADORESS:

M: ACORESS;

err: CARD!HAL;

trapMask; BITSET;

start: PROC; («start of ■orksp.’rc») sent: CARDINAL

END :

PROCEDURE G1obaTBase(): ACORESS:

CODE 24B; 0 (»EGA 0») ENO GlobalBase;

PROCEDURE CALL;

CODE 3i/B («call procedure variable*) END CALL;

PROCEDURE TRA(VAR fro*, to: ACORESS):

CCOE 2SE.B: 0 (»transfer*}

END TRA;

PROCEDURE Tr«n*f«r(VAR fro«, to: ACORESS):

BEGIN IR>(frui. to) ENO Transfer;

PROCEDURE In1tCorout1*e(P: PROC; wsp»: ADDRESS; » 1 « : CARDINAL);

VAR cor: CorPtr;

PROCEDURE SetPC:

PROCEDURE pc(): CARDINAL;

COOC <00: 2 (»LLW 2») E W pc:

BEGIN cor».PC :> pc() * 1 END SelPC;

BEf.lN cor :• «spa:

WITH cor» 00

G :• GlotialBeseQ: L 0:

H {); S :• AOR(scnt)*!:

H :• aspa ♦ sl/e; err :• 0;

trapMask :■ ():

Start :- P; *Cnt :• 0 ENO :

Sot PC:

RETURN;

CALL: MALT ENO InilCoroutlne;

END Coroutines.

W y d r u k 2

Uznajem y takie urządzenie (np. drukarkę) za procesor. P o ­ nieważ zazwyczaj z procesem drukow ania związane są pew ­ ne czynności, ja k obsługa buforów lub sprawdzanie stanu, niezależnie od możliwości urządzenia, to cały proces dzieli się na dw ie części. Pierw sz a część dotyczy nieprogram ow al­

nych czynności urządzenia, takich ja k rzeczyw iste druko­

w anie, a druga — program owalnych, w ym agających użycia procesora. Z tego względu konieczne jest przełączanie pro­

cesora. G d y zakończone zostanie w yk o n yw a n ie części pro­

g ram owalnej, związanej z uaktyw nieniem urządzenia, w ted y procesor jest przełączany jaw n ą in stru k cją T ra n sfer na inną czynność w ym agającą k o n ty n u a c ji G d y urządzenie zakoń­

czy w yk o n yw an ie swojej części, w yk az u je ten fak t sygna­

łem przerwania. Następuje w tedy n ie jaw n e przekazanie ste­

row ania, powodujące przełączenie procesora z powrotem do punktu kontynu acji, określonego przez jaw n ą instrukcję Transfer. Zasadę tę zilustrowano w poniższym przykładzie d ru k ark i laserowej. Część program owalną n azyw a się z w y­

k le podprogramem obsługi przerwań. Część w yk o n yw a n a przez d ru karkę jest reprezentowana jaw n ą in stru kcją T ra n ­ sfer. U w aż a się, że kluczow ą spraw ą jest traktow an ie pod­

program u obsługi przerw ań ja k części całego cyklicznego procesu, a sam ych przerwań — ja k nieuszeregowanego prze­

kazyw an ia sterowania współprogramu. T akie podejście znacznie u ła tw ia zrozumienie mechanizmu w spółpracy. P o ­ lega ono na przeniesieniu koncepcji przerwań z poziomu m aszyny do języka strukturalnego i um ożliw ia ich im p le ­ m entację bez poświęcenia efektywności, co ma w tym w y ­

padku istotne znaczenie.

M O D U L E P rin te r D riv e r ;

IM P O R T A D D R E S S , W O R D , A D R , In itC o ro u tin e, Transfer;

E X P O R T out;

C O N S T size = 100;

V A R printer, m ain: A D D R E S S ; (*w skaźniki współprogram ów*) b u ffe r: ...

wsp: A R R A Y [0..slze-l] O F W O R D ; P R O C E D U R E P ;

B E G IN L O O P

(♦jeżeli bufor jest niepusty, pobierz z niego dane, w y ś lij je do rejestru d ru k a rk i i u a k ty w n ij ją * )

T ran sfer(p rin ter, m ain) E N D

E N D P ;

P R O C E D U R E out(data: Typ e);

R E G IN (łw p isz dane do b u fo ra*)

I F „d r u k a rk a w o lna” T H E N T ran sfer(m ain, p rinter) E N D E N D out;

(5)

B E G IN (^ inicjow anie bufora*)

In itC o ro u tiiie (P , wsp, size); p rin ter :=■ A D R (w sp ) E N D P rin te r D riv e r.

S Y G N A Ł Y

Je ż e li trzeba d efin ityw n ie abstrahować od obsługi proce­

sorów fizycznych i przyjąć, że każdy proces jest w y k o n y w a ­ ny przez indywidualnego pośrednika, 4o pojęcie współpro­

gramu staje się bezużyteczne. Istotą przejścia n a wyższy po­

ziom abstrakcji jest wprowadzenie anonimowości procesów, polegającej n a tym , że nie określają one jaw n ie wzajemnego zawieszenia a n i dokończenia. Ich synchronizację uzyskuje się stosując inne operacje elem entarne. Do odpowiednich konstrukcji należą sem afory [2] i w a ru n k i [3]. Poniżej omó­

wiono sygnały, które są równoważne w arunkom [10].

Syg n a ł deklaru je się ja k zmienną, choć nie m a on w a r­

tości i dlatego nie można m u niczego przypisyw ać ani go ko­

piować. M ożna go jedynie w ysy ła ć lub odbierać. W ysyła n ie sygnału s oznacza, że spełniony został pew ien w aru n e k P s (nałożony na zmienne). Dlatego proces, k tó ry odebrał sygnał s, może kontynu ow ać działanie' przy założeniu, że ten w a ru ­ nek jest spełniony. W a ru n ek P s jest w aru n kiem w stępnym (ang. precondition) operacji Send(s) i w aru n kiem końcow ym (ang. postcondition) operacji R cceivc(s). Sygnał s jest kom u­

nikatem oznaczającym spełnienie tego w arunku. Operacje są zdefiniowane w module d e fin icyjn ym Signals, z aw iera­

jącym rów nież procedurę S tartPro cess(P) i fu n kcję logicz­

ną Expected(s). Bezparam etro w a procedura P tw arzy pro­

gram procesu, a w artość T R U E fu n k c ji Expected(s) oznacza, że przynajm niej jeden proces oczekujć na odbiór sygnału s.

D E F IN IT IO N M O D U L E Signals;

T Y P E Signal;

P R O C E D U R E StartP ro c e ss (P : P R O C );

(♦rozpoczęcie program u współbieżnego przez program P * ) P R O C E D U R E S e n d (V A R s: Signal);

(♦dokończenie procesu oczekującego na sygnał s*) P R O C E D U R E R e c e iv e (V A R s: Signal);

(♦oczekiwanie na odbiór sygnału s*) P R O C E D U R E Expectcd(s: Sig n a l): B O O L E A N ; P R O C E D U R E In tiS ig n a l(V A R s: Signal);

E N D Signals.

U życie sygnałów zilustrowano dobrze znanym przykładem pary procesów w spółpracujących jako producent i konsu­

ment danych w ym ien ian ych przez bufor. B u fo r i skojarzone z n im zmienne, tj. liczba elem entów n oraz indeksy ozna­

czające następne w olne m iejsce i następny pobierany ele­

ment, tw orzą łącznie sprzężenie (ang. interface) m iędzy oby­

dwom a procesami. To sprzężenie jest zdefiniow ane jako lo­

k a ln y m oduł i stanowi m onitor bufora. Z a w ie ra on sygnały:

nonempty, dla w aru n k u n> 0, i nonfull, dla w aru n k u n < N . Sprzężenie (m onitor) zaw iera zazwyczaj również te zm ien­

ne lokalne, które są współdzielone przez procesy. Poniew aż sygnały są z n a tu ry współdzielone, powinny w ystępow ać t y l­

ko w sprzężeniach. Reguła deklarow ania obiektów współ­

dzielonych obowiązkowo w ew nątrz sprzężeń stanowi w ażną zasadę wieloprogram owości, postulowaną przez H o are’a i B rin c h Hansena.

Zm ienne współdzielone pow inny być chronione przez w y ­ kluczanie wzajem ne. Oznacza to, że w ew n ątrz sprzężenia stosuje się z w yk le regu ły program owania sekwencyjnego, ponieważ działania w sprzężeniu nie mogą być w y k o n y w a ­ ne przez dw a procesy jednocześnie. W poniższym przykładzie pominięto specyfikację w yklu czan ia wzajemnego. Można tak postąpić przy założeniach, że program jest w yk o n yw a n y ■ na pojedynczym (współdzielonym ) procesorze, i że przełączenie procesora następuje tylko w celu nadania lub odebrania sy­

gnału.

Należy podkreślić, że w tym przykładzie jest oczywiste, który proces odbiera nadany sygnał, ponieważ istn ieją tylko dw a procesy. N ie jest to jednak przypadek ogólny. Odbioru może dokonać dowolny z procesów, oczekujących n a określo­

ny sygnał. Jednakże, pojedyncza operacja nadania sygnału powoduje w yk o n an ie co n ajw yże j jednej operacji odbioru, tzn. nie m a rozgłaszania (ang. broadcast) — w y d ru k 3.

W e ry fik a c ja poprawności modułu jest m ożliwa bez roz­

ważenia kolejności współdziałania procesów. Należy' ją za­

cząć od ustalenia niezm iennika, sprzężenia, co w tym w y ­ padku polega n a stwierdzeniu, że bufor nie może. być b ar­

dziej pusty od pustego i pełniejszy ód pełniejszego, tzn.

0 < n < N. Z " w a ru n k ó w końcowych R cceive(ń onfułl), tzn.

n < N , i Receive(nonem pty), tzn. n> 0, w yn ik a, że elem ent

jest pobierany tylk o wtedy, gdy i umieszczany w buforze, gdy 0 5 jn < N . Zauw ażm y, że rozważania dotyczące w e ry fik a c ji można w ykonać dla sprzężenia dlatego, iż odno­

szą się one ty lk o do obiektów lokalnych.

HOOUtE ProdCo«s: ,

F&CM Terminal IMPORT Head, W r it« : FROM S ig n als IMPORT

S ig n a l, S ta rtP ro c e s t, Send, ReCOl»*, In U S Ig n a l;

MCOUIC In te r fa c e :

IMPORT S ig n a l. S te rtP r o c e is . Send. Receive, Jn 1 t5 1 g "il;

EXPCftT get, put;

CCNST N « 8;

VAR n , In . out: CAROINAL;

n o n fu ll, none«pty: S ig n a l:

bur: ARRAY [0 . . M -l] Of CHAR;

PROCEDURE put(ch: CHAR);

BEGIN

I f n • N THEN Rsce1ve(ncnfu11) ENO : n :- n * l; buf[1n] ch; In :• ( I n M ) HCO N;

Sond(nonespty) ENO put;

PROCEDURE got(VAR ch: CHAR);

BEGIN

IF n - 0 THEN Rece1ve(none*pty) ENO : n :• n-1; ch :* b u f[o u t}; out :■ (o u t * !) KCO Scnd(nonfuU)

EliO get;

BEGIN n :• 0: In 0: out :• 0;

ln lt S lg n a l( n o n f u lI) ; InttSlgnol(nonem pty) ENO In te rfa c e ;

PROCEDURE Producer:

VAR I: CARDINAL; ch: CHAR;

ten t: ARRAY [ 0 . . W ] OF CHAR;

BEGIN W r l t e f C ) ;

I :• 0: tex t :• “ ABCDEfGHIJXlMNOPCRSTUWXYZ“ : WHILE t e * t [ I ] > 0C DO

v r i t c ( - r ) : w n t e ( i e x t [ l ] ) ; p u t ( t e » t [ l ] ) ; 1 M ENO :

W r l t c l ' l ” ) ; W r1 te (")“ ) : put(OC) ENO Producer;

PROCEDURE Consumer;

VAII Ch: CHAR;

UIGIN W r it c ( l’[ “ ) ; Wrlto(“7"); Qdt(cli):

VW11E ch > 0C IX)

W r lte (c h ); W r lt e (“ i “ ) ; g et(ch )

INO ;

til GIN

S tiirtPro ce ss(Pro d yce r); Coniiancr; Wr l t e ( “ t * ) ; Wrlte(36C) [NO ProdCons.

W y d ru k 3

J a k zauważył D ijk stra, to klasyczne rozwiązanie m a jedną wadę — sygnały są w ysyłan e ozęściej niż .potrzeba. P rz y k ła ­ dowo, sygnał nonem pty jest w ysy ła n y zawsze w tedy, gdy producent um ieścił k o lejn y element, choć w y w ie ra skutek tylko w tedy, gdy konsument go oczekiwał. M ożna temu za­

radzić poddając operację send(nonempty) w aru n k o w i zw a­

nemu dozorem (ang. guard) Expected(s). D ijk stra zapropono­

w a ł uwzględnienie tej in fo rm a cji w liczniku n i nazw ał to rozwiązanie „śpiącym golarzem” . W arto ści n> 0 oznaczają liczbę elem entów w buforze (klientów w poczekalni), a w a r ­ tości n< 0 — liczbę oczekujących konsum entów (w olnych golarzy). J a k w idać, metodę rozszerza się łatw o n a w ypadek k ilk u , konsum entów i producentów, nie w p ły w a ją c na ro­

zum owanie konieczne do zachowania poprawności. Poniżej przedstawiono kod sprzężenia zmodyfikowanego w celu uw zględnienia „śpiącego golarza” (w yd ru k 4).

HOOtli In te rfa c e :

INPOłU s ig n a l. S la r iP r o c e s i. Send. R e c e d e . In lt S łg n a l;

EXPOfil got. put:

C0NSI N - ft;

VAR n: INTEGER; In . out: CARDINAL;

n o n fu ll, nonempty: S ig n al;

bur: AKRAY [0 .. N -J] 0F CHAR;

PWOCEOtM put{ch: CHAR);

BEGIN n :• m l ;

IF n > N ImŁN Rece1«o(nonfuU) ENO ; :• ch; In :• ( I n M ) M00 N;

IF ii • 0 THEN Send(n6«c«t>ty) ENO EW) p u l:

PROCEDURE gol (VAR ch: CHAR);

BEGIN n :• « • !:

IF n < 0 IHŁN Recvlve(nonc«pt]r) END : ch :• b u ffo u l]; out :* (o u lM ) «00 N;

I f n - N I»ILN Send (non full) END END g «t:

BEGIN n ;• 0; In :• 0; out :- 0:

In lt S łg n a l(n c iifu l1); ln1tSlyna)(co<icaply) END In terfa ce

W y d ru k 4

I M P L E M E N T A C J A S Y G N A Ł Ó W

M ożna podejrzewać, że im plem entacja m echanizm u sygna­

lizacji i związane z tym zarządzanie procesorami mogą być dość złożone, a zatem nieeiektyw ne. W rzeczywistości, po­

w ody do takich podejrzeń daje większość dostępnych w ie ­ lozadaniowych system ów operacyjnych. N a szczęście, w tym w ypadku im plem entacja może być bezpośrednia i efektyw na, co wykazano poniższym rozwiązaniem .

Oparto je na założeniu, że -każdy generowany proces jest reprezentow any przez deskryptor. W szystkie deskryptory są połączone w strukturę pierścieniową. A k tu aln ie w ykonyw a-

(6)

n y proces jest oznaczony zmienną w skaźnikow ą cp. W w y ­ padku systemu wieloprocesorowego każdy procesor m a swój p ryw a tn y w skaźnik cp. N o w y deskryptor (typu RingNode) jest przydzielany przez procedurę StartPro cess(P) i w łączan y do pierścienia. T a sam a procedura przydziela procesowi przestrzeń roboczą i in ic ju je jego deskryptor. Szozegóły in i­

cjo w an ia przestrzeni roboczej są ta k ie same, ja k w module Coroutines, co świadczy o tym , że zasady u żyw an ia sygna­

łó w oparto o technikę współprogram ów.

Szczególnie godna u w agi jest reprezentacja sygnałów. P ro ­ cesy nie określają sygnału, na k tó ry oczekują, lecz to sygnał określa procesy oczekujące n a w ysłan ie go przez in n y p ro ­ ces. Dlatego sygnał jest w skaźnikiem nagłów ka listy (ko lej­

k i) oczekujących procesów. Procedura Send(s) powoduje przekazanie sterowania procesowi z listy s i usunięcie z niej odpowiedniego deskryptora. Ł a tw o można zagw arantow ać równorzędność szeregowania procesów, ponieważ procesy są zawsze dołączane do tytu łu listy i usuw ane z jej nagłówka.

Procedura Receive(s) jest nieco bardziej skom plikowana. P o przebiegnięciu listy i dołączeniu do niej deskrypto ra bieżą­

cego procesu, następuje przeszukiwanie pierścienia, w celu znalezienia procesu zdolnego do zakończenia (gotowego). J e ­ żeli nie m a takiego procesu, to system procesów w pada w

zakleszczenie (ang. deadlock).

Bardziej złożone rozwiązanie może polegać n a usunięciu oczekujących procesów z pierścienia, tzn. n a faktycznym przesunięciu ich z pierścienia do listy sygnałów. W ym aga to ich przesunięcia z powrotem do pierścienia, po odebraniu nadanego sygnału. W y d a je się, że takie zwiększenie efek­

tywności, w porównaniu z metodą przeszukiwania pierście­

nia, nie kom pensuje dodatkowej złożoności operowania w skaźnikam i, chyba że liczba procesów oczekujących prze­

kracza znacznie liczbę procesów gotowych (w yd ru k 5).

Je ż e li proces osiąga koniec procedury tworzącej jego cia­

ło, to jego w yk o n yw a n ie można uznać za zakończone. W te d y sterowanie pow raca do m iejsca za in stru k cją w yw o łan ia, k tóra zainicjow ała proces. K o le jn e in stru kcje przełączają procesor na inn y gotowy proces z k o le jk i i z w racają prze­

strzeń roboczą zakończonego procesu, dołączając ją do listy w skazyw anej przez zmienną w skaźnikow ą free. T a k więc, przedstawiona im plem entacja uwzględnia rów nież elem en­

tarne zarządzanie przydziałem i zw racaniem przestrzeni ro ­ boczej. Zazw yczaj, utworzenie i zakończenie procesu zdarza się znacznie rzadziej niż n adaw anie sygnału, tj. przełączanie procesora. Ze względu na efektyw ność należy w ię c bardzo starannie zaprojektować procedury Send i Receive.

B lisk o związane z sygnałam i są także sem afory propono­

w an e przez Dijkstrę. Sem afo r składa się z liczhika i ze sko­

jarzonego z n im sygnału. O peracja P powoduje zmniejszenie zawartości licznika i — w w yp ad ku otrzym ania w artości ujem nej — oczekiwanie na odbiór sygnału. O peracja V po­

w oduje zwiększenie zawartości licz n ik a i — w przypadku dotatniego w yn ik u — nadanie sygnału. U jem n a zawartość licznika wskazuje, ile procesów oczekuje w kolejce n a syg­

nał.

K A N A Ł Y

Je ż e li system w ieloprocesorowy składa się naprawdę z roz­

łożonych procesorów połączonych kan ałam i danych, a nie z procesorów m ających tylk o dostęp do wspólnej pamięci, to kom u n ikacji nie można wyrażać u żyw ając zm iennych współdzielonych. W te d y zaleca się metodę C S P zapropono­

w an ą przez H o are’a [4] i zrealizowaną w języku Occam [5], Do podstawowych ko nstrukcji tego języka należą:

• in stru kcja P A R określająca, że procesy S 0, Si,...,Sn-i są w yk o n yw a n e współbieżnie, np.:

P A R S 0, S[, ..., Sn-i

• deklaracja C H A N cli powodująca w prowadzenie kanału kom unikacyjnego

• instrukcja „ ? ” określająca odbiór w arto ści z kanału ch i przypisanie jej zmiennej x, np.:

ch ? x

• instrukcja określająca obliczenie w artości w yrażenia x i w ysłan ie jej do kanału ch, np.:

cli ! x

W y d ru k 5

W y d r u k 6

l*PLEN£NTATIOa M0QU.C StgosW:

ffcCH SYSTEM INP08T ACORESS, «*5>, A£*. T£)Z{:

f r c m Neap JNPQAT Allocate;

CCKST WorkspaceSlio - 2001;

TYPE 5lgaal - POINTER TO RIogNode;

Corftr • POINTER TO CprogtlM:

R1ng*ode - RECORD

«e*t. pr*v: Signal; (.ring.)

outu«: Signal: («gu»ue ®f t|1tlrg prgtestes«)

tor: CorPtr;

ready: BOOLEAN EMO :

G: AS&AfSS:

l : AtCRESS;

PC: AOORESS:

H: 81TSET:

S : ACMESS;

H: ACORESS:

rrr: CARDINAL:

trapMssk: B I I S E I ;

s t a r l i PROC; (« s t a r t ef •orkspace«) S t a l: CARDINAL;

• ip : AARAY [9 . . W erkfpaceSU e-l] Of YMD E*0 ;

VAR cp: S ig n a l: (« c u rre at process«) a«»: S ig n a l;

Trę*: S ig n a l; («ch ała of tree pracats tfser1pt»rs*) PROCEDURE TRA*SFER(VA* fr a a , *•: C o rP tr);

COCE *56«: 0 fbO TRAftSUR;

PROCIOWIE 3 ta rtP ro c a ss (P : PROC):

PROCEDURE G lo » a lla s a (): AD0fl{SS;

CCCi i i # ; 9 («LGA 9«) ENO G lo b a llase:

PHOCIOJUE CALI;

COCE 35?« (*C F*) ERO CALI;

PROCEDURE SetPCandTraasfer;

PROCEDURE p c () : CARDINAL;

CODE 4«B: Z («LIW 2«) E W pc;

BE»1H c o t.c o rt.P C :• p c () ♦ I ; TRANS/LR (a»

E W SeiPCaodTransfer;

fctcIR aut :• cp:

(«allocate a Rtc<jh«de and a «orkspace contiguously*) IF fraa • U L Tul»

AMocalr(cp, TSI2E(ftlAgM«de)): Allecata(cpr.cor, T3IZE(Cereutfee)) ELS£ cp :• fraa; frea :■ freet.aeat

E W ; WITH cpt DO

nait :• auat.neat; prev :• auł; queue :• KIL; raady :- TRUĆ LSD ;

auit.nest :• cp: cpt.neitt.prev :• cp;

WITH cpt.cart DO G :• Giabal8asa(): L :• 9:

* :• (): S ADR(-sp):

M :■ W R ( a i p ) ♦ WorkspacesW e ; err :■ 9: trapHask :■ {};

start :• P; seat :■ 9 ERO ;

SetPCandTraAsfer;

RETURN;

*•)

CALL; («activate precesi iu> ;• cp: cp :• auat.neat;

cpr.prcv ;• auit.prev; auxt.prevt.eeat :• cp:

auxf .n e m :• free: free :• aua; aux :• cp;

W11ILE NOT cpt.ready & (cp 0 aua) DO c# :• cpt.nest EhO ; IF cpt.ready THEN IRANSF£R(freer.cor, cpt.cor) E W ; WALT («deadlock«)

E*aO StartProcess; PROCEDURE Sa a d ( V M s: Signal):

VAR this I Signal;

IE6IN this :• cp;

IF s 0 NIL THEN cp s;

S :* cpt.queue; cpt.ready :• TRUE ELSE («release«)

REPEAT cp :« cpt.aeit UNTIL cpt.ready E W ;

IF cp 0 this THE» TAARJf£R(tMsr.cer. cpt.cer) EhO ENO Send;

PROCEDURE R«c»1»e(VAR s: Signal):

VAR tbls: Signal:

BEGIN («Insert cp at end of queue s«) IF s • NIL THEN s :• cp ELSE this :• s;

W I L E thlst.queue 0 NIL DO this :• th 1st.queue EhO ; thIst.queue :• cp

E W ;

this :• cp; thtsr.quNe :■ NIL;

REPEAT cp :• cp t . s e n UNTIL cpt.ready;

mist.ready :• FALSE;

IF cp • this THEM («deadlock«) HALT ENO ; TRANSFER(thlst.{or, cpt.cor) END Receive:

PROCEJXRE E«pected(s: Slonal): BOOLEAN;

BEGIN REIUIUl s 0 NIL ENO Eapectqd;

PROCEDURE InltSlgn»1(VM s: S1fl«»l);

BEGIN s :• NIL ENO InUSIgnal;

BEGIN free :« NIL: A11ocate(cp. TSIZE(RlngN«de));

WITH cpt CO

neat cp; prev :« cp; ready :• 7 RUE END

E W Signals.

DEFINITION K00ULE Channels:

tYPE Ntssage • INTEGER;

Process:

C«enn«i • RECORD prod, cess: Process E»0 ; PROCEDURE Nre11el(P.Q: PROC):

PROCEDURE Sand(VAR ch: Chennel; aisg: Ntisage):

PROCEDURE Rece1ve(VAR ch: Channel; VAR «sg: Nesiaj*);

PROCIOURE Se«derWa1llng(V*R ch: C»annel): BOOLEAN;

PROCEDURE RecelverWaiIt«g(VAR ch: Ch*nn»l): B'JOLEAN;

PROCEDURE InltCha«ntl(VAR ch: Channel):

EW Channels.

N a jp ie rw przekształcim y zwięzły zapis języka Occam na równoważną mu postać w Moduli-2, a następnie przedstawi- j m y im plem entację tych konstruikcji. Oczywiście, wszystkie w ym ienione konstrukcje należy zdefiniow ać w module de- •

fin ic yjn ym (w yd ru k 6). ŚS P A R P Q

W celu podkreślenia ich związku z metodą sygnałów, ope­

rację w yprow ad zania „1" przekształcono n a procedurę Send, a operację w prow adzania — na procedurę Receive. S y ­ gnał, który można uważać za pusty kom unikat, zastąpiono kom unikatem p rzyb ierającym wartość. In stru k cję Occamu:

(7)

przekształcono n a instrukcję:

P a ra lle l (P'. Q')

gdzie P i Q są bezparam etrowym i proceduram i reprezentu­

jącym i in stru kcje P i Q w Occamie. In stru kcję:

P A R P Q R w yraża się jako P a ra lle l (P ,Q R )

gdzie Q R jest procedurą m ającą ciało procedury P a ra lle l (Q,R).

Procedury fu n k cyjn e Sen d erW aitin g i R c c e lv c rW a itin g m ają znaczenie analogiczne ja k Expected(s).

W łaściw ości k an ałó w są następujące:

1. Je ż e li nadaw ca w y s y ła kom unikat do kanału, to jest on opóźniany aż odbiorca po drugiej stronie kanału odbierze ten k o m u n ik a t Może to być natychm iast, jeżeli odbiorca oczekuje już w tym kanale.

2. Odbiorca oczekujący n a kom unikat z k an ału doznaje opóźnienia aż nadaw ca w yśle ten kom unikat do kanału. M o ­ że to być natychm iast, jeżeli nadaw ca już oczekiwał na ode­

branie kom unikatu.

W y n ik a stąd, że kan ał działa automatycznie jako elem ent synchronizacyjny — synchronizacja i kom unikacja n ie róż­

nią się. Ponadto, k an ał jest z w y k ły m „przewodem ” i nie m a możliwości buforowania. Dlatego n adaw ca i odbiorca biorą udział w spotkaniu (ang. rendezvous). Sam kan ał nie jest skrzynką pocztową, lecz tylko m iejscem spotkania.

G łó w n a zasada Occamu polega n a tym , że program re ­ prezentuje system procesów połączonych kanałam i, które są ustalone. Dlatego można założyć, że każdy k an ał łączy jed­

nego nadaw cę i jednego odbiorcę.

W poniższym przykładzie przedstawiono prosty, lecz typ o­

w y system u żyw ający kanału. Proces P odczytuje ciąg liczb z nośnika wejściowego 1 k ie ru je je do kanału. Co czwarta liczba stanowi sumę kontrolną i nie jest nadaw ana. Proces Q odbiera liczby z kanału, oblicza sumę kontrolną po każ­

dych siedm iu liczbach i kieru je je na nośnik w yjścio w y (w y ­ druk 7).

KOOULE S e q Jt*c » ł:

FROU O l * » « U IMP0AT Cfc**n«l. I r UChanna!, P a r a li * ! , S i l i , M C W I S F«0N I*Out IMPORT R eadlet. W rlte ln t;

PROCEOURE h

VAI t: CARDINAL; *. i w : INTEGER;

BEGIN Readlnt(x);

WMILC * • 0 00 i ;• 3;

WHILE 1 > 8 00

Se*d(ch,* x ) ; su« :• sue * x ; t :• 1-1; R aadln t(x ) E W : ‘

«ua m m i'll (*ek*ck tui ■ 0*) Reatflnt(x) E W ;

S«*d(ck. •) ETO P;

PROCEDURE Q:

V « li CARDINAL: *. *«•: 1NTEGE*:

IfBII Bat»łra(cfc. x);

tMTLE i M M

1 :• S: tvm ;• 8;

«tfllfc l > 0 CO

»ftil't(i.i); * w ;• t « • s; t :• M ; *«c*1v»(ch, i>

ETO : Wr|t*Int{»wi. 6) W O F*> Q;

*E<n* I.iu>e*aei(ch); rar«ll*1(ptQ) ETO Saqvanett.

W y d ru k 7

I M P L E M E N T A C J A K A N A Ł Ó W

Im plem entacja k an ałó w przypom ina w dużym stopniu im ­ plem entację sygnałów. Procesy są połączone w pierścień, którego każdy elem ent (węzeł) zaw iera w skaźnik do prze­

strzeni roboczej współprogram u. N a k o lejn ym polu przecho­

w u je się adres przekazywanego kom unikatu. Konieczne jest przechow yw anie adresu, a nie samego kom unikatu, aby n a ­ daw ca mógł um ieścić kom unikat w zm iennej oznaczonej przez p aram etr w trybie V A R oczekującego odbiorcy.

T yp danych Channel przyjm uje rolę typu Signal. Z a w ie ­ r a on dw a pola rekordu, jedno dla oczekującego odbiorcy a drugie dla oczekującego nadaw cy. A lte rn a tyw n e ro zw ią­

zanie z jednym polem dla procesu i dyskrym inatorem m ię­

dzy n adaw cą i odbiorcą odrzucono, ponieważ w ym aga b a r­

dziej złożonego programu.

W y d ru k 8

!H PL {« H U T IC * UOOUIE Cknuials:

*RCM SYSTEM IRPM T ADDRESS. WOAO, ADR, T S tlE : FROM H o p IHPORT A llo c ate;

CONST VorktpaceStza - 200S;

łY PE

Prociss « POINTER łO ftlńgWode;

Procem State - (ready, « a lt ln g , t e r łl f ia l łd ) : C orPtr - POINTER TO Coroutine:

HlngłJode • HECORD

* # X t, pr«»

partner;

»tan:

«igAdr;

C W ; C o ro u tl M -

RECORD

P r o c e » : (* r* * 8 * ) Procexi;

C o rPir;

P ro c a s iS ta tC POINTER TOKesitge

H:

M OatSS:

a d d r es s: ACCSESS:

BITSET;

ADDRESS:

ACCRESS:

a r r : CARDINAL:

trapMaik: «1TSEI;

a l a r t : PR0C; (» » t a r t of aorkipace*) s en t: CARDINAL;

vsp: ARRAY [0 . . VorktpacaSlia-»} OP iW D END ;

VAR cp: P r o e e it: (* c u rra » t p ro cat!*)

fr a » : Pro e e it; (»chain of fraa procesi d e te rlp to ri«) aux: Pro e eit:

PROCEDURE TRANSfERlVAR front, to: C o rP tr):

CCOE Z56B; 0 END TRANSfER;

PROCEDURE Para11at(P.O: WOC);

VAR Pro e att; (« p ro c a if to ba eraatad*) PROCEDURE G1oba1Base(): ADDRESS;

CODE 256: 0 (»LGA 0«) END GlobalBate;

PROCEDURE CALL;

CODE 35TB END CALL;

(*CF*)

PROCEDURE SatPCA«rfCa11:

PROCEDURE p c (): CARDINAL;

CCOE 408: 2 ( * I W 2*) EN0 pe:

BEGIN n eet.corf.PC :• p c {) ♦ 1;

9:kWUE n an*.stale 0 te m in ita d DO (• ra la a te * ) aux :• cp:

REPEAT cp :• cpt.next UNTIL C p t.ita te • fa s iy : IF cp • aux THEN HALT (»deadlock*) END ; r jx t .s t a t e :• terminated; TRA*SFER(auxi.cor, c p t . w r ) CNO ;

END SetPCandCall;

BEGIN

(•allocate a RtnflNoda and a «orktpac* ccKllgvoutly*) IF fraa • NIL THE*

AMocat«(«ia*. TSlZE(RtngVode)):

A llo c a te {« a » t.c o r, T SUE(C orouttfle)) ELSE i»ew :• frea; fraa :• free*.next END ;

WITH nawt 00

fiaxt cpf.MKt: ffair :■ ep; partner :• cj; Stltf :• rirty END :

WITH newt.corf ¿0 C :• ClobalBate{); I :> 0:

M {}: S :• A0R(np)i H :> ADR(*sp) * VarktpacaSIz«; , mrr :• 0; trapMaik *.* {); r a t a r t :• Q; le n t ;• 0 tKD :

S#tPCandCal1;

WUM:

CALL( •<)•):

aui : cp:

I P c p f .p a r t m r f ,i l a t f • tarwlaatad THIH cp :■ cp t.p artna r; c p r.s ta ta !• raady ELSE

REPEAT cp cpt.next UNTIL c p f.s ta t« • r n i y ; I F cp • P Í» THEM KALT (»diadlock») ETO E«D :

• ux t.stata :■ tin a la a ta d ; TTłASSEW(rJxr.cbP, c p f.c o f) END P a ra M a l;

PROCEDURE Sa*d(VAH eH; Cha«n»1{ « f j : K attag a];

VAR t h is : Pre eatt;

BEGIN th la :• cp:

I F eh.coni 0 NIL THEk (tłr a lf irp consmMr») ep :» cN.cont: cN.eon* :* MIL:

c p t.s ta te :• raady; cpt.r.igAdrf ;• a*tj E ISE ( 'v a l t fo r contUHtar*)

I F ch.prod # R I l THE« HALT E»0 : ch.prod :« cp; cpt.*sgAdr :• ADR(«sg);

REPEAT cp :• cpr.naxt UNTIL c p f .it a t * - t h l s t . t t a t a :• w aiting;

I F cp • t ill» then KALT (»daidlpck») D Q END :

T RANSFER(tM lt.Cor, c p f .w r )

*ÍD Sand;

PROCEDURE Rftal«a(VAR chiO iannal: VAA usg: « a m j í J ; VAR t h is : precatt;

BEGIN thta : • c p:

I F cfi.prod 0 NIL THEN i»*»ka up CW SU**r*)

<rp :* cN.prod; ch.pred ;• NIL:

c p t.a ta te :• ready; bj*j :« cpt.ntgAdrT ELSE ( * » a l t fo r producer*)

I F ch.prixJ 0 MIL THE« HALT END I ch.com :• cp; cpt.angAdr :• ACR(rag);

REPEAT cp :« cpt.next IW TIL c p t.a ta te • fa ld jfi ih la r .a t a t * :• * a ttl« g :

I F cp • th i* THE« HALT («deadlock») E&D CM) :

T RA «f£R{ih1tT.cor, e p f.co r)

£KD Race W e:

M0CEDURE SanderWa1tlB9(VAd ch i Ci»aflflf>): fiUCŁE«;

BEGIN RETURN Ch.prod # « t . END SenderWaltfng;

PROCEOJRE Rece<verWa1t1ng(VAA cbł t t a a s a ll: IQOllAX:

EEGIM REIURX ch.co«t 0 Hit * *

CTO AecalxerWaftlng;

PROCEDURE InltChanne1(VAA ch; Chann*]);

BEGIN ch.prod :• « IL ; ch.cona :« NIL ENO InttChannal;

¿Ó BIL* TSIZEiAlng-rad.,);

^ « e x t cp; prav :« cp; » tat« :« raady END C h in e*]j.

Z e względu na w yb ran ą metodę tw orzenia procesów w y ­ stępują one zawsze param i. K a ż d y deskryptor procesu ma pole oznaczające partnera. O ile w w ypad ku sygnałów za­

(8)

kończenie procesu nie w yw o łało in n ych skutków, to w tym w ypad ku powoduje n ie jaw n ą synchronizację. Proces m acie­

rzysty jest kontynu ow any dopiero po zakończeniu obu pro­

cesów potomnych. W ym a g a to poznania tożsamości partne­

ra. W rzeczywistości, w przedstawionej im plem entacji in- in stru k cja P a ra lle l (P,Q ) nie tw o rzy dwóch now ych proce­

sów, lecz tylko jeden. D ru gi jest identyczny z procesem ge­

nerującym . Je s t to konieczność praktyczna, ponieważ w przeciw nym w yp a d k u połow a w ym aganej przestrzeni robo­

czej byłaby stracona dla procesów oczekujących zakończe­

nia obu swoich procesów potom nych (w yd ru k 8).

Stopień złożoności im plem entacji modułu Channels jest nieco większy niż modułu Signals. W y n ik a to głów nie z syn­

chronizacji po zakończeniu procesu. Ponadto, ta metoda jest m niej elastyczna, gdyż każdy k a n a ł może być skojarzony w określonej c h w ili tylk o z jed n ym nadaw cą i jednym odbior­

cą, natom iast sygnał może być w tej samej c h w ili oczekiw a­

ny przez w iele procesów. Jednakże w w ielu w ypadkach jest to odbiciem n aturalnej sytuacji. Z ły m w yjściem byłoby z pewnością utworzenie — do elem entarnych operacji ko­

m u n ikacyjn ych —• superkanału, do którego można by dołą­

czać jednocześnie w ie lu nadaw ców i odbiorców. N iełatw o byłoby opisać charakterystykę takiego superkanału, nie m ó­

w ią c o jego im plem entacji. W y d a je saę, że rozwiązanie o par­

te na sygnałach powinno być lepsze od opartego na kan a­

łach, w przypadku systemu złożonego ze współdzielonych procesorów i wspólnej, dzielonej pamięci.

S Y M U L A C J A

Ję z y k u m o żliw iający w yrażen ie procesów współbieżnych i jego im plem entacja, o n ie w ie lk im narzucie w yn ik a jącym z przełączania procesów, są szczególnie dogodne do sym u la­

c ji system ów zdarzeń dyskretnych. Przedstawione m oduły w ym agają jedynie n iew ielk ich rozszerzeń, w celu uwzględ­

nienia w ym agań sym u lacji zdarzeń. Poniżej przedstawiono rozwiązanie oparte na koncepcji m ającej swe źródła w j ę ­ zyku S im u la i propozycjach H o are’a [6],

W rzeczywistości, jed yn ym koniecznym rozszerzeniem jest w prowadzenie pojęcia czasu. W sym u lacji zdarzeń dyskret­

nych, każdy obiekt a k ty w n y należy do określonej kategorii (klasy, typ u ) procesów (ja k na przykład: klienci, kasjerzy, obsługa domu towarowego) d dlatego jego zachowanie jest scharakteryzowane przez ustalony program sekw encyjny.

Każde określone działanie, trw ające w rzeczywistości przez czas t, jest w program ie sym u lacyjn ym w yrażone odpowied­

nią in stru kcją i w yw o ła n ie m Hold(t). T a druga in stru kcja zawiesza proces, aż czas wzrośnie o odcinek t.

D E F IN IT IO N M O D U L E Sim u latio n ; T Y P E Slng al;

Proccss - P R O C E D U R E (C A R D IN A L );

V A R Tim e: C A R D IN A L ; (* ty lk o odczyt*)

P R O C E D U R E S ta rtP ro c cs s(P : Process; n : C A R D IN A L );

(♦rozpoczęcie procesu współbieżnego program u P (n )* ) P R O C E D U R E S e n d (V A R S: Sig nal);

(♦ kontynuacja procesu oczekującego na odbiór sygnału s+) P R O C E D U R E R e c e iv e (V A R s: Sig n al);

(♦oczekiwanie aż do odbioru sygnału s*) P R O C E D U R E H old (t: C A R D IN A L );

(♦wstrzymanie procesu na t sekunda) P R O C E D U R E In itS ig n a l(V A R s: Sig nal);

(♦obowiązkowe in icjo w a n ie*) E N D S im u latio n

Poniżej przedstawiono przykład zastosowania tych pros­

tych m echanizm ów do opisu systemu zdarzeń dyskretnych.

D aw no temu cesarz chiński w y d a ł rozkaz, aby zmierzono najkrótsze odległości wszystkich w iosek jego cesarstwa od stolicy. Zastosowano przy tym swoistą metodę pomiaru. D u ­ że grupy m ierniczych przem ierzały k ra j ze stałą prędkością i w e w szystkich kierunkach, tzn. po każdej istniejącej dro­

dze. G d y grupa docierała do kolejnej wioski, w ted y dzieliła się na podgrupy wychodząc z w io ski in n ym i drogami. Jed en członek grupy w racał, aby zameldować czas dojścia do w ioski, a in n y pozostawał, aby inform ow ać grupy przybyłe

po n i m.

W rozwiązaniu przedstawiono każdą w ioskę za pomocą re ­ kordu określającego jej nazwę (numer), liczbę w ychodzących z n ie j dróg, ich kieru n ek (przeznaczenie) i długość. T en sam rekord służy do zarejestrow ania in form acji, czy wioskę od­

w iedził już in n y m ierniczy (w y d ru k 9).

<♦3X1E Army:

FR(N InCut IHPORT Pone.

Open Input. Rce.'Card. W rite . W rlte ln . WrlteCard. Closelnpyt;

racn s in u la tlo i IKPOflT Tim«. StartPro cass. Hold;

COIST HinNofVIl • 32: MsxKofPaths • 8:

iv pE v i l l a j * ’ • ' RECORD norp: CfPDlNAL:

v is it e d : BOOLEAN: ' path: AiV-AV [O..Ka*NorPaths-1] CF

RECORD destinatio n, distance: CA.TOIHAI END E!CO :

VAR 1: CAKDINU:

v i l : (H m v [ 0 . .H a*NofVU-J] 0« V illa g e : PROCtfXP; Scou*.(*: CARDINAL):

(•* • cu rre ntV IIlag e • * d ire c tio n » ) h ere, d ir : CARDINAL;

BEGIN W r i t e r * ') ; hero :• * OIV HaiNofPnths; d ir :• * MCO MaxNoTPaths;

LOOP Mo’ d (v ll[h e r e ].p a th [d lr ].d is ta n c e ):

here :» v ll[h e r e j.p a th [d lr ].d e s tin a tio n ; IF v l ljh e r c ] .v is it e d THEN EXIT END : VrltcCard(.i>-re. <»); Wr lteCard(Tt»c. 6 ): W rltcLn;

v ll[h c r c ].» « s it e d T3UE: d ir :• * ll[h e r e ].n o fp - 1;

WHILE d ir > 0 DO

StertPrccess{Sco<Jt. hor* • Ma*NofPaths ♦ d i r ) ; d ir :• dlr-1 EM) .

. ■

E KO : - V r t t e C - " ) END Scout:

PROCEDURE ReadData:

VAR A. 0. d. 1: CARDINAL;

BEGIN OpenlnputrNI)«“ )'; ReadCard(A);

F o a .l :• 0 10 KaiNofVH-1 DO

v l l ( l ] . n o f p 0: v l l [ t j . v i s i t e d :- FALSE

END ; . : , .

WHILE Done 00 ReadCard'B): RradCard(d):

WITH ¥ ll[ A ] DO

p ain[n ofp].d estin ation :• B; path[nof,i].distance :■ d:

nofp :• nofp ♦ I

END : . . .

WIIH v11[B] 00 '

pa th [norp].d estination :• A; path[ncrp],distance :• d;

norp :• rofp ♦ 1

END ; f -

ReadCard(A) END ; Closelnput END ReaiData;

BEGIN Rea'flOata: v l1 [0 J.v ls U e d :• TRUE:

FOR 1 :• 0 TO vl1[0 ].n orp - 1 DO StertProcessfScou t, 1) EN0 ; H old(M 9 9 ); W r U e ( * l” ) ; WrlteLn

. END Am /. •

W y d ru k 9

I M P L E M E N T A C J A M O D U Ł U S Y M U L A C Y J N E G O

Bezpośrednia im plem entacja polega n a utw orzeniu kolejki opóźnianych procesów w postaci listy odpowiadającej w e ­ wnętrznem u sygnałow i TQ , nadaw anem u w ch w ili, gdy ża­

den proces n ie jest gotowy. W przeciwieństwie do zasady zastosowanej w module Signals w tej kolejce n ie u ż yw a się metody F I F O (ang. first-in first-out), lecz porządkuje się pro ­ cesy zgodnie z ich czasem przebudzenia. Po stwierdzeniu, że żaden proces nie jest gotowy, co może nastąpić po in stru k cji R eceivc lub Hołd, zamiast w y k ry c ia zakleszczenia następuje dokończenie pierwszego procesu w kolejce T Q i zwiększenie czasu systemowego (zmienna Tim e) do w artości określonej jako czas przebudzenia. T a metoda w ym aga użycia dodat­

kowego pola w deskryptorze procesu, a włączenie >procesu do ko lejki, po jego w strzym aniu, m usi być poprzedzone po­

szukiwaniem w łaściw ego m iejsca w kolejce. W rzeczywistoś­

ci, sygnał T Q m a niski priorytet, gdyż opóźnione procesy mogą być dokończone (tzn. czas system owy może b yć zw ięk­

szony) tylk o w ted y, gdy w c h w ili bieżącej, hie m a inn ych gotowych procesów (w yd ru k 10).

P O D S U M O W A N IE

T rz y zasady współpracy procesów, za porpocą współpro- grainów, sygnałów i przekazyw ania kom unikatów porównano przy użyciu tnzech program ów testowych CortTest, SigTest i C hanTest . przedstawionych na w yd ru k u 11. K ażdy z nich składa się z dwóch procesów, między k tó rym i następuje po­

w tarzalne przełączanie procesora. D la 30 000 przełączeń za­

notowano następujące czasy w yk o n yw an ia:

CorTest — 1,8 s SigTest — 5,0 s ChanTest — 5,5 s

Przedstaw ione na w yd ru k u 11 zasady w ieloprogram owości oparto na różnych zbiorach o peracji elem entarnych do syn ­ chronizacji i kom unikacji. W czasie im plem entacji okazało się, że pom im o różnic pojęciow ych są one ściśle związane.

N a podstawie przykłado w ych program ów, można oszacować złożoność operacji elem entarnych i powodowany przez nie narzut.

W szystkie im plem entacje wyrażono całkow icie w Modtili-2, co świadczy o przydatności tego języka jako narzędzia pro­

gram ow ania systemowego. N aw et szczegóły dotyczące użycia konkretnego kom putera (L ilith ) można w yrazić za pomocą niskopoziomowych konstrukcji .języka, a ich zakres jest b ar­

dzo m a ły (p. moduł d efin icyjn y Coroutines).

W y d a je się, że celowe może być odejście od w łączania do języka ko nstrukcji dotyczących wieloprogram owości, chylpa

Cytaty

Powiązane dokumenty

cić szczególną uw agę na poprawność stylistyczną i terminologiczną, unikać skrótów, rzadko stosow a­.. nych w yrażeń obcych i żargonu fachowego;

Toteż m echanizm y, ja k ie uzyskuje użytkow nik PROLOGU, różnią się isto tn ie od m echanizm ów FORTRANOW YCH czy PASCALOW YCH.. taił) reguły, poprzedzonego

Chętnie wypożyczym y na krótko pojedyncze nu- CZYTELNIKÓW m ery czasopism, kopie artykułów, reklamówki, katalogi itp.. Pomóżcie nam dotrzeć do najnowszych

zacji rastrowej: Następny artykuł przyniesie om ówienie 17 aktualnych modeli tych system ów (gł. Dwa dalsze dotyczyć będą obecnych tendencji w ich

ług standardu V-24), z możliwością wyboru szybkości transmisji i liczby bitów stopu. «3

Można wreszcie skorzystać z już zgromadzonych zasobów na komputerze ODRA (pod nadzorem systemu GEORGE-3), wykorzystując komputer osobisty jako inteligentny

Zakład dysponuje hotelem pracowniczym I kategorii, stołówką, obiektami rekreacyjno-sportowym i, ośrodkiem żeglarskim, działkami pracowniczymi, działkami pod budową

rzystanych możliwościach ośrodka oraz o takich jego niedom aganiach, które dadzą się, z pomocą innych ośrodków, w yelim