Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОПЕРАЦИОННЫЕ СРЕДЫ АСОИУ

.TXT
Скачиваний:
26
Добавлен:
01.05.2014
Размер:
53.89 Кб
Скачать
ЊЁ­ЁбвҐабвў® ®ЎйҐЈ® Ё Їа®дҐббЁ®­ «м­®Ј® ®Ўа §®ў ­Ёп ђ”
_________________
‘ ­Єв-ЏҐвҐаЎгаЈбЄЁ© Ј®бг¤ аб⢥­­л©
н«ҐЄва®вҐе­ЁзҐбЄЁ© г­ЁўҐабЁвҐв
____________________________________________________













ЊҐв®¤ЁзҐбЄЁҐ гЄ § ­Ёп
Є « Ў®а в®а­л¬ а Ў®в ¬ Ї® ¤ЁбжЁЇ«Ё­Ґ
"ЋЏ…ђЂ–€ЋЌЌ›… ‘ђ…„› Ђ‘Ћ€“"

















‘ ­Єв-ЏҐвҐаЎгаЈ
1997

ЊЁ­ЁбвҐабвў® ®ЎйҐЈ® Ё Їа®дҐббЁ®­ «м­®Ј® ®Ўа §®ў ­Ёп ђ”
_________________
‘ ­Єв-ЏҐвҐаЎгаЈбЄЁ© Ј®бг¤ аб⢥­­л©
н«ҐЄва®вҐе­ЁзҐбЄЁ© г­ЁўҐабЁвҐв
____________________________________________________













ЊҐв®¤ЁзҐбЄЁҐ гЄ § ­Ёп
Є « Ў®а в®а­л¬ а Ў®в ¬ Ї® ¤ЁбжЁЇ«Ё­Ґ
"ЋЏ…ђЂ–€ЋЌЌ›… ‘ђ…„› Ђ‘Ћ€“"

















‘ ­Єв-ЏҐвҐаЎгаЈ
1997



“„Љ 681.518.3:681.3.06

ЊҐв®¤ЁзҐбЄЁҐ гЄ § ­Ёп Є « Ў®а в®а­л¬ а Ў®в ¬ Ї® ¤ЁбжЁЇ«Ё­Ґ
"ЋЇҐа жЁ®­­лҐ баҐ¤л Ђ‘Ћ€“" / ‘®бв.: ‚.‚ ‘Ё¤Ґ«м­ЁЄ®ў, ‚.‚. Ёа®-
Є®ў; ѓќ’“. ‘ЏЎ., 1997. 36 б.






ЏаЁўҐ¤Ґ­л ®ЎйЁҐ ᢥ¤Ґ­Ёп Ё ४®¬Ґ­¤ жЁЁ Ї® ўлЇ®«­Ґ­Ёо « Ў®-
а в®а­ле а Ў®в Ї® ¤ЁбжЁЇ«Ё­Ґ "ЋЇҐа жЁ®­­лҐ баҐ¤л Ђ‘Ћ€“".
ЏаҐ¤­ §­ зҐ­л ¤«п бв㤥­в®ў бЇҐжЁ «м­®бвЁ 220200 "Ђўв®¬ вЁ-
§Ёа®ў ­­лҐ бЁбвҐ¬л ®Ўа Ў®вЄЁ Ё­д®а¬ жЁЁ Ё гЇа ў«Ґ­Ёп".






“⢥তҐ­®
। ЄжЁ®­­®-Ё§¤ вҐ«мбЄЁ¬ б®ўҐв®¬ г­ЁўҐабЁвҐв 
ў Є зҐб⢥ ¬Ґв®¤ЁзҐбЄЁе гЄ § ­Ё©












‘ ‘.-ЏЎ. ѓќ’“, 1997


- 3 -
я2‹ Ў®а в®а­ п а Ў®в  1
я2€‡“—…Ќ€… Ђ‹ѓЋђ€’ЊЋ‚ ђ…Ђ‹€‡Ђ–€€ € €‘ЏЋ‹њ‡Ћ‚ЂЌ€џ ‘ЋЏђЋѓђЂЊЊ

я1–Ґ«м а Ў®вля0 - ®§­ Є®¬«Ґ­ЁҐ б  «Ј®аЁв¬ ¬Ё ॠ«Ё§ жЁЁ б®Їа®Ј-
а ¬¬ Ё бЇ®б®Ў ¬Ё Ёе ЁбЇ®«м§®ў ­Ёп ¤«п ®аЈ ­Ё§ жЁЁ ¬­®Ј®§ ¤ з­®б-
вЁ.

я2ЋЎйЁҐ ᢥ¤Ґ­Ёп

‘®Їа®Ја ¬¬л - нв® б।бвў® ЇҐаҐ¤ зЁ гЇа ў«Ґ­Ёп Ё§ ®¤­®© Їа®-
楤гал ў ¤агЈго ЎҐ§ ®в­®иҐ­Ёп ў«®¦Ґ­­®бвЁ. ‚лЇ®«­пҐ¬®© Їа®жҐ¤гаҐ
­Ґв ­Ґ®Ўе®¤Ё¬®бвЁ ў®§ўа й вмбп ў ўл§ў ўиго ҐҐ Їа®жҐ¤гаг. ’а ¤ЁжЁ-
®­­лҐ ®ЇҐа в®ал ‚›‡Ћ‚ Ё ‚Ћ‡‚ђЂ’ ў б«гз Ґ б®Їа®Ја ¬¬ § ¬Ґ­повбп
®¤­Ё¬ ®ЇҐа в®а®¬ - Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…. ‘®Їа®Ја ¬¬л ®Ў« ¤ ов б«Ґ-
¤гойЁ¬Ё бў®©бвў ¬Ё:
1) Ї®§ў®«пов Ё¬ЁвЁа®ў вм Ї а ««Ґ«м­®бвм б Ї®¬®ймо пў­ле ЇҐ-
। з гЇа ў«Ґ­Ёп;
2) пў«повбп б।бвў®¬ ॠ«Ё§ жЁЁ ¬­®Ј®§ ¤ з­®Ј® ०Ё¬ .
ђҐ «Ё§ жЁп б®Їа®Ја ¬¬ ®б­®ў ­  ­  ўл¤Ґ«Ґ­ЁЁ б®Ўб⢥­­®Ј®
б⥪  ¤«п Є ¦¤®© Ё§ Їа®жҐ¤га. ’®Ј¤  ®ЇҐа в®а Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…
Ї® бгйҐбвўг ўлЇ®«­пҐв ®ЇҐа жЁо § ¬Ґ­л б⥪  ЇаЁ®бв ­ ў«Ёў Ґ¬®©
б®Їа®Ја ¬¬л ­  б⥪ ў®§®Ў­®ў«пҐ¬®© б®Їа®Ја ¬¬л.
ђ Ў®в  Їа®жҐ¤га ў Є зҐб⢥ б®Їа®Ја ¬¬ вॡгҐв ЇаҐ¤ў аЁвҐ«м-
­®© Ї®¤Ј®в®ўЄЁ, б®бв®п饩 ў ўл¤Ґ«Ґ­ЁЁ б⥪  Є ¦¤®© Ё§ Їа®жҐ¤га Ё
§ ЇЁбЁ ў б⥪ в®зЄЁ ўе®¤  ў Їа®жҐ¤гаг. ’ҐЄг饥 б®бв®п­ЁҐ б⥪ 
Є ¦¤®© Ё§ б®Їа®Ја ¬¬ еа ­Ёвбп ў бвагЄвгаҐ, ­ §лў Ґ¬®© „…‘Љђ€Џ-
’Ћђ_‘ЋЏђЋѓђЂЊЊ›. Џ®н⮬г б®Їа®Ја ¬¬л ЇаҐ¤бв ў«повбп бў®Ё¬Ё ¤ҐбЄ-
аЁЇв®а ¬Ё.

я2’Ґе­®«®ЈЁп ॠ«Ё§ жЁЁ Ё а Ў®вл б®Їа®Ја ¬¬

Џ®бЄ®«мЄг а Ў®в  б® б⥪®¬ вॡгҐв ¤®бвгЇ  ­ҐЇ®б।б⢥­­® Є
ॣЁбва ¬ SS Ё SP, ®ЇҐа в®а Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€… ¬®¦Ґв Ўлвм ॠ«Ё-
§®ў ­ в®«мЄ® б।бвў ¬Ё п§лЄ   бᥬЎ«Ґа .
Ћд®а¬«Ґ­ЁҐ  бᥬЎ«Ґа­®© Їа®жҐ¤гал ў б।Ґ Pascal:
Procedure Name_Proc(Џ а ¬Ґвал-§­ зҐ­Ёп; Џ а ¬Ґвал-ЇҐаҐ¬Ґ­­лҐ);
Assembler; {®Ўп§ вҐ«м­л©  ваЁЎгв}
Asm {®Ўп§ вҐ«м­л©  ваЁЎгв}
...

- 4 -
End;
‡ ЇЁбм ў  ¤аҐб㥬го п祩Єг Ї ¬пвЁ Їа®Ё§ў®¤Ёвбп ®ЇҐа в®а®¬
MemW[Seg:Ofs] := ... .

’Ґе­®«®ЈЁп ॠ«Ё§ жЁЁ б®Їа®Ја ¬¬ ЇаҐ¤бв ў«Ґ­  ў д®а¬Ґ ®ЇЁб -
­Ёп Ї®б«Ґ¤®ў вҐ«м­®б⥩ ¤Ґ©бвўЁ©, Їа®Ё§ў®¤Ё¬ле ЇаЁ б®§¤ ­ЁЁ б®Ї-
а®Ја ¬¬л Ё ЇаЁ ЇҐаҐ¤ зҐ гЇа ў«Ґ­Ёп ®в ®¤­®© б®Їа®Ја ¬¬л Є ¤агЈ®©.

Procedure ‘Ћ‡„Ђ’њ_‘ЋЏђЋѓђЂЊЊ“;
Begin
‚›„…‹€’њ ЏЂЊџ’њ ЏЋ„ ‘’…Љ;
‚›„…‹€’њ ЏЂЊџ’њ ЏЋ„ „…‘Љђ€Џ’Ћђ;
‚›—€‘‹€’њ Ђ„ђ…‘ "„ЌЂ" ‘’…ЉЂ € ‡ЂЏ€‘Ђ’њ …ѓЋ ‚ „…‘Љђ€Џ’Ћђ;
ЏЋ Ђ„ђ…‘“ "„ЌЂ" ‘’…ЉЂ ‡ЂЏ€‘Ђ’њ ’Ћ—Љ“ ‚•Ћ„Ђ ‚ ЏђЋ–…„“ђ“;
End;

Procedure Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…; Assembler;
Asm
‘—€’Ђ’њ Ђ„ђ…‘ „…‘Љђ€Џ’ЋђЂ Џђ€Ћ‘’ЂЌЂ‚‹€‚Ђ…ЊЋ‰ ‘ЋЏђЋѓђЂЊЊ›;
‡ЂЏ€‘Ђ’њ ‚ ќ’Ћ’ „…‘Љђ€Џ’Ћђ ‘Ћ‘’ЋџЌ€… ‘’…ЉЂ;
‘—€’Ђ’њ Ђ„ђ…‘ „…‘Љђ€Џ’ЋђЂ ‚Ћ‡ЋЃЌЋ‚‹џ…ЊЋ‰ ‘ЋЏђЋѓђЂЊЊ›;
‚Ћ‘‘’ЂЌЋ‚€’њ ‘Ћ‘’ЋџЌ€… ‘’…ЉЂ €‡ ќ’ЋѓЋ „…‘Љђ€Џ’ЋђЂ;
End;

’Ґе­®«®ЈЁп а Ў®вл б®Їа®Ја ¬¬ ЇаҐ¤бв ў«Ґ­  ў д®а¬Ґ "§ Ј®в®ў-
ЄЁ" Їа®Ја ¬¬л:
Program Cor;
Procedure ‘Ћ‡„Ђ’њ_‘ЋЏђЋѓђЂЊЊ“;
Begin
...
End;
Procedure Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…; Assembler;
Asm
...
End;
Procedure User_1;
Begin
while true do begin
...

- 5 -
Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…; {ў ¤агЈго б®Їа®Ја ¬¬г}
end;
End;
...
Procedure User_N;
Begin
while true do begin
...
if “‘‹Ћ‚€… then {§ ўҐа襭ЁҐ ўлЇ®«­Ґ­Ёп}
Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€… {ў Ј« ў­го Їа®Ја ¬¬г}
else
Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…; {ў ¤агЈго б®Їа®Ја ¬¬г}
end;
End;
Begin
‘Ћ‡„Ђ’њ_‘ЋЏђЋѓђЂЊЊ“; {User_1}
...
‘Ћ‡„Ђ’њ_‘ЋЏђЋѓђЂЊЊ“; {User_N}
Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…; {ў ®¤­г Ё§ б®Їа®Ја ¬¬}
End.
я2‡ ¤ ­ЁҐ

1. ђҐ «Ё§®ў вм Їа®жҐ¤гал ‘Ћ‡„Ђ’њ_‘ЋЏђЋѓђЂЊЊ“ Ё Џ…ђ…„Ђ’њ_“Џ-
ђЂ‚‹…Ќ€… Ї® Ёе бЇҐжЁдЁЄ жЁп¬, ЇаҐ¤бв ў«Ґ­­л¬ ўлиҐ.
2. ђҐ «Ё§®ў вм Їа®Ја ¬¬г Cor, § ¬Ґ­Ёў б«®ўҐб­лҐ ®ЇЁб ­Ёп
¤Ґ©бвўЁ© ®ЇҐа в®а ¬Ё п§лЄ  Pascal.
3. Ќ аЁб®ў вм б®бв®п­Ёп б⥪  б®Їа®Ја ¬¬л ЇаЁ ᮧ¤ ­ЁЁ, ЇаЁ-
®бв ­®ўЄҐ Ё ў®§®Ў­®ў«Ґ­ЁЁ.
4. ‚ а §а Ў влў Ґ¬®© ¤Ґ¬®­бва жЁ®­­®© Їа®Ја ¬¬Ґ ®аЈ ­Ё§®ў вм
¤Ё­ ¬ЁзҐбЄ®Ґ ўл¤Ґ«Ґ­ЁҐ Ё ®бў®Ў®¦¤Ґ­ЁҐ Ї ¬пвЁ Ї®¤ ¤ҐбЄаЁЇв®ал Ё
б⥪Ё б®Їа®Ја ¬¬.
5. ђҐ «Ё§®ў вм б®Їа®Ја ¬¬л, ЇаҐ¤бв ўЁў Ёе ў ўЁ¤Ґ ®ЎкҐЄв®ў,
ўЄ«оз ойЁе б«Ґ¤гойЁҐ ¤ ­­лҐ -  ¤аҐб б⥪  Ё §­ зҐ­Ёп ॣЁбва®ў SS
Ё SP,   в Є¦Ґ ¬Ґв®¤л ᮧ¤ ­Ёп, г­Ёз⮦Ґ­Ёп Ё ЇҐаҐ¤ зЁ гЇа ў«Ґ­Ёп.

я1ЋвзҐв ¤®«¦Ґ­ ᮤҐа¦ вмя0 ⥪бвл Їа®Ја ¬¬ б Є®¬¬Ґ­в аЁп¬Ё Ё аЁ-
бг­ЄЁ, ®ва ¦ ойЁҐ б®бв®п­Ёп б⥪®ў б®Їа®Ја ¬¬.



- 6 -
я2‹ Ў®а в®а­ п а Ў®в  2
я2€‘‘‹…„Ћ‚ЂЌ€… Џђ€Ќ–€ЏЋ‚ „€‘Џ…’—…ђ€‡Ђ–€€ ЏђЋ–…‘‘Ћ‚

я1–Ґ«м а Ў®вля0 - ®§­ Є®¬«Ґ­ЁҐ б ЇаЁ­жЁЇ ¬Ё ॠ«Ё§ жЁЁ  «Ј®аЁв-
¬®ў ¤ЁбЇҐвзҐаЁ§ жЁЁ Їа®жҐбб®ў ў ¬­®Ј®§ ¤ з­ле б। е.

я2ЋЎйЁҐ ᢥ¤Ґ­Ёп

ђҐ «Ё§ жЁп ЇбҐў¤®Ї а ««Ґ«м­®Ј® ०Ё¬  б Ї®¬®ймо пў­®Ј® ўЄ«о-
祭Ёп ў Ї®«м§®ў вҐ«мбЄЁҐ Їа®жҐббл ®ЇҐа в®а  Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…
®Ў« ¤ Ґв ­Ґ¤®бв вЄ ¬Ё:
1) Џ®«м§®ў вҐ«мбЄЁҐ Їа®жҐббл ўЄ«оз ов ў бҐЎп ¤Ґ©бвўЁп, Є®в®-
алҐ Ї® бгйҐбвўг ­Ґ ®в­®бпвбп Є Ёе дг­ЄжЁп¬.
2) €­вҐаў «л Їа®жҐбб®а­®Ј® ўаҐ¬Ґ­Ё, ЇаҐ¤®бв ў«пҐ¬лҐ Їа®жҐб-
б ¬, § ўЁбпв ®в б ¬Ёе Їа®жҐбб®ў, Ё Ґбвм ®Ї б­®бвм § еў в  Їа®жҐб-
б®а  ­  ¤«ЁвҐ«м­л© ба®Є ®¤­Ё¬ Їа®жҐбᮬ.
Џ®н⮬㠢 ¬­®Ј®§ ¤ з­ле бЁб⥬ е ЁбЇ®«м§гҐвбп ЇаЁ­г¤ЁвҐ«м­ п
ЇҐаҐ¤ з  гЇа ў«Ґ­Ёп. Њ®¬Ґ­вл ЇаЁ­г¤ЁвҐ«м­®© ЇҐаҐ¤ зЁ гЇа ў«Ґ­Ёп
®ЇаҐ¤Ґ«повбп ЇаҐалў ­Ёп¬Ё ®в в ©¬Ґа . ’ Є®© бЇ®б®Ў ЇҐаҐ¤ зЁ гЇ-
а ў«Ґ­Ёп ­ §лў Ґвбп ¤ЁбЇҐвзҐаЁ§ жЁҐ©.
ђ Ў®в Ґв ¬­®Ј®§ ¤ з­ п бЁб⥬  б ЇаЁ­г¤ЁвҐ«м­®© ¤ЁбЇҐвзҐаЁ-
§ жЁҐ© б«Ґ¤гойЁ¬ ®Ўа §®¬.
‚лЇ®«­Ґ­ЁҐ ⥪г饩 б®Їа®Ја ¬¬л ЇаЁ®бв ­ ў«Ёў Ґвбп ЇаҐалў ­Ё-
Ґ¬ ®в в ©¬Ґа . “Їа ў«Ґ­ЁҐ ЇҐаҐ¤ Ґвбп Їа®Ја ¬¬Ґ-®Ўа Ў®взЁЄг ЇаҐал-
ў ­Ёп. ЋЎа Ў®взЁЄ ўлЇ®«­пҐв ¤Ґ©бвўЁп Ї® ўлЎ®аг б«Ґ¤го饩 б®Їа®Ј-
а ¬¬л Ё ЇҐаҐ¤ Ґв Ґ© гЇа ў«Ґ­ЁҐ ®ЇҐа в®а®¬ Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€….
’ ЄЁ¬ ®Ўа §®¬ Є ¦¤®© б®Їа®Ја ¬¬Ґ ўл¤Ґ«пҐвбп Єў ­в ўаҐ¬Ґ­Ё
¤«п ўлЇ®«­Ґ­Ёп.

я2‘ўҐ¤Ґ­Ёп Ё§ п§лЄ  Џ бЄ «м, ЁбЇ®«м§гҐ¬лҐ ЇаЁ ॠ«Ё§ жЁЁ
я2¤ЁбЇҐвзҐаЁ§ жЁЁ

“бв ­®ўЄ  ўҐЄв®а  ЇаҐалў ­Ёп:
SetIntVec(IntNo : byte; Vector : pointer)
Ј¤Ґ IntNo - ­®¬Ґа ўҐЄв®а  ЇаҐалў ­Ёп;
Vector -  ¤аҐб Їа®жҐ¤гал-®Ўа Ў®взЁЄ  ЇаҐалў ­Ёп.
—⥭ЁҐ ўҐЄв®а  ЇаҐалў ­Ёп:
GetIntVec(IntNo : byte; Var Vector : pointer)
Ј¤Ґ IntNo - ­®¬Ґа ўҐЄв®а  ЇаҐалў ­Ёп;

- 7 -
Vector - ЇҐаҐ¬Ґ­­ п, ў Є®в®аго ЇЁиҐвбп  ¤аҐб Їа®жҐ¤гал-®Ўа -
Ў®взЁЄ  ЇаҐалў ­Ёп.

я1ЏаЁ¬Ґз ­ЁҐ.я0 Ќ®¬Ґа ўҐЄв®а  ЇаҐалў ­Ёп ®в в ©¬Ґа  - 8; ­®¬Ґа 
бў®Ў®¤­ле ўҐЄв®а®ў ¤«п ЇҐаҐгбв ­®ўЄЁ бЁб⥬­®Ј® ®Ўа Ў®взЁЄ  ЇаҐ-
алў ­Ё© ®в в ©¬Ґа : 60h-66h; 78h-7Fh.

‘вагЄвга  Їа®жҐ¤гал-®Ўа Ў®взЁЄ  ЇаҐалў ­Ёп:
Procedure Handler; interrupt; {®Ўп§ вҐ«м­л©  ваЁЎгв}
Begin
...
End {Handler}.

я2’Ґе­®«®ЈЁп ॠ«Ё§ жЁЁ ¤ЁбЇҐвзҐаЁ§ жЁЁ

’Ґе­®«®ЈЁп ॠ«Ё§ жЁЁ ¤ЁбЇҐвзҐаЁ§ жЁЁ ў б।Ґ Џ бЄ «м ЇаҐ¤б-
в ў«Ґ­  "§ Ј®в®ўЄ®©" Їа®Ја ¬¬л:
Program User_Disp;
Procedure ‡ЂЏђ…’€’њ_Џђ…ђ›‚ЂЌ€џ; Assembler;
Asm
...
End;
Procedure ‘Ћ‡„Ђ’њ_‘ЋЏђЋѓђЂЊЊ“;
Begin
{ЋЇЁб ­  а ­ҐҐ}
End;
Procedure Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…; Assembler;
Asm
{ЋЇЁб ­  а ­ҐҐ}
End;
Procedure Handler; interrupt;
Begin
‡ЂЏђ…’€’њ_Џђ…ђ›‚ЂЌ€џ;
{‚лЎа вм б«Ґ¤гойго б®Їа®Ја ¬¬г}
Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…;
End;
Procedure User_1;
Begin
while true do begin

- 8 -
...
end;
End;
Procedure User_2;
Begin
while true do begin
...
if “‘‹Ћ‚€… then begin {§ ўҐа襭ЁҐ ўлЇ®«­Ґ­Ёп}
‡ЂЏђ…’€’њ_Џђ…ђ›‚ЂЌ€џ;
‚Ћ‘‘’ЂЌЋ‚€’њ_‚…Љ’Ћђ_Џђ…ђ›‚ЂЌ€џ_Ћ’_’Ђ‰Њ…ђЂ;
Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…; {ў Ј« ў­го Їа®Ја ¬¬г}
end;
end;
End;
Begin
‘Ћ‡„Ђ’њ_‘ЋЏђЋѓђЂЊЊ“; {User_1}
‘Ћ‡„Ђ’њ_‘ЋЏђЋѓђЂЊЊ“; {User_2}
‡ЂЏђ…’€’њ_Џђ…ђ›‚ЂЌ€џ;
Џ…ђ…“‘’ЂЌЋ‚€’њ_‚…Љ’Ћђ_Џђ…ђ›‚ЂЌ€џ_Ћ’_’Ђ‰Њ…ђЂ;
“‘’ЂЌЋ‚€’њ_ЌЂ_‚…Љ’Ћђ_8_ЏђЋ–…„“ђ“_Handler;
Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…; {ў User_i}
End.

я2‡ ¤ ­ЁҐ

1. ђҐ «Ё§®ў вм Їа®Ја ¬¬г, а бЄалў ўбҐ ЇаҐ¤«®¦Ґ­Ёп ®ЇҐа в®а -
¬Ё п§лЄ  Џ бЄ «м.
2. Ќ аЁб®ў вм б®бв®п­Ёп б⥪  Їа®Ё§ў®«м­®© б®Їа®Ја ¬¬л ЇаЁ
ЇаЁ®бв ­®ўЄҐ ҐҐ ЇаҐалў ­ЁҐ¬ ®в в ©¬Ґа  Ё ў®§®Ў­®ў«Ґ­ЁЁ Ё§ ®Ўа -
Ў®взЁЄ  ЇаҐалў ­Ё©.

я1ЋвзҐв ¤®«¦Ґ­ ᮤҐа¦ вмя0 ⥪бв Їа®Ја ¬¬л б Є®¬¬Ґ­в аЁп¬Ё,  
в Є¦Ґ аЁбг­ЄЁ, ®ва ¦ ойЁҐ б®бв®п­Ёп б⥪  б®Їа®Ја ¬¬ ЇаЁ ЇаҐалў -
­Ёпе.






- 9 -
я2‹ Ў®а в®а­ п а Ў®в  3
я2€‘‘‹…„Ћ‚ЂЌ€… Џђ€Ќ–€ЏЋ‚ ђ…Ђ‹€‡Ђ–€€ ЏђЋ–…‘‘Ћ‚ € Ћ—…ђ…„…‰
я2ЊЌЋѓЋ‡Ђ„Ђ—ЌЋѓЋ џ„ђЂ

я1–Ґ«м а Ў®вля0 - ®§­ Є®¬«Ґ­ЁҐ б ЇаЁ­жЁЇ ¬Ё ॠ«Ё§ жЁЁ Їа®жҐбб®ў
Ё ®зҐаҐ¤Ґ© ў п¤аҐ ¬­®Ј®§ ¤ з­®© б।л.

я2ЋЎйЁҐ ᢥ¤Ґ­Ёп

Џ а ««Ґ«м­® ўлЇ®«­пҐ¬лҐ ў ¬­®Ј®§ ¤ з­®© б।Ґ Їа®жҐ¤гал ­ -
§лў овбп Їа®жҐбб ¬Ё.
Џ®бЄ®«мЄг Їа®жҐбб®а ®¤Ё­,   Їа®жҐбб®ў ¬­®Ј®, в® Ї®пў«пҐвбп
б।бвў® гЇ®а冷祭Ёп ¤®бвгЇ  Їа®жҐбб®ў Є Їа®жҐбб®аг, ЇаЁ­Ё¬ о饥
д®а¬г ®зҐаҐ¤Ё.
‚ ¦­Ґ©иЁ¬ ўЁ¤®¬ ®зҐаҐ¤Ё пў«пҐвбп ®зҐаҐ¤м Їа®жҐбб®ў, Ј®в®ўле
Є ўлЇ®«­Ґ­Ёо.
„«п ®ЎҐбЇҐзҐ­Ёп ў®§¬®¦­®бвЁ ўЄ«о祭Ёп Їа®жҐбб  ў ®зҐаҐ¤Ё ­Ґ-
®Ўе®¤Ё¬® ¬®¤ЁдЁжЁа®ў вм ¤ҐбЄаЁЇв®а б®Їа®Ја ¬¬л, ॠ«Ё§го饩 Їа®-
жҐбб, ўўҐ¤п ў ­ҐЈ® Ї®«Ґ - гЄ § вҐ«м ­  б«Ґ¤гойЁ© Їа®жҐбб.
‘ гзҐв®¬ ў®§¬®¦­®бвЁ ¤Ё­ ¬ЁзҐбЄ®Ј® ᮧ¤ ­Ёп Ё г­Ёз⮦Ґ­Ёп
ЇаҐ¤бв ўЁ¬ Їа®жҐбб Є Є ®ЎкҐЄв б«Ґ¤го饣® ўЁ¤ :
ЏђЋ–…‘‘ = ЋЃљ…Љ’
{„ЂЌЌ›…:} ќ‹…Њ…Ќ’› „…‘Љђ€Џ’ЋђЂ ‘ЋЏђЋѓђЂЊЊ›;
‘‹…„“ћ™€‰;
Ђ„ђ…‘_‘’…ЉЂ;
{Њ…’Ћ„›:} Procedure €Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;
Procedure Ћ‘‚ЋЃЋ„€’њ_ЏЂЊџ’њ;
Procedure “‘’ЂЌЋ‚€’њ_‘‹…„“ћ™€‰;
Function ЏЋ‹“—€’њ_‘‹…„“ћ™€‰;
ЉЋЌ…–;

‚в®ал¬ ўЁ¤®¬ ®ЎкҐЄв®ў ¬­®Ј®§ ¤ з­®© б।л пў«пҐвбп Ћ—…ђ…„њ,
ЇаҐ¤бв ў«пҐ¬ п б«Ґ¤гойЁ¬ ®ЇЁб ­ЁҐ¬:
Ћ—…ђ…„њ = ЋЃљ…Љ’
{„ЂЌЌ›…:} ЌЂ—Ђ‹Ћ;
{Њ…’Ћ„›:} Procedure €Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;
Procedure Ћ‘‚ЋЃЋ„€’њ_ЏЂЊџ’њ;
Procedure ‚Љ‹ћ—€’њ_ЏђЋ–…‘‘;
Procedure €‘Љ‹ћ—€’њ_ЏђЋ–…‘‘;

- 10 -
Function ЏЋ‹“—€’њ_ЌЂ—Ђ‹Ћ;
ЉЋЌ…–;

‚ ¤ ­­®© а Ў®вҐ а бб¬ ваЁў Ґвбп ®зҐаҐ¤м Ј®в®ўле Їа®жҐбб®ў,
Є®в®а п ¬®¦Ґв Ўлвм ЇаҐ¤бв ў«Ґ­  Є Є вЁЇ, Їа®Ё§ў®¤­л© ®в вЁЇ  Ћ—…-
ђ…„њ:
Ћ—…ђ…„њ_ѓЋ’Ћ‚›• = ЋЃљ…Љ’(Ћ—…ђ…„њ)
{Њ…’Ћ„›:} Procedure €Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;
Procedure Ћ‘‚ЋЃЋ„€’њ_ЏЂЊџ’њ;
Procedure ‡ЂЏ“‘’€’њ_„€‘Џ…’—…ђ;
Procedure Ћ‘’ЂЌЋ‚€’њ_„€‘Џ…’—…ђ;
Procedure „ЋЃЂ‚€’њ_ЌЋ‚›‰_ЏђЋ–…‘‘;
Procedure ЂЉ’€‚€‡€ђЋ‚Ђ’њ_‘‹…„“ћ™€‰;
ЉЋЌ…–;

я2’Ґе­®«®ЈЁп ॠ«Ё§ жЁЁ Їа®жҐбб®ў Ё ®зҐаҐ¤Ё Ј®в®ўле Їа®жҐбб®ў

’Ґе­®«®ЈЁп ॠ«Ё§ жЁЁ Їа®жҐбб®ў Ё ®зҐаҐ¤Ё Ј®в®ўле Їа®жҐбб®ў
ЇаҐ¤бв ў«Ґ­  ў ўЁ¤Ґ б«®ўҐб­®Ј® ®ЇЁб ­Ёп ЎЁЎ«Ё®вҐз­®Ј® ¬®¤г«п, пў-
«по饣®бп ¤ «м­Ґ©иЁ¬ а §ўЁвЁҐ¬ Їа®Ја ¬¬л « Ў®а в®а­®© а Ў®вл 2.
Unit DispObj;
Interface
Type
ЏђЋ–…‘‘ = ЋЃљ…Љ’
ќ‹…Њ…Ќ’› „…‘Љђ€Џ’ЋђЂ ‘ЋЏђЋѓђЂЊЊ›;
‘‹…„“ћ™€‰;
Ђ„ђ…‘_‘’…ЉЂ;
Procedure €Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;
Procedure Ћ‘‚ЋЃЋ„€’њ_ЏЂЊџ’њ;
Procedure “‘’ЂЌЋ‚€’њ_‘‹…„“ћ™€‰;
Function ЏЋ‹“—€’њ_‘‹…„“ћ™€‰;
ЉЋЌ…–;
Ћ—…ђ…„њ = ЋЃљ…Љ’
ЌЂ—Ђ‹Ћ;
Procedure €Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;
Procedure Ћ‘‚ЋЃЋ„€’њ_ЏЂЊџ’њ;
Procedure ‚Љ‹ћ—€’њ_ЏђЋ–…‘‘;
Procedure €‘Љ‹ћ—€’њ_ЏђЋ–…‘‘;
Function ЏЋ‹“—€’њ_ЌЂ—Ђ‹Ћ;

- 11 -
ЉЋЌ…–;
Ћ—…ђ…„њ_ѓЋ’Ћ‚›• = ЋЃљ…Љ’(Ћ—…ђ…„њ)
Procedure €Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;
Procedure Ћ‘‚ЋЃЋ„€’њ_ЏЂЊџ’њ;
Procedure ‡ЂЏ“‘’€’њ_„€‘Џ…’—…ђ;
Procedure Ћ‘’ЂЌЋ‚€’њ_„€‘Џ…’—…ђ;
Procedure „ЋЃЂ‚€’њ_ЌЋ‚›‰_ЏђЋ–…‘‘;
Procedure ЂЉ’€‚€‡€ђЋ‚Ђ’њ_‘‹…„“ћ™€‰;
ЉЋЌ…–;
Var
Readylist : Ћ—…ђ…„њ_ѓЋ’Ћ‚›•;
Implementation
Procedure ‡ЂЏђ…’€’њ_Џђ…ђ›‚ЂЌ€џ; Assembler;
Asm
...
End;
Procedure ђЂ‡ђ…€’њ_Џђ…ђ›‚ЂЌ€џ; Assembler;
Asm
...
End;
Procedure ‘Ћ‡„Ђ’њ_‘ЋЏђЋѓђЂЊЊ“;
Begin
...
End;
Procedure Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…; Assembler;
Asm
...
End;
Procedure Handler; interrupt;
Begin
‡ЂЏђ…’€’њ_Џђ…ђ›‚ЂЌ€џ;
Readylist.ЂЉ’€‚€‡€ђЋ‚Ђ’њ_‘‹…„“ћ™€‰;
End;
Procedure Idler; {ўбҐЈ¤  ў ®зҐаҐ¤Ё Ј®в®ўле}
Begin
while true do;
End;
Procedure ЏђЋ–…‘‘.€Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;
Begin

- 12 -
‘Ћ‡„Ђ’њ_‘ЋЏђЋѓђЂЊЊ“;
‡ЂЏЋ‹Ќ€’њ ЏЋ‹… Ђ„ђ…‘_‘’…ЉЂ;
End;
Procedure ЏђЋ–…‘‘.Ћ‘‚ЋЃЋ„€’њ_ЏЂЊџ’њ;
Begin
Ћ‘‚ЋЃЋ„€’њ ЏЂЊџ’њ, ‡ЂЌџ’“ћ ЏЋ„ ‘’…Љ;
End;
Procedure ЏђЋ–…‘‘.“‘’ЂЌЋ‚€’њ_‘‹…„“ћ™€‰;
Begin
‘‹…„“ћ™€‰ := ... ;
End;
Function ЏђЋ–…‘‘.ЏЋ‹“—€’њ_‘‹…„“ћ™€‰;
Begin
ЏЋ‹“—€’њ_‘‹…„“ћ™€‰ := ‘‹…„“ћ™€‰;
End;
Procedure Ћ—…ђ…„њ.€Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;
Begin
ЌЂ—Ђ‹Ћ := NIL;
End;
Procedure Ћ—…ђ…„њ.Ћ‘‚ЋЃЋ„€’њ_ЏЂЊџ’њ;
Begin
{–ЁЄ« Ї® ўбҐ¬ Їа®жҐбб ¬ ®зҐаҐ¤Ё}
ЏђЋ–…‘‘.Ћ‘‚ЋЃЋ„€’њ_ЏЂЊџ’њ;
End;
Procedure Ћ—…ђ…„њ.‚Љ‹ћ—€’њ_ЏђЋ–…‘‘;
Begin
...
End;
Procedure Ћ—…ђ…„њ.€‘Љ‹ћ—€’њ_ЏђЋ–…‘‘;
Begin
...
End;
Function Ћ—…ђ…„њ.ЏЋ‹“—€’њ_ЌЂ—Ђ‹Ћ;
Begin
ЏЋ‹“—€’њ_ЌЂ—Ђ‹Ћ := ЌЂ—Ђ‹Ћ;
End;
Procedure Ћ—…ђ…„њ_ѓЋ’Ћ‚›•.€Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;
Begin
Ћ—…ђ…„њ.€Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;

- 13 -
End;
Procedure Ћ—…ђ…„њ_ѓЋ’Ћ‚›•.Ћ‘‚ЋЃЋ„€’њ_ЏЂЊџ’њ;
Begin
Ћ—…ђ…„њ.Ћ‘‚ЋЃЋ„€’њ_ЏЂЊџ’њ;
End;
Procedure Ћ—…ђ…„њ_ѓЋ’Ћ‚›•.‡ЂЏ“‘’€’њ_„€‘Џ…’—…ђ;
Begin
‡ЂЏђ…’€’њ_Џђ…ђ›‚ЂЌ€џ;
Џ…ђ…“‘’ЂЌЋ‚€’њ_‚…Љ’Ћђ_Џђ…ђ›‚ЂЌ€џ_Ћ’_’Ђ‰Њ…ђЂ;
“‘’ЂЌЋ‚€’њ_ЌЂ_‚…Љ’Ћђ_8_ЏђЋ–…„“ђ“_Handler;
ЏЋ‹“—€’њ_ЌЂ—Ђ‹Ћ;
€‘Љ‹ћ—€’њ_ЏђЋ–…‘‘;
Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…;
End;
Procedure Ћ—…ђ…„њ_ѓЋ’Ћ‚›•.Ћ‘’ЂЌЋ‚€’њ_„€‘Џ…’—…ђ;
Begin
‡ЂЏђ…’€’њ_Џђ…ђ›‚ЂЌ€џ;
‚Ћ‘‘’ЂЌЋ‚€’њ_‚…Љ’Ћђ_Џђ…ђ›‚ЂЌ€џ_Ћ’_’Ђ‰Њ…ђЂ;
Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…; {ў Ј« ў­го Їа®Ја ¬¬г}
End;
Procedure Ћ—…ђ…„њ_ѓЋ’Ћ‚›•.„ЋЃЂ‚€’њ_ЌЋ‚›‰_ЏђЋ–…‘‘;
Begin
‡ЂЏђ…’€’њ_Џђ…ђ›‚ЂЌ€џ;
ЏђЋ–…‘‘.€Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;
‚Љ‹ћ—€’њ_ЏђЋ–…‘‘;
ђЂ‡ђ…€’њ_Џђ…ђ›‚ЂЌ€џ;
End;
Procedure Ћ—…ђ…„њ_ѓЋ’Ћ‚›•.ЂЉ’€‚€‡€ђЋ‚Ђ’њ_‘‹…„“ћ™€‰;
Begin
‡ЂЏђ…’€’њ_Џђ…ђ›‚ЂЌ€џ;
‚Љ‹ћ—€’њ_ЏђЋ–…‘‘; {⥪гйЁ©}
ЏЋ‹“—€’њ_ЌЂ—Ђ‹Ћ;
€‘Љ‹ћ—€’њ_ЏђЋ–…‘‘;
Џ…ђ…„Ђ’њ_“ЏђЂ‚‹…Ќ€…;
End;
Begin
Readylist.€Ќ€–€Ђ‹€‡€ђЋ‚Ђ’њ;
Readylist.„ЋЃЂ‚€’њ_ЌЋ‚›‰_ЏђЋ–…‘‘;{ўЄ«о祭ЁҐ Idler}
End.

- 14 -
‘ гзҐв®¬ ЇаЁўҐ¤Ґ­­®Ј® ЎЁЎ«Ё®вҐз­®Ј® ¬®¤г«п Ї®«м§®ў вҐ«мбЄ п
Їа®Ја ¬¬  ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬:
Program User;
Uses Disp;
Procedure User_1;
Begin
while true do begin
...
end;
End;
Procedure User_N;
Begin
while true do begin
...
if “‘‹Ћ‚€… then begin {§ ўҐа襭ЁҐ ўлЇ®«­Ґ­Ёп}
Readylist.Ћ‘’ЂЌЋ‚€’њ_„€‘Џ…’—…ђ;
end;
end;
End;
Begin
Readylist.„ЋЃЂ‚€’њ_ЌЋ‚›‰_ЏђЋ–…‘‘;{ўЄ«о祭ЁҐ User_1}
Readylist.„ЋЃЂ‚€’њ_ЌЋ‚›‰_ЏђЋ–…‘‘;{ўЄ«о祭ЁҐ User_N}
Readylist.‡ЂЏ“‘’€’њ_„€‘Џ…’—…ђ;
End.
я2‡ ¤ ­ЁҐ

1. ‚ ᮮ⢥вбвўЁЁ б ЇаЁўҐ¤Ґ­­л¬Ё ўлиҐ § Ј®в®ўЄ ¬Ё ॠ«Ё§®-
ў вм ЎЁЎ«Ё®вҐз­л© ¬®¤г«м, ®ЎҐбЇҐзЁў ойЁ© а Ў®вг б ®зҐаҐ¤мо Ј®в®-
ўле Їа®жҐбб®ў, гзЁвлў п ¤Ё­ ¬ЁзҐбЄ®Ґ ўл¤Ґ«Ґ­ЁҐ Ї ¬пвЁ Ї®¤ Їа®жҐб-
бл.
2. ‘®бв ўЁвм ЇаЁ¬Ґа, Ё««обваЁагойЁ© а Ў®вг ЎЁЎ«Ё®вҐз­®Ј® ¬®-
¤г«п.

я1ЋвзҐв ¤®«¦Ґ­ ᮤҐа¦ вмя0 ⥪бвл Їа®Ја ¬¬ ЎЁЎ«Ё®вҐз­®Ј® ¬®¤г«п
Ё ЇаЁ¬Ґа  б Є®¬¬Ґ­в аЁп¬Ё.





- 15 -
я2‹ Ў®а в®а­ п а Ў®в  4
я2€‘‘‹…„Ћ‚ЂЌ€… ‘€‘’…ЊЌ›• Ћ—…ђ…„…‰ ЊЌЋѓЋ‡Ђ„Ђ—ЌЋѓЋ џ„ђЂ

я1–Ґ«м а Ў®вля0 - Ё§г祭ЁҐ бЁб⥬­ле ®зҐаҐ¤Ґ© ¬­®Ј®§ ¤ з­®Ј® п¤-
а .
я2ЋЎйЁҐ ᢥ¤Ґ­Ёп

‘ ¬®© ў ¦­®© бЁб⥬­®© ®зҐаҐ¤мо п¤а  пў«пҐвбп ®зҐаҐ¤м Ј®в®-
ўле Їа®жҐбб®ў, а бᬮв७­ п ў « Ў®а в®а­®© а Ў®вҐ 3. ‚ ¤ ­­®©
а Ў®вҐ а бᬮваЁ¬ ¤агЈЁҐ ®зҐаҐ¤Ё п¤а , Є®в®алҐ ЇаЁ­пв® ®в­®бЁвм Є
бЁб⥬­л¬.

я2ЋзҐаҐ¤м § ¤Ґа¦ ­­ле Їа®жҐбб®ў

ќв  ®зҐаҐ¤м ¤ ¦Ґ Їа®йҐ ®зҐаҐ¤Ё Ј®в®ўле Ё ЇаҐ¤бв ў«Ґ­  ¤«п
Ї®«­®вл ®ЇЁб ­Ёп. „Ґ«® ў ⮬, зв® ўбҐ ­ҐўлЇ®«­пойЁҐбп Їа®жҐббл
¤®«¦­л ­ е®¤Ёвмбп ў Є ЄЁе-«ЁЎ® ®зҐаҐ¤пе. Џ®н⮬г, Ґб«Ё Їа®Ја ¬¬-
­®© бЁб⥬Ґ ­Ґ®Ўе®¤Ё¬® ЇаЁ®бв ­®ўЁвм ўлЇ®«­Ґ­ЁҐ ­ҐЄ®в®а®Ј® Їа®-
жҐбб , ҐЈ® ­Ґ®Ўе®¤Ё¬® Ї®¬ҐбвЁвм ў бЇҐжЁ «м­® ўл¤Ґ«Ґ­­го ®зҐаҐ¤м,
Є®в®аго ­ §®ўҐ¬ ®зҐаҐ¤мо § ¤Ґа¦ ­­ле, Ј¤Ґ ®­ Ўг¤Ґв ­ е®¤Ёвмбп ¤®
вҐе Ї®а, Ї®Є  бЁб⥬Ґ ­Ґ Ї®­ ¤®ЎЁвбп ҐЈ® ў®§®Ў­®ўЁвм. ‚ н⮬ б«г-
з Ґ Їа®жҐбб Ё§ў«ҐЄ Ґвбп Ё§ ®зҐаҐ¤Ё § ¤Ґа¦ ­­ле Ё Ї®¬Ґй Ґвбп ў
®зҐаҐ¤м Ј®в®ўле Їа®жҐбб®ў.
ЋЇЁб ­ЁҐ в Є®© ®зҐаҐ¤Ё ¬®¦Ґв ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
Type
List = Object
First : Process;
Constructor Init;
Destructor Done; Virtual;
Procedure Insert(P : Process);
Procedure Remove(P : Process);
End {List}.

я2ЋзҐаҐ¤м Їа®жҐбб®ў, § ¤Ґа¦ ­­ле ­  ўаҐ¬п

„ ­­л© ®ЎкҐЄв ўлЇ®«­пҐв дг­ЄжЁЁ Є« ббЁзҐбЄ®© ўаҐ¬Ґ­­®© § -
¤Ґа¦ЄЁ ўлЇ®«­Ґ­Ёп Їа®Ја ¬¬л, ­ ЇаЁ¬Ґа: Delay(T : Word), Є®в®а п
®ЎҐбЇҐзЁў Ґв " ЄвЁў­®Ґ" ®¦Ё¤ ­ЁҐ, ¤®ЇгбвЁ¬®Ґ ў ®¤­®§ ¤ з­®© баҐ-
¤Ґ. ‚ ¬­®Ј®§ ¤ з­®© б।Ґ ЇаЁ ­Ґ®Ўе®¤Ё¬®бвЁ § ¤Ґа¦ вм Їа®жҐбб ­ 

- 16 -
ўаҐ¬п ҐЈ® 楫Ґб®®Ўа §­® Ё§ў«Ґзм Ё§ ®зҐаҐ¤Ё Ј®в®ўле Ё ⥬ б ¬л¬
а бЇаҐ¤Ґ«пвм Їа®жҐбб®а­®Ґ ўаҐ¬п 㦥 ¬Ґ¦¤г ¬Ґ­миЁ¬ зЁб«®¬ Їа®жҐб-
б®ў.
’Ґе­®«®ЈЁп ॠ«Ё§ жЁЁ ®зҐаҐ¤Ё, ўлЇ®«­по饩 дг­ЄжЁЁ § ¤Ґа¦ЄЁ
Їа®жҐбб®ў ­  ўаҐ¬п, ®б­®ў ­  ­  б«Ґ¤гойЁе Ї®«®¦Ґ­Ёпе:
1. Њг«мвЁ§ ¤ з­ п б।  "§­ Ґв" ⥪г饥 ўаҐ¬п, Є®в®а®Ґ ¬®¦Ґв
Ї®¤бзЁвлў вмбп Ї® Є®«ЁзҐбвўг ўл§®ў®ў ¤ЁбЇҐвзҐа -®Ўа Ў®взЁЄ  ЇаҐ-
алў ­Ё© ®в в ©¬Ґа .
2. ‚ ¬®¬Ґ­в ®Ўа йҐ­Ёп Їа®жҐбб  Є ¬Ґв®¤г "§ ¤Ґа¦ вм ­  ўаҐ¬п
’" Їа®жҐбб ЇҐаҐў®¤Ёвбп ў ®зҐаҐ¤м,   ў бЇҐжЁ «м­®Ґ Ї®«Ґ ¤ҐбЄаЁЇв®-
а  Їа®жҐбб  § ­®бЁвбп ўаҐ¬п ҐЈ®  ЄвЁўЁ§ жЁЁ, а ў­®Ґ б㬬Ґ ⥪гйҐ-
Ј® ўаҐ¬Ґ­Ё Ё Ё­вҐаў «  ’ § ¤Ґа¦ЄЁ.
3. „ЁбЇҐвзҐа ­  Є ¦¤®¬ ЇаҐалў ­ЁЁ Їа®ўҐапҐв ®зҐаҐ¤м § ¤Ґа-
¦ ­­ле ­  ­ «ЁзЁҐ Їа®жҐбб®ў, ¤«п Є®в®але ⥪г饥 ўаҐ¬п б®ўЇ «® б
ўаҐ¬Ґ­Ґ¬ Ёе  ЄвЁўЁ§ жЁЁ, Ё ЇҐаҐў®¤Ёв нвЁ Їа®жҐббл ў ®зҐаҐ¤м Ј®в®-
ўле.
‘ гзҐв®¬ ЇаЁўҐ¤Ґ­­ле Ї®«®¦Ґ­Ё© ®ЇЁб ­ЁҐ ®зҐаҐ¤Ё § ¤Ґа¦ ­­ле
Ўг¤Ґв ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
Type
DelayList = Object(List)
Procedure Delay(T : Word);
Procedure Activisation;
End {DelayList}.
ЊҐв®¤ DelayList.Activisation Ї®¬Ґй Ґвбп ў ¤ЁбЇҐвзҐа.

„ ¤Ё¬ б«®ўҐб­®Ґ ®ЇЁб ­ЁҐ ¬Ґв®¤  DelayList.Delay(T : Word).
Procedure DelayList.Delay(T : Word);
Var
ЏаҐ¤л¤гйЁ© : Џа®жҐбб;
Begin
ЏаҐ¤л¤гйЁ© := ’ҐЄгйЁ©;
ЏаҐ¤л¤гйЁ©^.Tact := T + Tcur;
‚Є«озЁвм(ЏаҐ¤л¤гйЁ©);
’ҐЄгйЁ© := ЋзҐаҐ¤м_ѓ®в®ўле.ЏҐаўл©;
ЋзҐаҐ¤м_ѓ®в®ўле.€§ў«Ґзм(’ҐЄгйЁ©);
ЏҐаҐ¤ вм_“Їа ў«Ґ­ЁҐ(ЏаҐ¤л¤гйЁ©, ’ҐЄгйЁ©);
End {DelayList.Delay}.
„ ¤Ё¬ б«®ўҐб­®Ґ ®ЇЁб ­ЁҐ ¬Ґв®¤  DelayList.Activisation:
Procedure DelayList.Activisation;

- 17 -
Var
’ҐЄгйЁ©, ‘«Ґ¤гойЁ© : Џа®жҐбб;
Begin
’ҐЄгйЁ© := ЏҐаўл©;
Џ®Є  ’ҐЄгйЁ© <> NIL „Ґ« вм Ќ з «®
‘«Ґ¤гойЁ© := ’ҐЄгйЁ©^.‘«Ґ¤гойЁ©;
…б«Ё ’ҐЄгйЁ©^.Tact = Tcur ’® Ќ з «®
€§ў«Ґзм(’ҐЄгйЁ©);
ЋзҐаҐ¤м_ѓ®в®ўле.‚Є«озЁвм(’ҐЄгйЁ©);
Љ®­Ґж {…б«Ё};
’ҐЄгйЁ© := ‘«Ґ¤гойЁ©;
Љ®­Ґж {Џ®Є };
End {DelayList.Activisation}.

я2ЋзҐаҐ¤м г­Ёз⮦ Ґ¬ле Їа®жҐбб®ў

—в®Ўл г­Ёз⮦Ёвм Їа®жҐбб, ­ е®¤пйЁ©бп ў Є Є®©-«ЁЎ® ®зҐаҐ¤Ё,
ҐЈ® ­Ґ®Ўе®¤Ё¬® Ё§кпвм Ё§ ­ҐҐ Ё а §агиЁвм ¤ҐбЄаЁЇв®а Їа®жҐбб . ЏаЁ
н⮬ ­ЁЄ ЄЁе Їа®Ў«Ґ¬ ­Ґ ў®§­ЁЄ Ґв. Ћ­Ё Ї®пў«повбп, Є®Ј¤  вॡгҐв-
бп г­Ёз⮦Ёвм  ЄвЁў­л© Їа®жҐбб, в.Ґ. ўлЇ®«­пойЁ©бп ў ⥪гйЁ© ¬®-
¬Ґ­в ўаҐ¬Ґ­Ё. Ќ ЇаЁ¬Ґа, Їа®жҐбб § Є®­зЁ« ўлЇ®«­Ґ­ЁҐ ЇаҐ¤ЇЁб ­­ле
Ґ¬г ¤Ґ©бвўЁ© Ё ¦Ґ« Ґв б ¬®г­Ёз⮦Ёвмбп. ‚ н⮬ б«гз Ґ Їа®бв® а §-
агиЁвм ¤ҐбЄаЁЇв®а Їа®жҐбб  ­Ґ«м§п, в Є Є Є гЇа ў«Ґ­ЁҐ ®в  ЄвЁў­®-
Ј® Їа®жҐбб  ЇҐаҐ¤ Ґвбп ЇҐаў®¬г ў ®зҐаҐ¤Ё Ј®в®ўле Їа®жҐбб®ў зҐаҐ§
Ёе ¤ҐбЄаЁЇв®ал, Ё Ґб«Ё ¤ҐбЄаЁЇв®а  ЄвЁў­®Ј® Їа®жҐбб  а §агиЁвм,
в® дг­ЄжЁЁ Transfer(Old, New : Process) Ўг¤Ґв ЇҐаҐ¤ ­ гЄ § вҐ«м
­  ­ҐбгйҐбвўгойЁ© ¤ҐбЄаЁЇв®а Ё бЁб⥬  § ўЁб­Ґв.
Џ®н⮬г вҐе­®«®ЈЁп Є®а४⭮Ј® г­Ёз⮦Ґ­Ёп Їа®жҐбб  б®бв®Ёв
ў б«Ґ¤го饬:
1. Џа®жҐбб, ¦Ґ« ойЁ© б ¬®г­Ёз⮦Ёвмбп, ЇҐаҐў®¤Ёвбп ў бЇҐжЁ-
 «м­го ®зҐаҐ¤м г­Ёз⮦ Ґ¬ле Їа®жҐбб®ў,   ҐЈ® ¤ҐбЄаЁЇв®а ­Ґ а §аг-
и Ґвбп.
2. „ЁбЇҐвзҐа ­  Є ¦¤®¬ ЇаҐалў ­ЁЁ ®зЁй Ґв ®зҐаҐ¤м г­Ёз⮦ Ґ-
¬ле Їа®жҐбб®ў, а §аги п Ёе ¤ҐбЄаЁЇв®ал.
‘ гзҐв®¬ ЇаЁўҐ¤Ґ­­ле Ї®«®¦Ґ­Ё© ®ЇЁб ­ЁҐ ®зҐаҐ¤Ё г­Ёз⮦ Ґ¬ле
Їа®жҐбб®ў ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬:
Type
KillList = Object(List)
Procedure SelfInsert;

- 18 -
Procedure Clear;
End {KillList}.
ЊҐв®¤ KillList.Clear ўл§лў Ґвбп Ё§ Їа®жҐ¤гал ¤ЁбЇҐвзҐа  ­ 
Є ¦¤®¬ ЇаҐалў ­ЁЁ ®в в ©¬Ґа .
„ ¤Ё¬ б«®ўҐб­®Ґ ®ЇЁб ­ЁҐ ¬Ґв®¤  KillList.Clear.
Procedure KillList.Clear;
Var
‚६Ґ­­л© : Џа®жҐбб;
Begin
Џ®Є  ЏҐаўл© <> NIL „Ґ« вм Ќ з «®
‚६Ґ­­л© := ЏҐаўл©;
ЏҐаўл© := ‚६Ґ­­л©^.‘«Ґ¤гойЁ©;
ђ §агиЁвм(‚६Ґ­­л©);
Љ®­Ґж {Џ®Є };
End {KillList.Clear}.

ЏаЁ¬ЁвЁў п¤а  “Ќ€—’Ћ†€’њ_ЏђЋ–…‘‘(P : ЏђЋ–…‘‘) ўлЈ«п¤Ёв б«Ґ-
¤гойЁ¬ ®Ўа §®¬ KillList.Insert(P).
ЏаЁ б ¬®г­Ёз⮦Ґ­ЁЁ Їа®жҐбб ¤®«¦Ґ­ ®Ўа вЁвмбп Є ¬Ґв®¤г:
KillList.SelfInsert.
‡ ¬ҐвЁ¬, зв® Їа®жҐбб ­ЁЄ®Ј¤  ­Ґ ¤®«¦Ґ­ § Є ­зЁў вмбп ўл室®¬
­  End Їа®жҐ¤гал, Є®в®а п ҐЈ® ®ЇЁблў Ґв,   в®«мЄ® ўл§®ў®¬ Kill-
List.SelfInsert.

я2‡ ¤ ­ЁҐ

1. €бЇ®«м§гп ¬ вҐаЁ «л ЇаҐ¤л¤гйЁе « Ў®а в®а­ле а Ў®в Ё
ЇаҐ¤бв ў«Ґ­­®Ґ ўлиҐ ®ЇЁб ­ЁҐ бЁб⥬­ле ®зҐаҐ¤Ґ©, ॠ«Ё§®ў вм ®Ўк-
ҐЄвл: ®зҐаҐ¤м § ¤Ґа¦ ­­ле Їа®жҐбб®ў, ®зҐаҐ¤м Їа®жҐбб®ў, § ¤Ґа¦ ­-
­ле ­  ўаҐ¬п, ®зҐаҐ¤м г­Ёз⮦ Ґ¬ле Їа®жҐбб®ў.
2. „®Ў ўЁвм ЇҐаҐзЁб«Ґ­­лҐ ®ЎкҐЄвл ў ЎЁЎ«Ё®вҐз­л© ¬®¤г«м, аҐ-
 «Ё§гойЁ© п¤а®.
3. ђҐ «Ё§®ў вм Їа®Ја ¬¬г, ¤Ґ¬®­бваЁагойго а Ў®в®бЇ®б®Ў­®бвм
а §а Ў®в ­­ле ®ЎкҐЄв®ў.

я1ЋвзҐв ¤®«¦Ґ­ ᮤҐа¦ вмя0 ⥪бвл Їа®Ја ¬¬л Ё ЎЁЎ«Ё®вҐз­®Ј® ¬®-
¤г«п б Є®¬¬Ґ­в аЁп¬Ё.



- 19 -
я2‹ Ў®а в®а­ п а Ў®в  5
я2€‘‘‹…„Ћ‚ЂЌ€… Њ…’Ћ„Ћ‚ ‘€Ќ•ђЋЌ€‡Ђ–€€ ЏђЋ–…‘‘Ћ‚

я1–Ґ«м а Ў®вля0 - §­ Є®¬бвў® б ¬Ґв®¤ ¬Ё бЁ­еа®­Ё§ жЁЁ Їа®жҐбб®ў
­  ®б­®ўҐ ᥬ д®а®ў.

я2ЋЎйЁҐ ᢥ¤Ґ­Ёп

‘Ё­еа®­Ё§ жЁҐ© ­ §лў Ґвбп ®ЎҐбЇҐзҐ­ЁҐ § ¤ ­­®© ®зҐаҐ¤­®бвЁ
Їа®е®¦¤Ґ­Ёп Їа®жҐбб®ў зҐаҐ§ ®ЇаҐ¤Ґ«Ґ­­лҐ б®бв®п­Ёп.
Ќ ЁЎ®«ҐҐ з бв® бЁ­еа®­Ё§ жЁп вॡгҐвбп ¤«п Є®®а¤Ё­ жЁЁ ¤®б-
вгЇ  ­ҐбЄ®«мЄЁе Їа®жҐбб®ў Є ®¤­®¬г а §¤Ґ«пҐ¬®¬г аҐбгабг.
ђ бᬮваЁ¬ Їа®б⥩訩 ЇаЁ¬Ґа. ЏаҐ¤Ї®«®¦Ё¬, зв® ¤ў  Їа®жҐбб 
ўлў®¤пв Ё­д®а¬ жЁо ў ўЁ¤Ґ бЁ¬ў®«  ў а §­лҐ в®зЄЁ нЄа ­ .
”а Ј¬Ґ­в ⥪бв  Їа®жҐ¤га, ᮮ⢥вбвўгойЁе Їа®жҐбб ¬, ўлЈ«п-
¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬:
Џа®жҐбб 1 Џа®жҐбб 2

(1) GoTo(X,Y); (3) GoTo(X,Y);
(2) Write(Ch); (4) Write(Ch);

ЏаЁ ўлЇ®«­Ґ­ЁЁ Їа®жҐбб®ў ў ०Ё¬Ґ а §¤Ґ«Ґ­Ёп ўаҐ¬Ґ­Ё ў®§¬®¦-
­  бЁвг жЁп, Є®Ј¤  ®ЇҐа в®а®¬ GoTo(X,Y) Єгаб®а гбв ­ ў«Ёў Ґвбп ў
­г¦­го в®зЄг нЄа ­  ®¤­Ё¬ Їа®жҐбᮬ, § вҐ¬ ¤ЁбЇҐвзҐа ЇҐаҐ¤ Ґв гЇ-
а ў«Ґ­ЁҐ ¤агЈ®¬г Їа®жҐббг, Є®в®ал© ў нв® ўаҐ¬п ўлЇ®«­пҐв ®ЇҐа жЁо
ўлў®¤  бЁ¬ў®« . ’® Ґбвм ®зҐаҐ¤­®бвм ўлЇ®«­Ґ­Ёп ¤Ґ©бвўЁ© в Є®ў :
1, 3, 2, 4 Ё«Ё 3, 1, 4, 2. ЋзҐўЁ¤­®, зв® ў н⮬ б«гз Ґ ®¤Ё­ Ё§
Їа®жҐбб®ў ўлўҐ¤Ґв Ё­д®а¬ жЁо ­Ґ ў в® ¬Ґбв® нЄа ­ , Єг¤  Ї« ­Ёа®-
ў «.
‘гвм ЁбЇа ў«Ґ­Ёп ®иЁЎЄЁ б®бв®Ёв ў ®ЎҐбЇҐзҐ­ЁЁ ­Ґ¤Ґ«Ё¬®бвЁ
ўлЇ®«­Ґ­Ёп Ї®б«Ґ¤®ў вҐ«м­®бвЁ ¤Ґ©бвўЁ© GoTo(X,Y) Ё Write(Ch).

‚ Ў®«ҐҐ ®ЎйҐ¬ б¬лб«Ґ бЁвг жЁп ЇаҐ¤бв ў«пҐвбп б«Ґ¤гойЁ¬ ®Ўа -
§®¬. ќЄа ­ ў ¤ ­­®¬ б«гз Ґ ўлбвгЇ Ґв ў а®«Ё а §¤Ґ«пҐ¬®Ј® аҐбгаб ,
Є®в®ал© б®ў¬Ґбв­® Ё ®¤­®ўаҐ¬Ґ­­® ЁбЇ®«м§гов ¤ў  Їа®жҐбб . ЋиЁЎЄ 
ў®§­ЁЄ Ґв ЇаЁ ®вбгвбвўЁЁ ॣ« ¬Ґ­в жЁЁ ¤®бвгЇ  Є а §¤Ґ«пҐ¬®¬г аҐ-
бгабг, Є®в®а п § Є«оз Ґвбп ў ⮬, зв® Ґб«Ё ®¤Ё­ Їа®жҐбб а Ў®в Ґв
б ®ЎйЁ¬ аҐбгаᮬ, в® ¤агЈ®© ­Ґ ¤®«¦Ґ­ ў нв® ¦Ґ ўаҐ¬п а Ў®в вм б
­Ё¬.

- 20 -
€бЇ®«м§гҐ¬л© б®ў¬Ґбв­® ­ҐбЄ®«мЄЁ¬Ё Їа®жҐбб ¬Ё аҐбгаб ­ §лў -
Ґвбп ЄаЁвЁзҐбЄЁ¬, гз бв®Є Їа®Ја ¬¬л Їа®жҐбб , ॠ«Ё§гойЁ© а Ў®вг
б ЄаЁвЁзҐбЄЁ¬ аҐбгаᮬ, ­ §лў Ґвбп ЄаЁвЁзҐбЄЁ¬ гз бвЄ®¬,   ०Ё¬,
ЇаЁ Є®в®а®¬ в®«мЄ® ®¤Ё­ Їа®жҐбб ў Їа®Ё§ў®«м­л© ¬®¬Ґ­в ўаҐ¬Ґ­Ё ¬®-
¦Ґв а Ў®в вм б ЄаЁвЁзҐбЄЁ¬ аҐбгаᮬ (Ё«Ё ­ е®¤Ёвмбп ў ЄаЁвЁзҐбЄ®¬
гз бвЄҐ), ­ §лў Ґвбп ०Ё¬®¬ ў§ Ё¬­®Ј® ЁбЄ«о祭Ёп.
‚ бЁб⥬ е ॠ«м­®Ј® ўаҐ¬Ґ­Ё ЇаҐ­ҐЎаҐ¦Ґ­ЁҐ ॣ« ¬Ґ­в жЁҐ©
¤®бвгЇ  ­ҐбЄ®«мЄЁе Їа®жҐбб®ў Є ЄаЁвЁзҐбЄ®¬г аҐбгабг ¬®¦Ґв ЇаЁў®-
¤Ёвм Є Є в бва®дЁзҐбЄЁ¬ Ї®б«Ґ¤бвўЁп¬.

я2ЊҐв®¤л ®ЎҐбЇҐзҐ­Ёп ०Ё¬  ў§ Ё¬­®Ј® ЁбЄ«о祭Ёп

Њ®¦­® ўл¤Ґ«Ёвм ваЁ ЇаЁ­жЁЇЁ «м­ле ЇгвЁ ®ЎҐбЇҐзҐ­Ёп ०Ё¬ 
ў§ Ё¬­®Ј® ЁбЄ«о祭Ёп.
я11) ‡ ЇаҐв ЇаҐалў ­Ё© ­  ўе®¤Ґ ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё а §аҐ-
я1襭ЁҐ ЇаҐалў ­Ё© ­  ўл室Ґ Ё§ ­ҐЈ®.
‚ н⮬ б«гз Ґ да Ј¬Ґ­в Їа®Ја ¬¬л а Ў®вл б ЄаЁвЁзҐбЄЁ¬ гз бв-
Є®¬ ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬:
‡ ЇаҐв ЇаҐалў ­Ё©:
ЉаЁвЁзҐбЄЁ© гз бв®Є;
ђ §аҐиҐ­ЁҐ ЇаҐалў ­Ё©.

ЏҐаўл¬ Ё Ґ¤Ё­б⢥­­л¬ ў бў®© ЄаЁвЁзҐбЄЁ© гз бв®Є ў®©¤Ґв в®в
Їа®жҐбб, Є®в®ал© ЇҐаўл¬ ¤®ЎҐаҐвбп ¤® Ё­бвагЄжЁЁ CLI ў дг­ЄжЁЁ
я1"‡ ЇаҐв ЇаҐалў ­Ё©"я0. ЏаҐалў ­Ёп Ўг¤гв § ЇаҐйҐ­л, ¤ЁбЇҐвзҐа ЇаҐЄ-
а вЁв а Ў®вг Ё ўбҐ ¤агЈЁҐ Їа®жҐббл ҐбвҐб⢥­­л¬ ®Ўа §®¬ Ўг¤гв
ЇаЁ®бв ­®ў«Ґ­л. Џ®б«Ґ ўл室  Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ  ЇаҐалў ­Ёп
Ўг¤гв а §аҐиҐ­л Ё Є Є®©-в® ¤агЈ®© Їа®жҐбб ᬮ¦Ґв ў®©вЁ ў бў®©
ЄаЁвЁзҐбЄЁ© гз бв®Є.
’ Є®© бЇ®б®Ў ®аЈ ­Ё§ жЁЁ ў§ Ё¬­®Ј® ЁбЄ«о祭Ёп ®Ў« ¤ Ґв бг-
йҐб⢥­­л¬Ё ­Ґ¤®бв вЄ ¬Ё:
- ЇаЁ § ЇаҐвҐ ЇаҐалў ­Ё© бЁб⥬  бв ­®ўЁвбп б«ҐЇ®© Ё Ј«ге®©
Є ў­Ґи­Ё¬ ў®§¤Ґ©бвўЁп¬ ®Єаг¦ о饩 б।л, Є®в®алҐ д®а¬Ёаговбп, Є Є
Їа ўЁ«®, зҐаҐ§ бЁб⥬㠯аҐалў ­Ё©;
- ЇаЁ®бв ­ ў«Ёў овбп ¤ ¦Ґ ⥠Їа®жҐббл, Є®в®алҐ ў®®ЎйҐ ­Ґ а -
Ў®в ов б ¤ ­­л¬ аҐбгаᮬ.
Џ®н⮬㠤 ­­л© бЇ®б®Ў ®аЈ ­Ё§ жЁЁ ў§ Ё¬­®Ј® ЁбЄ«о祭Ёп ЇаЁ-
¬Ґ­пҐвбп ў вҐе б«гз пе, Є®Ј¤  ЄаЁвЁзҐбЄЁ© гз бв®Є ®зҐ­м Є®а®вЄЁ©,
­ ЇаЁ¬Ґа, ­ҐбЄ®«мЄ® Ё­бвагЄжЁ©.

- 21 -
я12) ЂЄвЁў­®Ґ ®¦Ё¤ ­ЁҐ.
‚ н⮬ б«гз Ґ ўў®¤Ёвбп ­ҐЄ®в®ал© д« Ј § ­пв®бвЁ аҐбгаб , Є®-
в®ал© Їа®ўҐапҐвбп Їа®жҐбᮬ ЇҐаҐ¤ ⥬, Є Є ў®©вЁ ў ЄаЁвЁзҐбЄЁ©
гз бв®Є. …б«Ё д« Ј, Є®в®ал© ў­ з «Ґ гбв ­ ў«Ёў Ґвбп ў б®бв®п­ЁҐ
‘‚ЋЃЋ„…Ќ, ­ е®¤Ёвбп ў б®бв®п­ЁЁ ‘‚ЋЃЋ„…Ќ, в® Їа®жҐбб ЇҐаҐў®¤Ёв
ҐЈ® ў б®бв®п­ЁҐ ‡ЂЌџ’ Ё ўе®¤Ёв ў ЄаЁвЁзҐбЄЁ© гз бв®Є. ЏаЁ ўл室Ґ
Ё§ ­ҐЈ® Їа®жҐбб гбв ­ ў«Ёў Ґв д« Ј ў б®бв®п­ЁҐ ‘‚ЋЃЋ„…Ќ. …б«Ё ЇаЁ
Ї®¤е®¤Ґ Є ЄаЁвЁзҐбЄ®¬г гз бвЄг д« Ј ®Є §лў Ґвбп ў б®бв®п­ЁЁ ‡Ђ-
Ќџ’, в® Їа®жҐбб ­ зЁ­ Ґв Їа®ўҐапвм б®бв®п­ЁҐ д« Ј  ў жЁЄ«Ґ ¤® вҐе
Ї®а, Ї®Є  д« Ј ­Ґ Ўг¤Ґв гбв ­®ў«Ґ­ ў б®бв®п­ЁҐ ‘‚ЋЃЋ„…Ќ ¤агЈЁ¬
Їа®жҐбᮬ.
”а Ј¬Ґ­вл Їа®жҐ¤гал, ®ЇЁблў ойЁҐ Їа®жҐбб ­  нв Ї е ўе®¤  ў
ЄаЁвЁзҐбЄЁ© гз бв®Є Ё ўл室  Ё§ ­ҐЈ®, ўлЈ«п¤пв б«Ґ¤гойЁ¬ ®Ўа §®¬:

€­ЁжЁ «Ё§ жЁп: FLAG := ‘‚ЋЃЋ„…Ќ;

While FLAG = ‡ЂЌџ’ Do Begin
End {While};
FLAG := ‡ЂЌџ’;
ЉаЁвЁзҐбЄЁ© гз бв®Є;
FLAG := ‘‚ЋЃЋ„…Ќ;

‚ ¤ ­­®¬ б«гз Ґ б ¬ д« Ј пў«пҐвбп ЄаЁвЁзҐбЄЁ¬ аҐбгаᮬ Ё
¤®бвгЇ Є ­Ґ¬г ¤®«¦Ґ­ Їа®Ё§ў®¤Ёвмбп ў ०Ё¬Ґ ў§ Ё¬­®Ј® ЁбЄ«о祭Ёп.
”а Ј¬Ґ­в ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є б Їа®ўҐаЄ®© Ё гбв ­®ўЄ®©
д« Ј  ў ०Ё¬Ґ ў§ Ё¬­®Ј® ЁбЄ«о祭Ёп ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬
(б®бв®п­Ёо ‡ЂЌџ’ ᮮ⢥вбвўгҐв FLAG = 1):
LBL : STI
CLI
CMP FLAG, 1
JZ LBL
MOV FLAG, 1
STI
…б«Ё з⥭ЁҐ Ё гбв ­®ўЄг д« Ј  ўлЇ®«­пвм §  ®¤­г Ё­бвагЄжЁо,
Є®в®а п пў«пҐвбп ­Ґ¤Ґ«Ё¬л¬ ¤Ґ©бвўЁҐ¬, в® ўе®¤ ў ЄаЁвЁзҐбЄЁ© гз б-
в®Є ¬®¦­® ўлЇ®«­Ёвм Ў®«ҐҐ н«ҐЈ ­в­®,   Ё¬Ґ­­®:
MOV AX, 1
LBL : XCHG AX, FLAG
CMP AX, 1

- 22 -
JZ LBL

ЌҐ¤®бв вЄ®¬ ЇаЁўҐ¤Ґ­­®Ј® ¬Ґв®¤  ॠ«Ё§ жЁЁ ў§ Ё¬­®Ј® ЁбЄ«о-
祭Ёп пў«пҐвбп  ЄвЁў­®Ґ ®¦Ё¤ ­ЁҐ, в. Ґ. Їа®жҐбб, Є®в®ал© ¦¤Ґв ®б-
ў®Ў®¦¤Ґ­Ёп аҐбгаб , § ­Ё¬ Ґв Їа®жҐбб®а ў ®вў®¤Ё¬лҐ Ґ¬г ¤ЁбЇҐвзҐ-
஬ Єў ­вл ўаҐ¬Ґ­Ё, е®вп Ё ­Ґ ўлЇ®«­пҐв ­ЁЄ ЄЁе Ї®«Ґ§­ле ¤Ґ©б-
вўЁ©.
Џ®н⮬㠢 б«гз Ґ ®¦Ё¤ ­Ёп ®бў®Ў®¦¤Ґ­Ёп аҐбгаб  жҐ«Ґб®®Ўа §­®
Ё§ў«Ґзм Їа®жҐбб Ё§ ®зҐаҐ¤Ё Ј®в®ўле Їа®жҐбб®ў Ё ­Ґ ЇаҐ¤®бв ў«пвм
Ґ¬г ЎҐбЇ®«Ґ§­® ЁбЇ®«м§гҐ¬ле Єў ­в®ў ўаҐ¬Ґ­Ё. Ќ  н⮬ Ї®«®¦Ґ­ЁЁ
®б­®ў ­® ЁбЇ®«м§®ў ­ЁҐ ᥬ д®а®ў Є Є б।бвў ў§ Ё¬­®Ј® ЁбЄ«о祭Ёп
ЇаЁ ¤®бвгЇҐ Є ЄаЁвЁзҐбЄ®¬г аҐбгабг.

я13) ‘Ґ¬ д®ал.
‘Ґ¬ д®а ЇаҐ¤бв ў«пҐв б®Ў®© ®ЎкҐЄв, ўЄ«оз ойЁ© бзҐвзЁЄ Ё ®зҐ-
।м. ‚ ®зҐаҐ¤м Ї®¬Ґй овбп Їа®жҐббл, ¦¤гйЁҐ ­ бвгЇ«Ґ­Ёп ­ҐЄ®в®а®-
Ј® б®ЎлвЁп, ­ ЇаЁ¬Ґа ®бў®Ў®¦¤Ґ­Ёп аҐбгаб . “б«®ўЁп Ї®¬ҐйҐ­Ёп Їа®-
жҐбб  ў ®зҐаҐ¤м Ё Ё§ў«ҐзҐ­Ёп Ё§ ­ҐҐ б 楫мо  ЄвЁўЁ§ жЁЁ ®ЇаҐ¤Ґ«п-
овбп б®бв®п­ЁҐ¬ бзҐвзЁЄ  Ё Їа®ўҐаповбп ¤ўг¬п ®ЇҐа жЁп¬Ё ­ ¤ ᥬ -
д®а®¬, Є®в®алҐ ­ §лў овбп P- Ё V- ®ЇҐа жЁп¬Ё.
ЏаЁ­жЁЇл а Ў®вл б ᥬ д®а®¬ ¬®¦­® ®ЇЁб вм б«Ґ¤гойЁ¬ ®Ўа §®¬.
‚ Ёб室­®¬ б®бв®п­ЁЁ ᥬ д®а ®вЄалв. Џа®жҐбб Їа®е®¤Ёв зҐаҐ§ ®вЄ-
алвл© бҐ¬ д®а ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё § Єалў Ґв §  б®Ў®© ᥬ д®а.
„агЈ®© Їа®жҐбб, Ї®¤е®¤п Є ЄаЁвЁзҐбЄ®¬г гз бвЄг, ­ влЄ Ґвбп ­ 
§ Єалвл© бҐ¬ д®а Ё ўл­г¦¤Ґ­ ¦¤ вм ҐЈ® ®вЄалвЁп ў ®зҐаҐ¤Ё ᥬ д®-
а . Џа®жҐбб, ўле®¤п Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ , ®вЄалў Ґв ᥬ д®а Ё
 ЄвЁўЁ§ЁагҐв ЇҐаўл© ў ®зҐаҐ¤Ё ᥬ д®а  Їа®жҐбб, Є®в®ал© вҐЇҐам
¬®¦Ґв ў®©вЁ ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё в Є¦Ґ § Єалвм §  б®Ў®© ᥬ -
д®а.
‘®бв®п­ЁҐ бзҐвзЁЄ  ᥬ д®а  ЁЈа Ґв а®«м Ё­¤ЁЄ в®а  § ­пв®бвЁ
аҐбгаб . ЏаЁ­пв® Ё­ЁжЁ «Ё§Ёа®ў вм бзҐвзЁЄ ў 1, ¤ҐЄаҐ¬Ґ­вЁа®ў вм
ҐЈ® ЇаЁ Ї®¤е®¤Ґ Є ЄаЁвЁзҐбЄ®¬г гз бвЄг (ђ - ®ЇҐа жЁп) Ё Ё­ЄаҐ¬Ґ­-
вЁа®ў вм ЇаЁ ўл室Ґ Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ  (V - ®ЇҐа жЁп). ’ ЄЁ¬
®Ўа §®¬, а ўҐ­бвў® ­г«о бзҐвзЁЄ  бўЁ¤ҐвҐ«мбвўгҐв ® ў®§¬®¦­®бвЁ
ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є,   ®ваЁж вҐ«м­®Ґ §­ зҐ­ЁҐ бзҐвзЁЄ 
бўЁ¤ҐвҐ«мбвўгҐв ® ­ «ЁзЁЁ Їа®жҐбб  ў ЄаЁвЁзҐбЄ®¬ гз бвЄҐ Ё ­Ґ®Ў-
室Ё¬®бвЁ Ў«®ЄЁа®ўЄЁ, в. Ґ. ® ЇҐаҐў®¤Ґ ў ®зҐаҐ¤м ᥬ д®а  б ЇҐаҐ-
¤ зҐ© гЇа ў«Ґ­Ёп ¤агЈЁ¬ Їа®жҐбб ¬.


- 23 -
я2’Ґе­®«®ЈЁп ॠ«Ё§ жЁЁ ᥬ д®а 

’Ґе­®«®ЈЁп ॠ«Ё§ жЁЁ ᥬ д®а  ЇаҐ¤бв ў«Ґ­  ў ўЁ¤Ґ ®ЇЁб ­Ёп
ᥬ д®а  Є Є ®ЎкҐЄв  п§лЄ  Їа®Ја ¬¬Ёа®ў ­Ёп.
Type
PSemaphore = ^TSemaphore;
TSemaphore = Object
‘зҐвзЁЄ : –Ґ«®Ґ;
ЋзҐаҐ¤м_ᥬ д®а  : ЋзҐаҐ¤м Їа®жҐбб®ў;
Constructor Init(‘ : –Ґ«®Ґ);
Destructor Done; Virtual;
Procedure P;
Procedure V;
End {TSemaphore}.
Constructor TSemaphore.Init(–Ґ«®Ґ);
Begin
‘зҐвзЁЄ := ‘;
‘®§¤ вм ЋзҐаҐ¤м_ᥬ д®а ;
End {TSemaphore.Init};
Destructor TSemaphore.Done;
Begin
ђ §агиЁвм ЋзҐаҐ¤м_ᥬ д®а ;
End {TSemaphore.Done};
Procedure TSemaphore.P;
Var
ЏаҐ¤л¤гйЁ© : Џа®жҐбб;
Begin
‡ ЇаҐвЁвм_ЇаҐалў ­Ёп;
‘зҐвзЁЄ := ‘зҐвзЁЄ - 1;
If ‘зҐвзЁЄ < 0 Then Begin {Ў«®ЄЁа®ў вм Їа®жҐбб}
ЏаҐ¤л¤гйЁ© := ’ҐЄгйЁ©;
ЋзҐаҐ¤м_ᥬ д®а .‚Є«озЁвм(ЏаҐ¤л¤гйЁ©);
’ҐЄгйЁ© := ЋзҐаҐаҐ¤м_Ј®в®ўле.ЏҐаўл©;
ЋзҐаҐ¤м_Ј®в®ўле.€§ў«Ґзм(’ҐЄгйЁ©);
ЏҐаҐ¤ вм_гЇа ў«Ґ­ЁҐ(ЏаҐ¤л¤гйЁ©, ’ҐЄгйЁ©);
End {If};
ђ §аҐиЁвм_ЇаҐалў ­Ёп;
End {TSemaphore.P};


- 24 -
Procedure TSemaphore.V;
Var
ЏаҐ¤л¤гйЁ© : Џа®жҐбб;
Begin
‡ ЇаҐвЁвм_ЇаҐалў ­Ёп;
‘зҐвзЁЄ := ‘зҐвзЁЄ + 1;
If ‘зҐвзЁЄ <= 0 Then Begin { ЄвЁўЁ§Ёа®ў вм Їа®жҐбб}
ЏаҐ¤л¤гйЁ© := ’ҐЄгйЁ©;
ЋзҐаҐ¤м_Ј®в®ўле.‚Є«озЁвм(ЏаҐ¤л¤гйЁ©);
’ҐЄгйЁ© := ЋзҐаҐ¤м_ᥬ д®а .ЏҐаўл©;
ЋзҐаҐ¤м_ᥬ д®а .€§ў«Ґзм(’ҐЄгйЁ©);
ЏҐаҐ¤ вм_гЇа ў«Ґ­ЁҐ(ЏаҐ¤л¤гйЁ©, ’ҐЄгйЁ©);
End {If};
ђ §аҐиЁвм_ЇаҐалў ­Ёп;
End {TSemaphore.V}.

‡¤Ґбм Їа®жҐбб, ўл§ў ўиЁ© ¬Ґв®¤ TSemaphore.V, ЇҐаҐў®¤Ёвбп ў
®зҐаҐ¤м Ј®в®ўле Ё  ЄвЁўЁ§ЁагҐв Їа®жҐбб, бв®пйЁ© ЇҐаўл¬ ў ®зҐаҐ¤Ё
ᥬ д®а .

я2’Ґе­®«®ЈЁп ЁбЇ®«м§®ў ­Ёп ᥬ д®а®ў

‚ ЇҐаўго ®зҐаҐ¤м ᥬ д®ал ЁбЇ®«м§говбп Є Є б।бвў  ў§ Ё¬­®-
Ј® ЁбЄ«о祭Ёп ЇаЁ ¤®бвгЇҐ Є ЄаЁвЁзҐбЄ®¬г аҐбгабг. Џа ўЁ«® ЁбЇ®«м-
§®ў ­Ёп ᥬ д®а  ў н⮬ б«гз Ґ ЇаҐ¤бв ў«Ґ­® ў ўЁ¤Ґ да Ј¬Ґ­в  Їа®-
楤гал, ®ЇЁблў о饩 Їа®жҐбб ЇаЁ ўе®¤Ґ ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё ўл-
室Ґ Ё§ ­ҐЈ®.

ђ §¤Ґ« ®ЇЁб ­Ёп:
Var
Semaphore : TSemaphore;
ђ §¤Ґ« Ё­ЁжЁ «Ё§ жЁЁ:
Semaphore.Init(1);

Џа®жҐбб ЇаЁ а Ў®вҐ б ЄаЁвЁзҐбЄЁ¬ гз бвЄ®¬:
Semaphore.P;
ЉаЁвЁзҐбЄЁ© гз бв®Є;
Semaphore.V;


- 25 -
‡ ўҐа襭ЁҐ а Ў®вл б ᥬ д®а®¬:
Semaphore.Done;

‘Ґ¬ д®ал ¬®Јгв Ўлвм ЁбЇ®«м§®ў ­л ­Ґ в®«мЄ® ¤«п Є®®а¤Ё­ жЁЁ
¤®бвгЇ  Є ЄаЁвЁзҐбЄ®¬г аҐбгабг ­ҐбЄ®«мЄЁе Їа®жҐбб®ў, ­® Ё ¤«п гб-
в ­®ў«Ґ­Ёп вॡ㥬®© ®зҐаҐ¤­®бвЁ Їа®е®¦¤Ґ­Ёп Їа®жҐбб ¬Ё ®ЇаҐ¤Ґ-
«Ґ­­ле б®бв®п­Ё©. Џгбвм, ­ ЇаЁ¬Ґа, ­Ґ®Ўе®¤Ё¬®, зв®Ўл Їа®жҐбб ђ1
Їа®иҐ« зҐаҐ§ б®бв®п­ЁҐ, ®в¬ҐзҐ­­®Ґ ¬ҐвЄ®© Њ_ђ1, ­ ЇаЁ¬Ґа з⥭ЁҐ
Ё§ п祩ЄЁ Ї ¬пвЁ Џ, в®«мЄ® Ї®б«Ґ в®Ј®, Є Є Їа®жҐбб ђ2 Їа®©¤Ґв зҐ-
१ б®бв®п­ЁҐ, ®в¬ҐзҐ­­®Ґ ¬ҐвЄ®© Њ_ђ2, ­ ЇаЁ¬Ґа § ЇЁбм ў п祩Єг
Ї ¬пвЁ Џ, в.Ґ. § ЇЁбм ¤®«¦­  Їа®Ё§®©вЁ а ­миҐ з⥭Ёп.
‘ Ї®¬®ймо ᥬ д®а  ¤ ­­ п § ¤ з  аҐи Ґвбп б«Ґ¤гойЁ¬ ®Ўа §®¬:

€­ЁжЁ «Ё§ жЁп ᥬ д®а : Semaphore.Init(0);

Џа®жҐбб ђ1 Џа®жҐбб ђ2

Semaphore.P;
Њ_ђ1 : —⥭ЁҐ Ё§ Џ; Њ_ђ2 : ‡ ЇЁбм ў Џ;
Semaphore.V;

…б«Ё Їа®жҐбб ђ1 Ї®¤®©¤Ґв Є ¬ҐвЄҐ Њ_ђ1 а ­миҐ, 祬 Їа®жҐбб ђ2
- Є ¬ҐвЄҐ Њ_ђ2, в® ®­ Ўг¤Ґв ўл­г¦¤Ґ­ Ў«®ЄЁа®ў вмбп ў ®зҐаҐ¤Ё бҐ-
¬ д®а . Џа®жҐбб ђ2, ўлЇ®«­Ёў § ЇЁбм ў п祩Єг Џ, ўл§®ўҐв Semapho-
re.V Ё ⥬ б ¬л¬  ЄвЁўЁ§ЁагҐв Їа®жҐбб ђ1, Ї®§ў®«Ёў Ґ¬г ўлЇ®«­Ёвм
з⥭ЁҐ в®«мЄ® Ї®б«Ґ в®Ј® Є Є ®бгйҐбвў«Ґ­  § ЇЁбм.
— бв® Їа®жҐббл ॠ«Ё§говбп ў ўЁ¤Ґ ЎҐбЄ®­Ґз­ле жЁЄ«®ў, Ї®нв®-
¬г, зв®Ўл Ё§ЎҐ¦ вм ­ҐбЄ®«мЄЁе § ЇЁбҐ© ў п祩Єг Џ ®¤­Ё¬ Їа®жҐбᮬ
¤® ¬®¬Ґ­в  з⥭Ёп Ё§ ­ҐҐ ¤агЈЁ¬ Їа®жҐбᮬ, ­Ґ®Ўе®¤Ё¬® Ї®б«Ґ¤гойЁҐ
§ ЇЁбЁ ®бгйҐбвў«пвм в®«мЄ® Ї®б«Ґ ®зҐаҐ¤­®Ј® з⥭Ёп. “Є § ­­ п
б奬  ॠ«Ё§гҐвбп б«Ґ¤гойЁ¬ ®Ўа §®¬:

€­ЁжЁ «Ё§ жЁп ᥬ д®а : Semaphore1.Init(0);

€­ЁжЁ «Ё§ жЁп ᥬ д®а : Semaphore2.Init(0);





- 26 -
Џа®жҐбб ђ1 Џа®жҐбб ђ2

While True Do Begin While True Do Begin
. . . . . .
Semaphore1.P;
Њ_ђ1 : —⥭ЁҐ Ё§ Џ; Њ_ђ2 : ‡ ЇЁбм ў Џ;
Semaphore2.V; Semaphore1.V;
Semaphore2.P;
. . . . . .
End {While}; End {While}.

’ҐЇҐам Їа®жҐбб ђ2, ўлЇ®«­Ёў § ЇЁбм Ё бЁЈ­ «Ё§Ёа®ў ў ®Ў н⮬
ўл§®ў®¬ Semaphore1.V, ®¦Ё¤ Ґв, ЇаЁ®бв ­®ў«Ґ­­л© ўл§®ў®¬ Semapho-
re2.P, з⥭Ёп Їа®жҐбᮬ ђ1, ® 祬 ђ1 Ўг¤Ґв бЁЈ­ «Ё§Ёа®ў вм ўл§®-
ў®¬ Semaphore2.V. ‚ нв®© б奬Ґ ¬Ґв®¤л ᥬ д®а  Semaphore2 б«г¦ в
¤«п ®¦Ё¤ ­Ёп Ё Ї®бл«ЄЁ ЄўЁв ­жЁЁ, Ї®¤вўҐа¦¤ о饩 з⥭ЁҐ.

я2‡ ¤ ­ЁҐ

1. ђҐ «Ё§®ў вм ®ЎкҐЄв - ᥬ д®а, ЁбЇ®«м§гп б।бвў , а §а -
Ў®в ­­лҐ ЇаЁ ўлЇ®«­Ґ­ЁЁ « Ў®а в®а­ле а Ў®в 1 - 4.
2. Ќ ЇЁб вм ¤Ґ¬®­бва жЁ®­­го Їа®Ја ¬¬г, Ё««обваЁагойго Є®®а-
¤Ё­ жЁо ¤®бвгЇ  Є ЄаЁвЁзҐбЄ®¬г аҐбгабг б Ї®¬®ймо ॠ«Ё§®ў ­­®Ј®
ᥬ д®а .
3. Ќ ЇЁб вм ¤Ґ¬®­бва жЁ®­­го Їа®Ја ¬¬г, Ё««обваЁагойго бЁ­е-
а®­Ё§ жЁо Їа®е®¦¤Ґ­Ёп Їа®жҐбб®ў зҐаҐ§ ®ЇаҐ¤Ґ«Ґ­­лҐ б®бв®п­Ёп б
Ї®¬®ймо ॠ«Ё§®ў ­­®Ј® ®ЎкҐЄв  - ᥬ д®а.

я1ЋвзҐв ¤®«¦Ґ­ ᮤҐа¦ вмя0 ⥪бв ЎЁЎ«Ё®вҐз­®Ј® ¬®¤г«п, ўЄ«оз о-
饣® ®ЇЁб ­ЁҐ Ё ॠ«Ё§ жЁо ®ЎкҐЄв  - ᥬ д®а, ⥪бвл ¤Ґ¬®­бва жЁ-
®­­ле Їа®Ја ¬¬ б Є®¬¬Ґ­в аЁп¬Ё, в Ў«Ёжл б®бв®п­Ё© бзҐвзЁЄ®ў ᥬ -
д®а®ў ЇаЁ а §«Ёз­ле ў аЁ ­в е ®зҐаҐ¤­®бвЁ Їа®е®¦¤Ґ­Ёп Їа®жҐбб®ў
(¤«п зЁб«  Їа®жҐбб®ў, Ў®«м襣® 祬 2) зҐаҐ§ ўл§®ўл P Ё V ЁбЇ®«м-
§гҐ¬ле ᥬ д®а®ў.






- 27 -
я2‹ Ў®а в®а­ п а Ў®в  6
я2€‘‘‹…„Ћ‚ЂЌ€… Њ…’Ћ„Ћ‚ Ѓ“”…ђ€‡Ђ–€€ ‘ЋЋЃ™…Ќ€‰

я1–Ґ«м а Ў®вля0 - Ё§г祭ЁҐ ¬Ґв®¤  ®Ў¬Ґ­  б®®ЎйҐ­Ёп¬Ё ¬Ґ¦¤г Їа®-
жҐбб ¬Ё б Ї®¬®ймо ЎгдҐа .

я2ЋЎйЁҐ ᢥ¤Ґ­Ёп

ЃгдҐаЁ§ жЁп пў«пҐвбп б।бвў®¬ б®Ј« б®ў ­Ёп бЄ®а®бвЁ § ЇЁбЁ
б®®ЎйҐ­Ё© ®¤­Ё¬ Їа®жҐбᮬ Ё бЄ®а®бвЁ Ёе з⥭Ёп ¤агЈЁ¬. ЏаЁ н⮬
ЎгдҐа пў«пҐвбп ®ЎйЁ¬, а §¤Ґ«пҐ¬л¬ ®ЎкҐЄв®¬ ¤«п ЇЁиг饣® Ё зЁв о-
饣® Їа®жҐбб®ў.
‘гйҐбвўгов б«Ґ¤гойЁҐ вॡ®ў ­Ёп Є  «Ј®аЁв¬ ¬ дг­ЄжЁ®­Ёа®ў -
­Ёп ЎгдҐа :
1) ­Ґ«м§п § ЇЁб вм б®®ЎйҐ­ЁҐ ў Ї®«­л© ЎгдҐа; Їа®жҐбб, ¤Ґ« о-
йЁ© в Єго Ї®ЇлвЄг, ¤®«¦Ґ­ Ўлвм Ў«®ЄЁа®ў ­ ¤® Ї®пў«Ґ­Ёп бў®Ў®¤­®©
п祩ЄЁ ў ЎгдҐаҐ;
2) ­Ґ«м§п Їа®зЁв вм б®®ЎйҐ­ЁҐ Ё§ Їгбв®Ј® ЎгдҐа ; Їа®жҐбб,
¤Ґ« ойЁ© в Єго Ї®ЇлвЄг, ¤®«¦Ґ­ Ўлвм Ў«®ЄЁа®ў ­ ¤® Ї®пў«Ґ­Ёп б®®Ў-
饭Ёп ў ЎгдҐаҐ.
Љ Є Їа ўЁ«®, ¬Ґе ­Ё§¬л бЁ­еа®­Ё§ жЁЁ § ЇЁбЁ ў ЎгдҐа Ё з⥭Ёп
Ё§ ЎгдҐа  пў«повбп бЄалвл¬Ё ¤«п Ї®«м§®ў вҐ«п, Є®в®а®¬г ЇаҐ¤®бв ў-
«повбп «Ёим ЇаЁ¬ЁвЁўл ‘Ћ‡„Ђ’њ, “Ќ€—’Ћ†€’њ, ‡ЂЏ€‘Ђ’њ Ё ЏђЋ—€’Ђ’њ,
ў­Ґи­Ґ ­ Ї®¬Ё­ ойЁҐ а Ў®вг б д ©« ¬Ё.
Џа®б⥩訩 ў аЁ ­в бЁ­еа®­Ё§ жЁЁ § ЇЁбЁ Ё з⥭Ёп ¤«п ЎгдҐа 
а §¬Ґа®¬ ў 1 п祩Єг Ї ¬пвЁ Ўл« а бᬮв७ ў « Ў®а в®а­®© а Ў®вҐ
5. ‚ ¤ ­­®© а Ў®вҐ а бб¬ ваЁў Ґвбп ®ЎйЁ© б«гз © ЎгдҐа  а §¬Ґа®¬ ў
N н«Ґ¬Ґ­в®ў.
я2‘вагЄвга  ЎгдҐа 

ЃгдҐа ЇаҐ¤бв ў«пҐв б®Ў®© ¬ ббЁў Ё§ N н«Ґ¬Ґ­в®ў ®ЇаҐ¤Ґ«Ґ­­®Ј®
вЁЇ . ‘®бв®п­ЁҐ ЎгдҐа  ®ЇЁблў Ґвбп Є®«ЁзҐбвў®¬ б®®ЎйҐ­Ё© n, ­ е®-
¤пйЁебп ў ЎгдҐаҐ, Ё ¤ўг¬п Ё­¤ҐЄб ¬Ё - Ё­¤ҐЄб®¬ out з⥭Ёп Ё Ё­-
¤ҐЄб®¬ in § ЇЁбЁ.
‡ ЇЁбм ў ЎгдҐа ЇаҐ¤ў апҐвбп Їа®ўҐаЄ®© гб«®ўЁп "ЎгдҐа Ї®«®­",
в. Ґ. n = N,   з⥭ЁҐ Ё§ ЎгдҐа  - Їа®ўҐаЄ®© гб«®ўЁп "ЎгдҐа Їгбв",
в. Ґ. n = 0.
‚лЇ®«­Ґ­ЁҐ гб«®ўЁп "ЎгдҐа Ї®«®­" ®§­ з Ґв, зв® бЄ®а®бвм § -
ЇЁбЁ ЇаҐўлбЁ«  бЄ®а®бвм з⥭Ёп,   ўлЇ®«­Ґ­ЁҐ гб«®ўЁп "ЎгдҐа Їгбв"

- 28 -
®§­ з Ґв, зв® бЄ®а®бвм з⥭Ёп ўлиҐ бЄ®а®бвЁ § ЇЁбЁ. ‚ ­®а¬ «м­®¬
б®бв®п­ЁЁ §­ зҐ­ЁҐ Ё­¤ҐЄб  § ЇЁбЁ ­Ґ¬­®Ј® ЇаҐўли Ґв §­ зҐ­ЁҐ Ё­-
¤ҐЄб  з⥭Ёп, зв® Ё««обваЁагҐвбп б«Ґ¤гойЁ¬ аЁбг­Є®¬:
ЪДДДДДДДДДДДДДДДДДДї
і і
ГДДДДДДДДДДДДДДДДДДґ
і//////////////////і ДДДДДДДДД> Out з⥭ЁҐ
ГДДДДДДДДДДДДДДДДДДґ
і//////////////////і (‘«Ґ¤го饥 з⥭ЁҐ)
ГДДДДДДДДДДДДДДДДДДґ
і//////////////////і
ГДДДДДДДДДДДДДДДДДДґ
‡ ЇЁбм in ДДДДДД> і і
ГДДДДДДДДДДДДДДДДДДґ
(‘«Ґ¤гой п § ЇЁбм) і і
АДДДДДДДДДДДДДДДДДДЩ
ЋЎлз­® ЎгдҐа а бб¬ ваЁў Ґвбп Є Є Є®«м楢®©, в. Ґ. Ї®б«Ґ § -
ЇЁбЁ ў Ї®б«Ґ¤­оо п祩Єг ЎгдҐа  § ЇЁбм Їа®¤®«¦ Ґвбп б ЇҐаў®© п祩-
ЄЁ, з⥭ЁҐ ®бгйҐбвў«пҐвбп  ­ «®ЈЁз­®.
‘Ё­еа®­Ё§ жЁп § ЇЁбЁ Ё з⥭Ёп ॠ«Ё§гҐвбп ЁбЇ®«м§®ў ­ЁҐ¬
®зҐаҐ¤Ґ© ®¦Ё¤ ­Ёп ¤ўге ўЁ¤®ў:
- ®зҐаҐ¤Ё Їа®жҐбб®ў, ¦¤гйЁе § ЇЁбЁ, Є®Ј¤  ЎгдҐа Ї®«®­;
- ®зҐаҐ¤Ё Їа®жҐбб®ў, ¦¤гйЁе з⥭Ёп, Є®Ј¤  ЎгдҐа Їгбв.

я2ЋЇЁб ­ЁҐ ЎгдҐа 

ЏаҐ¤бв ўЁ¬ ЎгдҐа ў ўЁ¤Ґ ®ЎкҐЄв :
TBuffer = Object
in, out : [0..N-1];
n : [0..N];
Buf : Array[0..N-1] Of AnyType;
ReadList, WriteList : TList;
Constructor Init;
Destructor Done; Virtual;
Procedure Write(M : AnyType);
Procedure Read(Var M : AnyType);
Procedure Wait_Read;
Procedure Signal_Read;
Procedure Wait_Write;

- 29 -
Procedure Signal_Write;
End {TBuffer}.
Constructor TBuffer.Init;
Begin
in := 0; out := 0; n := 0;
ReadList.Init;
WriteList.Init;
End {TBuffer.Init};
Destructor TBuffer.Done;
Begin
ReadList.Done;
WriteList.Done;
End {TBuffer.Done};
‘Ё­еа®­Ё§ жЁп § ЇЁбЁ Ё з⥭Ёп ॠ«Ё§гҐвбп б«Ґ¤гойЁ¬Ё зҐвлам-
¬п ¬Ґв®¤ ¬Ё ®ЎкҐЄв  - ЎгдҐа .
Procedure TBuffer.Wait_Read;
{§ бв ў«пҐв Їа®жҐбб ¦¤ вм з⥭Ёп, Ґб«Ё ЎгдҐа Їгбв®©}
Var
ЏаҐ¤л¤гйЁ© : Џа®жҐбб;
Begin
ЏаҐ¤л¤гйЁ© := ’ҐЄгйЁ©;
ReadList.‚Є«озЁвм(ЏаҐ¤л¤гйЁ©);
’ҐЄгйЁ© := ЋзҐаҐ¤м_Ј®в®ўле.ЏҐаўл©;
ЋзҐаҐ¤м_Ј®в®ўле.€§ў«Ґзм(’ҐЄгйЁ©);
ЏҐаҐ¤ вм_гЇа ў«Ґ­ЁҐ(ЏаҐ¤л¤гйЁ©, ’ҐЄгйЁ©);
End {TBuffer.Wait_Read};
Procedure TBuffer.Wait_Write;
{§ бв ў«пҐв Їа®жҐбб ¦¤ вм § ЇЁбЁ, Ґб«Ё ЎгдҐа Ї®«­л©}
Var
ЏаҐ¤л¤гйЁ© : Џа®жҐбб;
Begin
ЏаҐ¤л¤гйЁ© := ’ҐЄгйЁ©;
WriteList.‚Є«озЁвм(ЏаҐ¤л¤гйЁ©);
’ҐЄгйЁ© := ЋзҐаҐаҐ¤м_Ј®в®ўле.ЏҐаўл©;
ЋзҐаҐ¤м_Ј®в®ўле.€§ў«Ґзм(’ҐЄгйЁ©);
ЏҐаҐ¤ вм_гЇа ў«Ґ­ЁҐ(ЏаҐ¤л¤гйЁ©, ’ҐЄгйЁ©);
End {TBuffer.Wait_Write};
Procedure TBuffer.Signal_Read;
{"бЁЈ­ «Ё§ЁагҐв" ® ⮬, зв® Їа®Ё§ўҐ¤Ґ­  § ЇЁбм Ё ў®§¬®¦­   ЄвЁўЁ-

- 30 -
§ жЁп ®¤­®Ј® Ё§ Їа®жҐбб®ў, ¦¤гйЁе з⥭Ёп}
Var
‹®Є «м­л© : Џа®жҐбб;
Begin
‹®Є «м­л© := ReadList.ЏҐаўл©;
If ‹®Є «м­л© <> NIL Then Begin {®зҐаҐ¤м ­Ґ Їгбв п}
ReadList.€§ў«Ґзм(‹®Є «м­л©);
ЋзҐаҐ¤м_Ј®в®ўле.‚Є«озЁвм(‹®Є «м­л©);
End {If};
End {TBuffer.Signal_Read}.
Procedure TBuffer.Signal_Write;
{"бЁЈ­ «Ё§ЁагҐв" ® ⮬, зв® Їа®Ё§ўҐ¤Ґ­® з⥭ЁҐ Ё ў®§¬®¦­   ЄвЁўЁ-
§ жЁп ®¤­®Ј® Ё§ Їа®жҐбб®ў, ¦¤гйЁе § ЇЁбЁ}
Var
‹®Є «м­л© : Џа®жҐбб;
Begin
‹®Є «м­л© := WriteList.ЏҐаўл©;
If ‹®Є «м­л© <> NIL Then Begin {®зҐаҐ¤м ­Ґ Їгбв п}
WriteList.€§ў«Ґзм(‹®Є «м­л©);
ЋзҐаҐ¤м_Ј®в®ўле.‚Є«озЁвм(‹®Є «м­л©);
End {If};
End {TBuffer.Signal_Write}.
Procedure TBuffer.Write(M : AnyType);
Begin
‡ ЇаҐвЁвм ЇаҐалў ­Ёп;
If n = N Then Wait_Write; {ЎгдҐа Ї®«­л©}
n := n + 1;
Buf[in] := M;
in := (in + 1) MOD N;
Signal_Read;
ђ §аҐиЁвм ЇаҐалў ­Ёп;
End {TBuffer.Write};
Procedure TBuffer.Read(Var M : AnyType);
Begin
‡ ЇаҐвЁвм ЇаҐалў ­Ёп;
If n = 0 Then Wait_Read; {ЎгдҐа Їгбв®©}
n := n - 1;
Њ := Buf[out];
out := (out + 1) MOD N;

- 31 -
Signal_Write;
ђ §аҐиЁвм ЇаҐалў ­Ёп;
End {TBuffer.Read};
‚ ¬Ґв®¤ е Signal_Read Ё Signal_Write гЇа ў«Ґ­ЁҐ ­Ґ ЇҐаҐ¤ Ґв-
бп  ЄвЁўЁ§ЁагҐ¬л¬ Їа®жҐбб ¬,   ®­Ё «Ёим бв ўпвбп ў ®зҐаҐ¤м Ј®в®-
ўле Їа®жҐбб®ў. ќв® ¬®¦Ґв Ї®а®¤Ёвм ­Ґ®ЇаҐ¤Ґ«Ґ­­®бвм, в Є Є Є ­ҐЁ§-
ўҐбв­®, зв® Ўг¤Ґв б ЎгдҐа®¬, Є®Ј¤  ¤® Ёе ўлЇ®«­Ґ­Ёп ¤®©¤Ґв ®зҐ-
।м. Џ®нв®¬г  ЄвЁўЁ§ жЁо Їа®жҐбб®ў «гзиҐ ўлЇ®«­пвм ­Ґ ¤® ўЄ«озҐ-
­Ёп ў ®зҐаҐ¤м Ј®в®ўле Їа®жҐбб®ў,   ¤® ЇҐаҐ¤ зЁ гЇа ў«Ґ­Ёп  ЄвЁўЁ-
§Ёа㥬®¬г Їа®жҐббг. ЊҐв®¤ Signal_Read ¤«п нв®Ј® б«гз п ЇаҐ¤бв ў-
«Ґ­ ­Ё¦Ґ,   ¬Ґв®¤ Signal_Write ॠ«Ё§гҐвбп  ­ «®ЈЁз­®.
Procedure TBuffer.Signal_Read;
Var
ЏаҐ¤л¤гйЁ©, ‹®Є «м­л© : Џа®жҐбб;
Begin
‹®Є «м­л© := ReadList.ЏҐаўл©;
If ‹®Є «м­л© <> NIL Then Begin {®зҐаҐ¤м ­Ґ Їгбв п}
ЏаҐ¤л¤гйЁ© := ’ҐЄгйЁ©;
’ҐЄгйЁ© := ‹®Є «м­л©;
ReadList.€§ў«Ґзм(‹®Є «м­л©);
ЋзҐаҐ¤м_Ј®в®ўле.‚Є«озЁвм(ЏаҐ¤л¤гйЁ©);
ЏҐаҐ¤ вм_гЇа ў«Ґ­ЁҐ(ЏаҐ¤л¤гйЁ©, ’ҐЄгйЁ©);
End {If};
End {TBuffer.Signal_Read}.

я2‡ ¤ ­ЁҐ

1. ђҐ «Ё§®ў вм ®ЎкҐЄв - ЎгдҐа ў ЎЁЎ«Ё®вҐз­®¬ ¬®¤г«Ґ ¤«п ­Ґ-
Є®в®а®Ј® вЁЇ  ЇҐаҐ¤ ў Ґ¬ле ¤ ­­ле.
2. Ќ ЇЁб вм ¤Ґ¬®­бва жЁ®­­го Їа®Ја ¬¬г, Ё««обваЁагойго а Ў®-
вг ЎгдҐа  ЇаЁ а §«Ёз­ле бЄ®а®бвпе § ЇЁбЁ Ё з⥭Ёп б®®ЎйҐ­Ё©. ‘Є®-
а®бвЁ § ЇЁбЁ Ё з⥭Ёп ¬®¦­® ¬Ґ­пвм Їг⥬ Ё§¬Ґ­Ґ­Ёп Є®«ЁзҐбвў 
Їа®жҐбб®ў, ЇЁигйЁе ў ЎгдҐа Ё«Ё зЁв ойЁе Ё§ ­ҐЈ®, Ё«Ё ўЄ«оз п ®ЇҐ-
а в®ал § ¤Ґа¦ЄЁ ¬Ґ¦¤г б«Ґ¤гойЁ¬Ё ¤Ґ©бвўЁп¬Ё:
- Ї®а®¦¤Ґ­ЁҐ¬ б®®ЎйҐ­Ёп Ё § ЇЁбмо ҐЈ® ў ЎгдҐа;
- з⥭ЁҐ¬ б®®ЎйҐ­Ёп Ё§ ЎгдҐа  Ё ®Ўа Ў®вЄ®© б®®ЎйҐ­Ёп.

я1ЋвзҐв ¤®«¦Ґ­ ᮤҐа¦ вмя0 ⥪бв Їа®Ја ¬¬л б Є®¬¬Ґ­в аЁп¬Ё Ё
ЎЁЎ«Ё®вҐз­л© ¬®¤г«м б ॠ«Ё§ жЁҐ© ЎгдҐа .

- 32 -
я2‹ Ў®а в®а­ п а Ў®в  7
я2€‘‘‹…„Ћ‚ЂЌ€… Њ…’Ћ„Ђ ‚‡Ђ€ЊЋ„…‰‘’‚€џ ЏђЋ–…‘‘Ћ‚ ‘ ЏЋЊЋ™њћ
я2Ћ—…ђ…„…‰ ‘ЋЋЃ™…Ќ€‰

я1–Ґ«м а Ў®вля0 - Ё§г祭ЁҐ ¬Ґв®¤®ў ў§ Ё¬®¤Ґ©бвўЁп Їа®жҐбб®ў б
Ї®¬®ймо ®зҐаҐ¤Ґ© б®®ЎйҐ­Ё©.

я2ЋЎйЁҐ ᢥ¤Ґ­Ёп

ЋЎ¬Ґ­ б®®ЎйҐ­Ёп¬Ё ¬Ґ¦¤г Їа®жҐбб ¬Ё ­  ®б­®ўҐ ЎгдҐа , а бб-
¬®в७­л© ў « Ў®а в®а­®© а Ў®вҐ 6, ®Ў« ¤ Ґв а冷¬ ­Ґ¤®бв вЄ®ў,  
Ё¬Ґ­­®:
- ®Ја ­ЁзҐ­® (а §¬Ґа®¬ ЎгдҐа ) Є®«ЁзҐбвў® б®®ЎйҐ­Ё©, Ї®¬Ґй -
Ґ¬ле ў ЎгдҐа;
- б®®ЎйҐ­Ёп ЇҐаҐЇЁблў овбп ў ЎгдҐа Ё зЁв овбп Ё§ ЎгдҐа , в -
ЄЁ¬ ®Ўа §®¬ ўаҐ¬Ґ­  § ЇЁбЁ Ё з⥭Ёп ®ЇаҐ¤Ґ«повбп вЁЇ®¬ (а §¬Ґа®¬)
б®®ЎйҐ­Ёп Ё ¬®Јгв Ўлвм Ў®«миЁ¬Ё.
Џ®н⮬㠢 а拉 ®ЇҐа жЁ®­­ле б।,   Ё¬Ґ­­®: UNIX, OS/2 бг-
йҐбвўгҐв ¤агЈ®Ґ б।бвў® ®Ў¬Ґ­  б®®ЎйҐ­Ёп¬Ё, ­ §лў Ґ¬®Ґ ®зҐаҐ¤мо
б®®ЎйҐ­Ё© Ё ўЄ«оз о饥 Єа®¬Ґ ­ҐҐ ҐйҐ Ё б।бвў  бЁ­еа®­Ё§ жЁЁ § -
ЇЁбЁ Ё з⥭Ёп.
‚ Є зҐб⢥ Ї®б«Ґ¤­Ёе ўлбвгЇ ов ®зҐаҐ¤Ё Їа®жҐбб®ў, Ї®б« ўиЁе
б®®ЎйҐ­ЁҐ Ё ¦¤гйЁе ҐЈ®.
„ ¤Ё¬ б«®ўҐб­®Ґ ®ЇЁб ­ЁҐ ¬Ґв®¤®ў § ЇЁбЁ Ё з⥭Ёп б®®ЎйҐ­Ёп,
  § вҐ¬ ®ЇЁиҐ¬ ¤ ­­®Ґ б।бвў® ®Ў¬Ґ­  б®®ЎйҐ­Ёп¬Ё Є Є ®ЎкҐЄв ®ЇҐ-
а жЁ®­­®© б।л.
‡ ЇЁбм б®®ЎйҐ­Ёп ўЄ«оз Ґв ў ᥡп б«Ґ¤гойЁҐ ¤Ґ©бвўЁп:
- ўЄ«о祭ЁҐ гЄ § вҐ«п ­  б®®ЎйҐ­ЁҐ ў ®зҐаҐ¤м (®Ўа вЁ¬ ў­Ё¬ -
­ЁҐ, зв® Ё¬Ґ­­® гЄ § вҐ«м Ї®¬Ґй Ґвбп ў ®зҐаҐ¤м,   ­Ґ б ¬® б®®ЎйҐ-
­ЁҐ, зв® бгйҐб⢥­­® Ї®ўли Ґв бЄ®а®бвм ®Ў¬Ґ­ );
- ўЄ«о祭ЁҐ Їа®жҐбб , Ї®б« ўиҐЈ® б®®ЎйҐ­ЁҐ ў ®зҐаҐ¤м, ⥬
б ¬л¬ Їа®жҐбб, Ї®б« ўиЁ© б®®ЎйҐ­ЁҐ, Ў«®ЄЁагҐвбп ¤® ¬®¬Ґ­в  з⥭Ёп
ҐЈ® ¤агЈЁ¬ Їа®жҐбᮬ;
-  ЄвЁўЁ§ жЁо Їа®жҐбб , ¦¤г饣® б®®ЎйҐ­Ёп, Ґб«Ё в Є®ў®© Ё¬Ґ-
Ґвбп.
—⥭ЁҐ б®®ЎйҐ­Ёп ўЄ«оз Ґв ў ᥡп б«Ґ¤гойЁҐ ¤Ґ©бвўЁп:
- Ў«®ЄЁа®ўЄг Їа®жҐбб  Їг⥬ Ї®бв ­®ўЄЁ ҐЈ® ў ®зҐаҐ¤м, Ґб«Ё
б®®ЎйҐ­Ёп ®вбгвбвўгов;
- з⥭ЁҐ б®®ЎйҐ­Ёп, Ґб«Ё ®­® Ї®бвгЇЁ«®;

- 33 -
-  ЄвЁўЁ§ жЁо Їа®жҐбб , Ї®б« ўиҐЈ® б®®ЎйҐ­ЁҐ.
’ ЄЁ¬ ®Ўа §®¬, Їа®жҐбб, Ї®б« ўиЁ© б®®ЎйҐ­ЁҐ, ў®§®Ў­®ўЁв бў®Ґ
ўлЇ®«­Ґ­ЁҐ в®«мЄ® Ї®б«Ґ в®Ј®, Є Є ҐЈ® б®®ЎйҐ­ЁҐ Ўг¤Ґв Їа®зЁв ­®
¤агЈЁ¬ Їа®жҐбᮬ.
‘奬 вЁз­® ў§ Ё¬®¤Ґ©бвўЁп Їа®жҐбб®ў ¤«п б«гз Ґў, Є®Ј¤  ®Ўа -
饭ЁҐ ®¤­®Ј® Їа®жҐбб  Є ЇаЁ¬ЁвЁўг § ЇЁбЁ б®®ЎйҐ­Ёп Їа®Ёб室Ёв
а ­миҐ ®Ўа йҐ­Ёп ¤агЈ®Ј® Їа®жҐбб  Є ЇаЁ¬ЁвЁўг з⥭Ёп, Ё ­ ®Ў®а®в,
ЇаҐ¤бв ў«Ґ­л ­  аЁб. 7.1 Ё 7.2.
Џа®жҐбб 1 Џа®жҐбб 2
ЪДДДДДДБДДДДДДї і
і ‡ ЇЁбм і і
АДДДДДДВДДДДДДЩ і
іЋ¦Ё¤ ­ЁҐ і
ЪДДДДДДБДДДДДДї ЪДДДДДДДБДДДДДДДї
і‚®§®Ў­®ў«Ґ­ЁҐі і —⥭ЁҐ і
АДДДДДДВДДДДДДЩ---------------------------------АДДДДДДДВДДДДДДДЩ
ђЁб.7.1. Џа®жҐбб 1 Ї®¤®иҐ« Є ЇаЁ¬ЁвЁўг § ЇЁбЁ а ­миҐ, 祬
Їа®жҐбб 2 Ї®¤®иҐ« Є ЇаЁ¬ЁвЁўг з⥭Ёп

Џа®жҐбб 1 Џа®жҐбб 2
і ЪДДДДДДБДДДДДДї
і іЌ з «® з⥭Ёпі
і АДДДДДДВДДДДДДЩ
і Ћ¦Ё¤ ­ЁҐ і
ЪДДДДДДДБДДДДДДДї ЪДДДДДДБДДДДДДї
і ‡ ЇЁбм і іЉ®­Ґж з⥭Ёпі
АДДДДДДДВДДДДДДДЩ---------------------------------АДДДДДДВДДДДДДЩ
ђЁб.7.2. Џа®жҐбб 1 Ї®¤®иҐ« Є ЇаЁ¬ЁвЁўг § ЇЁбЁ Ї®§¦Ґ, 祬
Їа®жҐбб 2 Ї®¤®иҐ« Є ЇаЁ¬ЁвЁўг з⥭Ёп

‘।бвў® ®Ў¬Ґ­  б®®ЎйҐ­Ёп¬Ё, 㤮ў«Ґвў®апо饥 ЇаЁўҐ¤Ґ­­®¬г
ўлиҐ ®ЇЁб ­Ёо, ¬®¦Ґв Ўлвм ЇаҐ¤бв ў«Ґ­® б«Ґ¤гойЁ¬ ®Ўа §®¬:
’PostBox = Object
MessageList : TMessageList;{®зҐаҐ¤м гЄ § вҐ«Ґ© ­  б®®ЎйҐ­Ёп}
SendProcList : TList;{®зҐаҐ¤м Їа®жҐбб®ў, Ї®б« ўиЁе б®®ЎйҐ­Ёп}
WaitProcList : TList; {®зҐаҐ¤м Їа®жҐбб®ў. ¦¤гйЁе б®®ЎйҐ­ЁҐ}
Constructor Init;
Destructor Done; Virtual;
Procedure PutMsg(M : Pointer); {Ї®б« вм б®®ЎйҐ­ЁҐ}

- 34 -
Function GetMsg : Pointer; {ЇаЁ­пвм б®®ЎйҐ­ЁҐ}
End {TPostBox}.

ЋзҐаҐ¤м гЄ § вҐ«Ґ© ­  б®®ЎйҐ­Ёп Ё¬ҐҐв ¬Ґв®¤л, ®зҐ­м Ї®е®¦ЁҐ
­  ¬Ґв®¤л Їа®жҐбб®ў, §  ЁбЄ«о祭ЁҐ¬ в®Ј®, зв® ®ЇҐаЁагҐв б вЁЇ®¬
¤ ­­ле Pointer,   ­Ґ б вЁЇ®¬ ¤ ­­ле Џа®жҐбб.
Constructor TPostBox.Init;
Begin
MessageList.Init;
SendProcList.Init;
WaitProcList.Init;
End {TPostBox.Init};
Destructor TPostBox.Done;
Begin
MessageList.Done;
SendProcList.Done;
WaitProcList.Done;
End {TPostBox.Done};
Procedure TPostBox.PutMsg(M : Pointer);
Var
ЏаҐ¤л¤гйЁ© : Џа®жҐбб;
Begin
‡ ЇаҐвЁвм_ЇаҐалў ­Ёп;
MessageList.Insert(M);
ЏаҐ¤л¤гйЁ© := ’ҐЄгйЁ©;
SendProcList.Insert(ЏаҐ¤л¤гйЁ©);
If WaitProcList.ЏҐаўл© <> NIL Then Begin
’ҐЄгйЁ© := WaitProcList.ЏҐаўл©;
WaitProcList.Remove(’ҐЄгйЁ©);
End Else Begin
’ҐЄгйЁ© := Readylist.ЏҐаўл©;
Readylist.Remove(’ҐЄгйЁ©);
End {If};
ЏҐаҐ¤ вм_гЇа ў«Ґ­ЁҐ(ЏаҐ¤л¤гйЁ©, ’ҐЄгйЁ©);
ђ §аҐиЁвм_ЇаҐалў ­Ёп;
End {TPostBox.PutMsg};
Function TPostBox.GetMsg : Pointer;
Var
M : Pointer;

- 35 -
S : Џа®жҐбб;
ЏаҐ¤л¤гйЁ© : Џа®жҐбб;
Begin
‡ ЇаҐвЁвм_ЇаҐалў ­Ёп;
If MessageList.ЏҐаўл© = NIL Then Begin
ЏаҐ¤л¤гйЁ© := ’ҐЄгйЁ©;
WaitProcList.Insert(ЏаҐ¤л¤гйЁ©);
’ҐЄгйЁ© := Readylist.ЏҐаўл©;
Readylist.Remove(’ҐЄгйЁ©);
ЏҐаҐ¤ вм_гЇа ў«Ґ­ЁҐ(ЏаҐ¤л¤гйЁ©, ’ҐЄгйЁ©);
‡ ЇаҐвЁвм_ЇаҐалў ­Ёп;
End {If};
M := MessageList.ЏҐаўл©;
MessageList.Remove(M);
GetMsg := M;
S := SendProcList.ЏҐаўл©;
SendProcList.Remove(S);
Readylist.Insert(S);
ђ §аҐиЁвм_ЇаҐалў ­Ёп;
End {TPostBox.GetMsg}.

ЏаҐ¤бв ў«Ґ­­л© ®ЎкҐЄв «Ёим ¬®¤Ґ«ЁагҐв ў б।Ґ MS DOS а Ў®вг
®зҐаҐ¤Ґ© б®®ЎйҐ­Ё©, ॠ«Ё§®ў ­­ле ў бЁб⥬ е UNIX Ё OS/2, ®¤­ Є®
¤ Ґв ЇаҐ¤бв ў«Ґ­ЁҐ ® Їгвпе аҐиҐ­Ёп § ¤ зЁ бЁ­еа®­Ё§ жЁЁ § ЇЁбЁ Ё
з⥭Ёп б®®ЎйҐ­Ё© а §­л¬Ё Їа®жҐбб ¬Ё.
‘ в®зЄЁ §аҐ­Ёп бЁ­еа®­Ё§ жЁЁ § ЇЁбЁ Ё з⥭Ёп, б®бв®п饩 ў
⮬, зв® Їа®жҐббл ў®§®Ў­®ў«пов а Ў®вг в®«мЄ® Ї®б«Ґ в®Ј®, Є Є § -
ЇЁбм Ё з⥭ЁҐ § ўҐа襭л, ЇаҐ¤бв ў«Ґ­­л© ®ЎкҐЄв Ї®е®¦ ­  ¬Ґе ­Ё§¬
ђ ­¤Ґўг п§лЄ  ॠ«м­®Ј® ўаҐ¬Ґ­Ё Ђ¤ .

я2‡ ¤ ­ЁҐ

1. ђҐ «Ё§®ў вм ®ЎкҐЄв TPostBox б।бвў ¬Ё п§лЄ  Pascal.
2. Џа®Є®¬¬Ґ­вЁа®ў вм Є ¦¤го бва®зЄг ®ЎкҐЄв  TPostBox.
3. Ќ ЇЁб вм ¤Ґ¬®­бва жЁ®­­го Їа®Ја ¬¬г, Ё««обваЁагойго дг­Є-
жЁ®­Ёа®ў ­ЁҐ ®ЎкҐЄв  TPostBox.

я1ЋвзҐв ¤®«¦Ґ­ ᮤҐа¦ вмя0 ⥪бв Їа®Ја ¬¬л б Є®¬¬Ґ­в аЁп¬Ё Ё
ЎЁЎ«Ё®вҐз­л© ¬®¤г«м б ॠ«Ё§ жЁҐ© ®зҐаҐ¤Ё б®®ЎйҐ­Ё©.


я2‘®¤Ґа¦ ­ЁҐ

‹ Ў®а в®а­ п а Ў®в  1. €‡“—…Ќ€… Ђ‹ѓЋђ€’ЊЋ‚ ђ…Ђ‹€‡Ђ–€€ € €‘-
ЏЋ‹њ‡Ћ‚ЂЌ€џ ‘ЋЏђЋѓђЂЊЊ .........................................3
‹ Ў®а в®а­ п а Ў®в  2. €‘‘‹…„Ћ‚ЂЌ€… Џђ€Ќ–€ЏЋ‚ „€‘Џ…’—…ђ€‡Ђ-
–€€ ЏђЋ–…‘‘Ћ‚ ..................................................6
‹ Ў®а в®а­ п а Ў®в  3. €‘‘‹…„Ћ‚ЂЌ€… Џђ€Ќ–€ЏЋ‚ ђ…Ђ‹€‡Ђ–€€
ЏђЋ–…‘‘Ћ‚ € Ћ—…ђ…„…‰ ЊЌЋѓЋ‡Ђ„Ђ—ЌЋѓЋ џ„ђЂ .......................9
‹ Ў®а в®а­ п а Ў®в  4. €‘‘‹…„Ћ‚ЂЌ€… ‘€‘’…ЊЌ›• Ћ—…ђ…„…‰ ЊЌЋ-
ѓЋ‡Ђ„Ђ—ЌЋѓЋ џ„ђЂ...............................................15
‹ Ў®а в®а­ п а Ў®в  5. €‘‘‹…„Ћ‚ЂЌ€… Њ…’Ћ„Ћ‚ ‘€Ќ•ђЋЌ€‡Ђ–€€
ЏђЋ–…‘‘Ћ‚ .....................................................19
‹ Ў®а в®а­ п а Ў®в  6. €‘‘‹…„Ћ‚ЂЌ€… Њ…’Ћ„Ћ‚ Ѓ“”…ђ€‡Ђ–€€ ‘Ћ-
ЋЃ™…Ќ€‰ .......................................................27
‹ Ў®а в®а­ п а Ў®в  7. €‘‘‹…„Ћ‚ЂЌ€… Њ…’Ћ„Ђ ‚‡Ђ€ЊЋ„…‰‘’‚€џ
ЏђЋ–…‘‘Ћ‚ ‘ ЏЋЊЋ™њћ Ћ—…ђ…„…‰ ‘ЋЋЃ™…Ќ€‰.........................32














ђҐ¤ Єв®а ќ.Љ.„®«Ј в®ў
‹ЁжҐ­§Ёп ‹ђ N 020617 ®в 10.08.92
____________________________________________________________
Џ®¤ЇЁб ­® ў ЇҐз вм . .97. ”®а¬ в 60е84 1/16. Ѓг¬ Ј  вЁЇ.N2.
ЏҐз вм ®дбҐв­ п. “б«.ЇҐз.«. 2,09. “з.-Ё§¤.«. 2,25.
’Ёа ¦ 65 нЄ§. ‡ Є §
€§¤ вҐ«мбЄ®-Ї®«ЁЈа дЁзҐбЄЁ© 業ва ѓќ’“
_____________________________________________________________
197376, ‘.-ЏҐвҐаЎгаЈ, г«.Џа®д.Џ®Ї®ў , 5
Соседние файлы в предмете Операционные системы