Torna indietro   Hardware Upgrade Forum > Mondo Apple > Apple - Software e macOS

L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-05-2011, 20:10   #1
ChFl
Member
 
L'Avatar di ChFl
 
Iscritto dal: Apr 2011
Città: The Big Prickly Pear: Cagliari
Messaggi: 162
Usare entrambi i core nell'esecuzione programmi

Salve,
Possiedo un mac con core 2 duo, e ho notato che eseguendo banali programmi in C il processore lavora massimo al 50% (fonte: istat). Parlando con un mio collega ho scoperto che l'entità metafisica che esegue il programma, fa lavorare solo un core.
Mi diceva che lui su linux è riuscito a usarli entrambi "ricompilando il kernel".

Esiste una cosa del genere anche per mac?
Grazie in anticipo.
ChFl è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2011, 20:16   #2
AlexSwitch
Senior Member
 
L'Avatar di AlexSwitch
 
Iscritto dal: Aug 2008
Città: Firenze
Messaggi: 13786
Per la verità, a partire dalla versione 10.6 di OS X, il kernel è predisposto per la gestione del multithreading attraverso un dispatcher. Forse dovresti scrivere il codice in Objective C, alias Cocoa.
__________________
Mac Mini M2 Pro; Apple Studio Display; Logitech MX Keys for Mac; MBA 13" M3; iPod Touch 1st Gen. 8 Gb; iPhone 14 Pro; iPad Air 2020 WiFi 64 Gb, Apple Watch 8...
AlexSwitch è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 10:43   #3
M@n
Senior Member
 
L'Avatar di M@n
 
Iscritto dal: Apr 2006
Città: Crema
Messaggi: 4321
secondo me i programmi devono essere (ri)scritti multithread (o come cavolo si scrive)
__________________
If you want blood.... you've got it!
NEMMENO IL FATO LI VINSE: Bacigalupo Ballarin Maroso Grezar Rigamonti Castigliano Menti Loik Gabetto Mazzola Ossola
La morale del Mac
M@n è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 11:21   #4
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da AlexSwitch Guarda i messaggi
Per la verità, a partire dalla versione 10.6 di OS X, il kernel è predisposto per la gestione del multithreading attraverso un dispatcher. Forse dovresti scrivere il codice in Objective C, alias Cocoa.
immagino che la gestione multithreading e multiprocesso arrivi da ben prima di mac so x 10.6... direi che arriva direttamente dai sistemi timesharing e multiutente

e spero che anche il supporto multicore arrivi prima di snow leopard.

ovviamente per sfruttare più core il software deve essere multithread o multiprocesso. Lo scheduling è fatto dal s.o. in modo assolutamente trasparente
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 13:41   #5
AlexSwitch
Senior Member
 
L'Avatar di AlexSwitch
 
Iscritto dal: Aug 2008
Città: Firenze
Messaggi: 13786
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
immagino che la gestione multithreading e multiprocesso arrivi da ben prima di mac so x 10.6... direi che arriva direttamente dai sistemi timesharing e multiutente
Quello a cui fai riferimento è il multitasking ( gestire più processi/applicazioni contemporaneamente ) anche su singolo core di calcolo.

Il multithreading ( distribuire più processi di più applicazioni su più core/CPU ) è supportato, a livello di processi per singola applicazione, da OS X 10.4 Tiger, o OS X 10.3, grazie al supporto di librerie apposite che gestivano il dispatching dei processi di quella applicazione. Stessa cosa accadeva con OS X 10.5 Leopard.

Con OS X 10.6 è stato introdotto in maniera nativa, a livello di kernel, il dispatching dei processi attraverso GCD ( Grand Central Dispatch ) e la ricompilazione di quasi tutti i componenti dell'OS in Cocoa 64. Inoltre GCD è capace di riconoscere anche i core " virtuali " delle Cpu Intel con tecnologia " HT ".
__________________
Mac Mini M2 Pro; Apple Studio Display; Logitech MX Keys for Mac; MBA 13" M3; iPod Touch 1st Gen. 8 Gb; iPhone 14 Pro; iPad Air 2020 WiFi 64 Gb, Apple Watch 8...
AlexSwitch è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 14:38   #6
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da AlexSwitch Guarda i messaggi
Quello a cui fai riferimento è il multitasking ( gestire più processi/applicazioni contemporaneamente ) anche su singolo core di calcolo.

Il multithreading ( distribuire più processi di più applicazioni su più core/CPU ) è supportato, a livello di processi per singola applicazione, da OS X 10.4 Tiger, o OS X 10.3, grazie al supporto di librerie apposite che gestivano il dispatching dei processi di quella applicazione. Stessa cosa accadeva con OS X 10.5 Leopard.

Con OS X 10.6 è stato introdotto in maniera nativa, a livello di kernel, il dispatching dei processi attraverso GCD ( Grand Central Dispatch ) e la ricompilazione di quasi tutti i componenti dell'OS in Cocoa 64. Inoltre GCD è capace di riconoscere anche i core " virtuali " delle Cpu Intel con tecnologia " HT ".
scusami, ma il multithreading (a livello di s.o., non di CPU) è la possibilità di avere più unità di esecuzione per un singolo processo. Non c'entra con la gestione di più pocessori o di più core. Tant'è vero che posso tranquillamente eseguire un'applicazione multithread su un sistema mono core. Semplicemente non potrò avere parallelismo vero e proprio.

GCD è una semplificazione e un'ottimizzazione della gestione multicore, ma il supporto, come tu stesso affermi, esisteva già prima di SL.

Ora, se il proprietario, quando parla di banali programmi C, cerca di eseguire codice non parallelizzabile su più core, questo è semplicemente impossibile.

Piuttosto, se scrivo un software che forka sè stesso, mi aspetto che il s.o. distribuisca, se opportuno, i vari processi sui vari core. Anche se non sono su SL. Ti prego di correggermi se sbaglio, perché non conosco gli internals di OSX né le versioni prima di SL.

Infine, stai dicendo che prima di SL lo scheduler del kernel non era in grado di assegnare i vari thread di uno stesso processo a core diversi? Spero di no...
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 15:49   #7
AlexSwitch
Senior Member
 
L'Avatar di AlexSwitch
 
Iscritto dal: Aug 2008
Città: Firenze
Messaggi: 13786
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
scusami, ma il multithreading (a livello di s.o., non di CPU) è la possibilità di avere più unità di esecuzione per un singolo processo. Non c'entra con la gestione di più pocessori o di più core. Tant'è vero che posso tranquillamente eseguire un'applicazione multithread su un sistema mono core. Semplicemente non potrò avere parallelismo vero e proprio.

GCD è una semplificazione e un'ottimizzazione della gestione multicore, ma il supporto, come tu stesso affermi, esisteva già prima di SL.

Ora, se il proprietario, quando parla di banali programmi C, cerca di eseguire codice non parallelizzabile su più core, questo è semplicemente impossibile.

Piuttosto, se scrivo un software che forka sè stesso, mi aspetto che il s.o. distribuisca, se opportuno, i vari processi sui vari core. Anche se non sono su SL. Ti prego di correggermi se sbaglio, perché non conosco gli internals di OSX né le versioni prima di SL.

Infine, stai dicendo che prima di SL lo scheduler del kernel non era in grado di assegnare i vari thread di uno stesso processo a core diversi? Spero di no...
La capacità di un OS di svolgere più thread per processo , si chiama appunto multitasking. Il multitasking, grazie al suo scheduler e dispatcher funziona tranquillamente anche su Cpu single core, usando tecniche con o senza prelazione ( cooperative/preemptive multitasking ) a seconda di chi gestisce il " context switch ".

Il multithreading è la capacità di un processore di gestire più thread per processo, condividendo lo stesso spazio d'indirizzamento, la stessa cache e lo stesso buffer lookaside. Può ed è stato implementato anche su Cpu single core ( Pentium 4 HT ); i processori multicore ricalcano questo schema di lavoro, spalmandolo su più unità fisiche di calcolo. Il multitrheading per funzionare correttamente in maniera efficiente deve essere supportato a livello software attraverso A) la scrittura di codice specificatamente sviluppato allo scopo, B) un sistema operativo che sia capace di gestire lo scheduling dei processi verso la Cpu.

Fatta questa distinzione basilare, venendo ad OS X e alle mie precedenti risposte, ti rispondo che stiamo dicendo la stessa cosa, ma in maniera diversa.
Ovviamente il supporto al multithreading ( livello di kernel, su più core ) esiste da parecchio prima di Snow Leopard, ma era limitato a come il codice era scritto dallo sviluppatore.
Con GCD Apple ha esteso e migliorato la gestione dei threads delegandone la gestione e la sincronizzazione all'OS e non al singolo programma. Ciò ha permesso un notevole risparmio di istruzioni da usare per la gestione dei processi e una semplificazione del lavoro degli sviluppatori che dovranno solamente decidere quali parti del loro codice saranno eseguite in parallelo ( blocchi di thread pool pattern ).

Discorsi di ricompilazione del kernel ( ), come paventato da ChFl per ottenere il multithreading, sono completamente sbagliati.
__________________
Mac Mini M2 Pro; Apple Studio Display; Logitech MX Keys for Mac; MBA 13" M3; iPod Touch 1st Gen. 8 Gb; iPhone 14 Pro; iPad Air 2020 WiFi 64 Gb, Apple Watch 8...
AlexSwitch è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 16:43   #8
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da AlexSwitch Guarda i messaggi
La capacità di un OS di svolgere più thread per processo , si chiama appunto multitasking. Il multitasking, grazie al suo scheduler e dispatcher funziona tranquillamente anche su Cpu single core, usando tecniche con o senza prelazione ( cooperative/preemptive multitasking ) a seconda di chi gestisce il " context switch ".

Il multithreading è la capacità di un processore di gestire più thread per processo, condividendo lo stesso spazio d'indirizzamento, la stessa cache e lo stesso buffer lookaside. Può ed è stato implementato anche su Cpu single core ( Pentium 4 HT ); i processori multicore ricalcano questo schema di lavoro, spalmandolo su più unità fisiche di calcolo. Il multitrheading per funzionare correttamente in maniera efficiente deve essere supportato a livello software attraverso A) la scrittura di codice specificatamente sviluppato allo scopo, B) un sistema operativo che sia capace di gestire lo scheduling dei processi verso la Cpu.

Fatta questa distinzione basilare, venendo ad OS X e alle mie precedenti risposte, ti rispondo che stiamo dicendo la stessa cosa, ma in maniera diversa.
Ovviamente il supporto al multithreading ( livello di kernel, su più core ) esiste da parecchio prima di Snow Leopard, ma era limitato a come il codice era scritto dallo sviluppatore.
Con GCD Apple ha esteso e migliorato la gestione dei threads delegandone la gestione e la sincronizzazione all'OS e non al singolo programma. Ciò ha permesso un notevole risparmio di istruzioni da usare per la gestione dei processi e una semplificazione del lavoro degli sviluppatori che dovranno solamente decidere quali parti del loro codice saranno eseguite in parallelo ( blocchi di thread pool pattern ).

Discorsi di ricompilazione del kernel ( ), come paventato da ChFl per ottenere il multithreading, sono completamente sbagliati.
perdonami se insisto, ma si usa il termine multithreading sia dal punto di vista hardware che software (http://en.wikipedia.org/wiki/Multithreading; "In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system." cfr. http://en.wikipedia.org/wiki/Thread_(computer_science)). Infatti io posso parlare di multithreading anche in ambito di cpu con un solo core logico.

Il multitasking riguarda i processi, il multithreading riguarda i thread di un processo.

Per tutto il resto, siamo d'accordo grazie per le precisazioni
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2011, 11:17   #9
ChFl
Member
 
L'Avatar di ChFl
 
Iscritto dal: Apr 2011
Città: The Big Prickly Pear: Cagliari
Messaggi: 162
Ringrazio tutti per le esaustive risposte!

Preciso: il programma è un po' meno banale di "se ha è 1, allora b è due, se ha è 2 allora b è 1", ma ha il difetto di contenere molte operazioni, dunque è lento in esecuzione. La domanda però non nasce dal non voler aspettare che la macchina se lo macini, ma quasi da una sorta di curiosità.

Credo di aver capito questo: è un po' che OSX supporta quello che cerchi, ma scordatelo per il C99.
E' corretto?
ChFl è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2011, 12:04   #10
AlexSwitch
Senior Member
 
L'Avatar di AlexSwitch
 
Iscritto dal: Aug 2008
Città: Firenze
Messaggi: 13786
No non è corretto..... Il C " liscio " ( diciamo così ) può essere usato per scrivere un programma " multithread ", ma dovrai essere tu stesso ad inserire e gestire le chiamate verso lo scheduler e il dispatcher di OS X. Ciò significa che dovrai preventivamente progettare la struttura del codice in base ai processi e ai thread che il tuo programma richiede e che andranno parallelizzati.
Con Grand Central Dispatch tutto questo lavoro ti viene risparmiato, visto che con pochissime istruzioni ( 15 ), sarai libero di scegliere quale porzione del tuo codice andrà in multithreading e con quale tipo di priorità. Tutto il resto viene gestito in automatico da OS X.
Apple, sotto licenza Apache, ha rilasciato il sorgente del set completo di istruzioni GCD in una libreria, a cui possono puntare i linguaggi C, C++ e Objective-C.
__________________
Mac Mini M2 Pro; Apple Studio Display; Logitech MX Keys for Mac; MBA 13" M3; iPod Touch 1st Gen. 8 Gb; iPhone 14 Pro; iPad Air 2020 WiFi 64 Gb, Apple Watch 8...
AlexSwitch è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2011, 11:10   #11
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da AlexSwitch Guarda i messaggi
No non è corretto..... Il C " liscio " ( diciamo così ) può essere usato per scrivere un programma " multithread ", ma dovrai essere tu stesso ad inserire e gestire le chiamate verso lo scheduler e il dispatcher di OS X. Ciò significa che dovrai preventivamente progettare la struttura del codice in base ai processi e ai thread che il tuo programma richiede e che andranno parallelizzati.
Con Grand Central Dispatch tutto questo lavoro ti viene risparmiato, visto che con pochissime istruzioni ( 15 ), sarai libero di scegliere quale porzione del tuo codice andrà in multithreading e con quale tipo di priorità. Tutto il resto viene gestito in automatico da OS X.
Apple, sotto licenza Apache, ha rilasciato il sorgente del set completo di istruzioni GCD in una libreria, a cui possono puntare i linguaggi C, C++ e Objective-C.
io onestamente non capisco perché non possa semplicemente usare la libreria pthread e usare il multithreading preempitive in modo che sia lo scheduler ad arrangiarsi a mandare i thread in esecuzione. Armeggiare con scheduler e dispatcher non seve solo nel caso in cui si voglia implementare un multithreading cooperativo?
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
Steam Machine: addio al 4K 60 fps. Valve...
Cosa aumenterà di prezzo dopo com...
Altro che 2028: Micron ha blindato prezz...
Come la tecnologia FWA connette i piccol...
Diesel Euro 5, scatta il divieto in quat...
Prime Day, HillMiles scende a 599€ e re...
OpenAI valuta di rinviare l'Ipo al 2027:...
Streaming e Pay TV: ogni famiglia italia...
Volkswagen, Blume prepara maxi-taglio da...
Trenitalia, attacco hacker: esposti alcu...
Adblock for YouTube, 11 milioni di insta...
Assassin's Creed Black Flag Resynced pot...
Gli USA dicono no a Polestar, sì a Volvo...
Steam Machine dovrebbe costare 700 dolla...
Microsoft 365, l'Antitrust apre un'istru...
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: 17:47.


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