Os sistemas operacionais usam o conceito de processos e threads para executar programas.
Quando você carrega um programa, um processo é criado. O processo tem sua própria memória e credenciais e esse processo só pode ler / gravar em sua própria memória e fazer através do kernel, independentemente de suas credenciais.
Em um único sistema de CPU, o SO passa por cada processo em execução e fornece uma parte do tempo de CPU, round robin. Apenas um processo realmente é executado em um determinado instante de tempo. (Se um processo está esperando ou "bloqueado" para E / S, uma condição muito comum, ele é ignorado.)
Um processo pode dividir parte de si mesmo como um segmento. Essencialmente, são duas partes de um único processo que tem dois turnos separados na CPU (todos os processos que "vivem" no processo e podem ver sua memória).
Um processo também pode
- gera outro processo novo e separado - isto é, carrega um programa separado. O Windows Explorer gera processos quando lança programas.
- bifurcar outro processo - por exemplo, criar uma cópia de si mesmo, como um processo separado (não um thread) - isso é comum em sistemas operacionais Unix / Linux.
Se houver mais de um núcleo de CPU, enquanto um processo começa em um único núcleo, o sistema operacional pode colocar seus segmentos em outros núcleos e, se o processo gerar ou forjar outros processos, ele poderá colocá-los em outros núcleos. processo pai.
O sistema operacional gerencia quais núcleos ele usa e pode até mesmo migrar transparentemente processos para CPUs diferentes de tempos em tempos para manter as coisas balanceadas. No Windows e, provavelmente, no Linux, você pode fixar "afinidade" com a CPU, para que ela permaneça apenas em núcleos específicos, se você quiser.
Portanto, se o aplicativo gerar threads e / ou processos para realizar seu trabalho, ele se beneficiará de vários núcleos de CPU. Se isso não acontecer, esse programa específico não. Seu sistema operacional ainda estará atribuindo outros programas a outros núcleos, portanto, isso pode significar que outros programas terão menos impacto em seu programa de processo único de encadeamento único.