Torna indietro   Hardware Upgrade Forum > Software > Programmazione

CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
La prima tappa italiana della Road to CES porta a Milano i vertici della Consumer Technology Association, con una nuova griglia di lettura dei trend tecnologici e una posizione netta su dazi e regolamentazione dell'IA
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
OPPO ha appena lanciato sul mercato la nuova serie Find X10, che ha come smartphone premium il Find X10 Pro Max, uno smartphone completo, che fa del comparto fotografico il suo vero punto di forza. Ma sono tante le novità, tra cui l'AI che adesso diventa agentica. Ma andiamo a vedere nel dettaglio questo nuovo smartphone.
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
Abbiamo provato la beta di World of Warcraft: Forever, il Classic+ di Blizzard in arrivo il 4 novembre: la nuova razza Skyborne restituisce la sensazione di un gioco nuovo, ma le zone storiche conservano la noia divertita di Classic. Classi ribilanciate, sciamani anche nell'Alleanza e un motore grafico che in 4K gira bene anche su una RTX 3070. Cosa cambia in Forever? La risposta nell'articolo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-09-2011, 11:40   #1
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
Mi aiutate a capire i monitor?

Ciao a tutti ragazzi
ho cercato di studiare dalle slides e da quello che ho potuto trovare da internet i monitor ma non è che ci ho capito molto.

Posso dirvi cosa ho capito e chiedervi delle integrazioni eventualmente?li divido in concetti in modo da essere il più chiaro possibile

1)Il monitor è un tipo di dato astratto contenente delle variabili (definite nel monitor e visibili solo in esso) utilizzabili solo da alcuni processi (che sono procedure anch'esse del monitor). Fin qui tutto ok, giusto?

2) Ora poi si parla che per garantire che un solo processo per volta, abbia accesso alla variabile locale (credo che si riferisca alle variabili provate del monitor, giusto?) si impone che le funzioni di accesso al monitor vengano eseguite in modo mutuamente esclusivo, e che tutti gli altri processi che invocano una variabile del monitor devono attendere se c'è già un altro processo attivo nel monitor.
Se fin qui è tutto giusto io vi chiedo: ma allora come si spiega la definizione? cioè ci sono processi esterni al monitor che accedono ad esso, e poi ci sono anche processi interni al monitor?

3) si parla di istanze del monitor, ma cosa si intende? le risorse private del monitor?
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 23-09-2011, 13:55   #2
Floris
Senior Member
 
L'Avatar di Floris
 
Iscritto dal: Jan 2007
Messaggi: 2267
Da quel che ricordo, un monitor è un oggetto che incapsula variabili che devono essere accedute in modo controllato. Quindi un processo che voglia accedere la variabile "protetta" deve chiamare i metodi del monitor.
Sarà quindi il monitor a gestire l'accesso concorrente alla variabile prevedendo all'interno dei propri metodi di accesso alla variabile istruzioni di wait per porre in attesa i processi e signal per risvegliarli.
I semafori dovrebbero essere una degenerazione del concetto di monitor quando si ha mutua esclusione, cioè quando solo un processo in ogni istante può accedere alle variabili.

Nei moderni linguaggi di programmazione concorrenti solitamente i monitor sono implementati attraverso primitive del linguaggio (come in Java con synchronized o Ada con...non ricordo) per evitare errori di programmazione.

Quote:
Il monitor è un tipo di dato astratto contenente delle variabili (definite nel monitor e visibili solo in esso) utilizzabili solo da alcuni processi (che sono procedure anch'esse del monitor). Fin qui tutto ok, giusto?
Nel monitor sono definite le variabili su cui deve garantire sincronizzazione più eventuali variabili accessorie per garantire tale sincronizzazione. I processi per accedere alle variabili "sincronizzate" dovranno utilizzare le procedure del monitor.

Quote:
Originariamente inviato da Bandit
cioè ci sono processi esterni al monitor che accedono ad esso, e poi ci sono anche processi interni al monitor?
Processi interni al monitor sono quelli che in un dato momento hanno accesso alle variabili da esso protette o che sono in attesa di accesso.

Quote:
Originariamente inviato da Bandit
si parla di istanze del monitor, ma cosa si intende? le risorse private del monitor?
Solitamente i monitor sono implementati tramite oggetti con un contatore che tiene traccia del numero di processi che in un dato istante stanno accedendo alle variabili.

Comunque guarda anche qua:
http://it.wikipedia.org/wiki/Monitor...onizzazione%29
__________________
Concluso con:...
Floris è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 08:46   #3
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
Ciao Floris
credo che la tua sintesi è davvero chiara, però è meglio che faccio qualche precisazione per maggiore mia chiarezza

Quote:
Nel monitor sono definite le variabili su cui deve garantire sincronizzazione più eventuali variabili accessorie per garantire tale sincronizzazione. I processi per accedere alle variabili "sincronizzate" dovranno utilizzare le procedure del monitor.
Allora nel monitor ci sono delle variabili (dette variabili condizione) che servono per sincronizzare l'accesso alle variabili locali (variabili locali intendo le variabili che sono definite nel monitor, che sono accedibili solo dalle procedure interne al monito)


Per il momento mi sembra chiaro , però poi ci ragiono ed eventualmente ti scrivo

grazie mille
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 10:14   #4
starfred
Senior Member
 
Iscritto dal: Jul 2011
Messaggi: 381
ciao, come ha scritto Floris, "eventuali variabili accessorie per garantire tale sincronizzazione". Non per forza devo avere delle variabili condizione.
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX
starfred è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 11:12   #5
Floris
Senior Member
 
L'Avatar di Floris
 
Iscritto dal: Jan 2007
Messaggi: 2267
Quote:
eventuali variabili accessorie per garantire tale sincronizzazione
Esatto. Infatti in Java viene usato synchronized che è un costrutto per la mutua esclusione. Non serve, in questo caso, (semplice mutua esclusione) definire variabili di controllo per la sincronizzazione. Basta porre la variabile da controllare all'interno di un oggetto e poi etichettare tutti i metodi di accesso ad essa come synchronized.

Cose più sofisticate, sempre in Java, come ad esempio l'accesso simultaneo limitato ad una variabile (ad es. 3 thread per volta possono accedervi) le puoi fare incapsulando la variabile in un oggetto che sfrutta un contatore (variabile condizione). Da notare che le operazioni che agiscono su tale contatore, come ad esempio, quelle che controllano il suo valore per vedere quanti processi in un dato istante hanno accesso alla variabile controllata, devono essere racchiuse in blocchi synchronized cosicchè eventuali race conditions non pregiudichino la semantica che si vuole implementare.
__________________
Concluso con:...

Ultima modifica di Floris : 24-09-2011 alle 11:31.
Floris è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 11:50   #6
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
però se considero le variabili condizioni queste sono nel monitor giusto?

ora poi c'è un problema: trovo scritto che per garantire l'accesso in mutua esclusione alle funzioni del monitor , si associa ad ogni oggetto del monitor un semaforo mutex

e per la gestione delle politiche di sospensione e riattivazione di processi sulle variabili condizione, la soluzione è quella di Hoare ( se c'è un processo che richiede di entrare nel monitor, e c'è già un processo in attesa sulla variabile condizione, quest'ultimo sarà il processo che entrerà nel monitor) ,oltre poi all'introduzione di un semaforo urgent .
Questi due semafori non li ho capiti.

per il mutex (per garantire mutua esclusione)
ho trovato e capito che è inizializzato ad 1 e che per entrare nel monitor un processo deve eseguire una wait (mutex), invece per entrare una signal(mutex)

per l'urgent (sospensione e riattivazione processi) invece
è inizializzato a 0 ma non ci ho capito nulla
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 12:05   #7
starfred
Senior Member
 
Iscritto dal: Jul 2011
Messaggi: 381
Quote:
Originariamente inviato da Bandit Guarda i messaggi
ora poi c'è un problema: trovo scritto che per garantire l'accesso in mutua esclusione alle funzioni del monitor , si associa ad ogni oggetto del monitor un semaforo mutex
Si e no, dipende dai linguaggi, per esempio con i metodi synchronized il mutex è implicito. Ma nessuno mi vieta di utilizzare un mutex unico per tutte le funzioni del monitor.


Quote:
Originariamente inviato da Bandit Guarda i messaggi
e per la gestione delle politiche di sospensione e riattivazione di processi sulle variabili condizione, la soluzione è quella di Hoare ( se c'è un processo che richiede di entrare nel monitor, e c'è già un processo in attesa sulla variabile condizione, quest'ultimo sarà il processo che entrerà nel monitor) ,oltre poi all'introduzione di un semaforo urgent .
Questi due semafori non li ho capiti.
No, attenzione, per prima cosa bisogna fare due precisazioni:

1) se un processo è in attesa su una variabile condizione, prima di esser risvegliato deve verificarsi l'evento per il quale l'attesa non è più valida (in java avviene attraverso la semantica della signal da parte di un altro thread)

2) Il fatto che il processo risvegliato debba entrare per primo dipende anch'esso dal tipo di linguaggio e dalla semantica, il caso a cui tu fai riferimento è la signal-and-urgent.

Quote:
Originariamente inviato da Bandit Guarda i messaggi
per il mutex (per garantire mutua esclusione)
ho trovato e capito che è inizializzato ad 1 e che per entrare nel monitor un processo deve eseguire una wait (mutex), invece per entrare una signal(mutex)
Generalmente await e signal vengono utilizzati su variabili condition, non sui mutex (in java generalmente si utilizzano mutex di tipo reentrantlock con metodi lock() e unlock() )
Forse tu volevi riferirti ai metoti wait, notify e notifyall?

P.s. Credo che ti stia addentrando in argomentazioni complesse, che senza l'aiuto di un buon libero non se ne esce facilmente...
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX

Ultima modifica di starfred : 24-09-2011 alle 12:14.
starfred è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 15:14   #8
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
http://www.megaupload.com/?d=B6VF58MQ
questa è la slides che ho
e poi ho cercato di vedere su internet altri libri


per la cosa detta al 1)
che mi vuoi dire che il signal non necessariamente risveglia il programma che immediatamente sarà eseguito?

Per 2) allora faccio riferimento al caso signal-and-urgent


cmq se hai qualche link me lo potresti indicare?qualche slides
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 15:31   #9
Floris
Senior Member
 
L'Avatar di Floris
 
Iscritto dal: Jan 2007
Messaggi: 2267
http://en.wikipedia.org/wiki/Monitor...hronization%29
Prova a guardare gli External Links.
__________________
Concluso con:...
Floris è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 15:44   #10
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9434
Quote:
Originariamente inviato da Floris Guarda i messaggi
http://en.wikipedia.org/wiki/Monitor...hronization%29
Prova a guardare gli External Links.
grazie
ma io vorrei capire solo quello delle slides, fino ai produttori e consumatori, ma senza le eventuali implementazioni specifiche etc etc
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.
Bandit è offline   Rispondi citando il messaggio o parte di esso
Old 24-09-2011, 17:31   #11
starfred
Senior Member
 
Iscritto dal: Jul 2011
Messaggi: 381
ciao, come ti ho detto prima esistono diverse semantiche della signal, quello a cui tu fai riferimento (signal-and-urgent) è un caso particolare di signal-and-wait. Nel caso della signal-and-urgent e signal-and-wait è corretto affermare che il processo risvegliato è quello che immediatamente sarà eseguito.
Attenzione però, nella urgent il segnalato (una volta uscito dal monitor) ritorna subito il controllo al processo segnalante che si era sospeso, mentre invece nella signal-and-wait questo non è vero.

Comunque, son argomentazioni difficili da capire così, senza una spiegazione esaustiva e vari esempi. Il mio consiglio è, per ora, dimenticarti delle variabili condition ed invece cercare di approfondire il concetto di monitor, entry queue del monitor, synchronized ed i metodi wait() notify() e notifyall().

Ps. Ho visto le slides e credo che siano veramente fatte male (giuste ma fatte male). Per prima cosa utilizzano il C / C++ per descrivere i costrutti dei monitor cosa che con il Java risulta molto più semplice, poi (e questo secondo me crea moltissima confusione) all'inizio utilizzano la wait() sia per indicare un lock di un semaforo sia per indicare la wait su una condition; e per ultima cosa vanno subito a implementare una signal-and-urgent senza accenare alle altre varie politiche di signal. Non viene accennato minimamente il metodi notify e notifyAll... insomma, a mio parere, sono pessime.
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX
starfred è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato WoW Forever provato: il MMORPG che la community ...
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
Kimi K3.1 Pro, Moonshot AI rilancia sui ...
Dove sono finite tutte le GeForce RTX 50...
Nintendo Switch 2 già violata gra...
OpenAI apre a tutti la sua IA che scegli...
Apple estende il Self Service Repair a i...
Linux, falle critiche del kernel pubblic...
Gli agenti AI diventano un incubo per le...
Fastweb e Vodafone verso il sistema unic...
70mai A800 Nano a 69,99€ su Amazon: dash...
Mini pacchi extra Ue, la tassa da 2 euro...
Metro 2033 Redux e Last Light Redux si a...
Silicio a 1.000 °C in un microonde: ...
Sigma FP2 senza mirino né slitta ...
Huawei Pura 90 Plus, preordini aperti in...
Addio al limite di 1,5 °C: il nuovo ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:53.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v