Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-03-2003, 17:38   #1
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
context switch tra thread

Se è la sezione sbagliata spostatemi pure...
Mi chiedevo di preciso cosa succede nel context switching tra thread...
Tra processi si salva (e si carica) PC, registri e PSW... Tra threads solo un sottoinsieme (tipo PC, SP e PSW) ???

Grazie e ciao...
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 00:30   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Fra thread si dovrebbe fare allo stesso modo di come si fa fra i processi...
L'unica differenza dovrebbe stare nel fatto che non si invalidano i dati presenti in cache...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 12:48   #3
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Anch'io pensavo qualcosa di simile ma.... il fatto che condividano segmento dati e segmento codice magari fa sì che non debbano essere caricati il registro base e limite per questi due segmenti....
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 13:01   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
A parte che la segmentazione con i processori a 32 bit non viene più usata, ma in ogni caso l'indirizzo di un registro segmento potrebbe venire cambiato da uno dei thread del processo e quindi andrebbe comunque salvato e ricaricato...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 13:05   #5
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Quote:
Originally posted by "cionci"

A parte che la segmentazione con i processori a 32 bit non viene più usata
Come???
Non so nulla a riguardo spiegati meglio...
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 13:06   #6
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Quote:
Originally posted by "cionci"

ma in ogni caso l'indirizzo di un registro segmento potrebbe venire cambiato da uno dei thread del processo e quindi andrebbe comunque salvato e ricaricato...
Domanda: per modificare la base di un segmento non bisogna essere in kernel mode???
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 13:39   #7
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originally posted by "cionci"


L'unica differenza dovrebbe stare nel fatto che non si invalidano i dati presenti in cache...
mmm no, la cache _può_ anche contenere pagine di altri _processi_ (non thread), se l'accesso in memoria del thread corrente non si "succhia" tutta la cache. Ovviamente c'è una maggiore possibilità che due thread trovino in cache la stessa cacheline di memoria alla quale ambedue stanno accedendo, ma questa non è sempre una buona cosa (*)
La vera grande differenza è che più thread condividono le stesse tabelle di paginazione, e...ti sembra poco



(*) Nei sistemi SMP, l'accesso in scrittura su una cacheline da parte di un processore forza gli altri a invalidare una eventuale memoria in cache coincidente fisicamente con la cacheline toccata. Anche se le variabili cui accedono i diversi thread sono diverse tra loro, è buona norma allinearle alla dimensione della cacheline, per lo stesso motivo.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 14:03   #8
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Quote:
Originally posted by "ilsensine"


La vera grande differenza è che più thread condividono le stesse tabelle di paginazione, e...ti sembra poco
Solo il segmento stack è diverso per i thread?
Il fatto che condividano le stesse tabelle di paginazione, significa che il vantaggio sta appunto nella presenza in cache delle stesse tabelle o altro?
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 14:39   #9
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originally posted by "soalle"


Solo il segmento stack è diverso per i thread?
No è lo stesso, solo esp punta a due zone differenti. Un thread può accedere alla zona di memoria stack dell'altro, senza alcun problema.

Quote:
Il fatto che condividano le stesse tabelle di paginazione, significa che il vantaggio sta appunto nella presenza in cache delle stesse tabelle o altro?
Caricare le tabelle di paginazione è una operazione molto costosa, che implica il flush del tlb, cambio del tss e altre cose. Molto più rapido e "indolore" passare da un thread all'altro, principalmente devi solo salvarti lo "stato" (registri) di ogni singolo thread (ci sono altre operazioni, ma non costose come il cambio delle tabelle).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 15:33   #10
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Quote:
Originally posted by "ilsensine"


No è lo stesso, solo esp punta a due zone differenti. Un thread può accedere alla zona di memoria stack dell'altro, senza alcun problema.
Ma allora cosa mi garantisce che lo stack di un thread non vada ad invadere lo stack di un altro thread (involontariamente intendo... tipo un sacco di chiamate innestate o la richiesta di molta memoria allocata dinamicamente)

Quote:
(ci sono altre operazioni, ma non costose come il cambio delle tabelle).
Cosa intendi???
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 16:07   #11
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originally posted by "soalle"


Ma allora cosa mi garantisce che lo stack di un thread non vada ad invadere lo stack di un altro thread (involontariamente intendo... tipo un sacco di chiamate innestate o la richiesta di molta memoria allocata dinamicamente)
Infatti c'è una dimensione massima che gli stack possono allocare

Quote:
Cosa intendi???
Ad es. in linux ogni thread ha un "contesto" differente dagli altri (signal handler, ecc.) che deve comunque essere cambiato quando passi da un thread all'altro.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 16:08   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originally posted by "ilsensine"

Caricare le tabelle di paginazione è una operazione molto costosa, che implica il flush del tlb, cambio del tss e altre cose. Molto più rapido e "indolore" passare da un thread all'altro, principalmente devi solo salvarti lo "stato" (registri) di ogni singolo thread (ci sono altre operazioni, ma non costose come il cambio delle tabelle).
Chiaro, ma io credevo che volesse parlare solo dello stato del processore, non dele tabelle del sistema operativo... E' chiaro che due thread facendo parte dello stesso processo ne condividono parte delle informazioni all'interno del sistema operativo...ed in particolar modo le tabelle della paginazione...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 16:21   #13
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Infatti cr0 (che contiene la base per le tabelle di paginazione) fa parte dello stato del processore
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 16:29   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originally posted by "ilsensine"

Infatti cr0 (che contiene la base per le tabelle di paginazione) fa parte dello stato del processore
Mmmmhh... E' un rigestro della CPU ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 16:32   #15
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Sì, controlla varie cose, tra cui la base della page directory
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 16:40   #16
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
(...errata corrige: cr3)
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2003, 16:42   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Bene a sapersi...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2003, 12:06   #18
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Quote:
Originally posted by "cionci"

A parte che la segmentazione con i processori a 32 bit non viene più usata
Cosa intendevi con questo???
Che usano segmentazione paginata o altro???
soalle è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2003, 12:11   #19
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Che di fatto i programmi vedono l'intera memoria a 32 bit come se fosse lineare...anche se in realtà c'è la paginazione...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2003, 12:32   #20
soalle
Senior Member
 
L'Avatar di soalle
 
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
Ma allora il cosidetto "segmentation fault" che viene fuori nei miei programmi sotto linux che signifaicato ha???
soalle è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Energia geotermica: la (costosa) rispost...
MG ha già venduto 1 milione di au...
"Something Big Is Happening" —...
Renault chiude il 2025 con una perdita r...
Le 34 migliori offerte Amazon di oggi: T...
Amazfit T-Rex Ultra 2 arriva su Amazon: ...
Meta chiude messenger.com: da aprile 202...
Il paradosso dell'IA: aumenta la produtt...
Oltre 2 TB di dati su un foglio A4: &egr...
Turboden realizza la più grande p...
SEGA pronta al debutto del misterioso 'S...
Microsoft ce l'ha fatta: adesso il 100% ...
Cuffie Hi-Res eleganti, con ANC e 100 or...
Processo a Meta, Zuckerberg difende Inst...
Password in pericolo: scoperte gravi lac...
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: 15:01.


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