19.1. Sarcină: hrănirea filosofilor

Un model de programare este un model matematic care oferă semnificația semantică a sarcinilor și programelor, definește operațiunile de construcție peste sarcini și programe și specifică când un program rezolvă o sarcină. Vorbim despre un model relațional dacă elementele domeniilor semantice sunt relaționale.

Să ne gândim la sarcina de programare [[. Plecăm de la conceptul Fуt 83]]. O sarcină de programare este întotdeauna efectuată pe o tastă de stare [[. Premiul 76]]. Pentru a formula problema, trebuie să creăm un model matematic al problemei. Modelul este utilizat în sens general. Dacă ne gândim la conceptul de model utilizat în logica matematică, teoria modelului, ne referim la el separat. Formularea unei sarcini nu poate fi legată de ex. la o structură logică temporală fixă, deoarece în acest caz sarcina nu mai poate fi formulată independent de programul care definește structura timpului. Nu identificăm problema cu setul de formule care o descriu, nici cu unitățile sintactice, deoarece un set neinterpretat de formule are ambele semnificații semantice în toate interpretările. Problema este întotdeauna dată deasupra unui spațiu de stare fix, cu ajutorul relațiilor implicite. Este nevoie de abstractizare. Calea care duce la formularea sarcinii nu este examinată acum. Nu examinăm dacă forma formală a unei sarcini descrie într-adevăr o sarcină care a fost formulată într-un anumit limbaj natural. Examinând această întrebare în cadrul modelului de programare ales.

19.1. Sarcină: hrănirea filosofilor

Primul nostru exemplu este de la E. W. Dijkström, care a ilustrat principiul partajării resurselor bazate pe excluderea dintre procese în cursul predării sistemelor de operare. Acest exemplu modelează un sistem care funcționează dintr-un proces paralel care funcționează împreună. Conform istoriei, există cinci filozofi în jurul unei mese care pot cumpăra macaroane de la o masă comună mare. Sunt necesare două furci pentru ca macaroanele să intre în cameră. Mâncarea poate fi utilizată de mai multe ori la rând, dar pentru fiecare dintre furculițele necesare pentru a mânca trebuie să fie îndeplinite separat, astfel încât să poată fi folosite doar de câte un filozof la un moment dat. Există două vile pentru fiecare filozof, dar sunt vile pe care vecinii tăi vor să le folosească. Dacă un filozof își ridică furculițele stânga și dreapta de pe masă și mănâncă, niciunul dintre vecinii săi nu poate avea cele două furci necesare mesei. Numai filozofii non-adiacenți pot mânca odată .

19.1. бbra. Filozofii culinare

beneficii daune

Marcheaza. cu filozofie, și fiecare formă cu inițialele: gândește:, ține o furculiță în mână:, mănâncă:, este acasă:. Următoarele sunt exemple de formulare a cerințelor specifice pentru comportamentul filosofilor.