OT: SW: přístup více úloh k jedné periférii.

Josef Štengl ok1ced na nagano.cz
Čtvrtek Březen 28 22:54:20 CET 2013


S DMA jste se trefil, :-). NMI se dá vyhnout s tím že se mi zvedne o 111 
ns jitter systémových hodin. Pak případě singcore jde použít zakázaní 
přerušení. Nějak jsem ze rozvášnil a uvažoval o multiprocesorovém 
systému. Malý je prý jen ten kdo myslí na malé věci, tak jsem myslel ve 
velkém :-D.

Děkuji za nakopnutí ohledně instrukcí. Pro ARM existují instrukce LDREX 
a STREX, kdy si jeden procesor zamyká přístup do paměti a pak jde snad 
realizovat atomická změna proměnné a jde udělat semafor nebo mutex, jen 
ještě zjistit co ARM myslel tím „Shared TLB attribute“.

Díky Jirko a Láďo za nakopnutí co mám vlastně hledat. Nenapadla mě 
možnost, že by to existovaly instrukce a neměl jsem představu jiného 
funkčního řešení.

A já jsem si říkal jak je v C11 řešen typ _Atomic (už se těším, až to 
bude implementováno v překladačích i když Vzhledem k tomu, že s 
překladači se kterými pracuji marně hledám podporu C99 tak se toho asi 
nedožiji :-/)

Na tu knihu se určitě podívám, pokud ji někde seženu.

ced



Dne 28.3.2013 20:11, Jiri Foldyna napsal(a):
> Dne 28.03.2013 18:51, Josef Štengl napsal(a):
>> 'brej večír.
>>
>> Mám jednu periférii se kterou se komunikuje paralelně k CPU a nevím jak
>> bezpečně ji zamknout po dobu kdy pracuje. Jedná se mi o to aby dva
>> paralelní procesy nemohly přistoupit k periférii zároveň.
>>
>> pokud použiji systém:
>>
>> 1: přečtu si ZAMEK
>> pokud ZAMEK zamčen
>> goto 1
>> pokud odemčen
>> zamkni ZAMEK
>>
>> odemyká se na základě přerušení od periférie.
>>
>> No a problém je, že zamknutí zámku není atomické.
>>
>> Nechce se mi vymýšlet kolo a chybí mi v této oblasti vzdělání.
>>
>> Nemá někdo tušení jak tento problém řeší velký klucí, nebo co mám
>> vlastně hledat abych si to nastudoval? Ono se mi nedostává ani v oblasti
>> terminologie.
>>
>> Moc děkuji za nakopnutí.
>>
>> ced
>
> Dobrý večer,
>
> o teorii hezky píší Madnick a Donovan v klasice Operační systémy
> (kapitola Synchronizace procesů). Prakticky se dá v jednodušších
> případech použít DI/EI, pokud není zařízení připojeno na NMI nebo přes
> DMA. Procesor x86 má pro tyto účely implementovánu atomickou instrukci
> XCHG; případně lze použít prefix LOCK.
>
> JF
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list