[ ana @ 21.01.2003. 03:10 ] @
Imam za domaci iz MIPS-a na etf da napisem u asm. i8086 sledece procedure za rad sa cirkularnim baferima:" QueueInit - inicijalizacija reda. Kao parametri prosleduje se velicina reda, širina (BYTE, WORD, DWORD), tip (FIFO, LIFO) i ostali neophodni parametri. ;takodje IsQueueFull,IsQueueEmpty."Dequeue - funkcija koja dohvata element iz reda. Potrebno je realizovati funkciju kao blokirajucu, odnosno ukoliko je red prazan, ceka se na element. Enqueue - funkcija koja ubacuje elemenat u red. Potrebno je realizovati funkciju kao blokirajucu, odnosno ukoliko je red pun, ceka se da se oslobodi mesto u redu.Koristeci realizovane funkcije i prekide, napisati program koji demonstrira rad realizovanih funkcija. Testirati sve granicne slucajeve.

e sad ovo sa cirkularnim baferom je ok,ali kako da napravim da procedure budu blokirajuce?-na vezbama nam je receno da je to moguce uraditi na 2 nacina: pomocu neke petlje i prekida ili 2. pomocu flegova
Imam sledeci problem ako koristim flegove.
DEQ=ENQ=0
ako pozovem DeQueue a red je prazan ,ja mogu da postavim neku promenljivu DEQ++; i kada naidje prvi sledeci EnQueue on ce proveriti da li je DEQ!=0 i ako jeste nece ubaciti u red,vec ce predati novi element DeQueue-u i uraditi DEQ--

*problem.da bi ikada stigao novi EnQueue ja moram da izadjem iz DeQueue
ali kako da izadjem ako jos uvek nemam taj elem. koju treba da vrat DeQueue kada izalazi?!

Ako neko ima ideju kako to da resim sa flegovima,ili mozda zna kako da napravim
neke softverske prekide ili sta god,pa da vrtim petlju neka javi sto pre:)


p.s. te procedure EnQueue i DeQueue posle treba da iskoristim u malom embedded sistemu prilikom prenosa podataka velicine 4B preko 8251...