Il sistema operativo assegna ogni processo a un core separato?


15

Ok, conosco l'argomento classico per evitare quad core. A livello di applicazione, la maggior parte delle applicazioni non è stata scritta per più core. La maggior parte dei software desktop non ha nemmeno bisogno di parallelizzazione.

Tuttavia, a livello di sistema operativo, sembra ovvio che il sistema operativo dividerebbe i processi tra i vari core. Questo non sarebbe di per sé un argomento per ottenere più core? Questo non aiuta molto in molte situazioni? Avrai alcune attività ad alta intensità di CPU in corso: ognuna di queste procedure potrebbe registrare il 100% dei loro core, ma posso ancora navigare sul Web e porre domande su SuperUser sul mio ultimo core .... giusto?


Un flusso fondamentale verso questa domanda e le risposte è l'ipotesi che un singolo processo sia a thread singolo. Questo non è il caso in molti casi. E anche se il processo è a thread singolo, diverse librerie di sistema / dll aggiungono i propri thread.
harrymc,

Risposte:


12

Il sistema operativo non può dividere un singolo processo a thread singolo su più core (sebbene possa cambiare il core su cui è in esecuzione un'applicazione, ma questa è una domanda diversa), tuttavia può eseguire più processi, ognuno sul proprio core. Quindi, sì, se in background sono in esecuzione più applicazioni a più processori, è probabile che si disponga ancora di un core di riserva che fa poco o nulla che è possibile utilizzare per eseguire altre applicazioni.


La parola chiave qui è se si dispone di più applicazioni ad uso intensivo di processore - questa è una situazione non comune per la maggior parte degli utenti.
Gilles 'SO- smetti di essere malvagio' il

Grazie per la risposta. Sì, l'ultimo caso è quello che sto cercando di descrivere.
Doug T.,

3

Per aggiungere alla risposta di @ heavyd, la ragione di ciò è che il sistema operativo non ha la capacità di determinare quali parti del processo vanno bene in parallelo e quali no. Se un programma non è progettato per essere eseguito su core paralleli, all'interno dell'applicazione è possibile disporre di routine progettate per l'esecuzione sequenziale in esecuzione contemporaneamente. Ciò può causare tutti i tipi di problemi (come se 2 routine utilizzino lo stesso blocco di memoria ma non siano pensate per essere eseguite contemporaneamente).

Il sistema operativo può utilizzare più core per più processi poiché lo fa comunque, ma la diffusione di un'applicazione single-core su più core causerà ogni tipo di comportamento imprevisto.


Grazie. Lo capisco. La mia domanda potrebbe essere stata formulata male. Intendevo chiedere di più sul sistema operativo mettendo processi separati. Non in qualche modo magicamente rendere il processo a thread singolo si estende su core.
Doug T.,

3

Quando si tratta di esso, non importa se un processore ha un utilizzo dell'1% o del 95% (purché sia ​​stabile al 95% e non al picco), i programmi funzioneranno alla stessa velocità finché non sta colpendo al 100%. I cicli della CPU inutilizzati vengono semplicemente sprecati.

Per questo motivo, Windows 7 (su processori compatibili) ha una tecnologia nota come "core parking" che sostanzialmente disabilita i core inutilizzati sul tuo computer al fine di risparmiare elettricità.

Le applicazioni a thread singolo vengono automaticamente trasferite su core alternativi: non sono sicuro della tecnologia alla base di questo, ma so che funziona abbastanza bene.


2

I tuoi sentimenti iniziali sono corretti: c'è una inclinazione negativa verso più core, e non è davvero tutto ciò che meritava.

Ai tempi in cui la maggior parte degli utenti utilizzava il proprio PC desktop solo per una semplice elaborazione di testi, potrebbe esserci stato un argomento. Ma in questi giorni, con cose come i browser con più schede, ognuna nel proprio processo (Chrome e cioè eseguono la separazione a livello di processo per le schede) oltre a cose come i decodificatori video all'interno di pagine Web e attività extra che potrebbero essere facilmente scaricate come al volo rendering di effetti aka css3, anche solo il browser può giustificare un motivo per molti più ram e pochi core.

Aggiungete a ciò il fatto che alcuni utenti potrebbero anche giocare su questo PC o utilizzare strumenti come garageband, imovie, freno a mano, più core può essere un enorme vantaggio.

Non è vero supporre che sia necessario massimizzare (cioè l'utilizzo del 100% della CPU su un singolo core) un core affinché un altro core sia utile. Perché qui stiamo parlando di parallelismo. Il cambio di attività all'interno di una cpu di solito esegue un batch di operazioni prima di scambiare il suo stack con un altro processo. Non tutte queste attività sono legate alla CPU, quindi non vedrai un picco della CPU anche se il core è bloccato.

Fondamentalmente, hai ragione, ma qual è il numero più efficiente di core? 2? 4? 12? Questo molto probabilmente dipenderà dalle abitudini degli utenti ... Tendo a questo 2-4 per la maggior parte degli utenti, ma sto solo indovinando.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.