online kép - Fájl  tubefájl feltöltés file feltöltés - adja hozzá a fájlokat onlinefedezze fel a legújabb online dokumentumokKapcsolat
  
 

Letöltheto dokumentumok, programok, törvények, tervezetek, javaslatok, egyéb hasznos információk, receptek - Fájl kiterjesztések - fajltube.com

Online dokumentumok - kep
  

Klasszikus IPC problémak (processzus kommunikació)

számítógépes



felso sarok

egyéb tételek

jobb felso sarok
 
A szöveg specialis objektumainak kezelése
Windows XP (magyar) új kapcsolat létrehozasa
Cisco VoIP termékek
Hattértarak és jellemzöik
NOVELL NETWARE jellemzői
A MESTERSÉGES INTELLIGENCIA MÓDSZEREI A PROGRAMOZHATÓ AUTOMATÁKBAN
Az SQL lekérdezőnyelv hasznalata
Adatok tömörített tarolasa - előnyök, hatranyok
Fajlrendszerek
Input perifériak
 
bal also sarok   jobb also sarok

Klasszikus IPC problémák (processzus kommunikáció)


Étkező filozófusok problémája


Öt filozófus ül egy kerek asztal körül és van egy tányér spagettijük, ám a spagetti olyan cs 545e43f úszós, hogy két villa kell az étkezéshez.

Egy filozófus élete egymást váltakozó evésből és gondolkodásból áll.

Ha egy filozófus éhes lesz, megpróbálja megszerezni mindkét villát, de egyszerre csak egyet.


#define N 5

Void philosopher (int i)




Mind az öt egyszerre veszi fel a bal villát! (éheztetés)

Éheztetés: Minden program korlátlan ideig fut, de nem tesz semmit a fejlődés érdekében.


#define N 5

#define LEFT (i-1)%N                         //i bal szomszédjának a száma

#define RIGHT (i+1%N)                                  //i jobb szomszédjának a száma

#define THINKING 0                          //a filozófus gondolkodik

#define HUNGRY 1       //a filozófus megpróbál villát szerezni

#define EATING 2         //a filozófus eszik


typedef int semaphore;

int state[N];                    //tömb az állapotok nyomon követésére

semaphore mutex=1;      //a kritikus szekciók kölcsönös kizárása

semaphore s[N];             //filozófusonként egy szemafor


Void philosopher (int i)                         //filozófusszám 0 - (N-1)-ig




Void take_forks (int i)                           //i a filozófus száma



Void test(i)




Egy filozófus csak akkor het, ha egyik szomszédja sem eszik.


Olvasók-írók problémája


A filozófus probléma csak akkor jó, ha a processzusok korlátozott számú erőforrást pl. B/K-t használnak.

Ez a probléma adatbázis elérését modellezi.(pl. légitársaság helyfoglalási rendszere). Az elfogadható, hogy több processzus olvassa az adatbázist, de az nem, hogy több írja egyidejűleg.


Typedef int semaphore;

Semaphore mutex=1;                  //rc elérését vezérli

Semaphore db=1;                       //az adatbázis elérését vezérli

Int rc=0;                                     //az olvasók vagy az akarók száma

Void reader (void)



Void writer (void)




Az első olvasó végrehajt egy DOWN-t a db szemaforon.

A következő olvasók csak az rc számlálót növelik.

Az utolsó kilépő végrehajt egy UP-ot a szemaforon, megengedve a blokkolt írónak ha van ilyen a belépést.


Az író csak abba léphet be, amibe az olvasók száma 0-ra csökken.

Megelőzendő ha jön egy író a többi új olvasó blokkolódik.




Alvó borbély probléma


Fodrászüzletben egy borbély van, egy borbélyszék, és n várakozószék. Ha nincs vendég a borbély alszik. Ha vendég jön, a borbélyt fel kell ébreszteni. Ha a borbély dolgozik és új vendég jön, akkor ha van várakozószék, leülteti, ha nincs elküldi.


Feladat a fenti helyzet versenyhelyzet nélküli programozása.


#define CHAIRS 5                     //öt várakozó szék

typedef int semaphore;


semaphore customers=0;            //kiszolgálásra váró vendégek száma

semaphore barbers=0;    //vendégre váró borbélyok száma 0 vagy 1

semaphore mutex=1;                  //kölcsönös kizárás waitinghez

int waiting=0;                              //hajvágásra váró vendégek száma


Void barber (void)




Void customer (void)

else



Waitingre azért van szükség, mert a szemafor aktuális értékét nem tudjuk kiolvasni, így ebben tároljuk a másolatát.


A borbély kezdésképpen végrehajtja a barber függvényt, és elmegy aludni, míg nem jön egy vendég.

Az Up(customers) felébreszti a borbélyt. Ha customer *** a mutexet, a borbély elkapja azt ***, majd elvégzi a hajvágást. A vendégeknek nincs ismétlés.



Találat: 1794


Felhasználási feltételek