- Írjunk programot, mely létrehoz egy osztott-memória
területet, amely egy p egész számot, illetve egy m elemű, 0-értékekkel
inicializált számsorozatot tartalmaz. Egy másik program a következőket hajtjavégre
egy végtelen ciklusban: az osztott-memória területen levő p értéktől
függően megváltoztatja a sorozat p. pozíciójában levő elem értékét,
1-el növelve azt, majd generál egy 1 és m közötti véletlen számot,
és beírja az osztott memória területre a p értékét felülírva.
Az első program ellenőrzi időnként az osztott-memória területet, és ha egy
n számnál nagyobb az elemek összege, akkor felszabadítja az osztott-memória
területet és SIGTERM jelzést küld az osztott-memória területhez hozzárendelt
többi folyamatnak.
- Hozzunk létre egy osztott-memória területet, melyet két "torpedózó"
játékos használ. Az osztott-memória terület tartalmazzon egy játékos-azonosítót,
a célpont sor- és oszlopszámát, és egy 0 (ha azelőző lövés talált) vagy 1
(ha az előző lövés nem talált) vagy -1 (ha az előző lövés teli találat volt)
értéket. Egy játékos csak akkor lép be a játékba, ha nincs még két játékos,
aki már játszik. Ajátékosnak megfelelő programban egy 12x12-es mátrixot generálunk,
melyen 7 egymás utáni (vízszintes vagy függőleges) pozíciót megjelölünk. A
következő célpont kijelölése vagy a billentyűzetről történik, vagy egy intelligens
algoritmus segítségével.
- Írjunk programot, mely létrehoz egy osztott-memória területet, egy 0 és
1 értékeket tartalmazó mátrixszal. Egy másik program n másodpercenként
soronként végigjárja a mátrixot, és amennyiben valamelyik mátrixelem szomszédságában
több, mint 5 1-es érték van, akkor ez az elem értéke is 1 lesz, ha pedig több,
mint 5 0-s szomszédja van, 0-vá válik ő is. Az a folyamat, amelyik létrehozta
az osztott-memória területet kiírja a mátrixot mindaddig, ameddig már nem
változik többé. (A mátrixot módosító folyamat helyben dolgozzon, vagyis egy
változtatás kihatással legyen a szomszédeira)
- Létrehozunk két osztott-memória területet, melyeken három folyamat osztozik
majd. Az A folyamat mindkét osztott-memória területhez hozzáférhet, a B és
C folyamat pedig csak egy-egy meróriaterülethez a kettő közül. A B és a C
folyamatok egy-egy számot generálnak, és beírják azt arra az osztott-memória
területre, amelyhez hozzá vannak rendelve. Az A folyamat olvassa a számokat
a két osztott-memóriaterületről és kiírja azokat. Ezután (miután az A folyamatnak
sikerült kiolvasnia az általuk korábban beírt számot) a B és C folyamat újból
generál egy-egy számot. Mindez 10-15 alkalommal ismétlődik.
-
Hozzunk létre egy 9*sizeof(int) méretű osztott-memória
területet. Két folyamat fog hozzákapcsolódni ehhez és X-0-t játszanak. A
két folyamat szemafor segítségével is kommunikál, jelezve a másik folyamatnak,
hogy most ő a soros. Az osztott-memória terület tartalmát írjuk ki a képernyőre
miden lépés után.
-
Egy program létrehoz egy osztott-memória területet, egy
0 és 1 értékeket tartalmazó mátrixszal. Egy másik program n másodpercenként
oszloponként végigjárja a mátrixot, és amennyiben valamelyik mátrixelem
szomszédságában 5 db. 1-es érték van, akkor ez az elem értéke is 1 lesz,
ha pedig 5db. 0-s szomszédja van, 0-vá válik ő is. Az a folyamat, amelyik
létrehozta az osztott-memória területet,kiírja a mátrixot mindaddig, ameddig
az már nem változik többé. (A mátrixot módosító folyamat helyben dolgozzon,
vagyis egy változtatás kihatással legyen a szomszédeira)
- Egy program létrehoz egy osztott-memória területet, egy 0 és 1 értékeket
tartalmazó mátrixszal. Egy másik program n másodpercenként spirál formájában
végigjárja a mátrixot, és amennyiben valamelyik mátrixelem szomszédságában
kevesebb, mint 3 db. 1-es érték van, akkor ennek az elemnek az értéke 1 lesz,
ha pedig kevesebb, mint 3 db. 0-s szomszédja van, akkor 0-vá válik. Az a folyamat,
amelyiklétrehozta az osztott-memória területet, kiírja a mátrixot mindaddig,
ameddig az már nem változik többé. (A mátrixot módosító folyamat helyben dolgozzon,
vagyis egy változtatás kihatással legyen a szomszédeira)
-
Hozzunk létre három osztott-memória területet. Két folyamat
fog hozzájuk kapcsolódni. Az A folyamat a három osztott-memória terület
közül véletlenszerűen választ egyet, amelyikbe 1-et ír, a másikkettőbe 0-t,
majd jelzi egy szemafor segítségével a B folyamatnak, hogy ő következik.
A B folyamat találomra választ egyet a három osztott-memória terület közül,
melynek kiolvassa a tartalmát. Ha éppen azt olvasta, amelyiknek az értéke
1, kiírja a képernyőre, hogy nyert, különben azt, hogy veszített. A játék
10-15 alkalommal megismétlődik.
- A termelő/fogyasztó problémája:
A termelő fogyasztási cikkeket termel, melyeket elhelyez egy futószalagon
(véges puffer). A fogyasztó sorban leveszi a szalagról a termékeket és elfogyasztja
őket. A fenti tevékenység a következő feltételek közt megy végbe:
- a termelő bármilyen időpillanatban termelhet fogyasztási cikket
- a fogyasztó csak akkor vehet terméket a szalagról, ha az nem üres
- a fogyasztó ugyanabban a sorrendben fogyasztja el
- a termelő telített fotószalagra (tel pufferbe) nem helyezhet újabb
cikket
- minden egyes megtermelt fogyasztási cikk el lesz fogyasztva
- Az író/olvasó probléma:
Tekintsünk egy könyvet, melyhez több író és olvasó szeretne hozzáférni. Megengedett,
hogy egyszerre több olvasó olvassa a könyvet, viszont ha egy író dolgozik
a könyvön (hozzáír, töröl, módosít,stb.), akkor rajta kívül sem más író sem
más olvasó nem férhet hozzá a könyvhöz. Pontosabban:
- egy olvasó akkor és csakis akkor foghat hozzá az olvasáshoz, ha egyetlen
író sem írja éppen a könyvet.
- egy író akkor és csakis akkor foghat hozzá az íráshoz, ha egyetlen
olvasó és egyetlen más író sem foglalkozik a könyvvel.
Szimuláljuk a könyvolvasás, illetve írás műveleteit.
- A kínai filozófusok problémája:
Egy kerek asztalnál 5 kínai filozófus ül. Legfőbb tevékenységük a gondolkodás,
de természetesen időnként enniük is kell valamit. Az evéshez két pálcát
használ mindenikük. Tudva, hogy minden kétfilozófus között van egy pálcika,
és hogy egy filozófus csak akkor ehet, ha mind a jobboldalán, mind a baloldalán
levő pálcikát felemelte, szimuláljuk az asztalnál ülő filozófusok tevékenységét.
- Az álmos borbély problémája:
Egy borbély borbélyüzlete két helységből áll: az egyik a váróterem, a másik
pedig az, ahol a kliensek a borbélyszékbe ülnek, hogy megborotválják őket.
Ha nincs kliense, az álmos borbély lefekszik és alszik. Pontosabban:
- a borbély kezdetben, illetve miután megborotvált valakit, kinéz a váróterembe.
Ha van kliens, betessékeli az elsőt, és leülteti a borbélyszékre; ha nincs
kliens, akkor a borbély maga ül a székbe, és alszik.
- minden kliens, amikor belép a váróterembe, leül a sor végére; ha egyedül
van a szobában, akkor kopog a borbélyszékes szoba ajtaján és felébreszti
a borbélyt