Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-03-2003, 16: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 31-03-2003, 23: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, 11: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, 12: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, 12: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, 12: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, 12: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, 13: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, 13: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, 14: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, 15: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, 15: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, 15: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, 15: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, 15: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, 15: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, 15: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, 11: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, 11: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, 11: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


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Dreamforce 2026: Salesforce punta sulla ...
SpaceX ha confermato che Flight 14 sar&a...
Googlebook pronto al debutto: Google apr...
Guida all'acquisto: quale lavapavimenti ...
Google Maps su Android Auto introduce fi...
AMD Ryzen 5 5500F: fino al 16% di presta...
L'ecosistema partner di Microsoft cresce...
Oracle registra un boom nella divisione ...
Amazon Prime Video sfida TikTok con le n...
L'uscita di Rayman Legends Retold &egrav...
Dazio UE sui pacchi extra UE, in Italia ...
La nuova lavatrice smart di Xiaomi ha tr...
Hai una PSP nel cassetto? Questo nuovo p...
Oracle presenta Java 27 con diverse novi...
Il microscopio dell'EPFL vede più...
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:32.


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