Nella prima metà dell'800 avvengono due fenomeni che possono apparire un pò contraddittori, da un lato la rivoluzione industriale e dall'altro un ritorno al passato della politica, chiamato età della Restaurazione. Questa va dal 1815 al 1848, cioè dall'anno del Congresso di Vienna, al quale parteciparono tutte le potenze europee dell'epoca, ma anche quelle minori e un rappresentante del nuovo stato francese. Il compito di questo congresso fu quello di restaurare appunto, la carta politica dell'Europa, cioè ripristinare i governi precedenti all'epoca napoleonica e basandosi sui concetti di legittimità dei governi(legittimi proprietari) e equilibrio, cioè forze equilibrate all'interno degli stati.
Inoltre si nota un espansione dei Paesi Bassi, includendoci sia l'Olanda che il Belgio e la formazione della Confederazione Germanica, la quale era composta da una "confederazione di stati indipendenti" governati però dall'imperatore d'Austria.
Dal punto di vista prettamente di politica interna, tutti gli stati adottano nuovamente l'assolutismo, tranne la Francia, con un sistema costituzionale, mentre l'Inghilterra adotta una monarchia costituzionale.
Durante la restaurazione, si crea la "Santa Alleanza", sotto richiesta dello zar di Russia, che consiste, inizialmente, nel patto tra la Russia, l'Austria e la Prussia e, solo successivamente, l'Inghilterra. Venne introdotto il principio d'intervento, cioè qualora in uno di questi stati si manifestino eventi rivoluzionari, gli altri erano obbligati ad intervenire per reprimerli, anche militarmente.
Dato che Austria, Prussia e Russia si dichiararono tutti cristiani, venne a ricrearsi un alleanza tra la religione e lo stato.
La carta politica italiana subisce un forte cambiamento, ricordiamo l'espansione del Regno di Sardegna, che ora comprende anche la Liguria, si forma il Regno Lombardo-Veneto e si uniscono i regni di Napoli e di Sicilia per formare il Regno delle due Sicilie. L'Austria, durante la restaurazione, diventa la potenza egemone in Italia, dove viene ripresa un frammentazione della penisola a discapito della futura unificazione.
In Europa sono presenti anche forze politiche e sociali contrarie alla restaurazione, dove troviamo esponenti del ceto borghese, studenti, intellettuali e ufficiali dell'esercito. Tutti questi entrano a far parte delle "società segrete", formazioni segrete che mantengono forti livelli di riservatezza anche al loro interno; La più famosa fu "la Carboneria", lo scopo di queste società era quello di ottenere una costituzione, tramite delle cospirazioni comandate dai capi di eserciti ribelli. La prima fase tra il 1820 e il 1821, interessa principalmente l'Italia, in particolar modo il Piemonte e il Regno delle due Sicilie, e la Spagna. Una seconda parte, nel 1830, interessa la Francia, che porta a una caduta del re e fa salire al potere Luigi Filippo d'Orleans, il cui potere durerà fino al 1848.
In questo periodo si assiste anche alla guerra per l'indipendenza della Grecia dall'impero Ottomano, dove le potenze europee appoggiano lo stato greco, il quale riesce ad ottenere il distacco dai turchi nel 1831.
Blog della classe 4°info B dell'istituto Badoni di Lecco. All'interno è possibile reperire ogni lezione e argomento trattato in classe.
domenica 17 febbraio 2013
venerdì 15 febbraio 2013
Mutex e semafori.
Come già parlato nei post dei thread, per gestire le corse critiche utilizziamo le mutex.
Le mutex sono delle speciali variabili a livello kernel che ci permettono di gestire l'ingresso in una zona critica (Cioè una zona di istruzioni che interessa la modifica di variabili globali o di un file condiviso che deve essere eseguita da un solo thread o processo alla volta, dall'inizio alla fine) da parte di 2 o più thread / processi.
Le mutex, essendo variabili in kernel space possono essere modificate solo tramite delle chiamate di sistema particolari.
La sintassi delle mutex è la seguente:
-La creazione ed inizializzazione di una variabile mutex.
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t è la variabile con qui si dichiarano le mutex, PTHREAD_MUTEX_INITIALIZER invece serve per inizializzare la nostra variabile mutex
-Le due chiamate di sistema
pthread_mutex_lock(&mutex);
pthread_mutex_unlock(&mutex);
pthread_mutex_lock e pthread_mutex_unlock servono rispettivamente, come fanno intuire i loro nomi, a bloccare e sbloccare la variabile mutex.
Il funzionamento di queste variabili è semplice: quando un thread entra nella zona critica blocca la variabile mutex, perciò quando un altro thread cercherà di entrare nella zona critica (eseguendo anch'esso una pthread_mutex_unlock(&mutex) ) il thread si bloccherà fino a quando l'altro thread non uscirà dalla zona critica, sbloccando la mutex.
Nel caso ci fossero più thread bloccati sulla stessa mutex sarò il S.O. a scegliere quale thread mandare in esecuzione.
Da notare -> il S.O. quando viene eseguita una pthread_mutex_unlock va a controllare se ci sono dei thread bloccati su quella variabile: se ci sono manderà in esecuzione uno dei thread bloccati (senza modificare il valore della mutex), altrimenti sbloccherà definitivamente la mutex.
Ce un altro tipo di variabile che può fare lo stesso lavoro delle mutex: sono le variabili semaphore, cioè semaforo.
I semafori per bloccare e sbloccare hanno anch'essi 2 chiamate di sistema, che noi chiameremo molto semplicemente up e down.
Queste tipo di variabile è come se fosse un intero: parte da 1 (che rappresenta lo stato iniziale del semaforo, cioè che si può accedere a quella determinata zona critica) e ogni volta che un thread cerca di entrare nella zona critica il semaforo si decrementa di uno. Quando un thread esce dalla zona critica dovrà eseguire lo sblocco, cioè una up.
Praticamente non ci sono differenze tra l'utilizzo di una variabile mutex o una semaforo per la gestione tra thread.
Le mutex sono delle speciali variabili a livello kernel che ci permettono di gestire l'ingresso in una zona critica (Cioè una zona di istruzioni che interessa la modifica di variabili globali o di un file condiviso che deve essere eseguita da un solo thread o processo alla volta, dall'inizio alla fine) da parte di 2 o più thread / processi.
Le mutex, essendo variabili in kernel space possono essere modificate solo tramite delle chiamate di sistema particolari.
La sintassi delle mutex è la seguente:
-La creazione ed inizializzazione di una variabile mutex.
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t è la variabile con qui si dichiarano le mutex, PTHREAD_MUTEX_INITIALIZER invece serve per inizializzare la nostra variabile mutex
-Le due chiamate di sistema
pthread_mutex_lock(&mutex);
pthread_mutex_unlock(&mutex);
pthread_mutex_lock e pthread_mutex_unlock servono rispettivamente, come fanno intuire i loro nomi, a bloccare e sbloccare la variabile mutex.
Il funzionamento di queste variabili è semplice: quando un thread entra nella zona critica blocca la variabile mutex, perciò quando un altro thread cercherà di entrare nella zona critica (eseguendo anch'esso una pthread_mutex_unlock(&mutex) ) il thread si bloccherà fino a quando l'altro thread non uscirà dalla zona critica, sbloccando la mutex.
Nel caso ci fossero più thread bloccati sulla stessa mutex sarò il S.O. a scegliere quale thread mandare in esecuzione.
Da notare -> il S.O. quando viene eseguita una pthread_mutex_unlock va a controllare se ci sono dei thread bloccati su quella variabile: se ci sono manderà in esecuzione uno dei thread bloccati (senza modificare il valore della mutex), altrimenti sbloccherà definitivamente la mutex.
Ce un altro tipo di variabile che può fare lo stesso lavoro delle mutex: sono le variabili semaphore, cioè semaforo.
I semafori per bloccare e sbloccare hanno anch'essi 2 chiamate di sistema, che noi chiameremo molto semplicemente up e down.
Queste tipo di variabile è come se fosse un intero: parte da 1 (che rappresenta lo stato iniziale del semaforo, cioè che si può accedere a quella determinata zona critica) e ogni volta che un thread cerca di entrare nella zona critica il semaforo si decrementa di uno. Quando un thread esce dalla zona critica dovrà eseguire lo sblocco, cioè una up.
Praticamente non ci sono differenze tra l'utilizzo di una variabile mutex o una semaforo per la gestione tra thread.
Iscriviti a:
Post (Atom)
